软件工程8-史济民

合集下载

软件工程2-史济民

软件工程2-史济民
用户介入早,通过迭代完善用户需求,原型废 弃不用 每次迭代完成一个增量,可用于OO开发 典型迭代模型,重视风险分析,可用于OO开发 软件开发与构件开发平行进行 形式化的规格说明,自动的程序变换系统 形式化的增量开发模型,在洁净状态下实现软 件制作
适用场合
需求明确的中、小型软件开发
需求模糊的小型软件开发 容易分块的大型软件开发 具有不确定性大型软件开发 领域工程、行业的中型软件开 发 理想化模型,尚无成熟工具支 持 开发团队熟悉形式化方法,中 小型软件开发
形式化方法模型的特点
• 形式化规约可以用数学方法研究,而非形 式化方法则不能。 • 某些形式的不完整性和不一致性可以被自 动地检测 。 • 形式化方法所生成的分析模型比用传统的 或面向对象的方法生成的模型更完整、一 致和无二义。集合论和逻辑符号的描述使 得软件工程师能创建清晰的关于事实(需求) 的陈述。
形式化方法模型的弱点
• 形式化规约主要关注于功能和数据,而问 题的时序、控制和行为等方面却更难于表 示。 • 使用形式化方法来建立规约比其他方法更 难于学习 。 • 难以使用该模型与用户进行交流沟通,因 为几乎所有的用户对其一无所知。 • 形式化模型的开发很费时和昂贵,因为懂 形式化方法的软件开发者很少。
2.2 传统的软件过程
• 传统的过程模型
• 瀑布模型
• waterfall model • 基于软件生存周期的线性开发模型 • 快速原型模型 • rapid prototype model • 基于原型的迭代化开发模型
瀑布模型
W.Royce于1970年提 出 线性开发模型
用户要求 需求分析
• 形式化方法模型:基于程序变换和验证 技术的软件开发
• 转换模型(transformational model) • 净室模型(cleanroom model)

软件工程7-史济民

软件工程7-史济民
2. 系统元素设计
• 系统元素包括组成系统的类、子系统与接口、包等。系统 元素设计是对每个设计元素进行详细设计。主要的设计内 容是:
• 类/对象设计; • 子系统设计; • 包设计。
模式的应用
• 提倡在OOD中充分应用设计模式。 • 模式的定义
• 模式是解决某一类问题的方法论,也是对通用问题 的通用解决方案。
① 确定任务的特征。 ② 定义一个协调者任务和与之关联的对象。 ③ 集成其他任务和协调者。
• 任务管理部件的设计一般遵循如下的步骤 与策略:
① 识别由事件驱动和时间驱动的任务。
② 识别关键性任务、任务优先级以及任务管理 类。任务管理类是为了实现而引入的专门用 于管理和协调其他任务的任务。
③ 定义任务。说明任务的名称、功能、优先级 任务与其他任务的通信方式。
属性、操作、协作 者
类/对象 模型
用例 模型
对象关系模型
对象-行为模型
责任设计
消息设计 类及对象设计 系统架构设计
面向对象设计的任务
• OOD的软件设计可划分为两个层次,即系统架构 设计和系统元素设计。设计过程是循环渐进的。
1. 系统架构设计
• 软件系统架构是指系统主要组成元素的组织或结构,以及 其他全局性决策,组成元素之间通过接口进行交互。系统 架构包含关于软件系统组织的许多重要决定。
<<Interface>>
ICourseCatalogSystem
0..*
1 (from External System Interfaces)
4、分布式实现机制
• 为实现分布式结构,需完成以下工作。 1. 确定网络拓扑配置 2. 将设计元素分配到网络节点
• 节点容量(指内存量和处理能力) • 通信介质带宽(总线、LAN、WAN) • 硬件与通信链路的可用性、重选路由 • 对冗余与容错能力的要求 • 响应时间要求 • 吞吐量要求

软件工程1-史济民

软件工程1-史济民
软件开发技术 软件工程学 软件工程管理 软件管理学 软件经济学 软件度量学 软件方法 软件工具 软件工程环境
1.2 软件工程学的范畴
• 软件开发方法
• 为软件开发提供了 “如何做” 的技术
• 个性化方法-〉结构化方法-〉面向对象方法-〉软件复用
• 软件工具
• 为软件开发提供了自动的或半自动的软件支撑环境 • 单个工具-〉工具箱、集成工具-〉环境
• 软件工程管理
• 目的:为了按进度及预算完成软件计划 • 内容:成本估算、进度安排、人员组织、质量保证等
1.2 软件工程学的范畴
• 软件工程的定义
1. Fritz Bauer的定义: 建立和利用一套合理的工作原则,以便经济地 获得可靠的,可以在实际机器中高效运行的软件。 1. IEEE的定义: (1) 将系统化的,规范的,可量化的方法应 用于软件的开发,运行和维护,即将工程化方法应 用于软件。 (2)在(1)中所述方法的研究。
软件工程
授课人:袁 晓峰
湘 潭 大

第1章 绪论
• 某些新科技的发明创造会给其他一些看 似无关的技术领域、商业企业、公众甚 至整个社会文化带来深远而出人意料的 影响和作用。这就是所谓的“意外效应 法则”。 • 计算机软件已经成为世界舞台上最为重 要的科技领域,并且是“意外效应法则” 的一个最好的体现。
软件—新的类型
• 开放计算—普适计算,分布式计算 • 网络资源—万维网发展为一个计算引擎 • 开放源码—“免费” 源代码开放了计
算机群体
10
--软件应用领域 软件—新的类型
• 其他
•数据挖掘 •网格计算 •认知机 •纳米技术软件 •大数据
11
--软件应用领域
遗留软件

软件工程设计实践变电器校验软件工程部分

软件工程设计实践变电器校验软件工程部分

上海##学院课程设计报告课程名称软件工程设计实践变电器校验院(系)计信学院专业计算机系年级2003级#学生#时间2006-2007第一学年19周-20周设计地点学院机房307指导老师签名:教研室主任(系主任)签名:学生签名:变电器校验管理系统一、课题背景、目的变电器校验管理系统是供电局对下属变电所以及变电所内的各变电器的校验信息管理。

它能通过数据的统计对各变电所的变电器提供定期的校验和管理,使总部在业务上实现了有效的管理和及时提供有效应对措施。

二、课题的内容需求分析变电器校验管理系统得需求分析分为两个过程,一是理解需求,二是分析需求。

1、理解需求(1)进入主界面,点击年份、变电所和变电器名称,查询并显示符合条件的变电器资料。

(2)主界面,点击某行取得须校验的变电器信息,查询并显示符合条件的变送器遥测量数据。

(3)单击主界面上的校验报告按钮,可显示所有的变电器校验信息。

(4)点击校验信息上的修改按钮,可以修改变电器的各属性信息。

(5)也可将校验日期,校验人,结论,结论分析添加后点击修改按钮将对应的内容添加到数据库。

(6)点击校验报告界面上的刷新按钮,即不提交修改后的数据重新初始化界面内的数据。

(7)点击校验报告界面上的退出按钮,。

2、分析需求变电器校验管理是对指定年份下的指定变电所的变电器的测量数据以及结果进行校验和确认。

共分为四个部分:安装区域,变电器遥测量数据,变电器遥测量数据的校验数据,校验结论。

变电器校验的基本功能:(1)变电器安装区域根据用户指定的信息(如年份、变电所、变电器名称),显示变电器的信息方便用户确认。

(2)变电器遥测量数据用户在变电器安装区域中显示的内容中选取需要校验的的变电器后会在本区域显示需要的变电器遥测量数据。

(3)变电器遥测量数据的校验数据此模块可以修改有关变电器以及变电器遥测量数据各个属性值。

(4)校验结论可以根据给定的校验公式进行数据的校验,然后将校验后的数据(包括校验人,校验日期,结论,结论分析)保存到数据库。

(完整word)软件需求规格说明书

(完整word)软件需求规格说明书

软件需求规格说明书1引言版本更新说明1.1编写目的编写此文档的目的是进一步指定软件开发的细节问题,希望能使本软件开发工程更具体.是为使用户、软件开发者及分析人员对该软件的初始规定有一个共同的理解,它说明了本产品的各项功能需求、性能需求和数据要求,明确标识各功能的实现,阐述实用北京及范围,提供客户解决问题或者达到目标所需的条件或全能,提供一个度量和遵循的基准。

具体的编写目的如下:A.定义软件总体要求,作为用户和软件开发人员之间的相互了解的基础;B.提供性能要求、初步设计和对用户影响的信息,作为软件人员进行软件结构设计和编码的基础;C.作为软件总体测试的依据。

预期读者:A.项目经理:项目经理可以根据该文档了解预期产品的功能,并据此进行系统设计、项目管理。

B.软件设计师:对需求进行分析,并设计出系统,包括数据库的设计.C.程序员:配合《设计报告》,了解系统功能,编写《用户手册》。

D.测试员:根据本文档编写测试用例,并对软件产品进行功能性测试和非功能性测试.E.销售人员:了解预期产品的功能和性能.F.用户:了解预期产品的功能和性能,与分析人员预期对整个需求进行讨论和协商。

G.其它人员:如部门领导、公司领导等可以据此了解产品的功能和性能。

1.2背景说明:a.待开发的软件系统的名称:小假游;b.任务开发者:c。

适用对象:在校大学生;1。

3定义J2RE是Java2 Runtime Environment,即Java运行环境,有时简称JRE。

如果你只需要运行Java程序或Applet,下载并安装它即可。

如果你要自行开发 Java 软件,请下载JDK。

在JDK中附带有JRE.注意由于Microsoft对Java的支持不完全,请不要使用IE自带的虚拟机来运行 Applet,务必安装一个JRE或JDK。

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

软件工程(史济民第三版)-原理、方法及应用课后习题

软件工程(史济民第三版)-原理、方法及应用课后习题

软件工程(史济民第三版)-原理、方法及应用课后习题软件工程(史济民第三版)-原理、方法及应用课后习题软件工程是一门涉及软件开发和维护的学科,具有原理、方法和应用三个方面的内容。

本章将探讨史济民第三版的软件工程课后习题,包括问题分析、需求规格说明、软件设计、软件测试等方面的内容。

1. 问题分析问题分析是软件工程中的第一步,它涉及对问题的背景、需求和目标进行分析。

在史济民第三版的课后习题中,有许多问题需要进行分析和解决。

例如,习题1要求分析一个给定的场景,找出需求和问题,进而提出解决方案。

对于这类问题,我们可以采用以下的分析步骤:1. 理解问题背景和需求:阅读习题中的场景,了解涉及的业务领域和需求。

2. 识别问题:找出场景中存在的问题和挑战,例如效率低下、错误率高等。

3. 提出解决方案:基于问题的分析,提出改进措施和解决方案,例如引入自动化工具、优化算法等。

2. 需求规格说明需求规格说明是软件工程中的重要环节,它涉及对软件系统需求进行详细描述和规定。

在史济民第三版的习题中,有许多涉及需求规格的问题。

例如,习题2要求对给定的场景进行需求分析,并书写需求规格说明。

在完成这类习题时,我们可以参考以下的格式:1. 概述:对软件系统的背景和目标进行简要描述。

2. 功能需求:详细列出系统需要实现的功能和特点。

3. 非功能需求:描述与系统性能、安全性等相关的需求。

4. 约束:列出系统开发过程中需要遵守的限制条件。

3. 软件设计软件设计是软件工程中的核心环节,它涉及软件系统的整体结构和模块设计。

在史济民第三版的习题中,有许多关于软件设计的问题。

例如,习题3要求设计一个给定场景下的软件系统。

在进行软件设计时,我们可以使用以下的设计方法:1. 模块化设计:将软件系统划分为不同的模块,并设计各个模块的功能和接口。

2. 流程图和数据流图:使用图形化的工具描述软件系统的流程和数据流动。

3. 面向对象设计:基于对象和类的概念进行系统设计,强调封装、继承和多态等特性。

软件工程-原理、方法及应用(史济民第三版)(课后习题答

软件工程-原理、方法及应用(史济民第三版)(课后习题答

软件工程-原理、方法及应用(史济民第三版)(课后习题答案)绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。

(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。

采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。

3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。

答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。

当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。

新方法在推行初期,总有人不愿接受和采用。

若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。

(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。

软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。

所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。

4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。

答:用C++开发一个软件,是校园一卡通的模块。

首先,要在编辑程序支持下在计算机中输入源程序。

然后编译程序,把源程序翻译成目标程序。

如果发现错误,就重新调入编辑程序对源程序进行修改。

编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。

编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。

离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。

软件工程-原理、方法及应用(史济民第三版)答案范文

软件工程-原理、方法及应用(史济民第三版)答案范文
6.何谓面向对象软件工程?简述它与传统软件工程在各型软件开发中的作用。
答:以面向对象程序设计为基础。
7.软件按规模大小可分成哪几类?简述软件工程中各型软件开发中的作用。
答:按规模分为极小、小、中、大、甚大、极大。
(1)中小型软件:软件工程对改进软件质量,提高程序员生产率和满足用户的需求,有很大的作用。
软件开发模型
1.什么是软件生存周期?把生存周期划分为阶段的目的是什么?
答:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得交易控制和管理。
2.传统的瀑布模型把生存周期分为哪些阶段?瀑布模型软件开发有哪些特点?
8. DFD和CFD有什么区别?
答:
9.什么是系统的行为模型,如何建立?
答:类对象模型所表示的是面向对象分析模型中的静态部分,而对象行为模型则用于描述系统的动态行为,即系统如何对应外部事件---系统的行为模型。
建立一个对象行为模型一般要经历一些过程:评估所以的用例来理解系统中的交互序列;找出驱动交互序列的事件;为每个用例创建事件轨迹;为对象创建状态转换图。
答:瀑布模型在编码以前安排了分析阶段和设计阶段;阶段间具有顺序性和依赖性。
3.说明文档和复审对于软件质量的控制的作用。
答:每一阶段都要完成规定的文档,没有完成文档,就认为没有完成该阶段的任务。软件开发是许多人共同参加的计划,完整与合格的文档,不仅是开发时期软件人员之间互相通信的媒介,也是运行时期对软件进行维护的中要依据。每一阶段都要对已完成的文档进行复审,以便尽早发现问题,消除隐患。愈是早期潜伏下来的故障,暴露出来的时间愈晚,排除故障需付出的代价也就愈高。及时复审是保证软件质量,降低开发成本的重要措施。

软件工程3-史济民概要

软件工程3-史济民概要

结构化分析与设计的由来
• 瀑布模型的首次实践
• 瀑布模型由传统的生存周期过程演变而来。 作为一种系统开发方法,结构化分析与设计 是瀑布模型的首次实践。该模型一般可划分 为以下阶段: • 需求定义与分析→总体设计→详细设计→编 码→测试→使用维护
结构化分析与设计的由来
• SA与SD的流程
• 系统的整个开发流程可简明表示为: • 结构化分析(工具:DFD、PSPEC) (分层DFD图)+ SRS • 结构化设计(工具:SC图) 映射 模型(初始SC图) • 初始设计模型(初始SC图) 优化 模型(最终SC图)
分析模型 初始设计 最终设计
• SA与SD的流程是为待开发系统建立分析模型和 设计模型的过程。
结构化分析与设计的由来
• 基本任务与指导思想
• 结构化分析
• 建立分析模型:功能模型、数据模型、行为模型 • 编写需求说明:软件需求规格说明书(SRS)标准 的主要内容为引言、信息描述、 功能描述、行为 描述、质量保证、接口描述等。 SRS标准强调SRS 应具有准确性、应防止二义性、应直观易改。 • 主要指导思想:抽象与分解。
• 自顶向下对系统进行功能分解,画出分层DFD图 • 由后向前定义系统的数据和加工,编制DD和PSPEC • 最终写出SRS
数据流图的层次结构
数据流图的层次结构
• 在多层数据流图中,顶层流图仅包含一 个加工(处理) ,它代表被开发系统。 它的输入流是该系统的输入数据,输出 流是系统所输出数据。 • 底层流图是指其加工不需再做分解的数 据流图,它处在最底层。 • 中间层流图则表示对其上层父图的细化 。它的每一加工可能继续细化,形成子 图。
2. 画出SC图框架
• DFD图的三个部分分别映射为事务控制模块,接 受模块和动作发送模块

南京审计大学2020研究生考试参考书目

南京审计大学2020研究生考试参考书目

考试参考书目(一)学术学位020100理论经济学初试参考书目:《西方经济学(微观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

《西方经济学(宏观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

复试参考书目:《发展经济学——从贫困到富裕》,速水佑次郎、神门善久,社会科学文献出版社,2009年。

《发展经济学》(原书第11版),托达罗等著,聂巧平等译,机械工业出版社,2014年。

《政治经济学·资本主义部分》(第9版),张彤玉、张桂文,陕西人民出版社,2013年。

同等学力加试参考书目:《社会主义市场经济概论》(第4版),杨干忠,中国人民大学出版社,2014年。

《现代产业经济学》(第2版),刘志彪,高等教育出版社,2009年。

020200应用经济学初试参考书目:《西方经济学(微观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

《西方经济学(宏观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

复试参考书目:《发展经济学——从贫困到富裕》,速水佑次郎、神门善久,社会科学文献出版社,2009年。

《发展经济学》(原书第11版),托达罗等著,聂巧平等译,机械工业出版社,2014年。

《政治经济学·资本主义部分》(第9版),张彤玉、张桂文,陕西人民出版社,2013年。

同等学力加试参考书目:《当代西方经济学流派》(第4版),蒋自强、史晋川,复旦大学出版社,2014年。

《现代产业经济学》(第2版),刘志彪,高等教育出版社,2009年。

020204金融学初试参考书目:《西方经济学(微观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

《西方经济学(宏观部分)》(第6版),高鸿业,中国人民大学出版社,2014年。

复试参考书目:《金融学》(第4版),黄达、张杰,中国人民大学出版社,2017年。

《投资学》(第9版中文版),滋维.博迪,机构工业出版社,2012年。

《软件开发综合实训》教学大纲

《软件开发综合实训》教学大纲

《软件开发综合实训》课程标准一、课程描述《软件开发综合实训》是软件技术专业的一门必修课程。

本课程是为培养软件开发人员所设置的具有综合性质的专业核心课,其主要任务是综合运用多门软件课程的知识和技能开发一个完整的应用软件系统,目的是使学生通过开发软件项目,了解一个完整的软件开发过程,学会根据软件开发文档编写符合工程规范的程序,提高软件开发能力,培养团队协作精神,逐步积累软件项目开发经验,为学生从事软件开发工作打下坚实的基础,实现与软件程序员岗位的无缝连接。

《软件开发综合实训》是软件技术专业中最后开设的课程,它的先修课程是《Web 应用软件开发》、《数据库的设计与实现》、《类的分析与实现》、《软件模型分析与文档编制》、《基于浏览器的客户端编程》等课程。

《软件开发综合实训》适用于三年制(或二年制)软件技术专业,三年制在第5学期开设,二年制在第4学期开设。

二、课程目标在学习本课程前,学生的专业技术能力已具备,专业技术知识的“基本”应用能力已经具备;“初级”的社会能力、方法能力也已具备。

通过本课程的学习,学生应该能够实现各种基本能力的整合、迁移,形成更高一级的综合能力,从而能够独立开发小型的应用软件,能够在软件工程师的带领下参加大中型软件系统的开发,能够胜任软件程序员岗位上的各项工作。

1.专业能力目标(1)能够通过调研,描述企事业单位的基本业务流程。

能够理解业务模型,并根据业务的变更修改业务流程。

(2)能够通过分析用例模型,了解客户的需求;能够根据需求的变更,重新绘制用例视图。

(3)能够根据系统分析结果开发一个完整的小型软件。

(4)能够根据数据模型建立数据库。

(5)能够根据总体设计搭建软件开发平台。

(6)能够根据系统模型开发相应的软件模块。

(7)能够根据系统设计要求编写符合工程规范的程序代码。

(8)能够对自己开发的模块进行单元测试。

(9)能够根据系统要求对软件进行功能测试。

(10)能够根据实施模型部署、实施一个软件系统。

软件工程——原理、方法与应用(第3版本)史济民-顾春华-版知识点整理(完整版)410

软件工程——原理、方法与应用(第3版本)史济民-顾春华-版知识点整理(完整版)410
29. 软件测试
黑盒测试
定义:是根据被测试程序的功能来进行测试,也称为功能性测试 方法:
i. 等价分类法 ii. 边界值分析法 iii. 错误猜测发 iv. 因果图法
白盒测试
定义:以程序的结构为依据,又称结构测试 常用方法:
i. 逻辑覆盖法 ii. 路径测试法
30. 软件的维护
定义:在一个软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其 他
27. 软件设计一般包括
1) 数据设计(DD、E-R) 2) 体系结构设计(DFD)
3) 接口设计(DFD) 4) 过程设计(STD,控制规格说明、加工规格说明)
28. 传统的软件设计
1) 概要设计 i. 结构设计 ii. 接口设计
iii. 编写概要设计文档 2) 详细设计
i. 确定各个软件部件的数据结构和操作,产生描述各软件部件的详细设计文档
26. 试比较 3 种不同的设计思想
a) 面向过程的思想: i. 各模块功能可能相互交叉或重叠,模块间常常存在数据的共享或数据结构的 共享
b) 面向功能的思想: i. 各模块的功能单一,如能将它们与其他模块的数据共享降到最低限度,就可 以在某些应用中重用
c) 面向对象的思想: i. 各模块是一个个独立的单位,不仅重用性较好,而且易于测试,联调和维护
14. 传统软件工程方法与面向对象的区别、各自的优缺 点
区别: 前者是面向过程的语言,一切以算法为核心 后者是面向对象的语言,构成类的封装机制,跟好的实现了代码的服用性能,依 据
高内聚、低耦合的思想核心
传统的软件工程主要指结构化软件工程方法
优点: 1) 整体思路清楚,目标明确 2) 设计工作中阶段性非常强,有利于系统开发的总体管理和控制 3) 在系统分析时可以诊断出原系统中存在的问题和结构上的缺陷

软件工程可行性研究报告范文

软件工程可行性研究报告范文

软件工程可行性研究报告范文(文章一):软件工程_可行性研究报告模板(国家标准) 可行性研究报告(ISO标准) 编者说明:在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。

该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。

1. 引言1.1 编写目的[编写本可行性研究报告的目的,指出预期的读者。

] 1.2 背景a.[所建议开发的软件系统的名称;] b.[本项目的任务提出者、开发者、用户及实现该软件的计算站或计算机网络;] c.[该软件系统同其他系统或其他机构的基本的相互来往关系。

]1.3 定义[列出本文件中用到的专门术语的定义和外文首字母组词的原词组。

]1.4 参考资料[列出用得着的参考资料。

]2. 可行性研究的前提[说明对所建议开发的软件的项目进行可行性研究的前提。

]2.1 要求[说明对所建议开发的软件的基本要求。

]2.2 目标[说明所建议系统的主要开发目标。

]2.3 条件、假定和限制[说明对这项开发中给出的条件、假定和所受到期的限制。

]2.4 进行可行性研究的方法[说明这项可行性研究将是如何进行的,所建议的系统将是如何评价的,摘要说明所使用的基本方法和策略。

]2.5 评价尺度[说明对系统进行评价时所使用的主要尺度。

]3. 对现有系统的分析[这里的现有系统是指当前实际使用的系统,这个系统可能是计算机系统,也可能是一个机械系统甚至是一个人工系统。

] [分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性。

]3.1 处理流程和数据流程[说明现有系统的基本的处理流程和数据流程。

此流程可用图表即流程图的形式表示,并加以叙述。

]3.2 工作负荷[列出现有系统所承担的工作及工作量。

]3.3 费用开支[列出由于运行现有系统所引起的费用开支。

]3.4 人员[列出为了现有系统的运行和维护所需要的人员的专业技术类别和数量。

]3.5 设备[列出现有系统所使用的各种设备。

软件工程史济民ppt课件

软件工程史济民ppt课件
基于构件技术的编程范型 构件是通用的、可复用的标准化对象类 程序=构件+架构 着眼于适合整个领域的类对象,粒度更大
• 过程式和面向对象的编程范型
存款
取款
帐户余额


款 帐户余额 款
利息 结算
利息结算 银行储蓄处理业务
三代软件工程
• 传统软件工程
• 开发过程经历的阶段:结构化分析 →结构化设 计 → 面向过程的编码 → 软件测试
• 一个螺旋式周期
• 计划:确定目标,选择方案,选定完成目标的策略 • 风险分析:从风险角度分析该策略 • 开发:启动一个开发活动 • 评审:评价前一步的结果,计划下一轮的工作
螺旋模型
构件集成模型
• 构件集成模型主要适用于面向对象的软 件开发。
• 面向对象的基本概念
• 对象Object • 类Class • 继承Inheritance • 消息Message • 面向对象
用户要求
系统测试
需求分析
需求规格说明
软件分析 与总体设计
软件结构图
确认测试 综合测试
详细设计
模块说明
单元测试
编码
程序清单
瀑布模型的阶段与文档 图2.2 瀑布模型的阶段与文档
瀑布模型
• 特点
1. 阶段的顺序性和依赖性 2. 推迟实现的观点 3. 质量保证的观点
• 存在问题
• 不适合需求模糊的系统 • 开发初始阶段很难彻底弄清软件需求
• 形式化软件开发方法
• 基于模型的,基于代数结构的,基于时序逻辑的 • 形式化需求规格说明 • 变换技术
• 程序自动生成技术 • 确保正确
转换模型
与需求比 较后修正
形式化 规格说明 系统需求

上海交通大学

上海交通大学
《统考ABC词汇精讲》
大学语文三(高本)
32
0.56
邓小平理论
8
0.37
胡果文
电子技术基础
43
0.76
陈秀真
《电子技术基础》霍亮
《数字电子技术基础》陈刚主编
电子技术基础(船舶)
30
0.75
林昕
《电子技术基础》清华
电子商务
19
0.31
张跃华
电子商务基础
37
0.65
柴洪辉
电子政务
29
0.57
徐启智
对外贸易运输与仓储
36
0.89
《船舶原理》盛振邦刘应中主编
船舶原理基础
34
0.90
船舶原理与设计基础
45
0.93
窦尚信
大学英语(二)
33
1.75
潘晓燕
《21世纪读写教程第三册》
大学英语(三)
31
0.74
潘晓燕
《21世纪读写教程第二册》
大学英语(一)
27
1.72
潘晓燕
《21世纪读写教程第一册》
大学英语考试
23
0.62
潘晓燕
《管理学-原理与方法》周三多
《现代企业管理原理》黄津浮
《管理学》(美)哈罗德孔茨
《管理学》斯蒂芬.罗宾斯
线性代数
24
0.32
消费者行为学
36
1.18
李国振
有PPT讲义
信号与系统
41
1.19
齐开悦
信息系统建模理论
34
2.19
饶若楠
《UML基础、案例与应用》Josenph Schmuller李虎王美英译

【免费下载】软件工程 原理方法及应用史济民第三版答案

【免费下载】软件工程 原理方法及应用史济民第三版答案

软件工程-原理、方法及应用(史济民第三版)答案绪论1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。

(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。

(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。

采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。

3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。

答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。

当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。

新方法在推行初期,总有人不愿接受和采用。

若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。

(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。

软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。

所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。

4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。

答:用C++开发一个软件,是校园一卡通的模块。

首先,要在编辑程序支持下在计算机中输入源程序。

然后编译程序,把源程序翻译成目标程序。

如果发现错误,就重新调入编辑程序对源程序进行修改。

编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。

编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。

离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。

软件工程4-史济民

软件工程4-史济民

--面向对象开发的优点
• 面向对象符合人类习惯的思维方式 • OO开发的优点
• 提高软件系统的可复用性 • 提高软件系统的可扩展性 • 提高软件系统的可维护性
4.2 UML简介
• Unified Modeling Language(统一建模 语言) • 近10多年来OOSE最重要的成果 • 贡献者:Grady Booch, Ivar Jacobson, Jim Rumbaugh • 中文网站
用户模型 模型 元模型 元元模型
• 下一层是上一层的基础,上一层是 下一层的实例。
3. 图和视图 • UML用模型描述系统的结构或静态特征 以及行为或动态特征。 • UML从不同的视角为系统建模,形成不 同的视图,每个视图由一组图构成,图 中包含了强调系统中某一方面的信息, 显示了系统中某一特定的方面。
属性值
书名:数学 价格:21.8
类图表示类间关系
• 关联关系 (Association)
• 类之间存在的语义上的关系 • 普通关联、递归关联、多重关联等
• 关联类
• 两个类之间的关联是多对多时,可以把该关联定义成关联类。 关联类也可以有属性、操作和其他的关联。
• 聚集关系(Aggregation)
• 特殊的关联:整体-部分
• 组合关系(Composition)
• 特殊的聚集:整体强烈拥有部分
• 泛化关系(Generalization)
• 继承
• 依赖关系(Dependency)
• 对一个类/对象的修改会影响另一个类/对象
关联关系
学生 书
姓名:string 学号:string
书名:string 价格:real
面向对象概述
对象的概念
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LISP、Prolog
C、PL/1
BASIC Ada、Modula
编码工具
• 基于4GL的编码工具
• • • • • Eclipse NetBeans Visual Studio Delphi Powerbuilder
8.3 编码示例
• 网上购物系统 • 将设计模型转换为源代码
• 注册 • 维护购物车
• 实施步骤
• • • • 编译 静态分析器检查 代码评审 动态测试
• 测试驱动模块 • 测试桩模块
集成测试
• 目的
• 将经过单元测试的模块逐步组装成• 确定集成测试的实施步骤,设计测试用例 • 逐一地添加模块,进行测试
• 策略与步骤
• 自顶向下测试
• 先广后深实施步骤 • 先深后广实施步骤
• 由底向上测试 • 混合方式测试(sandwich testing)
• 对上层模块采取自顶向下测试 • 对关键模块或子系统采取由底向上测试
确认测试
• 目的
• 确认组装好的程序是否满足(SRS)的要求
• 任务
• 有效性测试(黑盒测试) • 配置复审(confinguration review)
• 编码语言的发展
面向机 器的语言 高级语言 (第3代) 甚高级 语言
机器语言 (第1代)
汇编语言 (第2代)
基础 语言
结构 语言
面向 语言
第4代 语 言
常用的编码语言
• 基础语言
• FORTRAN • COBOL • BASIC
• 结构化语言
• Pascal • C • Ada
• 面向对象语言
• C++ • Java • C#
适用各类应用领域的语言
年代 20世纪60年 代 应用领域 商业 科学计算 系统 人工智能 主要语言 COBOL FORTRAN Assembler LISP 其他语言 Assembler ALGOL,BASIC,APL Forth SNOBOL
商业
现代 科学计算 系统 人工智能
COBOL 、 C++ 、 Ja va、电子表格 FORTRAN 、 C 、 C+ +、Java C、C++、Java
• OO软件的单元测试
• 对类的测试等价于传统的单元测试,区别在 于传统的单元测试是针对程序的函数、过程 等进行测试。 • 在OO软件,单元是指封装的类和对象。单 元测试是全面地测试类和对象所封装的属性 和操纵这些属性的操作的整体。
• 发现类的所有操作中存在的问题 。 • 与其他的类协同工作时可能出现的错误。
对应数值
⑤在197302—199203 之间
月份对应数 值
⑧在1—12之间
无效等价类的测试用例
测试数据 MAY,75 19755 1978011 195512 199606 198200 197522 期望结果 输入无效 输入无效 输入无效 年龄不合格 年龄不合格 输入无效 输入无效 测试范围 ② ③ ④ ⑥ ⑦ ⑨ ⑩
• 用流程图来设计测试用例 • 逻辑覆盖测试的5种标准
发 现 错 误 的 能 力 语句覆盖
判定覆盖 弱 条件覆盖
每条语句至少执行一次
每一判定的每个分支至少执行一次 每一判定中的每 个条 件,分 别 按“ 真 ”、 “假”至少各执行一次 同时满足判定覆盖和条件覆盖的要求 求出判定中所有 条 件的各 种 可能 组 合 值 , 每一可能的条件组合至少执行一次
期望结果 测试结果 评价 错误信息 纠错 改正信息
测试的特性
• 挑剔性
• 只有抱着为证明程序有错的目的去测试,才能把程 序中潜在的大部分错误找出来
• 复杂性
• 设计测试用例是一项需要细致和高度技巧的工作
• 不彻底性
• 程序测试只能证明错误的存在,但不能证明错误不 存在
• 经济性
• 选择一些典型的、有代表性的测试用例,进行有限 的测试
黑盒测试
• 边界值分析法(boundary value analysi s)
• 使被测程序在边界值及其附近运行,从而更 有效地暴露程序中潜藏的错误
• 错误猜测法(error guessing)
• 猜测被测程序在哪些地方容易出错 • 针对可能的薄弱环节来设计测试用例
白盒测试
• 逻辑覆盖测试法(logic coverage testing)
• 规定至少要查出的错误数量
• 把查出预定数量的错误,作为某类应用程序 的测试终止标准
面向对象系统的测试
• OO软件的测试策略
• OO软件的测试策略与传统测试策略有许多不 同。
• OO软件测试用例设计
• 与传统的测试用例设计不同,OO测试更多地 关注于测试类的状态设计合适的操作序列。
OO软件的测试策略
源程序的文档化
• 有意义的变量名称 • 适当的注释 • 标准的书写格式 • ——用分层缩进的写法显示嵌套结构的层次; • ——在注释段的周围加上边框; • ——在注释段与程序段、以及不同程序段之间插入 空行; • ——每行只写一条语句; • ——书写表达式时,适当使用空格或圆括号等作隔 离符;
8.2 编码语言与编码工具
第八章 编码和测试
编码概述 编码语言与编码工具 编码示例 测试的基本概念 黑盒测试和白盒测试 测试用例设计 多模块程序的测试策略 湘 潭 大 学 面向对象系统的测试
8.1 编码概述
• 编码的目的
编码
设计模型---->源程序--可执行代码 (不可执行的) (可执行的) • 编码的过程
• 熟悉所选语言的功能和程序开发环境 • 仔细阅读设计模型 • 弄清要编码的模块的外部接口与内部过程
8.4 测试的基本概念
• 软件测试
• 动态查找程序代码中的各类错误和问题的过程
• 测试的目的与任务
• 目的:发现程序的错误; • 任务:通过在计算机上执行程序,暴露程序中潜在 的错误。
• 纠错的目的与任务
• 目的:定位和纠正错误; • 任务:消除软件故障,保证程序的可靠运行。
测试和纠错信息流程
测试用例 软件 测试
单元测试
• 目的
• 通过模块测试,使其代码达到模块说明书的需求
• 任务
• (1) 对模块代码进行编译,发现并纠正其语法错误; • (2) 进行静态分析,验证模块结构及其内部调用序 列是否正确; • (3) 确定模块的测试策略,并据此设计一组测试用 例和必要的测试软件; • (4) 用选定的测试用例对模块进行测试,直至满足 测试终止标准为止; • (5) 编制单元测试报告。

判定/条件 覆盖 条件组合 覆盖
白盒测试
• 路径测试法(path testing)
• • • • • 着眼于程序执行路径的测试方法 程序图(program graph) 点覆盖 边覆盖 路径覆盖
8.7 多模块程序的测试策略
• 测试的层次性
• • • • 单元(模块)测试(unit testing) 综合(集成)测试(integration testing) 确认测试(validation testing) 系统测试(system testing)
测试的种类
静态分析器 (自动工具)
静态测试 (程序不执行) 代码评审 (人工方式)
软件测试 动态测试 (程序执行)
“办公桌”检查 会审 走查(排查)
黑盒测试(测试功能) 白盒测试(测试结构)
软件测试方法的分类
测试文档
• 测试计划
• 测试内容说明
• • • • 测试项目的名称 各项测试的目的 步骤和进度 测试用例的设计
OO概念对测试用例设计的影响
• 继承的成员函数需要测试 • 子类的测试用例可以参照父类 • 类测试用例设计
• 基于故障的测试用例设计 • 基于用例的测试用例设计
• 类间测试用例设计
• 类—关系模型 • 类—行为模型
小结
• 编码的目的是把详细设计的结果翻译成用选定 的语言书写的源程序;编码的风格和使用的语 言,对编码质量也有重要的影响。 • 软件测试是一个与项目开发过程并行的过程 • 测试的目的是发现程序的错误,而不是证明程 序没有错误 • 设计测试用例错,是搞好软件测试的关键技 术 ,选择测试用例的目标,是用尽可能少的 测试数据,达到尽可能大的程序覆盖面,发现 尽可能多的软件错误和问题
• 验收测试—专用 • alpha与beta测试—通用
系统测试
• 目的
• 软件安装到系统中以后,能否与系统的其余 部分协调运行
• 任务
• 测试是否与硬件协调运行 • 测试是否和原来就有的其它软件协调运行 • 测试是否完成SRS对它的要求
终止测试的标准
• 规定测试策略和应达标准
• 白盒测试时一般可规定以完全覆盖为标准语 句覆盖率和判定覆盖率必须分别达到100% • 黑盒测试时,可选择一或数种方法设计测试 用例,当所有测试用例全部用完后便可终止
• OO软件的确认测试和系统测试
• 采用传统的黑盒法对 OOA阶段的用例所描 述的用户交互进行测试。 • 导出OO系统测试的测试用例。
• 对象—行为模型 • 时序图等
• 模拟用户实际使用环境 。
OO软件测试用例设计
• 指导OO测试用例设计的方法要点: 1. 每个测试用例都要有一个唯一的标识, 并与被测试的一个或几个类相关联起来; 2. 每个测试用例都要陈述测试的目的; 3. 对每个测试用例要有相应的测试步骤, 包括被测对象的特定状态、所使用的消 息和操作、可能产生的错误、测试需要 的外部环境等。
• 黑盒测试
• 根据被测试程序功能来进行测试
• 等价分类法 • 边界值分析法 • 错误猜测法
• 白盒测试
• 以程序结构为依据的测试方法
• 逻辑覆盖法 • 路径测试法
相关文档
最新文档