第1章 软件工程概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

25
第1章 软件工程概述
软件危机
⑵ 没有充分的文档资料(documentation)
人与人的交流比写程序困难得多。
26
第1章 软件工程概述
软件危机
⑶ 软件可靠性(reliability)缺少度量的标准,质量 无法保证。 如何保证软件产品的质量,是非常复杂困难 的问题。特别对于规模庞大的软件。
⑷ 软件难以维护(maintainability) 不易升级(evolvability)
24
第1章 软件工程概述
软件危机
“非常好”工程师以年轻人的热情回答道,“这个项目远比我想 像的简单。我差不多已经完成了75%的任务。 老板笑了,说道:“真是太棒了”然后他嘱咐年轻人继续努力工 作,准备好一周后再汇报一次工作进度。 一周后老板将年轻人叫到办公室,问他说:“现在进度如何?” “一切顺利”年轻人回答说,“但是我遇到了一些小麻烦。我会 排除这些困难,很快就可以回到正轨上来。” “你觉得在最后期限之前能否完成?”老板问道。 “没有问题”工程师答道。“我差不多已经完成了90%” 如果读者在软件领域中工作过几年,你一定可以将这个故事写完。 毫不奇怪,年轻工程师在整个项目工期内始终停留在90%的进度上, (在别人的帮助下)直到交付期限之后一个月才做完
8
第1章 软件工程概述
软件的分类
5.按软件使用的频度划分 ⑴仅供一次使用的软件 ⑵频繁使用的软件 6.按软件的失效 ⑴可靠性等质量要求高。 ⑵常与完成重要功能的大系统的处理部 件相联. ⑶含有可能对以下各项造成影响的程序
9
第1章 软件工程概述
1.2 软件的发展和软件危机
10
第1章 软件工程概述
29
第1章 软件工程概述
软件的神话——管理者的神话
神话:如果我们已落后于计划,可以增加 更多的程序员来赶上进度。 事实:软件开发并非像制造一样是一个机 械过程。用Brooks的话来说,“给一个 已经延迟的软件项目增加人手只会使其 更加延迟”。看起来,这句话与人的直 觉正好相反。但实际上,增加新人,原 来正在工作的开发者必须花时间来培训 新人,这样就减少了他们花在项目开发 上的时间。人手可以增加,但只能在计 划周密、协调良好的情况下。
3
第1章 软件工程概述
什么是软件
软件是计算机系统中与硬件相互依存的
另一部分,它是包括程序,数据及其相 关文档的完整集合 程序是按事先设计的功能和性能要求执 行的指令序列 数据是使程序能正常操纵信息的数据结 构 文档是与程序开发,维护和使用有关的 图文材料
4
第1章 软件工程概述
软件的特点
第1章 软件工程概述
1
第1章 软件工程概述
1.1 软件的概念、特点和分类
2
第1章 软件工程概述
软件的概念
程序、软件与软件产品
独唱 小合唱-->合唱-->万人大合唱 | | | 简单程序 较复杂程序 软件 软件是计算机系统中与硬件相互依存的另一部 分,它包括程序 、数据、相关文档的完整集合 以及完善的售后服务。 软件=程序+数据+文档+服务 注:程序并不是软件,程序只是软件的组成部分。
30
第1章 软件工程概述
软件的神话——用户的神话
需要计算机软件的用户可能就是邻桌,或是另一
个技术组,也可能是市场/销售部门,或另一个 公司。在许多情况下,用户相信关于软件的神话, 因为负责软件的管理者和开发者很少去纠正用户 的错误理解。神话导致了用户过高的期望值,并 引起对开发者的极端不满。 神话:有了对目标的一般描述就足以开始写程序 了——我们可以以后补充细节。 事实:不完善的系统定义是软件项目失败的主要原 因。关于待开发项目的应用领域、功能、性能、 接口、设计约束及确认标准的形式化的、详细的 描述是必需要的。这些内容只有通过用户和开发 者之间的通信交流才能确定。
这个项目的负责人F. D. Brooks事后总结了他在组织开发
过程中的沉痛教训时说:“......正像一只逃亡的野兽落 到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法 逃脱灭顶的灾难。......程序设计工作正像这样一个泥 潭,......一批批程序员被迫在泥潭中拼命挣扎,...... 谁也没有料到问题竟会陷入这样的困境......”。IBM360操 作系统的历史教训成为软件开发项目的典型事例为人们所 记取。
28
第1章 软件工程概述
软件的神话——管理者的神话
神话:我们已经有了很多很好的软件开发工 具,而且,我们为它们买了最新的计算机。 事实:为了使用最新型号的计算机、工作站 和PC机去开发高质量的软件,我们已经投 入了太多的费用。实际上,计算机辅助软 件工程(CASE)工具比起硬件而言,对 于获得高质量和高生产率更为重要,但大 多数软件开发者并未使用它们。
程序设计本人
个人 小型 个人程序技术
少数用户
开发小组 中小型 小组技术水平
市场用户
开发小组及大中型开发机构 大中小型 管理水平 13
第1章 软件工程概述
计算机软件发展的三个时期及特点
时间
特点
程 序 设 计
子程序 程序库
程 序 系 统
结构化程序设计
软 件 工 程
数据库、开发工具、开发环 境、工程化开发方法、标准 和规范、网络和分布式开发、 面向对象技术
27
第1章 软件工程概述
软件的神话——管理者的神话
负责软件的管理者像大多数其他管理者一
样,都有巨大的压力,要维持预算,保持 进度和提高质量。 神话:我们已经有了关于建造软件的标准和 规程的书籍,难道它们不能给人们提供所 有其需要知道的信息吗? 事实:不错,关于标准的书籍已经存在,但 真正用到了它们吗?软件实践者知道它们 存在吗?它们是否反映了现代软件开发的 过程?它们完整吗?很多情况下对于这些 问题的答案是“否”。
11
第1章 软件工程概述
12
第1章 软件工程概述
计算机软件发展的三个时期及特点
时间
特点
程 序 设 计
程序 汇编及机器语言 程序编写
程 序 系 统
程序及说明书 高级语言 包括设计和测试
软 件 工 程
程序、文档、数据 软件语言 软件生存期
软件所指 主要程序设计语言 软件工作范围
需求者
开发软件的组织 软件规模 决定质量的因素
15
第1章 软件工程概述
软件工程的发展的四个重要阶段
1、第一代软件工程 — 传统的软件工程 2、第二代软件工程 — 对象工程 80年代中到90年代,面向对象 3、第三代软件工程 — 过程工程 的方法与技术得到发展,研究的重 4、第四代软件工程 — 构件工程 点转移到面向对象的分析与设计,
演化为一种完整的软件开发方法和 系统的技术体系,称为对象工程。
22
第1章 软件工程概述
软件危机的原因
ห้องสมุดไป่ตู้⑴客观:软件本身特点
– 软件的规模庞大、复杂性高。
⑵主观:不正确的开发方法,软件开发和 维护有许多错误的认识和作法。
– 忽视需求分析 – 软件开发=程序编写 – 轻视软件维护
23
第1章 软件工程概述
软件危机
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致进度拖 延。
6
第1章 软件工程概述
软件的分类
1.按软件的功能划分 ⑴系统软件 ⑵支撑软件 ⑶应用软件 2.按软件规模划分 ⑴微型软件 ⑵小型软件 ⑶中型软件 ⑷大型软件 ⑸甚大型软件 ⑹极大型软件 如winXP包含4千万行代码,win7核心开发人员2500名。
7
第1章 软件工程概述
软件的分类
3.按软件工作方式划分 ⑴实时处理软件 ⑵交互式软件 ⑶分时软件 ⑷批处理软件 4.按软件服务对象的范围划分 ⑴项目软件 定制软件 ⑵产品软件
开发
维护责任者 硬件特征
程序设计者 价格高 存储容量小 工作可靠性差 完全不受重视
开发小组 降价、速度、容量及工 作可靠性有明显提高
专职维护人员 向超高速、大容量、微型化 及网络化方向发展
软件特征
软件技术的发展不能满 足需要,出现软件危机
开发技术有进步,但未获突 破性进展,价高,未完全摆 脱软件危机 14
第1章 软件工程概述
软件工程的发展的四个重要阶段
60年代末到70年代为了 1、第一代软件工程 克 服传统的软件工程 — “ 软 件 危 机 ” (Software crisis) 提 出 2、第二代软件工程 “软件工程”的名词, 将软 — 对象工程 3、第三代软件工程 件开发纳入工程化的轨道, — 过程工程 基本形成软件工程的概念、 4、第四代软件工程 框架、技术和方法。称为传 — 构件工程 统的软件工程。
21
第1章 软件工程概述
软件危机的现象
⑴ ⑵ ⑶ ⑷ ⑸ 对软件开发成本和进度的估计常常很不准确。 用户对“已完成的”软件系统不满意的现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 软件通常没有适当的文档资料。计算机软件不仅仅是 程序,还应该有一整套文档资料。 ⑹ 软件成本在计算机系统总成本中所占的比例逐年上升。 ⑺ 软件开发生产率提高的速度,远远跟不上计算机应用 迅速普及深入的趋势。
— — — —
传统的软件工程 对象工程 过程工程 构件工程
17
第1章 软件工程概述
90起年代,基于构件(Component) 软件工程的发展的四个重要阶段 的开发方法取得重要进展,软件系统的 开发可通过使用现成的可复用构件组装 完成,而无需从头开始构造,以此达到 提高效率和质量,降低成本的目的。称 1、第一代软件工程 — 传统的软件工程 为构件工程。
软件的发展
一、软件的发展历程 第一代(20世纪60年代中期以前):程序设计阶段。
第二代(从20世纪60年代中期到70年代中期):程序 系统阶段——“软件工程” 学科诞生。
第三代(从20世纪70年代中期到80年代中期):软件 工程阶段。 第四代(从20世纪80年代中期至今):软件产业在世 界经济中已经占有举足轻重的地位。
2、第二代软件工程 — 对象工程 3、第三代软件工程 — 过程工程 4、第四代软件工程 — 构件工程
18
第1章 软件工程概述
软件开发方法的模型
随意编程
面向过程 面向组件 面向Web Service
面向对象
面向配置组件
19
第1章 软件工程概述
什么是软件危机
定义:软件危机是计算机软件在它的开发和维护过程
16
第1章 软件工程概述
80年代中开始,人们在软件开发 的实践过程中认识到:提高软件生产 软件工程的发展的四个重要阶段 率,保证软件质量的关键是“软件过 程”,是软件开发和维护中的管理和 支持能力,逐步形成软件过程工程。
1、第一代软件工程 2、第二代软件工程 3、第三代软件工程 4、第四代软件工程
1.软件是一种逻辑实体,而不是具体的物 理实体。不占空间 2.软件的生产于硬件不同。仿造与盗版 3.在软件的运行和使用期间,没有硬件那 样的机械磨损,老化问题。
失 效 率 磨合 调整 磨损 用坏 失 效 率 实际曲线 理想曲线
硬件失效曲线
时间
软件失效曲线
时间
5
第1章 软件工程概述
软件的特点
4.软件的开发和运行常常受到计算机系统的限制,对计 算机系统有着不同程度的依赖。 5.软件的开发至今尚未完全摆脱手工业的开发方法。 6.软件是复杂的,人类能够创造的最复杂的产物是计算 机软件。游戏 7.软件成本相当昂贵。 Vista 5年时间,过百亿美元 微软2009年的研发经费高达70亿美元,大笔研发经费运 用在Windows7操作系统 8.相当多的软件工作涉及到社会因素。 如ERP软件,自动化软件
20
第1章 软件工程概述
软件危机
• 美国IBM公司在1963年至1966年开发的IBM360机的操作系 统。这一项目花了5000人一年的工作量,最多时有1000人 投入开发工作,写出了近100万行源程序。......据统计, 这个操作系统每次发行的新版本都是从前一版本中找出 1000个程序错误而修正的结果。......
中所遇到的一系列严重问题。 20世纪60年代末70年代初,西方工业发达国家经历了 一场“软件危机”。这场软件危机表现在:一方面软 件十分复杂,价格昂贵,供需差日益增大,另一方面 软件开发时又常常受挫,质量差,指定的进度表和完 成日期很少能按时实现,研制过程很难管理,即软件 的研制往往失去控制。 主要包含两方面的问题: ⑴如何开发软件,怎样满足对软件日益增长的需求; ⑵如何维护数量不断膨胀的已有软件。
例 在20世纪60年代后期,一位热情的年青工程师受命为一个自 动化制造应用项目“编写”计算机程序。选择他的理由非常简单, 因为在整个技术小组中他是唯一参加过计算机编程培训的人。这位 工程师对汇编语言的IN和OUT指令以及Fortran语言有所了解,但 是却根本不懂软件工程,更不要说项目进度安排和跟踪了。 他的老板给了他一大堆相关的手册,以及需要做些什么的口头描述。 年轻人被告知该项目必须在两个月之内完成。 他阅读了这些手册,想好了解决方法,就开始编写代码。两周后, 老板将他叫到办公室询问项目进展情况。
相关文档
最新文档