当前位置:文档之家› 第1章软件工程学概论.pptx

第1章软件工程学概论.pptx

Software Crisis ! • 11
软件危机
欠缺文档
欠缺设计,急于编程
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致 进度拖延。
例: 在20世纪60年代后期,一位热情的年青工程师受命为一个自动化 制造应用项目“编写”计算机程序。选择他的理由非常简单,因为在整 个技术小组中他是唯一参加过计算机编程培训的人。这位工程师对汇编 语言的IN和OUT指令以及Fortran语言有所了解,但是却根本不懂软件 工程,更不要说项目进度安排和跟踪了。
7•
即并仅针按为对其特软定使件用某工的个作软客户件方的。式又要划称求,工分:
程软件,实特时点处是理有软明件确的合同, 严格的工分期时,软约件定的维护期等。 如"XXX交公互司式XX软X件系即统针"。对某一领域客户的共有需求
批处理软件而能丰开富发而的软冗余件,。通特点过是一次通性用、的功购
买行为获得等。如操作系统软件、
老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续 努力工作,准备好一周后再汇报一次工作进度。
一周后老板将年轻人叫到办公室,问他说:“现在进度如 何?”
“一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。 我会排除这些困难,很快就可以回到正轨上来。”
“你觉得在最后期限之前能否完成?”老板问道。 “没有问题”工程师答道。“我差不多已经完成了90%” 问题:年轻工程师在整个项目工期内始终停留在90%的进 度上,(在别人的帮助下)直到交付期限之后一个月才做完。
(3) 软件产品的质量往往靠不住。可靠性和 质量保证欠缺,缺少测试。
(4) 软件常常是不可维护的。设计死板,没 有整体考虑。
• 16
(5) 软件通常没有适当的文档资料。缺少设 计资料、难以维护,写文档嫌麻烦。
(6) 软件成本在计算机系统总成本中所占的 比例逐年上升。软件过于庞大,成本过高。
(7) 软件开发生产率提高的速度,远远跟不 上计算机应用迅速普及深入的趋势。跟不上计算 机和软件技术的发展速度,技术落后。
程序是按事先设计的功能和性能要求执行的 指令序列。
数据是使程序能正常操纵信息的数据结构。 文档是与程序开发,维护和使用有关的图文
材料。
3
软件的表现形式:
软件分为有形部分和无形部分: 软件的有形部分:是软件的各种具体表现形 式,包括软件文档,程序代码,二进制代码,用户 界面,输出报表等。 软件的无形部分:是软件的内部逻辑,是软件 本身所包含的思想。
按软件服务对数象据的库范软件围、划CA分D:软件等。
项目软件
产品软件
8
软件发展阶段:
程序设计阶段 — 50至60年代 程序系统阶段 — 60至70年代 软件工程阶段 — 70年代以后
9
软件开发工具的变迁:
穿孔机打孔编程 汇编语言(Z80、 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等等)
软件工程
张聚礼 zhjl@
兰州理工大学计算机与通信学院
1
第1章 软件工程学概述
1.0 什么是软件? 1.1 软件危机 1.2 软件工程 1.3 软件生命周期 1.4 软件过程 1.5 小结 习题
2
§1.0 什么是软件?
软件是计算机系统中与硬件相互依存的另一 部分,它是包括程序、数据及其相关文档的 完整集合。
10
§1.1 软件危机
美国IBM 公司在1963年至1966年开发的IBM360机的 操作系统。这一项目花了5000人一年的工作量,最多时 有1000人投入开发工作,写出了近100万行源程序。据统 计,这个操作系统每次发行的新版本都是从前一版本中 找出1000个程序错误而修正的结果。......
这个项目的负责人事后总结了他在组织开发过程中的沉痛 教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的 挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。...... 程序设计工作正像这样一个泥潭,......一批批程序员被迫在 泥潭中拼命挣扎,......”

软件开发付出代价分析
根据美国一些软件公司的统计资料,在后期引 入一个变动比在早期引入相同变动所需付出的代价 高2~3个数量级。图1.1定性地描绘了在不同时期 引入一个变动需要付出的代价的变化趋势。
他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。年 轻人被告知该项目必须在两个月之内完成。
他阅读了这些手册,想好了解决方法,就立即编写代码。两周后,老板 将他叫到办公室询问项目进展情况。
• 12
软件危机
“非常好”工程师以年轻人的热情回答道,“这个项目远 比我想像的简单。我差不多已经完成了75%的任务。
如何保证软件产品的质量,是非常复杂困难 的问题。特别对于规模庞大的软件。
⑷ 软件难以维护(maintainability) 不易升级(evolvability)
15
软件危机的产生的原因及总结
(1) 对软件开发成本和进度的估计常常很不 准确。拖期,项目管理经验欠缺。
(2) 用户对“已完成的”软件系统不满意的 现象经常发生。模糊的需求 、闭门造车、忙于 编程,仓促上阵。
4
软件的分类:
按软件的功能进行划分:
系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序 等
5•
支撑软件
文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、测试和支持
管理的软件
6•
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件
• 13
软件危机
⑵ 没有充分的文档资料(documentation)
Managers —— 评价, 进程跟踪, ...... Programmers —— 与其它程序的通信接口 Maintainers ——维护
人与人的交流比写程序困难得多。
• 14
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 无法保证。
相关主题