第1章软件工程概述_第1页
第1章软件工程概述_第2页
第1章软件工程概述_第3页
第1章软件工程概述_第4页
第1章软件工程概述_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第第1章章 软件工程概述软件工程概述 第1章 软件工程概述 2 1.1 软件的概念、特点和分类软件的概念、特点和分类 第1章 软件工程概述 3 软件的概念软件的概念 l程序程序、软件软件与软件产品与软件产品 独唱独唱 小合唱小合唱-合唱合唱-万人大合唱万人大合唱 | | | 简单程序简单程序 较复杂程序较复杂程序 软件软件 l软件是计算机系统中与硬件相互依存的软件是计算机系统中与硬件相互依存的 另一部分另一部分, ,它包括程序它包括程序 、数据、相关文、数据、相关文 档的完整集合以及完善的售后服务。档的完整集合以及完善的售后服务。 软件软件= =程序程序+ +数据数据+ +文档文档+ +服

2、务服务 第1章 软件工程概述 4 软件的特点软件的特点 1.1.软件是一种逻辑实体,而不是具体的物软件是一种逻辑实体,而不是具体的物 理实体。理实体。 2.2.软件的生产于硬件不同。软件的生产于硬件不同。 3 3. .在软件的运行和使用期间,没有硬件那在软件的运行和使用期间,没有硬件那 样的机械磨损,老化问题。样的机械磨损,老化问题。 失效率 时间 磨合 调整 磨损 用坏 硬件失效曲线 失效率 时间 软件失效曲线 理想曲线 实际曲线 第1章 软件工程概述 5 软件的特点软件的特点 4.4.软件的开发和运行常常受到计算机系统软件的开发和运行常常受到计算机系统 的限制,对计算机系统有着不同程度的的

3、限制,对计算机系统有着不同程度的 依赖。依赖。 5.5.软件的开发至今尚未完全摆脱手工业的软件的开发至今尚未完全摆脱手工业的 开发方法。开发方法。 6.6.软件是复杂的,人类能够创造的最复杂软件是复杂的,人类能够创造的最复杂 的产物是计算机软件。的产物是计算机软件。 7.7.软件成本相当昂贵。软件成本相当昂贵。 8.8.相当多的软件工作涉及到社会因素。相当多的软件工作涉及到社会因素。 第1章 软件工程概述 6 软件的分类软件的分类 1.1.按软件的功能划分按软件的功能划分 系统软件系统软件 操作系统操作系统 数据库管理系统数据库管理系统 设备驱动程序设备驱动程序 通信处理程序等通信处理程序等

4、第1章 软件工程概述 7 软件的分类软件的分类 支撑软件支撑软件 文本编辑程序文本编辑程序 文件格式化程序文件格式化程序 磁盘向磁带向数据传输的程序磁盘向磁带向数据传输的程序 程序库系统程序库系统 支持需求分析、设计、实现、测试和支持管支持需求分析、设计、实现、测试和支持管 理的软件理的软件 第1章 软件工程概述 8 软件的分类软件的分类 应用软件应用软件 商业数据处理软件商业数据处理软件 工程与科学计算软件工程与科学计算软件 计算机辅助设计制造软件计算机辅助设计制造软件 系统仿真软件系统仿真软件 智能产品嵌入软件智能产品嵌入软件 医疗、制药软件医疗、制药软件 事务管理、办公自动化软件事务管理

5、、办公自动化软件 计算机辅助教学软件计算机辅助教学软件 第1章 软件工程概述 9 软件的分类软件的分类 2.2.按软件规模划分按软件规模划分 第1章 软件工程概述 10 软件的分类软件的分类 3.按软件工作方式划分按软件工作方式划分 实时处理软件实时处理软件 交互式软件交互式软件 分时软件分时软件 批处理软件批处理软件 4.4.按软件服务对象的范围划分按软件服务对象的范围划分 项目软件项目软件 产品软件产品软件 第1章 软件工程概述 11 软件的分类软件的分类 5.按软件使用的频度划分按软件使用的频度划分 仅供一次使用的软件仅供一次使用的软件 频繁使用的软件频繁使用的软件 6.按软件的失效按软

6、件的失效 高可靠性软件。高可靠性软件。 一般可靠性软件。一般可靠性软件。 第1章 软件工程概述 12 1.2 软件的发展和软件危机软件的发展和软件危机 第1章 软件工程概述 13 软件的发展软件的发展 软件的发展大体经历了如下三个阶段:软件的发展大体经历了如下三个阶段: 程序设计阶段,约为程序设计阶段,约为50至至60年代年代 特点:依赖于个人编程特点:依赖于个人编程技巧技巧 ,开发不规范,开,开发不规范,开 发成本难控制,其交付的产品主要是程序。发成本难控制,其交付的产品主要是程序。 程序系统阶段,约为程序系统阶段,约为60至至70年代年代 特点:软件开发是以小组的形式出现,提交的软件特点:

7、软件开发是以小组的形式出现,提交的软件 产品除了程序外还有相应的使用说明书。产品除了程序外还有相应的使用说明书。 软件工程阶段,约为软件工程阶段,约为70年代以后年代以后 特点:开发方法遵循工程化的方法,按照软件生命特点:开发方法遵循工程化的方法,按照软件生命 周期分阶段开发软件,提交的软件产品除了程序之外,周期分阶段开发软件,提交的软件产品除了程序之外, 还有严格的文档。还有严格的文档。 第1章 软件工程概述 14 计算机软件发展的三个时期及特点计算机软件发展的三个时期及特点 时间时间 特点特点 程程 序序 设设 计计 程程 序序 系系 统统软软 件件 工工 程程 软件所指软件所指程序程序程

8、序及说明书程序及说明书程序、文档、数据、服务程序、文档、数据、服务 主要程序设计语言主要程序设计语言汇编及机器语言汇编及机器语言高级语言高级语言软件语言软件语言 软件工作范围软件工作范围程序编写程序编写包括设计和测试包括设计和测试软件生存期软件生存期 需求者需求者程序设计本人程序设计本人少数用户少数用户市场用户市场用户 开发软件的组织开发软件的组织个人个人开发小组开发小组开发小组及大中型开发机构开发小组及大中型开发机构 软件规模软件规模小型小型中小型中小型大中小型大中小型 决定质量的因素决定质量的因素个人程序技术个人程序技术小组技术水平小组技术水平管理水平管理水平 开发开发子程序子程序 程序库

9、程序库 结构化程序设计结构化程序设计数据库、开发工具、开发环境、工数据库、开发工具、开发环境、工 程化开发方法、标准和规范、网络程化开发方法、标准和规范、网络 和分布式开发、面向对象技术和分布式开发、面向对象技术 维护责任者维护责任者程序设计者程序设计者开发小组开发小组专职维护人员专职维护人员 硬件特征硬件特征价格高价格高 存储容量小存储容量小 工作可靠性差工作可靠性差 降价、速度、容降价、速度、容 量及工作可靠性量及工作可靠性 有明显提高有明显提高 向超高速、大容量、微型化及网络向超高速、大容量、微型化及网络 化方向发展化方向发展 软件特征软件特征完全不受重视完全不受重视软件技术的发展软件技

10、术的发展 不能满足需要,不能满足需要, 出现软件危机出现软件危机 开发技术有进步,但未获突破性进开发技术有进步,但未获突破性进 展,价高,未完全摆脱软件危机展,价高,未完全摆脱软件危机 第1章 软件工程概述 15 软件工程的发展的四个重要阶段软件工程的发展的四个重要阶段 1 1、第一代第一代软件工程软件工程 传统传统的软件工程的软件工程 2 2、第二代第二代软件工程软件工程 对象工程对象工程 3 3、第三代第三代软件工程软件工程 过程工程过程工程 4 4、第第四代四代软件工程软件工程 构件工程构件工程 6060年代末到年代末到7070年代为了年代为了 克 服克 服 “ 软 件 危 机软 件 危

11、 机 ” ” (Software crisis)(Software crisis)提出提出 “软件工程软件工程”的名词的名词, , 将软将软 件开发纳入工程化的轨道,件开发纳入工程化的轨道, 基本形成软件工程的概念、基本形成软件工程的概念、 框架、技术和方法。称为框架、技术和方法。称为传传 统统的软件工程的软件工程。 第1章 软件工程概述 16 软件工程的发展的四个重要阶段软件工程的发展的四个重要阶段 1 1、第一代第一代软件工程软件工程 传统传统的软件工程的软件工程 2 2、第二代第二代软件工程软件工程 对象工程对象工程 3 3、第三代第三代软件工程软件工程 过程工程过程工程 4 4、第第四

12、代四代软件工程软件工程 构件工程构件工程 80 80年代中到年代中到9090年代,面向对象年代,面向对象 的方法与技术得到发展,研究的重的方法与技术得到发展,研究的重 点转移到面向对象的分析与设计,点转移到面向对象的分析与设计, 演化为一种完整的软件开发方法和演化为一种完整的软件开发方法和 系统的技术体系,称为系统的技术体系,称为对象工程对象工程。 第1章 软件工程概述 17 软件工程的发展的四个重要阶段软件工程的发展的四个重要阶段 1 1、第一代第一代软件工程软件工程 传统传统的软件工程的软件工程 2 2、第二代第二代软件工程软件工程 对象工程对象工程 3 3、第三代第三代软件工程软件工程

13、过程工程过程工程 4 4、第第四代四代软件工程软件工程 构件工程构件工程 80 80年代中开始,年代中开始,人们在软件开发人们在软件开发 的实践过程中认识到:提高软件生产的实践过程中认识到:提高软件生产 率,保证软件质量的关键是率,保证软件质量的关键是“软件过软件过 程程”,是软件开发和维护中的管理和,是软件开发和维护中的管理和 支持能力,逐步形成软件过程工程。支持能力,逐步形成软件过程工程。 第1章 软件工程概述 18 软件工程的发展的四个重要阶段软件工程的发展的四个重要阶段 1 1、第一代第一代软件工程软件工程 传统传统的软件工程的软件工程 2 2、第二代第二代软件工程软件工程 对象工程对

14、象工程 3 3、第三代第三代软件工程软件工程 过程工程过程工程 4 4、第第四代四代软件工程软件工程 构件工程构件工程 90起年代,基于构件(起年代,基于构件(Component) 的开发方法取得重要进展,软件系统的的开发方法取得重要进展,软件系统的 开发可开发可通过使用现成的可复用构件组装通过使用现成的可复用构件组装 完成,而无需从头开始构造,以此达到完成,而无需从头开始构造,以此达到 提高效率和质量,降低成本的目的。称提高效率和质量,降低成本的目的。称 为为构件工程。构件工程。 第1章 软件工程概述 19 软件开发方法的模型软件开发方法的模型 随意编程随意编程 面向过程面向过程 面向对象面

15、向对象 面向组件面向组件 面向配置组件面向配置组件面向面向Web Service 第1章 软件工程概述 20 什么是软件危机什么是软件危机 l定义:软件危机是计算机软件在它的开定义:软件危机是计算机软件在它的开 发和维护过程中所遇到的一系列严重问发和维护过程中所遇到的一系列严重问 题。题。 主要包含两方面的问题:主要包含两方面的问题: 如何开发软件,怎样满足对软件日益如何开发软件,怎样满足对软件日益 增长的需求;增长的需求; 如何维护数量不断膨胀的已有软件。如何维护数量不断膨胀的已有软件。 第1章 软件工程概述 21 软件危机的现象软件危机的现象 对软件开发成本和进度的估计常常很不准确。对软件

16、开发成本和进度的估计常常很不准确。 用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生。软件系统不满意的现象经常发生。 软件产品的质量往往靠不住。软件产品的质量往往靠不住。 软件常常是不可维护的。软件常常是不可维护的。 软件通常没有适当的文档资料。计算机软件不仅仅是软件通常没有适当的文档资料。计算机软件不仅仅是 程序,还应该有一整套文档资料程序,还应该有一整套文档资料。 软件成本在计算机系统总成本中所占的比例逐年上升。软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度,远远跟不上计算机应用软件开发生产率提高的速度,远远跟不上计算机应用 迅速普及深入的趋势。迅速

17、普及深入的趋势。 第1章 软件工程概述 22 软件危机的原因软件危机的原因 客观:软件本身特点客观:软件本身特点 软件的规模庞大、复杂性高。软件的规模庞大、复杂性高。 主观:不正确的开发方法,软件开发和主观:不正确的开发方法,软件开发和 维护有许多错误的认识和作法。维护有许多错误的认识和作法。 忽视需求分析忽视需求分析 软件开发软件开发=程序编写程序编写 轻视软件维护轻视软件维护 第1章 软件工程概述 23 软件的神话软件的神话管理者的神话管理者的神话 l负责软件的管理者像大多数其他管理者一负责软件的管理者像大多数其他管理者一 样,都有巨大的压力,要维持预算,保持样,都有巨大的压力,要维持预算

18、,保持 进度和提高质量。进度和提高质量。 神话:我们已经有了关于建造软件的标准和神话:我们已经有了关于建造软件的标准和 规程的书籍,难道它们不能给人们提供所规程的书籍,难道它们不能给人们提供所 有其需要知道的信息吗?有其需要知道的信息吗? 事实:不错,关于标准的书籍已经存在,但事实:不错,关于标准的书籍已经存在,但 真正用到了它们吗?软件实践者知道它们真正用到了它们吗?软件实践者知道它们 存在吗?它们是否反映了现代软件开发的存在吗?它们是否反映了现代软件开发的 过程?它们完整吗?很多情况下对于这些过程?它们完整吗?很多情况下对于这些 问题的答案是问题的答案是“否否”。 第1章 软件工程概述 2

19、4 软件的神话软件的神话管理者的神话管理者的神话 神话:我们已经有了很多很好的软件开发工神话:我们已经有了很多很好的软件开发工 具,而且,我们为它们买了最新的计算机。具,而且,我们为它们买了最新的计算机。 事实:为了使用最新型号的计算机、工作站事实:为了使用最新型号的计算机、工作站 和和PC机去开发高质量的软件,我们已经机去开发高质量的软件,我们已经 投入了太多的费用。实际上,计算机辅助投入了太多的费用。实际上,计算机辅助 软件工程(软件工程(CASE)工具比起硬件而言,)工具比起硬件而言, 对于获得高质量和高生产率更为重要,但对于获得高质量和高生产率更为重要,但 大多数软件开发者并未使用它们

20、。大多数软件开发者并未使用它们。 第1章 软件工程概述 25 软件的神话软件的神话管理者的神话管理者的神话 神话:如果我们已落后于计划,可以增加神话:如果我们已落后于计划,可以增加 更多的程序员来赶上进度。更多的程序员来赶上进度。 事实:软件开发并非像制造一样是一个机事实:软件开发并非像制造一样是一个机 械过程。用械过程。用Brooks的话来说,的话来说,“给一个给一个 已经延迟的软件项目增加人手只会使其已经延迟的软件项目增加人手只会使其 更加延迟更加延迟”。看起来,这句话与人的直。看起来,这句话与人的直 觉正好相反。但实际上,增加新人,原觉正好相反。但实际上,增加新人,原 来正在工作的开发者

21、必须花时间来培训来正在工作的开发者必须花时间来培训 新人,这样就减少了他们花在项目开发新人,这样就减少了他们花在项目开发 上的时间。人手可以增加,但只能在计上的时间。人手可以增加,但只能在计 划周密、协调良好的情况下。划周密、协调良好的情况下。 第1章 软件工程概述 26 软件的神话软件的神话用户的神话用户的神话 l需要计算机软件的用户可能就是邻桌,或是另一需要计算机软件的用户可能就是邻桌,或是另一 个技术组,也可能是市场销售部门,或另一个个技术组,也可能是市场销售部门,或另一个 公司。在许多情况下,用户相信关于软件的神话,公司。在许多情况下,用户相信关于软件的神话, 因为负责软件的管理者和开

22、发者很少去纠正用户因为负责软件的管理者和开发者很少去纠正用户 的错误理解。神话导致了用户过高的期望值,并的错误理解。神话导致了用户过高的期望值,并 引起对开发者的极端不满。引起对开发者的极端不满。 神话:有了对目标的一般描述就足以开始写程序神话:有了对目标的一般描述就足以开始写程序 了了我们可以以后补充细节。我们可以以后补充细节。 事实:不完善的系统定义是软件项目失败的主要原事实:不完善的系统定义是软件项目失败的主要原 因。关于待开发项目的应用领域、功能、性能、因。关于待开发项目的应用领域、功能、性能、 接口、设计约束及确认标准的形式化的、详细的接口、设计约束及确认标准的形式化的、详细的 描述

23、是必需要的。这些内容只有通过用户和开发描述是必需要的。这些内容只有通过用户和开发 者之间的通信交流才能确定。者之间的通信交流才能确定。 第1章 软件工程概述 27 软件的神话软件的神话用户的神话用户的神话 神话:项目需求总是在不断变化,但这些变化能够很容易地满神话:项目需求总是在不断变化,但这些变化能够很容易地满 足,因为软件是灵活的。足,因为软件是灵活的。 事实:软件需求确实是经常变化的,但这些变化产生的影响会事实:软件需求确实是经常变化的,但这些变化产生的影响会 随着其引入的时间不同而不同。如果我们很注重早期的系随着其引入的时间不同而不同。如果我们很注重早期的系 统定义,这时需求变化就可很

24、容易地适应。用户能够复审统定义,这时需求变化就可很容易地适应。用户能够复审 需求,并提出对修改建议,这时对成本的影响会相对较小。需求,并提出对修改建议,这时对成本的影响会相对较小。 当在软件设计过程中才要求修改时,对成本的影响就会提当在软件设计过程中才要求修改时,对成本的影响就会提 高的很快。资源已经消耗了,设计框架已经建立了,这时高的很快。资源已经消耗了,设计框架已经建立了,这时 的变化可能会引起大的改动,需要额外的资源和大量的设的变化可能会引起大的改动,需要额外的资源和大量的设 计修改:如额外的花费。实现阶段(编码和测试阶段)功计修改:如额外的花费。实现阶段(编码和测试阶段)功 能、性能、

25、接口及其它方面的改变对成本会产生更大的影能、性能、接口及其它方面的改变对成本会产生更大的影 响。当软件已投入使用后再要求修改,这时所花费的代价响。当软件已投入使用后再要求修改,这时所花费的代价 比起较早阶段做同样修改所花的代价可能是几何级数级的比起较早阶段做同样修改所花的代价可能是几何级数级的 增长。增长。 第1章 软件工程概述 28 例子例子 某公园有一游船码头,负责人请一位软件开发人员实现计某公园有一游船码头,负责人请一位软件开发人员实现计 算机系统辅助游船管理系统,要求如下:算机系统辅助游船管理系统,要求如下: 当游客向租船处租船时,向租船处查询是否有可租用的船当游客向租船处租船时,向租

26、船处查询是否有可租用的船 只,如果租船处有空船,管理员就准备好船只,帮助游客只,如果租船处有空船,管理员就准备好船只,帮助游客 上船,并在联机终端上打入一个信息上船,并在联机终端上打入一个信息“S”,表示租船周期,表示租船周期 开始。计算机自动把当时时钟值送入信息域。当游客还船开始。计算机自动把当时时钟值送入信息域。当游客还船 时,管理员打入另一个信息时,管理员打入另一个信息“E”,表示租船周期结束。由,表示租船周期结束。由 管理员向游客结算租船时间及费用。一天结束时,管理员管理员向游客结算租船时间及费用。一天结束时,管理员 要用一些管理信息总结每天工作状况,要求系统打印出要用一些管理信息总结

27、每天工作状况,要求系统打印出 租船次数租船次数=NNN 平均租船时间平均租船时间=MMM 显然,这样一个系统的功能包括二个部分:显然,这样一个系统的功能包括二个部分: 计算输入流的信息计算输入流的信息 打印输出打印输出 第1章 软件工程概述 29 确定算法确定算法 我们知道平均租船时间就是总的时间除以租我们知道平均租船时间就是总的时间除以租 船次数船次数 总的时间总的时间=第一条船结束时间第一条船结束时间 - 第一条第一条 船开始时间船开始时间 + 第二条船结束时间第二条船结束时间 - 第二条第二条 船开始时间船开始时间 + 或或 总的时间总的时间=(第一条船结束时间(第一条船结束时间 +第二

28、第二 条船结束时间条船结束时间 + )-(第一条船开始时(第一条船开始时 间间 + 第二条船开始时间第二条船开始时间 + ) 第1章 软件工程概述 30 编写系统程序编写系统程序 BEGINBEGIN OPEN MESSAGE_STREAM OPEN MESSAGE_STREAM NUMBER=0 NUMBER=0 TOTALTIME=0 TOTALTIME=0 GET MESSAGE GET MESSAGE DO WHILE NOT END_OF_STREAM DO WHILE NOT END_OF_STREAM IF CODE=S THEN IF CODE=S THEN NUMBER=NU

29、MBER+1 NUMBER=NUMBER+1 TOTAL_TIME=TOTAL_TIME-START_TIME TOTAL_TIME=TOTAL_TIME-START_TIME ELSE ELSE TOTAL_TIME=TOTAL_TIME+END_TIME TOTAL_TIME=TOTAL_TIME+END_TIME ENDIF ENDIF PRINT “NUMBER OF SESSION =”NUMBER PRINT “NUMBER OF SESSION =”NUMBER IF NUMBER0 THEN IF NUMBER0 THEN PRINT “AVERAGE SESSION TIME

30、 =”TOTAL_TIME/NUMBER PRINT “AVERAGE SESSION TIME =”TOTAL_TIME/NUMBER ENDIF ENDIF CLOSE MASSAGE_STREAM CLOSE MASSAGE_STREAM END;END; 第1章 软件工程概述 31 系统提出修改系统提出修改 找出一天中最长租用时间:找出一天中最长租用时间: LONGGEST_SESSION_TIME = PPP 要求把每天的报告分成两个,一个是上午情况,另一要求把每天的报告分成两个,一个是上午情况,另一 个是下午情况个是下午情况 。 通信线路出了毛病,丢掉了一些信息。要求修改系通信线路

31、出了毛病,丢掉了一些信息。要求修改系 统统从计算报告中删除一切不完整的租船信息。从计算报告中删除一切不完整的租船信息。 对于上述的修改,除了把原系统废弃之外。实在无法对对于上述的修改,除了把原系统废弃之外。实在无法对 其作什么修改来满足这一新的要求。而时间及经费都其作什么修改来满足这一新的要求。而时间及经费都 不允许他这么做了。不允许他这么做了。 结论:并不是任意设计出来的软件都能够适应在软件寿结论:并不是任意设计出来的软件都能够适应在软件寿 命期内变化的要求,即软件的灵活性不是绝对的。命期内变化的要求,即软件的灵活性不是绝对的。 第1章 软件工程概述 32 软件的神话软件的神话开发者的神话开

32、发者的神话 那些至今仍被软件开发者相信的神话是那些至今仍被软件开发者相信的神话是 由几十年的程序设计文化培植起来的。由几十年的程序设计文化培植起来的。 而这种旧的观念和方式是很难改变的。而这种旧的观念和方式是很难改变的。 神话:一旦我们写出了程序并使其正常运神话:一旦我们写出了程序并使其正常运 行,我们的工作就结束了。行,我们的工作就结束了。 事实:有人说过:事实:有人说过:“越早开始写程序,就越早开始写程序,就 要花越长的时间完成它要花越长的时间完成它”,大量的数据,大量的数据 表明在一个程序上所投入的表明在一个程序上所投入的50%到到70% 的努力是花在第一次将程序交给用户之的努力是花在第

33、一次将程序交给用户之 后。后。 第1章 软件工程概述 33 软件的神话软件的神话开发者的神话开发者的神话 神话:在程序真正运行之前,没有办法评估其质神话:在程序真正运行之前,没有办法评估其质 量。量。 事实:从项目一开始就可以应用的最有效的软件事实:从项目一开始就可以应用的最有效的软件 质量保证机制之一是正式的技术复审。软件复质量保证机制之一是正式的技术复审。软件复 审是审是“质量的过滤器质量的过滤器”,比起通过测试找到某,比起通过测试找到某 类软件错误要有效的多。类软件错误要有效的多。 神话:一个成功的项目唯一应该提交的就是运行神话:一个成功的项目唯一应该提交的就是运行 程序。程序。 事实:

34、运行程序仅是仍软件配置的一部分,软件事实:运行程序仅是仍软件配置的一部分,软件 配置包括:程序、文档和数据。文档是成功开配置包括:程序、文档和数据。文档是成功开 发的基础,更重要的是,文档为软件维护提供发的基础,更重要的是,文档为软件维护提供 了指导。了指导。 第1章 软件工程概述 34 软件危机解决途径软件危机解决途径 l组织管理组织管理 工程项目管理方法工程项目管理方法 l技术措施技术措施 软件开发技术与方法软件开发技术与方法 软件工具软件工具 第1章 软件工程概述 35 1.3 软件工程软件工程 第1章 软件工程概述 36 软件工程的提出软件工程的提出 l“软件工程软件工程”一词是一词是

35、1968年北大西洋公约年北大西洋公约 组织(组织(NATO)在联邦德国召开的一次)在联邦德国召开的一次 会议上首次提出的,这个会议专门讨论会议上首次提出的,这个会议专门讨论 了软件危机问题。它反映了软件人员认了软件危机问题。它反映了软件人员认 识到软件危机的出现及谋求解决这一危识到软件危机的出现及谋求解决这一危 机的努力,因此,这次会议被看作是软机的努力,因此,这次会议被看作是软 件发展史上一个重要的里程碑。件发展史上一个重要的里程碑。 第1章 软件工程概述 37 软件工程定义软件工程定义 l采用工程的概念、原理、技术和方法来采用工程的概念、原理、技术和方法来 计划、开发与维护软件,把经过时间

36、考计划、开发与维护软件,把经过时间考 验而证明正确的管理技术和当前能够得验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以较经到的最好的技术方法结合起来,以较经 济的手段获得能在实际机器上运行的可济的手段获得能在实际机器上运行的可 靠软件的一系列方法。靠软件的一系列方法。 简言之:简言之: 工程方法工程方法+管理技术管理技术+技术方法技术方法 第1章 软件工程概述 38 软件工程原理软件工程原理 l著名的软件工程专家著名的软件工程专家B.W.Boehm提出了软件工提出了软件工 程的七条基本原理。这七条原理是确保软件产程的七条基本原理。这七条原理是确保软件产 品质量和开发效率的原

37、理的最小集合。这七条品质量和开发效率的原理的最小集合。这七条 原理是互相独立的,其中任意六条原理的组合原理是互相独立的,其中任意六条原理的组合 都不能代替另一条原理,因此,它们是缺一不都不能代替另一条原理,因此,它们是缺一不 可的最小集合,然而这七条原理又是相当完备可的最小集合,然而这七条原理又是相当完备 的,人们虽然不能用数学方法严格证明它们是的,人们虽然不能用数学方法严格证明它们是 一个完备的集合,但是,可以证明在此之前已一个完备的集合,但是,可以证明在此之前已 经提出的经提出的100多条软件工程原理都可以由这七多条软件工程原理都可以由这七 条原理的任意组合蕴含或派生。条原理的任意组合蕴含

38、或派生。 第1章 软件工程概述 39 软件工程原理软件工程原理 用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理 不成功的软件项目中有一半左右是由于计划不周造成不成功的软件项目中有一半左右是由于计划不周造成 的的 。 坚持进行阶段评审坚持进行阶段评审 软件的质量保证工作不能等到编码阶段结束之后再进软件的质量保证工作不能等到编码阶段结束之后再进 行。行。 实行严格的产品控制实行严格的产品控制 在软件开发过程中不应随意改变需求,因为改变一项在软件开发过程中不应随意改变需求,因为改变一项 需求往往需要付出较高的代价。需求往往需要付出较高的代价。 采用现代程序设计技术采用现代程序设计技术

39、采用先进的技术既可提高软件开发的效率,又可提高采用先进的技术既可提高软件开发的效率,又可提高 软件维护的效率。软件维护的效率。 第1章 软件工程概述 40 软件工程原理软件工程原理 结果应能清楚地审查结果应能清楚地审查 根据软件开发项目的总目标及完成期限,规定开发组根据软件开发项目的总目标及完成期限,规定开发组 织的责任和产品标准,从而使得所得到的结果能够清织的责任和产品标准,从而使得所得到的结果能够清 楚地审查。楚地审查。 开发小组的人员应该少而精开发小组的人员应该少而精 开发小组人员的素质和数量是影响软件产品质量和开开发小组人员的素质和数量是影响软件产品质量和开 发效率的重要因素。小组人员

40、增加,交流情况和讨论发效率的重要因素。小组人员增加,交流情况和讨论 问题而造成的通讯开销也急剧增加,人数为问题而造成的通讯开销也急剧增加,人数为N,可能,可能 的通讯路径有的通讯路径有N(N-1)。 承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 不仅要积极主动地采纳新的软件技术,而且要注意不不仅要积极主动地采纳新的软件技术,而且要注意不 断总结经验。断总结经验。 第1章 软件工程概述 41 软件工程学的范畴软件工程学的范畴 软件工程学 软件工程技术 软件工程管理 软件开发方法学 软件工具 软件工程环境 软件经济学 软件管理学 第1章 软件工程概述 42 软件工程三要素软件工

41、程三要素 l软件工程包括三要素:方法、工具和过软件工程包括三要素:方法、工具和过 程。程。 软件工程方法为软件开发提供了软件工程方法为软件开发提供了“如何如何 做做”的技术。的技术。 软件工具为软件工程方法提供了自动的软件工具为软件工程方法提供了自动的 或半自动的软件支撑环境。或半自动的软件支撑环境。 软件工程的过程则是将软件工程的方法软件工程的过程则是将软件工程的方法 和工具综合起来以达到合理、及时地进和工具综合起来以达到合理、及时地进 行计算机软件开发的目的。行计算机软件开发的目的。 第1章 软件工程概述 43 什么是软件工程过程什么是软件工程过程 l定义:软件工程过程是为获得软件产品,定

42、义:软件工程过程是为获得软件产品, 在软件工具的支持下由软件工程师完成在软件工具的支持下由软件工程师完成 的一系列软件工程活动。的一系列软件工程活动。 u针对不同类型的软件产品,同一软件开针对不同类型的软件产品,同一软件开 发机构也可能采用多个不同的软件工程发机构也可能采用多个不同的软件工程 过程。过程。 第1章 软件工程概述 44 软件工程过程的基本活动软件工程过程的基本活动 软件规格说明:规定软件的功能及其运软件规格说明:规定软件的功能及其运 行的限制;行的限制; 软件开发:产生满足规格说明的软件;软件开发:产生满足规格说明的软件; 软件确认:确认软件能够完成客户提出软件确认:确认软件能够

43、完成客户提出 的要求;的要求; 软件改进:为满足客户的变更要求,软软件改进:为满足客户的变更要求,软 件必须在使用的过程中改进。件必须在使用的过程中改进。 第1章 软件工程概述 45 软件工程过程的特性软件工程过程的特性 易理解性。易理解性。 可见性:每个过程活动均能以明确的结果告终,使过可见性:每个过程活动均能以明确的结果告终,使过 程的进展对外可见。程的进展对外可见。 可支持性:易得到计算机辅助软件工程(可支持性:易得到计算机辅助软件工程(CASE)工)工 具的支持。具的支持。 可接受性:易于为软件工程师接受和使用。可接受性:易于为软件工程师接受和使用。 可靠性:不会出现过程错误,或发现在

44、产品出现故障可靠性:不会出现过程错误,或发现在产品出现故障 之前。之前。 健壮性:不受意外发生的问题干扰。健壮性:不受意外发生的问题干扰。 可维护性:过程可随软件机构需求的变更或随认定的可维护性:过程可随软件机构需求的变更或随认定的 过程改进而演进。过程改进而演进。 速度:从规格说明起,就能较快地完成开发而交付。速度:从规格说明起,就能较快地完成开发而交付。 第1章 软件工程概述 46 软件工程项目的基本目标软件工程项目的基本目标 付出较低的成本;付出较低的成本; 达到要求的软件功能;达到要求的软件功能; 取得较好的软件性能;取得较好的软件性能; 开发的软件易于移植;开发的软件易于移植; 需要

45、较低的维护费用;需要较低的维护费用; 能按时完成开发工作,及时交付使用。能按时完成开发工作,及时交付使用。 第1章 软件工程概述 47 软件工程目标之间的关系软件工程目标之间的关系 第1章 软件工程概述 48 软件工程框架及原则软件工程框架及原则 开 发 模 型 设 计 方 法 支 持 过 程 管 理 过 程 用 可 可 可可 性 可 正 可 确 性 可 性 可 合 算 软 件 分 析 实 现 与 维 护 软 件 设 计 1选取适宜的开发模型;2采用合适设计方法; 3提供高质量工程支持;4重视开发过程管理。 第1章 软件工程概述 49 软件工程面临的问题软件工程面临的问题 (1)软件费用软件费

46、用 (2)软件可靠性软件可靠性 (3)软件维护软件维护 (4)软件生产率软件生产率 (5)软件重用软件重用 第1章 软件工程概述 50 1.4 软件生命周期软件生命周期 第1章 软件工程概述 51 软件生命周期的定义软件生命周期的定义 l定义:软件生命周期是指软件产品从考定义:软件生命周期是指软件产品从考 虑其概念开始到该软件产品不再能使用虑其概念开始到该软件产品不再能使用 为止的整个时期。为止的整个时期。 软件生命周期可分为三个阶段:即定义软件生命周期可分为三个阶段:即定义 阶段、开发阶段和运行维护阶段,每个阶段、开发阶段和运行维护阶段,每个 阶段需完成几个任务。阶段需完成几个任务。 第1章

47、 软件工程概述 52 划分软件生命周期的目的和实质划分软件生命周期的目的和实质 便于控制开发工作的复杂性。便于控制开发工作的复杂性。 通过有限的步骤,把用户的需求从抽象通过有限的步骤,把用户的需求从抽象 的逻辑概念逐步转化为具体的物理实现。的逻辑概念逐步转化为具体的物理实现。 第1章 软件工程概述 53 软件生命周期各阶段的基本任务定义阶段软件生命周期各阶段的基本任务定义阶段 定义阶段主要集中于定义阶段主要集中于“做什么做什么”,即在,即在 定义过程中,软件开发人员试图弄清楚定义过程中,软件开发人员试图弄清楚 要处理什么信息,预期完成什么样的功要处理什么信息,预期完成什么样的功 能和性能,希望

48、有什么样的系统行为,能和性能,希望有什么样的系统行为, 建立什么样界面,有什么设计约束,以建立什么样界面,有什么设计约束,以 及定义一个成功系统的确认标准是什么。及定义一个成功系统的确认标准是什么。 在本阶段需完成三项任务:在本阶段需完成三项任务: 第1章 软件工程概述 54 系统定义系统定义 系统定义必须回答的关键问题是:系统定义必须回答的关键问题是:“要要 解决的问题是什么?解决的问题是什么?”如果不知道问题如果不知道问题 是什么就试图解决这个问题,显然是盲是什么就试图解决这个问题,显然是盲 目的,只会白白浪费时间和金钱,最终目的,只会白白浪费时间和金钱,最终 得出的结果很可能是毫无意义的

49、。尽管得出的结果很可能是毫无意义的。尽管 确切地定义问题的必要性是十分明显的,确切地定义问题的必要性是十分明显的, 但是在实践中它却可能是最容易被忽视但是在实践中它却可能是最容易被忽视 的一个步骤。的一个步骤。 系统定义是软件生命周期中最简短的任系统定义是软件生命周期中最简短的任 务,一般只需要一天甚至更少的时间。务,一般只需要一天甚至更少的时间。 第1章 软件工程概述 55 可行性研究可行性研究 可行性研究要回答的关键问题是:可行性研究要回答的关键问题是:“对对 于上一个阶段所确定的问题有行得通的于上一个阶段所确定的问题有行得通的 解决办法吗?解决办法吗?”为了回答这个问题,系为了回答这个问

50、题,系 统分析员需要进行一次大大压缩和简化统分析员需要进行一次大大压缩和简化 了的系统分析和设计的过程,也就是在了的系统分析和设计的过程,也就是在 较抽象的高层次上进行的分析和设计的较抽象的高层次上进行的分析和设计的 过程。可行性研究应该比较简短,这个过程。可行性研究应该比较简短,这个 阶段的任务不是具体解决问题,而是研阶段的任务不是具体解决问题,而是研 究问题的范围,探索这个问题是否值得究问题的范围,探索这个问题是否值得 去解,是否有可行的解决办法。去解,是否有可行的解决办法。 第1章 软件工程概述 56 需求分析需求分析 需求分析的任务仍然不是具体地解决问需求分析的任务仍然不是具体地解决问

51、 题,而是准确地确定题,而是准确地确定“为了解决这个问为了解决这个问 题,目标系统必须做什么题,目标系统必须做什么”,主要是确,主要是确 定目标系统必须具备哪些功能。定目标系统必须具备哪些功能。 系统分析员在需求分析阶段必须和用户系统分析员在需求分析阶段必须和用户 密切配合,充分交流信息,以得出经过密切配合,充分交流信息,以得出经过 用户确认的系统逻辑模型。通常用数据用户确认的系统逻辑模型。通常用数据 流图、数据字典和简要的算法表示系统流图、数据字典和简要的算法表示系统 的逻辑模型。的逻辑模型。 第1章 软件工程概述 57 软件生命周期各阶段的基本任务开发阶段软件生命周期各阶段的基本任务开发阶

52、段 开发阶段集中于开发阶段集中于“如何做如何做”。即在开。即在开 发过程中,软件工程师试图定义数据发过程中,软件工程师试图定义数据 如何结构化,功能如何转换为软件体如何结构化,功能如何转换为软件体 系结构,过程细节如何实现,界面如系结构,过程细节如何实现,界面如 何表示,设计如何转换成程序设计语何表示,设计如何转换成程序设计语 言,测试如何运行。在本阶段需完成言,测试如何运行。在本阶段需完成 四项任务:四项任务: 第1章 软件工程概述 58 总体设计总体设计 总体设计必须回答的关键问题是:总体设计必须回答的关键问题是:“概括地说,概括地说, 应该如何解决这个问题?应该如何解决这个问题?” 通常

53、至少应该考虑下述几类可能的方案:通常至少应该考虑下述几类可能的方案: 低成本的解决方案。系统只能完成最必要的工作,低成本的解决方案。系统只能完成最必要的工作, 不能多做一点额外的工作。不能多做一点额外的工作。 中等成本的解决方案。这样的系统不仅能够很好中等成本的解决方案。这样的系统不仅能够很好 地完成预定的任务,使用起来很方便,而且可能地完成预定的任务,使用起来很方便,而且可能 还具有用户没有具体指定的某些功能和特点。虽还具有用户没有具体指定的某些功能和特点。虽 然用户没有提出这些具体要求,但是系统分析员然用户没有提出这些具体要求,但是系统分析员 根据自己的知识和经验断定,这些附加的能力在根据

54、自己的知识和经验断定,这些附加的能力在 实践中将证明是很有价值的。实践中将证明是很有价值的。 高成本的高成本的“十全十美十全十美”的系统。这样的系统具有的系统。这样的系统具有 用户可能希望有的所有功能和特点。用户可能希望有的所有功能和特点。 第1章 软件工程概述 59 详细设计详细设计 总体设计以比较抽象概括的方式提出了总体设计以比较抽象概括的方式提出了 解决问题的办法。详细设计的任务就是解决问题的办法。详细设计的任务就是 把解法具体化,也就是回答下面这个关把解法具体化,也就是回答下面这个关 键问题:键问题:“应该怎样具体地实现这个系应该怎样具体地实现这个系 统呢?统呢?” 通常用通常用HIP

55、O图(层次图加输入处理图(层次图加输入处理 输出图)、输出图)、PAD图或图或PDL语言(过程设语言(过程设 计语言)描述详细设计的结果。计语言)描述详细设计的结果。 第1章 软件工程概述 60 编码和单元测试编码和单元测试 编码和单元测试的关键任务是写出正确编码和单元测试的关键任务是写出正确 的容易理解、容易维护的程序模块。的容易理解、容易维护的程序模块。 第1章 软件工程概述 61 综合测试综合测试 综合测试的关键任务是通过各种类型的测试(及相应综合测试的关键任务是通过各种类型的测试(及相应 的调试),使软件达到预定的要求。的调试),使软件达到预定的要求。 最基本的测试是集成测试和验收测试

56、。所谓集成测试最基本的测试是集成测试和验收测试。所谓集成测试 是根据设计的软件结构,把经过单元测试检验的模块是根据设计的软件结构,把经过单元测试检验的模块 按某种选定的策略装配起来,在装配过程中对程序进按某种选定的策略装配起来,在装配过程中对程序进 行必要的测试。所谓验收测试则是按照规格说明书的行必要的测试。所谓验收测试则是按照规格说明书的 规定(通常在需求分析阶段确定),由用户(或在用规定(通常在需求分析阶段确定),由用户(或在用 户积极参加下)对目标系统进行验收。户积极参加下)对目标系统进行验收。 必要时还可以再通过现场测试或平行运行等方法对目必要时还可以再通过现场测试或平行运行等方法对目

57、 标系统进一步测试检验。标系统进一步测试检验。 为了使用户能够积极参加验收测试,并且在系统投入为了使用户能够积极参加验收测试,并且在系统投入 生产性运行以后能够正确有效地使用这个系统,通常生产性运行以后能够正确有效地使用这个系统,通常 需要以正式的或非正式的方式对用户进行培训。需要以正式的或非正式的方式对用户进行培训。 第1章 软件工程概述 62 软件生命周期各阶段的基本任务软件维护软件生命周期各阶段的基本任务软件维护 维护阶段的关键任务是,通过各种必要的维护维护阶段的关键任务是,通过各种必要的维护 活动使系统持久地满足用户的需要。活动使系统持久地满足用户的需要。 通常有四类维护活动:改正性维

58、护,也就是诊通常有四类维护活动:改正性维护,也就是诊 断和改正在使用过程中发现的软件错误;适应断和改正在使用过程中发现的软件错误;适应 性维护,即修改软件以适应环境的变化;完善性维护,即修改软件以适应环境的变化;完善 性维护,即根据用户的要求改进或扩充软件使性维护,即根据用户的要求改进或扩充软件使 它更完善;预防性维护,即修改软件为将来的它更完善;预防性维护,即修改软件为将来的 维护活动预先做准备。维护活动预先做准备。 每一项维护活动都应该准确地记录下来,作为每一项维护活动都应该准确地记录下来,作为 正式的文档资料加以保存。正式的文档资料加以保存。 第1章 软件工程概述 63 软件生命周期各阶

59、段任务一览表软件生命周期各阶段任务一览表 阶段阶段 关键问题关键问题 结束标准结束标准 系统定义系统定义问题是什么?问题是什么?关于规模和目标的报告书关于规模和目标的报告书 可行性研究可行性研究有可行的解吗?有可行的解吗?系统的高级逻辑模型;数据流图系统的高级逻辑模型;数据流图 成本效益分析成本效益分析 需求分析需求分析系统必须做什么?系统必须做什么?系统的逻辑模型;数据流图;数据字典;系统的逻辑模型;数据流图;数据字典; 算法描述算法描述 总体设计总体设计概括地说,应该如何概括地说,应该如何 解决这个问题?解决这个问题? 可能的解法:系统流程图;成本效益分可能的解法:系统流程图;成本效益分

60、析;推荐的系统结构;层次图或结构图析;推荐的系统结构;层次图或结构图 详细设计详细设计怎样具体地实现这个怎样具体地实现这个 系统?系统? 编码规格说明:编码规格说明:HIPO图或图或PDL 编码和单元测试编码和单元测试正确的程序模块正确的程序模块源程序清单;单元测试方案和结果源程序清单;单元测试方案和结果 综合测试综合测试符号要求的软件符号要求的软件综合测试方案和结果;完整一致的软件配综合测试方案和结果;完整一致的软件配 置置 维护维护持久地满足用户需求持久地满足用户需求 的软件的软件 完整准确的维护记录完整准确的维护记录 第1章 软件工程概述 64 1.5 软件开发模型软件开发模型 第1章

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论