1
第 1 章 软件工程概述
1、什么是软件工程?为什么会出现软件工程?
软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护
过程,也就是把工程应用于软件;②研究①中提到的途径。
软件工作者在 20 世纪 60 年代后期开始认真研究消除软件危机的途径,从而逐
渐形成了一门新兴的工程学科-计算机软件工程学(通常称为软件工程)。
2、什么是软件工程方法学?
软件工程的 3 要素(软件工程方法学的 3 要素)是什么?分别包含什么内容?
软件工程方法学:软件生命周期全过程中使用的一整套技术方法的集合
软件工程方法学包含 3 个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题
工具是为运用方法而提供的自动的或半自动的软件工程支撑环境:
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各
项任务的工作步骤。
目前使用得最广泛的软件工程方法学,分别是传统方法学和而向对象方法学。
3、什么是软件过程?什么是软件周期?常见软件生命周期模型(课件中的前 5
类)的特点有哪些?
软件过程:它是为了获得高质量软件所需要完成的一系列任务的框架,它规定了
完成各项任务的工作步骤。
4、软件生命周期:由软件定义、软件开发和运行维护(也称之为软件维护)3 个
时期组成
2
①瀑布模型:传统软件工程方法学的软件过程,基木上可以用爆布模型来描述。
瀑布模型的特点:
1.阶段间具有顺序性和依赖性:
2.推迟实现的观点;
3.质量保证的观点。
瀑布模型的成功,在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:
a.可强迫开发人员采用规范的技术方法;
b.严格地规定了每个阶段必须提交的文档;
c.每个阶段结束前必须正式进行严格的技术审查和管理复审
瀑布模型的主要缺点:在可运行的软件产品交付给用户之前,用户只能通过文档
来了解未来的产品是什么样的。开发人员和用户之间缺乏有效的沟通,很可能导
致最终开发出的软件产品不能真正满足用户的需求。
②快速原型模型:所谓“快速原型”,是快速建立起来的、可在计算机上运行的程
序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。原型是软
件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户
的真实需求。
快速原型模型的土要优点:
A.使用这种软件过程开发出的软件产品通常能满足用户的真实需求;
B.软件产品的开发过程基本上是线性顺序过程
③增量模型 定义:增量模型也称为渐增模型,把软件产品作为一些列的增量构
件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够
3
完成特定的功能。分解时唯一必须遵守的约束条件是当把新构件集成到现有软件
中时,所形成的产品必须是可测试的。
增最模型的主要优点:
A.能在较短时间内向用户提交可完成部分工作的产品;
B.逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一
个全新的软件给客户组织带来的冲击。
④螺旋模型:螺旋模型的基木思想是,使用原型及其他方法尽量降低风险。理解
这种模型的一个简便方法,是把它看行作在每个阶段之前都增加了风险分析过程
的快速原型模型。螺旋模型所描述的软件过程主要适用于内部开发的人型软件项
目。 使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经
验。
螺旋模型主要有下述优点:
A.有利于已有软件的重用;
B.有助于把软件质最作为软件开发的一个重要目标;
C.减少了过多测试或测试不足所带来的风险;
D.软件维护与软件开发没有本质区别
⑤喷泉模型:迭代是软件开发过程中普遍存在的一种内在属性。在面向对象范型
中,软件开发过程各阶段之间的迭代或同一阶段内各个工作步骤之间的迭代,比
在结构化范型中更常见。
喷泉摸型,是典型的面向对象生命周期模型,已充分体现了面向对象软件开发过
程迭代和平滑过渡的特性。
5、1.软件生命周期概念
4
软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。 软
件生命周期分为 3 个时期共 8 个阶段,
软件定义期:包括问题定义、可行性研究和需求分析 3 个阶段;
软件开发期:包括概要设计、详细设计、实现和测试 4 个阶段;
运行维护期:即运行维护阶段。
3-3 软件生命周期各阶段的主要任务
任务
描述
问题定义 确定要求解决的问题是什么
可行性研
决定该问题是否存在一个可行的解决办法,制定完成开发任务的
究与计划
实施计划
制定
需求分析 对待开发软件提出需求分析并给出信息定义,编写软件规格说明
书及初步的用户手册,提交评审
软件设计 通常又分为概要设计和详细设计两个阶段,给出软件的结构、模
块的划分、功能的分配以及处理流程。这阶段提交的评审的文档
有概要设计说明书、详细设计说明说和测试计划初稿
软件实现 在软件设计的基础上编写程序,这阶段完成的文档有用户手册,
操作手册等面向用户的文档,以及为下一步做准备而编写的单元
测试计划
软件测试 在设计测试用例的基础上,检验软件的哥哥组成部分。编写测试
分析报告
运行维护 将已交付的软件投入运行,同时不断的维护,进行必要而且可行
5
的扩充和删改
第 2 章 可行性研究
1、可行性研究包括哪儿方面(每方面解决什么问题),研究得到的文档和结论是
什么?
技术可靠性:使用现有的技术能否实现这个系统吗?
经济可行性:这个系统的经济效益能否超过它的开发成本?
操作可行性:系统的操作方式在这个用户组织内是否行得通?
研究的结果:是一份可行性研究的齐个步骤的工作结果的文档,它包含了工程是
否能继续进行下去和分析员的推荐方案:
2、主要描述工具的概念和使用:
系统流程图:是什么,成份和基本符号,描述什么模型,画法;
数据流图:是什么,成份和基本符号,系统级和功能级、简单细化数据流图的区
别,画法;数据字典:是什么,内容、定义数据的方法。
(1)系统流程图的定义:是概括地描绘物理系统的传统工具。它用图形符号以黑盒
子形式描绘组成系统的每个部件。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工
处理的控制过程,是物理数据流图而不是程序流程图。
系统流程图基本符号:
6
(2)数据流图的定义:它是一种图形化技术,它描述信息和数据从输入移动到输
7
出过程中所经历的变换。在数据流 图中没有任何具体的物理部件,它只是描绘
数据在软件中流动和被处理的逻辑过程。
数据流图的基本符号:正方形(或立方体)表示数据的源点或终点;
圆角矩形(或圆形)代表变换数据的处理:
开口矩形(或两条平行横线)代表数据存储:
箭头线表示数据流,即特定数据的流动方向。
(3)数据字典的定义:是关于数据的信息的集合,也就是对数据流图中包含的所有
元素的定义的集合。数据字典的作用也正是在软件分析和设计的过程中给人提供
关于数据的描述信息。
数据字典的内容:数据流、数据流分量、数据存储、处理
定义数据的方法:用被定义的事物的成分的某种组合表示这个事物,这些组成成
分又由更低的成分组合来定义。
3、数据字典和数据流图的关系。
数据流图和数据字典共同构成系统的逻辑模型。没有数据字典,数据流图就不严
格,然而没有数据流图,数据字典也难以发挥作用。只有数据流图和对数据流图
中每个元素的精确定义放在一起,才能共同构成系统的规格说明。
第 3 章 需求分析
1、需求规格说明书
需求分析的任务是什么?分析得到的成果(文档)是什么?包含哪些内容?
1.1、需求分析的任务:(1)确定对系统的综合要求:功能需求、性能需求、可靠性
和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要
8
求(2)分析系统的数据要求:(3)导出系统的逻辑模型(4)修正系统开发计划;
1.2、需求分析得到的结果:是通过需求分析得到的除了分析模型之外,还应该写
出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。
2、软件需求通常包括哪些方而?各类需求一般包含内容有哪些?
(1)功能需求:这方面的需求指定系统必须提供的服务。通过需求分析应该划分出
系统必须完成的所有功能。
(2)性能需求:性能需求指定系统必须满足的定时约束或容址约束,通常包括速
度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方而的需求。
(3)可靠性和可用性需求:可靠性需求定最地指定系统的可靠性。可用性与可靠
性密切相关,它量化了用户可以使用系统的程度。
(4)出错处理需求:这类需求说明系统对环境错误应该怎样响应。
(5)接口需求:接口需求描述应用系统与它的环境通信的格式。常见的接口需求
有:用户接口需求:硬件接口需求:软件接口需求:通信接口需求。
(6) 约束:设计约束或实现约束描述在设计或实现应用系统时应遵守的限制条件。
(7)逆向需求:逆向需求说明软件系统不应该做什么。
(8) 将来可能提出的要求:应该明确地列出那些虽然不属于当前系统开发范畴,
但是据分析将来很可能会提出来的要求。这样做的目的是,在设计过程中对系统
将来可能的扩充和修改预做准备,以便一旦确实需要时能比较容易地进行这种扩
充和修改。
3、追加的上要描述工具的概念和使用:
ER 图:是什么,成份和基本符号,描述什么模型;
状态转换图:是什么,描述什么模型