第1章 软件工程学概论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
§1.1
软件危机
美国IBM 公司在1963年至 美国IBM 公司在1963年至1966年开发的IBM360机 年至1966年开发的 年开发的IBM360机 的操作系统。这一项目花了5000人一年的工作量 人一年的工作量, 的操作系统。这一项目花了5000人一年的工作量,最多 时有1000人投入开发工作 写出了近100万行源程序 人投入开发工作, 万行源程序。 时有1000人投入开发工作,写出了近100万行源程序。 据统计,这个操作系统每次发行的新版本都是从前一版 据统计,这个操作系统每次发行的新版本都是从前一版 本中找出1000个程序错误而修正的结果 个程序错误而修正的结果。 本中找出1000个程序错误而修正的结果。......
19
§1.2
软件工程
所谓软件工程, 所谓软件工程,提倡的是一种软件开发中的系 统思想的具体实现,是一门科学, 统思想的具体实现,是一门科学,也被称为是软件 产业中的“ 科学。 产业中的“软”科学。
软件工程这一概念,主要是针对20世纪60年代“软件危机” 软件工程这一概念,主要是针对20世纪60年代“软件危机”而 20世纪60年代 提出的。它首次出现在1968 NATO(北大西洋公约组织)会议上。 1968年 提出的。它首次出现在1968年NATO(北大西洋公约组织)会议上。 主要围绕软件项目,开展有关开发模型、方法以及支持工具的研究。 主要围绕软件项目,开展有关开发模型、方法以及支持工具的研究。 其主要成果有:提出了瀑布模型, 其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言 例如PASCAL语言,Ada语言)、结构化方法等 并且, PASCAL语言 语言)、结构化方法等。 (例如PASCAL语言,Ada语言)、结构化方法等。并且,围绕项目管 理提出了费用估算、文档复审等方法和工具。 理提出了费用估算、文档复审等方法和工具。 70年代初 年代初, 软件工厂”这一概念提出以来, 70年代初,自“软件工厂”这一概念提出以来,主要围绕软件 过程以及软件复用, 过程以及软件复用,开展了有关软件生产技术和软件生产管理的研 究与实践。其主要成果有: 究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相 计算机辅助软件工程(CASE) 关的面向对象方法,大力开展了计算机辅助软件工程(CASE)的研究 关的面向对象方法,大力开展了计算机辅助软件工程(CASE)的研究 与实践。 与实践。
这个项目的负责人事后总结了他在组织开发过程中的沉 这个项目的负责人事后总结了他在组织开发过程中的沉 痛教训时说 时说: ......正像一只逃亡的野兽落到泥潭中做垂 痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深, 死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾 ......程序设计工作正像这样一个泥潭 ......一批批 程序设计工作正像这样一个泥潭, 难。......程序设计工作正像这样一个泥潭,......一批批 程序员被迫在泥潭中拼命挣扎,......” 程序员被迫在泥潭中拼命挣扎,......”
软件工程
张聚礼 zhjl@lut.cn
兰州理工大学计算机与通信学院
第1 章
软件工程学概述
1.0 什么是软件? 什么是软件? 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题
2
§1.0
什么是软件? 什么是软件?
软件是计算机系统中与硬件相互依存的另一 软件是计算机系统中与硬件相互依存的另一 部分,它是包括程序 数据及其相关文档的 程序、 及其相关文档 部分,它是包括程序、数据及其相关文档的 完整集合。 完整集合。 程序是按事先设计的功能和性能要求执行的 程序是按事先设计的功能和性能要求执行的 是按事先设计 指令序列。 指令序列。 数据是使程序能正常操纵信息的数据结构。 数据是使程序能正常操纵信息的数据结构。 是使程序能正常操纵信息的数据结构 文档是与程序开发, 文档是与程序开发,维护和使用有关的图文 是与程序开发 材料。 材料。
4
软件的分类: 软件的分类:
按软件的功能进行划分: 按软件的功能进行划分:
系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序 等
5
•
支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持 支持需求分析、设计、实现、 管理的软件
6
•
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/ 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 医疗、 事务管理、 事务管理、办公自动化软件 计算机辅助教学软件
7
•
即针对特定某个客户的要求, 即针对特定某个客户的要求, 按软件工作方式划分: 按软件工作方式划分: 并仅为其使用的软件。 并仅为其使用的软件。又称工 实时处理软件 程软件,特点是有明确的合同, 程软件,特点是有明确的合同, 严格的工期,约定的维护期等。 严格的工期,约定的维护期等。 分时软件 "XXX公司XXX系统 即针对某一领域客户的共有需 公司XXX系统" 如"XXX公司XXX系统"。 交互式软件 求而开发的软件。特点是通用、 求而开发的软件。特点是通用、 批处理软件 功能丰富而冗余, 功能丰富而冗余,通过一次性的 购买行为获得等。 购买行为获得等。如操作系统软 数据库软件、CAD软件等 软件等。 按软件服务对象的范围划分: 件、数据库软件、CAD软件等。 按软件服务对象的范围划分:
3
软件的表现形式: 软件的表现形式:
软件分为有形部分和无形部分: 软件分为有形部分和无形部分: 有形部分和无形部分 软件的有形部分: 软件的有形部分:是软件的各种具体表现形 式,包括软件文档,程序代码,二进制代码,用户 包括软件文档,程序代码,二进制代码, 软件文档 界面,输出报表等 界面,输出报表等。 软件的无形部分:是软件的内部逻辑, 软件的无形部分:是软件的内部逻辑,是软件 思想。 本身所包含的思想 本身所包含的思想。
12
•
软件危机
非常好”工程师以年轻人的热情回答道, “非常好”工程师以年轻人的热情回答道,“这个项目远 比我想像的简单。我差不多已经完成了75%的任务。 的任务。 比我想像的简单。我差不多已经完成了 的任务 老板笑了,说道: 真是太棒了” 老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续 努力工作,准备好一周后再汇报一次工作进度。 努力工作,准备好一周后再汇报一次工作进度。 一周后老板将年轻人叫到办公室,问他说: 一周后老板将年轻人叫到办公室,问他说:“现在进度如 何?” 一切顺利”年轻人回答说, 但是我遇到了一些小麻烦。 “一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。 我会排除这些困难,很快就可以回到正轨上来。 我会排除这些困难,很快就可以回到正轨上来。” 你觉得在最后期限之前能否完成? 老板问道。 “你觉得在最后期限之前能否完成?”老板问道。 没有问题”工程师答道。 我差不多已经完成了90%” “没有问题”工程师答道。“我差不多已经完成了 ” 问题:年轻工程师在整个项目工期内始终停留在90%的进 问题: 年轻工程师在整个项目工期内始终停留在 的进 度上, 在别人的帮助下)直到交付期限之后一个月才做完。 度上,(在别人的帮助下)直到交付期限之后一个月才做完。
维护是极端艰巨 复杂的工作, 复杂的工作,需 要花费很大代价。 要花费很大代价。
18
消除软件危机的办法
1、理解软件的概念:软件是程序、数据及 理解软件的概念:软件是程序、 相关文档的完整集合。 相关文档的完整集合。 2、应该推广使用在实践中总结出来的开发 软件的成功的技术和方法—— ——注意总结和积累 软件的成功的技术和方法——注意总结和积累 应该开发和使用更好的软件工具。 3、应该开发和使用更好的软件工具。 4、软件工程学的一个重要目标就是提高软 件的可维护性,减少软件维护的代价。 件的可维护性,减少软件维护的代价。 总之,为了解决软件危机,就要引入“ 总之,为了解决软件危机,就要引入“软件 工程” 既要有技术措施(方法和工具) 工程”,既要有技术措施(方法和工具),又要有 必要的组织管理措施。 必要的组织管理措施。
16
•
软件通常没有适当的文档资料。 (5) 软件通常没有适当的文档资料。缺少设 计资料、难以维护,写文档嫌麻烦。 计资料、难以维护,写文档嫌麻烦。 (6) 软件成本在计算机系统总成本中所占的 比例逐年上升。软件过于庞大,成本过高。 比例逐年上升。软件过于庞大,成本过高。 软件开发生产率提高的速度, (7) 软件开发生产率提高的速度,远远跟不 上计算机应用迅速普及深入的趋势。 上计算机应用迅速普及深入的趋势。跟不上计算 机和软件技术的发展速度,技术落后。 机和软件技术的发展速度,技术落后。
15
软件危机的产生的原因及总结
(1) 对软件开发成本和进度的估计常常很不 准确。拖期,项目管理经验欠缺。 准确。拖期,项目管理经验欠缺。 (2) 用户对“已完成的”软件系统不满意的 用户对“已完成的” 现象经常发生。 闭门造车、 现象经常发生。模糊的需求 、闭门造车、忙于 编程,仓促上阵。 编程,仓促上阵。 (3) 软件产品的质量往往靠不住。可靠性和 软件产品的质量往往靠不住。 质量保证欠缺,缺少测试。 质量保证欠缺,缺少测试。 (4) 软件常常是不可维护的。设计死板,没 软件常常是不可维护的。设计死板, 有整体考虑。 有整体考虑。
Software Crisis !
Baidu Nhomakorabea
11
•
软件危机
欠缺文档 欠缺设计,急于编程 欠缺设计,
问题出在哪里? 问题出在哪里? 项目没有被很好地理解;计划不周, ⑴ 项目没有被很好地理解;计划不周,最终导致 进度拖延。 进度拖延。
例: 在20世纪 年代后期,一位热情的年青工程师受命为一个自动化 世纪60年代后期 世纪 年代后期, 制造应用项目“编写”计算机程序。选择他的理由非常简单, 制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整 个技术小组中他是唯一参加过计算机编程培训的人。 个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编 语言的IN和 指令以及Fortran语言有所了解,但是却根本不懂软件 语言有所了解, 语言的 和OUT指令以及 指令以及 语言有所了解 工程,更不要说项目进度安排和跟踪了。 工程,更不要说项目进度安排和跟踪了。 他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。 他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年 口头描述 轻人被告知该项目必须在两个月之内完成。 轻人被告知该项目必须在两个月之内完成。 他阅读了这些手册,想好了解决方法, 立即编写代码。两周后, 他阅读了这些手册,想好了解决方法,就立即编写代码。两周后,老板 将他叫到办公室询问项目进展情况。 将他叫到办公室询问项目进展情况。
项目软件 产品软件
8
软件发展阶段: 软件发展阶段:
程序设计阶段 — 50至60年代 50至60年代 程序系统阶段 — 60至70年代 60至70年代 软件工程阶段 — 70年代以后 70年代以后
9
软件开发工具的变迁: 软件开发工具的变迁:
穿孔机打孔编程 汇编语言(Z80、 汇编语言(Z80、 M6800、 M6800、8086/88) 高级语言 (Cobol、Basic、Dbase、Turbo C、 、 、 、 、 FoxBase、Foxpro等) C/S、B/S 、 等 、 体系结构的开发工具(VFP、VC、VB、 体系结构的开发工具 、 、 、 Delphi、Powerbuilder、C++ 、 、 Builder、Oracle Developer/2000、 、 、 Java、MS .net等等 等等) 、 等等
14
•
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 软件可靠性( 缺少度量的标准, 无法保证。 无法保证。 如何保证软件产品的质量,是非常复杂困 如何保证软件产品的质量, 难的问题。特别对于规模庞大的软件。 难的问题。特别对于规模庞大的软件。
软件难以维护(maintainability) ⑷ 软件难以维护(maintainability) 不易升级(evolvability) 不易升级(evolvability)
17
软件开发付出代价分析
根据美国一些软件公司的统计资料, 根据美国一些软件公司的统计资料,在后期引 入一个变动比在早期引入相同变动所需付出的代价 个数量级。 1.1定性地描绘了在不同时期 高2~3个数量级。图1.1定性地描绘了在不同时期 引入一个变动需要付出的代价的变化趋势。 引入一个变动需要付出的代价的变化趋势。
13
•
软件危机
⑵ 没有充分的文档资料(documentation) 没有充分的文档资料(documentation) Managers —— 评价, 进程跟踪, ...... 评价, 进程跟踪, Programmers —— 与其它程序的通信接口 Maintainers ——维护 维护 比写程序困难得多。 人与人的交流比写程序困难得多。
§1.1
软件危机
美国IBM 公司在1963年至 美国IBM 公司在1963年至1966年开发的IBM360机 年至1966年开发的 年开发的IBM360机 的操作系统。这一项目花了5000人一年的工作量 人一年的工作量, 的操作系统。这一项目花了5000人一年的工作量,最多 时有1000人投入开发工作 写出了近100万行源程序 人投入开发工作, 万行源程序。 时有1000人投入开发工作,写出了近100万行源程序。 据统计,这个操作系统每次发行的新版本都是从前一版 据统计,这个操作系统每次发行的新版本都是从前一版 本中找出1000个程序错误而修正的结果 个程序错误而修正的结果。 本中找出1000个程序错误而修正的结果。......
19
§1.2
软件工程
所谓软件工程, 所谓软件工程,提倡的是一种软件开发中的系 统思想的具体实现,是一门科学, 统思想的具体实现,是一门科学,也被称为是软件 产业中的“ 科学。 产业中的“软”科学。
软件工程这一概念,主要是针对20世纪60年代“软件危机” 软件工程这一概念,主要是针对20世纪60年代“软件危机”而 20世纪60年代 提出的。它首次出现在1968 NATO(北大西洋公约组织)会议上。 1968年 提出的。它首次出现在1968年NATO(北大西洋公约组织)会议上。 主要围绕软件项目,开展有关开发模型、方法以及支持工具的研究。 主要围绕软件项目,开展有关开发模型、方法以及支持工具的研究。 其主要成果有:提出了瀑布模型, 其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言 例如PASCAL语言,Ada语言)、结构化方法等 并且, PASCAL语言 语言)、结构化方法等。 (例如PASCAL语言,Ada语言)、结构化方法等。并且,围绕项目管 理提出了费用估算、文档复审等方法和工具。 理提出了费用估算、文档复审等方法和工具。 70年代初 年代初, 软件工厂”这一概念提出以来, 70年代初,自“软件工厂”这一概念提出以来,主要围绕软件 过程以及软件复用, 过程以及软件复用,开展了有关软件生产技术和软件生产管理的研 究与实践。其主要成果有: 究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相 计算机辅助软件工程(CASE) 关的面向对象方法,大力开展了计算机辅助软件工程(CASE)的研究 关的面向对象方法,大力开展了计算机辅助软件工程(CASE)的研究 与实践。 与实践。
这个项目的负责人事后总结了他在组织开发过程中的沉 这个项目的负责人事后总结了他在组织开发过程中的沉 痛教训时说 时说: ......正像一只逃亡的野兽落到泥潭中做垂 痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂 死的挣扎,越是挣扎,陷得越深, 死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾 ......程序设计工作正像这样一个泥潭 ......一批批 程序设计工作正像这样一个泥潭, 难。......程序设计工作正像这样一个泥潭,......一批批 程序员被迫在泥潭中拼命挣扎,......” 程序员被迫在泥潭中拼命挣扎,......”
软件工程
张聚礼 zhjl@lut.cn
兰州理工大学计算机与通信学院
第1 章
软件工程学概述
1.0 什么是软件? 什么是软件? 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题
2
§1.0
什么是软件? 什么是软件?
软件是计算机系统中与硬件相互依存的另一 软件是计算机系统中与硬件相互依存的另一 部分,它是包括程序 数据及其相关文档的 程序、 及其相关文档 部分,它是包括程序、数据及其相关文档的 完整集合。 完整集合。 程序是按事先设计的功能和性能要求执行的 程序是按事先设计的功能和性能要求执行的 是按事先设计 指令序列。 指令序列。 数据是使程序能正常操纵信息的数据结构。 数据是使程序能正常操纵信息的数据结构。 是使程序能正常操纵信息的数据结构 文档是与程序开发, 文档是与程序开发,维护和使用有关的图文 是与程序开发 材料。 材料。
4
软件的分类: 软件的分类:
按软件的功能进行划分: 按软件的功能进行划分:
系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序 等
5
•
支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持 支持需求分析、设计、实现、 管理的软件
6
•
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/ 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 医疗、 事务管理、 事务管理、办公自动化软件 计算机辅助教学软件
7
•
即针对特定某个客户的要求, 即针对特定某个客户的要求, 按软件工作方式划分: 按软件工作方式划分: 并仅为其使用的软件。 并仅为其使用的软件。又称工 实时处理软件 程软件,特点是有明确的合同, 程软件,特点是有明确的合同, 严格的工期,约定的维护期等。 严格的工期,约定的维护期等。 分时软件 "XXX公司XXX系统 即针对某一领域客户的共有需 公司XXX系统" 如"XXX公司XXX系统"。 交互式软件 求而开发的软件。特点是通用、 求而开发的软件。特点是通用、 批处理软件 功能丰富而冗余, 功能丰富而冗余,通过一次性的 购买行为获得等。 购买行为获得等。如操作系统软 数据库软件、CAD软件等 软件等。 按软件服务对象的范围划分: 件、数据库软件、CAD软件等。 按软件服务对象的范围划分:
3
软件的表现形式: 软件的表现形式:
软件分为有形部分和无形部分: 软件分为有形部分和无形部分: 有形部分和无形部分 软件的有形部分: 软件的有形部分:是软件的各种具体表现形 式,包括软件文档,程序代码,二进制代码,用户 包括软件文档,程序代码,二进制代码, 软件文档 界面,输出报表等 界面,输出报表等。 软件的无形部分:是软件的内部逻辑, 软件的无形部分:是软件的内部逻辑,是软件 思想。 本身所包含的思想 本身所包含的思想。
12
•
软件危机
非常好”工程师以年轻人的热情回答道, “非常好”工程师以年轻人的热情回答道,“这个项目远 比我想像的简单。我差不多已经完成了75%的任务。 的任务。 比我想像的简单。我差不多已经完成了 的任务 老板笑了,说道: 真是太棒了” 老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续 努力工作,准备好一周后再汇报一次工作进度。 努力工作,准备好一周后再汇报一次工作进度。 一周后老板将年轻人叫到办公室,问他说: 一周后老板将年轻人叫到办公室,问他说:“现在进度如 何?” 一切顺利”年轻人回答说, 但是我遇到了一些小麻烦。 “一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。 我会排除这些困难,很快就可以回到正轨上来。 我会排除这些困难,很快就可以回到正轨上来。” 你觉得在最后期限之前能否完成? 老板问道。 “你觉得在最后期限之前能否完成?”老板问道。 没有问题”工程师答道。 我差不多已经完成了90%” “没有问题”工程师答道。“我差不多已经完成了 ” 问题:年轻工程师在整个项目工期内始终停留在90%的进 问题: 年轻工程师在整个项目工期内始终停留在 的进 度上, 在别人的帮助下)直到交付期限之后一个月才做完。 度上,(在别人的帮助下)直到交付期限之后一个月才做完。
维护是极端艰巨 复杂的工作, 复杂的工作,需 要花费很大代价。 要花费很大代价。
18
消除软件危机的办法
1、理解软件的概念:软件是程序、数据及 理解软件的概念:软件是程序、 相关文档的完整集合。 相关文档的完整集合。 2、应该推广使用在实践中总结出来的开发 软件的成功的技术和方法—— ——注意总结和积累 软件的成功的技术和方法——注意总结和积累 应该开发和使用更好的软件工具。 3、应该开发和使用更好的软件工具。 4、软件工程学的一个重要目标就是提高软 件的可维护性,减少软件维护的代价。 件的可维护性,减少软件维护的代价。 总之,为了解决软件危机,就要引入“ 总之,为了解决软件危机,就要引入“软件 工程” 既要有技术措施(方法和工具) 工程”,既要有技术措施(方法和工具),又要有 必要的组织管理措施。 必要的组织管理措施。
16
•
软件通常没有适当的文档资料。 (5) 软件通常没有适当的文档资料。缺少设 计资料、难以维护,写文档嫌麻烦。 计资料、难以维护,写文档嫌麻烦。 (6) 软件成本在计算机系统总成本中所占的 比例逐年上升。软件过于庞大,成本过高。 比例逐年上升。软件过于庞大,成本过高。 软件开发生产率提高的速度, (7) 软件开发生产率提高的速度,远远跟不 上计算机应用迅速普及深入的趋势。 上计算机应用迅速普及深入的趋势。跟不上计算 机和软件技术的发展速度,技术落后。 机和软件技术的发展速度,技术落后。
15
软件危机的产生的原因及总结
(1) 对软件开发成本和进度的估计常常很不 准确。拖期,项目管理经验欠缺。 准确。拖期,项目管理经验欠缺。 (2) 用户对“已完成的”软件系统不满意的 用户对“已完成的” 现象经常发生。 闭门造车、 现象经常发生。模糊的需求 、闭门造车、忙于 编程,仓促上阵。 编程,仓促上阵。 (3) 软件产品的质量往往靠不住。可靠性和 软件产品的质量往往靠不住。 质量保证欠缺,缺少测试。 质量保证欠缺,缺少测试。 (4) 软件常常是不可维护的。设计死板,没 软件常常是不可维护的。设计死板, 有整体考虑。 有整体考虑。
Software Crisis !
Baidu Nhomakorabea
11
•
软件危机
欠缺文档 欠缺设计,急于编程 欠缺设计,
问题出在哪里? 问题出在哪里? 项目没有被很好地理解;计划不周, ⑴ 项目没有被很好地理解;计划不周,最终导致 进度拖延。 进度拖延。
例: 在20世纪 年代后期,一位热情的年青工程师受命为一个自动化 世纪60年代后期 世纪 年代后期, 制造应用项目“编写”计算机程序。选择他的理由非常简单, 制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整 个技术小组中他是唯一参加过计算机编程培训的人。 个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编 语言的IN和 指令以及Fortran语言有所了解,但是却根本不懂软件 语言有所了解, 语言的 和OUT指令以及 指令以及 语言有所了解 工程,更不要说项目进度安排和跟踪了。 工程,更不要说项目进度安排和跟踪了。 他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。 他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年 口头描述 轻人被告知该项目必须在两个月之内完成。 轻人被告知该项目必须在两个月之内完成。 他阅读了这些手册,想好了解决方法, 立即编写代码。两周后, 他阅读了这些手册,想好了解决方法,就立即编写代码。两周后,老板 将他叫到办公室询问项目进展情况。 将他叫到办公室询问项目进展情况。
项目软件 产品软件
8
软件发展阶段: 软件发展阶段:
程序设计阶段 — 50至60年代 50至60年代 程序系统阶段 — 60至70年代 60至70年代 软件工程阶段 — 70年代以后 70年代以后
9
软件开发工具的变迁: 软件开发工具的变迁:
穿孔机打孔编程 汇编语言(Z80、 汇编语言(Z80、 M6800、 M6800、8086/88) 高级语言 (Cobol、Basic、Dbase、Turbo C、 、 、 、 、 FoxBase、Foxpro等) C/S、B/S 、 等 、 体系结构的开发工具(VFP、VC、VB、 体系结构的开发工具 、 、 、 Delphi、Powerbuilder、C++ 、 、 Builder、Oracle Developer/2000、 、 、 Java、MS .net等等 等等) 、 等等
14
•
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 软件可靠性( 缺少度量的标准, 无法保证。 无法保证。 如何保证软件产品的质量,是非常复杂困 如何保证软件产品的质量, 难的问题。特别对于规模庞大的软件。 难的问题。特别对于规模庞大的软件。
软件难以维护(maintainability) ⑷ 软件难以维护(maintainability) 不易升级(evolvability) 不易升级(evolvability)
17
软件开发付出代价分析
根据美国一些软件公司的统计资料, 根据美国一些软件公司的统计资料,在后期引 入一个变动比在早期引入相同变动所需付出的代价 个数量级。 1.1定性地描绘了在不同时期 高2~3个数量级。图1.1定性地描绘了在不同时期 引入一个变动需要付出的代价的变化趋势。 引入一个变动需要付出的代价的变化趋势。
13
•
软件危机
⑵ 没有充分的文档资料(documentation) 没有充分的文档资料(documentation) Managers —— 评价, 进程跟踪, ...... 评价, 进程跟踪, Programmers —— 与其它程序的通信接口 Maintainers ——维护 维护 比写程序困难得多。 人与人的交流比写程序困难得多。