第 1 章 软件工程学概述
学习重点
?1、软件危机、软件工程产生的原因 ?2、软件工程过程和软件生命周期 ?3、软件生命周期模型 掌握几个基本概念
? 软件危机 ? 软件工程 ? 软件过程
? 软件生命周期 ? 软件生命周期模型
软件危机与软件工程学
软件工程学的产生要从“软件危机”说起
?1968 年,第一届 NAT0 (北大西洋公约组织的计算机科学家的国际会议) 会议,“ 软件工程” 的慨念作为一种有效解决“ 软件危机” 的途径被正式提出。 ? 什么是软件危机?
? 软件危机有什么典型表现? ? 为什么会产生软件危机? ? 怎么解决软件危机?
§1 软件危机
§ 1 . 1 . 1 软件危机介绍 什么是软件危机?
软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。 软件危机主要包括的问题(两方面) : ① 如何开发软件 ② 如何维护软件
软件危机有什么典型表现?(1)
开发费用和进度难以估算和控制,大大超过预期的资金和规定日期; 软件需求分析不够充分,用户不满意“已经完成”的软件系统。 软件质量难于保证; 软件维护困难;
? 难以改正程序中的错误;
? 难以根据用户的需要在原有程序中增加一些新的功能。
软件危机有什么典型表现?
通常没有保留适当的文档资料。 文档的作用:
?软件开发管理人员:用于管理和评价软件开发工程的进展状况
?软件开发人员:用于开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。并且可在开发早期发现错误和不一致性,便于及时加以纠正 ?软件维护人员:软件维护的依据
开发成本逐年上升,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
几个软件危机的著名案例
① 1966年,IBM 360 机的操作系统。花费 5000 人一年的工作量,写了近 1 万行代码。错误百出,每次的新版本就是从前一版本中找 1 000个程序错误而修正的结果。
② 1963 年,美国用于控制火星探测器的计算机软件中的一个 “ , ”号被误写为“.”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。
③ 美国丹佛新国际机场自动化行李系统软件。投资 1. 93 亿美元,计划 1993 年万圣节启用。但开发人员一直为系统错误困扰,屡次推后启用时间,直到 1994 年 6 月,机场计划者承认无法预测何时能启用。
④ 1996 年,欧洲阿里亚纳 5 型运载火箭坠毁,造成 5 亿美元损失。原因是控制软件中的一个错误。
§1 . 1 . 2 产生软件危机的原因
主要两个原因:
1 、与软件本身的特点有关
2 、与软件开发与维护的方法不正确有关。 一 、软件本身的特点 ( 1)
软件与硬件、一般程序存在很多不同之处。
1 、软件与硬件不同
抽象性。软件生产没有明显的制造过程,难以衡量开发进展,也难以控制软件质量。 问题的隐蔽性。没有硬件的磨损、老化问题,但存在开发早期在分析、设计阶段的错误,修改难度较大。
失效率蜘线
改正一个问题需付出的代价
2 、软件与一般程序不同(1)
① 软件远比一般程序规模庞大,复杂性高
? 软件所反映的实际问题的复杂性 ? 程序逻辑结构的复杂性。
? 例 1 : Windows95 , 1000 万行代码;
? Windows2000 , 5000 万行代码
? 例 2 : Exchange 2000 和 windows 2000 开发人员
软件的规模
软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。
2 、软件与一般程序不同( 2 )
② 大型软件开发既有技术问题,还有社会问题。
? 社会因素:组织机构、体制、管理方式、观念、人的心理素等。 开发团队成员分工合作 技术与管理的矛盾
软件开发人员对软件应用的领域知识的了解
二、软件开发维护方法中存在的问题(1)
① 对用户需求的获取不正确
? 用户的原因 ? 分析人员的原因
对分析人员的要求:沟通能力、归纳总结能力、经验 越是早期产生的错误,付出的代价越大。
? 图:不同时期引入同一变动的代价
二、软件开发维护方法中存在的问题( 2 )
② 软件开发就是编写程序。
?一个完整的软件产品由一整套完整的配置组成,程序只是其中的一个组成部分。
?软件开发过程包括多个阶段,每个阶段的产品都是最终的完整的软件产品的一部分。
③ 软件开发只要依靠个别编程高手就能完成。 ④ 轻视软件维护
?软件维护约占软件费用 55 一 75 % ,包括修改软件运行的错误;对软件进行改进和功能扩充。
软件维护在软件费用的比例
?
三、其他产生软件危机的原因
①软件开发尚未完全摆脱手工艺的开发方式。
② 软件成本相当昂贵,主要依靠大量复杂的、高强度的脑力劳动 ③ 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依