目录
第1章 软件工程学概述
1.1 软件危机
1.什么是软件危机?p1
软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。
2.软件危机有什么典型表现? p2
(1)对软件开发成本和进度估计常常很不准确
(2)用户对“已完成的软件系统不满意的现象经常发生
(3)软件产品的质量往往靠不住
(4)软件常常是不可维护的
(5)软件通常没有适当的文档资料
(6)软件成本在计算机系统总成本中所占的比例逐年上升
(7)软件开发生产率提高的的速度,远远跟不上计算机应用迅速普及深入的趋势
3.产生软件危机的原因 p3
1 、与软件本身的特点有关
2 、与软件开发与维护的方法不正确有关
4. 消除软件危机的途径 p4
1 、彻底消除“软件就是程序”的错误观念。
2 、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,不是个人独立的劳动。
3 、推广和使用在实践中总结出来的软件开发的成功技术和方法。
4 、开发和使用更好的软件工具。
1.2 软件工程
1.软件工程的定义 p5
概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它。这就是软件工程。
2.软件工程的本质特性 p6
1 )软件工程关注于大型程序的构造。
2 )软件工程的中心课题是控制复杂性
Ø 主要考虑:如何分解和集成Ø 为什么要分解: G .Miller, “7 士 2 ” 原则3 )软件经常变化
4 )开发软件的效率非常重要
5 )和谐地合作是开发软件的关键
6 )软件必须有效地支持它的用户
7 )在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品
扩展定义:软件=知识+程序+数据+文档
3.软件工程的基本原理 p7
B.W.Boehm, 1983 年提出:
1 )用分阶段的生命周期计划严格管理
2 )坚持进行阶段评审
3 )实行严格的产品控制基线
Ø 基线( baseline )控制4 )采用现代程序设计技术
5 )结果应能清楚地审查
6 )开发小组的人员应该少而精
7 )承认不断改进软件工程实践的必要性
4.软件工程方法学 p9
(1)三要素:方法 工具 过程
(2)思想:1) 传统方法学,也称为:生命周期方法学 结构化范型
2)面向对象方法
1.3 软件生命周期
1.定义
由软件定义、软件开发和运行维护(也成为软件维护)3个时期组成,每一个时期又进一步划分成若干个阶段。 p11
3个时期、8 个阶段: 问题定义;可行性研究;需求分析; 概要设计;详细设计;编码;测试;维护
1.4 软件过程
p14
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
过程是软件工程三要素之一,定义了运用方法的顺序、应该交付的文档资料,为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段人物完成的里程碑。通常用软件生命周期模型来描述
1.瀑布模型
1970年,由W.Royce提出
瀑布模型的过程
1 、传统的瀑布模型
Ø 从上一阶段接受本阶段的工作对象,作为输 入;
Ø 利用输入,完成本阶段活动的内容;
Ø 本阶段的工作成果作为输出传入下一阶段。
2. 实际的瀑布模型
增加了一个评审活动,评审每个阶段完成的活动,若得到确认,则进行下一阶段的活动;否则返回前一阶段,甚至更前阶段返工;
3.瀑布模型的特点
(1)阶段间具有顺序性和依赖性
(2)推迟实现的观点
(3)质量保证的观点
优点:
缺点:
2. 快速原型模型
原型是快速实现和运行的早期版本,反映最终系统的部分重要特性。
常见的原型实例:人机界面;系统主要功能。
优点:
通常能反映用户真实需求;软件产品的开发基本上是线性顺序进行的。
3.增量模型
把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
使用增量模型时,第一个阶段的增量构件往往实现软件的基本需求,提供最核心的功能;后面的增量构架逐渐添加系统的其它功能。
优点:
缺点:
对开发人员技术能力要求较高,要求能从系统整体出发正确划分增量构件,并进行分别开发,最后能很好地集成这些构件
4.螺旋模型
1.简单的螺旋模型
螺旋模型改进了原型模型,在每个阶段都加入风险分析。
5.喷泉模型