(精品)软件工程讲稿01.ppt

上传人:gsy****95 文档编号:85491750 上传时间:2023-04-11 格式:PPT 页数:157 大小:926.01KB
返回 下载 相关 举报
(精品)软件工程讲稿01.ppt_第1页
第1页 / 共157页
(精品)软件工程讲稿01.ppt_第2页
第2页 / 共157页
点击查看更多>>
资源描述

《(精品)软件工程讲稿01.ppt》由会员分享,可在线阅读,更多相关《(精品)软件工程讲稿01.ppt(157页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1TM成 绩 是 价 值 和 未 来 的 体 现软件工程导论主 讲 人:软件工程研究所 蒋波 教授课程时间:2011年8月-2012年1月联系方式: 0411-84729698办公地点:扬帆楼509室2TM2大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 1.1.课程目的课程目的 通过本课程的学习,使学生掌握软件工程的概念和技术方法,通过本课程的学习,使学生掌握软件工程的概念和技术方法,提高其基本的软件能力和软件过程能力,提高软件生产率、提提高其基本的软件能力和软件过程能力,提高软件生产率、提高软件质量、降低软件成本。高软件质量、降低软件成本。2.2.课程对象课程对象 软件工

2、程专业、计算机科学与技术专业本科生、研究生等。软件工程专业、计算机科学与技术专业本科生、研究生等。3.3.教材构成教材构成n软件工程导论软件工程导论(第第5 5版版),张海藩,张海藩 编著编著,清华大学出版社清华大学出版社n软件工程导论学习辅导软件工程导论学习辅导,同上,同上 n软件工程软件工程Ian Ian SommervilleSommerville 程成等译程成等译,机械工业出版社机械工业出版社n软件工程软件工程,曾强聪,曾强聪 编著,高等教育出版社(针对专科)编著,高等教育出版社(针对专科)前言前言3TM3大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言1.1

3、.什么是软件?什么是软件?首先讨论几个相关的概念首先讨论几个相关的概念 许多人把许多人把软件软件这一术语等同于这一术语等同于计算机程序计算机程序,这种理解是很狭隘的。,这种理解是很狭隘的。软件是程序和所有使程序能够正确地运行所需要的相关文档与配软件是程序和所有使程序能够正确地运行所需要的相关文档与配置信息的集合。置信息的集合。一个软件系统通常包含大量独立的程序一个软件系统通常包含大量独立的程序,以及用于设置这些程序的以及用于设置这些程序的配置文件、描述系统结构的系统文档、如何使用该系统的用户文档,配置文件、描述系统结构的系统文档、如何使用该系统的用户文档,以及告知用户下载最新产品信息的以及告知

4、用户下载最新产品信息的Web站点等。站点等。概括地说,软件是程序、数据及相关文档的完整集合。概括地说,软件是程序、数据及相关文档的完整集合。Boehm认为认为:软件:软件 程序程序 文档文档。4TM4大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言2.2.软件的特点是什么软件的特点是什么?软件是一种逻辑实体,它具有抽象性。软件是一种逻辑实体,它具有抽象性。软件的开发过程没有明显的制作过程。软件是通过人们的智力软件的开发过程没有明显的制作过程。软件是通过人们的智力 活动,把知识与技术转化为信息的一种产品。软件产品研制成活动,把知识与技术转化为信息的一种产品。软件产品研制

5、成 功后可以复制使用,但不可以像硬件产品那样可以重复制造。功后可以复制使用,但不可以像硬件产品那样可以重复制造。软件在使用期内没有磨损、老化问题,但也有退化的问题。软件在使用期内没有磨损、老化问题,但也有退化的问题。5TM5大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 软件的开发与运行常常受到计算机系统的限制,对计算机系统软件的开发与运行常常受到计算机系统的限制,对计算机系统 有着不同程度的依赖。有着不同程度的依赖。软件的开发至今为止尚未完全摆脱手工艺的开发方式。虽然近软件的开发至今为止尚未完全摆脱手工艺的开发方式。虽然近 年来软件复用技术、自动生成技术、软件开发

6、工具等有了新的年来软件复用技术、自动生成技术、软件开发工具等有了新的 进展,但这些技术和工具在软件开发中所占的比率仍然很少。进展,但这些技术和工具在软件开发中所占的比率仍然很少。软件本身是复杂的,而且随着应用规模的扩大,软件变得越来软件本身是复杂的,而且随着应用规模的扩大,软件变得越来 越复杂。有人认为,软件是人类能够制造的最为复杂的产物。越复杂。有人认为,软件是人类能够制造的最为复杂的产物。软件的成本相当昂贵。软件的技术落后于应用需求,软件成本软件的成本相当昂贵。软件的技术落后于应用需求,软件成本 占计算机系统总成本的比率在逐渐加大。占计算机系统总成本的比率在逐渐加大。相当多的软件工作涉及到

7、社会因素。由于对软件的认识不同,相当多的软件工作涉及到社会因素。由于对软件的认识不同,导致软件在开发过程中得不到应有的重视,也是导致软件开发导致软件在开发过程中得不到应有的重视,也是导致软件开发 失败的关键因素之一。失败的关键因素之一。从从以以上上分分析析可可以以看看出出,出出现现软软件件危危机机是是必必然然的的,软软件件的的特特点点决决定定了了软软件件危危机机的的产产生生。6060年年代代以以来来人人们们所所担担心心的的软软件件危危机机问问题题到到目目前前为为止并没有真正被排除。止并没有真正被排除。6TM6大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言3.3.软件

8、的分类软件的分类 通用软件产品通用软件产品 由软件开发机构制作,在市场上公开销售,可以独立使用。由软件开发机构制作,在市场上公开销售,可以独立使用。通用软件有时也称为缩卷软件通用软件有时也称为缩卷软件(shrink wrapped software)(shrink wrapped software)。定制软件产品定制软件产品 这些产品受特定客户的委托,由软件承包商专门为其开发。这些产品受特定客户的委托,由软件承包商专门为其开发。按软件的功能可以将软件划分为:按软件的功能可以将软件划分为:系统软件;支撑软件;应用软件。系统软件;支撑软件;应用软件。按软件工作方式可以将软件划分为:按软件工作方式可

9、以将软件划分为:实时处理软件;分时处理软件;交互式软件;批处理软件。实时处理软件;分时处理软件;交互式软件;批处理软件。其它划分方法:其它划分方法:按规模划分(大、中、小型软件);按规模划分(大、中、小型软件);按服务对象范围划分(项目软件、产品软件)等。按服务对象范围划分(项目软件、产品软件)等。系统软件系统软件支撑软件支撑软件应用软件应用软件7TM7大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言4.4.软件危机软件危机 人们通常所指的软件危机,主要是指出现如下几个现象:人们通常所指的软件危机,主要是指出现如下几个现象:由于缺乏软件开发的经验和有关软件数据的积累,

10、使得开发工由于缺乏软件开发的经验和有关软件数据的积累,使得开发工 作的计划很难制订,在作的计划很难制订,在进度、费用进度、费用上估计不准确,使用户不满。上估计不准确,使用户不满。软件需求很难确定或不确定。这一点是非常关键的。软件需求很难确定或不确定。这一点是非常关键的。开发过程缺乏统一、公认的方法论或规范指导,缺乏规范文开发过程缺乏统一、公认的方法论或规范指导,缺乏规范文 档,使得软件很难维护。档,使得软件很难维护。测试工作不充分,导致软件错误很多,软件可靠性降低。测试工作不充分,导致软件错误很多,软件可靠性降低。有很多的软件测试方法已经被广泛采纳,如黑盒测试、白盒测试、逻辑覆盖、等价类划分、

11、边界值划分、错误猜测、Alpha测试、Beta测试等技术,这些概念将在后面的章节中详细介绍。在此,举两个例子说明软件测试的重要性。8TM8大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言例例1 1,19631963年美国的火箭控制系统程序。年美国的火箭控制系统程序。在该程序中,把在该程序中,把FORTRANFORTRAN语句语句 DO 5 I=1DO 5 I=1,3 3 写成了写成了 DO 5 I=1.3DO 5 I=1.3,结果使得发往火星的火箭爆炸,造成结果使得发往火星的火箭爆炸,造成10001000多万美元的损失。多万美元的损失。例例2 2:19661966年开

12、发的年开发的IBM360IBM360机的操作系统。机的操作系统。该操作系统花费了该操作系统花费了50005000人年的工作量,写出了近人年的工作量,写出了近100100万行源程序,万行源程序,但是却得到了一个很不成功的软件。每更新一次版本,都能找到但是却得到了一个很不成功的软件。每更新一次版本,都能找到10001000多个错误,成为用之不灵、弃之可惜的软件系统。多个错误,成为用之不灵、弃之可惜的软件系统。由于上述种种原因,产生了软件危机。由于上述种种原因,产生了软件危机。解决软件危机的方法之一是:按工程化的原则和方法组织软件开解决软件危机的方法之一是:按工程化的原则和方法组织软件开发工作,同时

13、,要制定相应的标准。发工作,同时,要制定相应的标准。需要软件工程的技术、方法指导需要软件工程的技术、方法指导!9TM9大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 软软件件工工程程过过程程规规定定了了获获取取、供供应应、开开发发、操操作作和和维维护护软软件件时时,要要实实施施的的过过程程、活活动动和和任任务务。目目的的是是为为各各类类人人员员(项项目目干干系系人人)提提供供一个公共的框架,以便使用相同的语言进行交流。一个公共的框架,以便使用相同的语言进行交流。这这个个框框架架由由几几个个重重要要过过程程组组成成,这这些些主主要要过过程程包包括括用用来来获获取取、供供应、开发

14、、操作和维护软件时所采用的基本的、一致的要求。应、开发、操作和维护软件时所采用的基本的、一致的要求。该框架还可用来控制和管理软件的开发过程。该框架还可用来控制和管理软件的开发过程。各各种种组组织织和和开开发发机机构构可可以以根根据据具具体体情情况况进进行行选选择择和和剪剪裁裁,可可在在一一个机构的内部或外部实施。个机构的内部或外部实施。5.5.软件工程过程软件工程过程前言前言 软件工程过程中软件工程过程中没有规定没有规定一个特定的生存周期模型或软件开发方一个特定的生存周期模型或软件开发方法,各软件开发机构可为其开发项目选择一种生存周期模型,并将法,各软件开发机构可为其开发项目选择一种生存周期模

15、型,并将软件工程过程所包含的过程、活动和任务映射到该模型中,也可选软件工程过程所包含的过程、活动和任务映射到该模型中,也可选择和使用软件开发方法来执行适合该软件项目的活动和任务。择和使用软件开发方法来执行适合该软件项目的活动和任务。10TM10大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 软件工程过程包含如下软件工程过程包含如下7 7个过程:个过程:1.1.获取过程获取过程 为需方按合同获取一个系统、软件产品或服务的活动。为需方按合同获取一个系统、软件产品或服务的活动。2.2.供应过程供应过程 为供方向需方提供合同中确定的系统、软件产品或服务所需的活动。为供方向需方提供合同

16、中确定的系统、软件产品或服务所需的活动。3.3.开发过程开发过程 为开发者和机构定义开发软件或服务时所需的活动。此过程包括需求分析、为开发者和机构定义开发软件或服务时所需的活动。此过程包括需求分析、设计、编码、集成、测试、软件安装和验收等活动。设计、编码、集成、测试、软件安装和验收等活动。4.4.操作过程操作过程 为操作者和机构定义在规定的运行环境中为其用户运行一个计算机系统所为操作者和机构定义在规定的运行环境中为其用户运行一个计算机系统所 需要的活动。需要的活动。5.5.维护过程维护过程 为维护者和机构管理软件的修改,使之处于良好运行状态所需要的活动。为维护者和机构管理软件的修改,使之处于良

17、好运行状态所需要的活动。6.6.管理过程管理过程 为软件工程过程中所做的各项管理活动,包括项目开始和范围定义、项目为软件工程过程中所做的各项管理活动,包括项目开始和范围定义、项目 管理计划、实施与控制以及评审与评价、项目完成等。管理计划、实施与控制以及评审与评价、项目完成等。7.7.支持过程支持过程 对项目生存周期过程给予支持的所有活动,它有助于项目的成功并能提高项对项目生存周期过程给予支持的所有活动,它有助于项目的成功并能提高项 目的质量。目的质量。前言前言11TM11大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 第一章第一章 软件工程概论软件工程概论1 1 软件工程的背

18、景和历史软件工程的背景和历史1 1 Evolution of software 早期早期 面向批处理面向批处理 有限的分布有限的分布 自定义软件自定义软件 1968年由年由NATO(北大西洋公约组织北大西洋公约组织)在德国在德国Garmish召开的学术召开的学术会议上,会议上,Feitz Bauer首先提出了首先提出了“软件工程软件工程”的概念。的概念。19501960197019801990现在现在 第二阶段第二阶段 多用户多用户 实时实时 数据库数据库 软件产品软件产品 第三阶段第三阶段 分布式系统分布式系统 嵌入嵌入“智能智能”低成本硬件低成本硬件 消费者的影响消费者的影响 第四阶段第四

19、阶段 强大的桌面系统强大的桌面系统 面向对象技术面向对象技术 专家系统专家系统 人工神经网络人工神经网络 并行计算并行计算 网络计算机网络计算机 复杂系统复杂系统 软件工程再工程软件工程再工程12TM12大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 2 2 软件危机的主要软件危机的主要特征特征软件开发周期大大超过规定日期软件开发周期大大超过规定日期;软件开发成本严重超标软件开发成本严重超标;软件质量难于保证软件质量难于保证。第一章第一章 软件工程概论软件工程概论SuccessfullyChallengedCanceled31%31%53%53%16%16%YetYet,Su

20、ccess Success HasnHasn t t Come Easily Come Easily13TM13大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 2.1 2.1 软件危机概述软件危机概述 软件危机是指在计算机软件的软件危机是指在计算机软件的开发开发和和维护维护过程中所遇到的一系列过程中所遇到的一系列严重问题。严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都在不同程度上存在这些问题。乎所有软件都在不同程度上存在这些问题。概括地说,软件危机概括地说,软件危机包含下述两方面

21、的问题包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求?如何开发软件,以满足对软件日益增长的需求?如何维护数量不断膨胀的已有软件?如何维护数量不断膨胀的已有软件?14TM14大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 具体地说,软件危机主要有以下一些典型表现:具体地说,软件危机主要有以下一些典型表现:(1)(1)对软件开发成本和进度的估计常常很不准确。对软件开发成本和进度的估计常常很不准确。(2)(2)用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生。软件系统不满意的现象经常发生。(3)(3)软件产品的质量往往靠不住。软件产品的质量往往

22、靠不住。(4)(4)软件常常是不可维护的。软件常常是不可维护的。(5)(5)软件通常没有适当的文档资料。软件通常没有适当的文档资料。(6)(6)软件成本在计算机系统总成本中所占的比例逐年上升。软件成本在计算机系统总成本中所占的比例逐年上升。(7)(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速软件开发生产率提高的速度,远远跟不上计算机应用迅速 普及深入的趋势。普及深入的趋势。开发软件的实际成本开发软件的实际成本估计成本;估计成本;实际进度实际进度 比比 预期进度慢很多预期进度慢很多 造成软件开发机构的信誉下降造成软件开发机构的信誉下降为了赶进度和节约成本,可能为了赶进度和节约成本,可能

23、“偷工减料偷工减料”导致软件产品的质量下降导致软件产品的质量下降最终,不可避免地引起用户的不满。最终,不可避免地引起用户的不满。软件开发人员常常在对用户要求只有模糊的了软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情解,甚至对所要解决的问题还没有确切认识的情况下,就况下,就匆忙着手编写程序。匆忙着手编写程序。软件开发人员和用户之间的信息交流往往很不软件开发人员和用户之间的信息交流往往很不充分,充分,“闭门造车闭门造车”必然导致最终的必然导致最终的产品不符合产品不符合用户的实际需要用户的实际需要。软件可靠性和质量保证的确切的定量概软件可靠性和质量保证的确切的定量

24、概念刚出现不久;念刚出现不久;软件质量保证技术软件质量保证技术(审查、复审和测试审查、复审和测试)还没有坚持不懈地应用到软件开发的全过还没有坚持不懈地应用到软件开发的全过程中。程中。所有这些都可能导致软件产品发生质量所有这些都可能导致软件产品发生质量问题。问题。很多程序中的很多程序中的错误是非常难改正的错误是非常难改正的,实际,实际上不可能使这些程序适应新的硬件环境,也上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些不能根据用户的需要在原有程序中增加一些新的功能。新的功能。“可重用的软件可重用的软件”还是一个没有还是一个没有完全做到的、正在努力追求的目标,人们仍完全

25、做到的、正在努力追求的目标,人们仍然在重复地开发类似的或基本类似的软件。然在重复地开发类似的或基本类似的软件。15TM15大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 具体地说,软件危机主要有以下一些典型表现:具体地说,软件危机主要有以下一些典型表现:(1)(1)对软件开发成本和进度的估计常常很不准确。对软件开发成本和进度的估计常常很不准确。(2)(2)用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生。软件系统不满意的现象经常发生。(3)(3)软件产品的质量往往靠不住。软件产品的质量往往靠不住。(4)(4)软件常常是不可维护的。软件常常是不可维护的。(

26、5)(5)软件通常没有适当的文档资料。软件通常没有适当的文档资料。(6)(6)软件成本在计算机系统总成本中所占的比例逐年上升。软件成本在计算机系统总成本中所占的比例逐年上升。(7)(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速软件开发生产率提高的速度,远远跟不上计算机应用迅速 普及深入的趋势。普及深入的趋势。软件产品软件产品“供不应求供不应求”的现象,使人类不能的现象,使人类不能充分利用现代计算机硬充分利用现代计算机硬件系统提供的巨大潜力。件系统提供的巨大潜力。计算机软件计算机软件 =程序程序 +文档资料。文档资料。不仅仅是程序!不仅仅是程序!这些文档资料应该是在软件开发过程中产生的

27、,与程序代码这些文档资料应该是在软件开发过程中产生的,与程序代码保持完全一致。保持完全一致。管理人员使用这些文档资料作为管理人员使用这些文档资料作为“里程碑里程碑”,来管理和评价,来管理和评价软件开发工程的进展状况;软件开发工程的进展状况;软件开发人员利用它们作为通信工具,在软件开发过程中准软件开发人员利用它们作为通信工具,在软件开发过程中准确地交流信息;确地交流信息;对于软件维护人员而言,这些文档资料更是必不可少的。对于软件维护人员而言,这些文档资料更是必不可少的。缺乏必要的文档资料或者文档资料不合格,缺乏必要的文档资料或者文档资料不合格,必然给软件开发必然给软件开发和维护带来许多严重的困难

28、和问题。和维护带来许多严重的困难和问题。硬件成本逐年下降,而软件开发由硬件成本逐年下降,而软件开发由于需要大量人力,使得于需要大量人力,使得软件成本随软件成本随着通货膨胀以及软件规模与数量的着通货膨胀以及软件规模与数量的不断扩大而持续上升。不断扩大而持续上升。美国在美国在19851985年软件成本大约已占计年软件成本大约已占计算机系统总成本的算机系统总成本的90%90%。16TM16大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 2.2 2.2 产生软件危机的原因产生软件危机的原因 在软件开发和维护的过程中存在这么多严重问题,不仅与软件本在软件开发和维护的过程中存在

29、这么多严重问题,不仅与软件本身的特点有关,而且与软件开发、维护的方法不正确也有关。身的特点有关,而且与软件开发、维护的方法不正确也有关。概括而言,产生软件危机的原因有如下两个方面:概括而言,产生软件危机的原因有如下两个方面:客观原因:客观原因:软件缺乏可见性软件缺乏可见性 软件规模庞大软件规模庞大 软件是软件是逻辑部件逻辑部件,因而缺乏,因而缺乏“可见性可见性”。在代码被试运行之前,软件开发过程的进展情况较难在代码被试运行之前,软件开发过程的进展情况较难衡量,软件质量也较难评价,因此,管理和控制软件开衡量,软件质量也较难评价,因此,管理和控制软件开发过程相当困难。发过程相当困难。软件在运行过程

30、中不会因使用时间过长而被软件在运行过程中不会因使用时间过长而被“用坏用坏”,若运行中发现了错误,则该错误很可能是开发时期引,若运行中发现了错误,则该错误很可能是开发时期引入但在测试中未被检测出的错误。因此,软件维护通常入但在测试中未被检测出的错误。因此,软件维护通常意味着改正或修改原来的设计,因而在客观上造成软件意味着改正或修改原来的设计,因而在客观上造成软件较难维护。较难维护。软件的一个显著特点是软件的一个显著特点是规模庞大规模庞大,且程序复杂性将随,且程序复杂性将随着程序规模的增加而呈指数上升。为了在预定时间内开着程序规模的增加而呈指数上升。为了在预定时间内开发出规模庞大的软件,必须由许多

31、人进行分工合作,但发出规模庞大的软件,必须由许多人进行分工合作,但如何保证每个人完成的工作组合在一起确实能构成一个如何保证每个人完成的工作组合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂的问题,它高质量的大型软件系统,更是一个极端复杂的问题,它不仅涉及到诸如分析方法、设计方法、形式说明方法、不仅涉及到诸如分析方法、设计方法、形式说明方法、版本控制等许多技术问题,更重要的是必须有严格而科版本控制等许多技术问题,更重要的是必须有严格而科学的管理措施与手段。学的管理措施与手段。软件本身独有的特点的确给开发和维护带来一些客观上的困难,但是人们在软件本身独有的特点的确给开发和维护带来一些客

32、观上的困难,但是人们在开发和使用计算机系统的长期实践中,已经积累和总结出了许多成功的经验。开发和使用计算机系统的长期实践中,已经积累和总结出了许多成功的经验。若坚持不懈地使用经过实践证明是正确的技术方法,许多困难是可以克服的。若坚持不懈地使用经过实践证明是正确的技术方法,许多困难是可以克服的。事实上,确实存在着一些成功的范例。事实上,确实存在着一些成功的范例。但是,但是,目前相当多的软件专业人员对软件开发和维护还存在不少糊涂观念,目前相当多的软件专业人员对软件开发和维护还存在不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,在实践过程中或多或少地采用了错误的方法和技术,这可能是导致软

33、件危机的这可能是导致软件危机的主要原因。主要原因。17TM17大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 2.2 2.2 产生软件危机的原因产生软件危机的原因 在软件开发和维护的过程中存在这么多严重问题,不仅与软件本在软件开发和维护的过程中存在这么多严重问题,不仅与软件本身的特点有关,而且与软件开发、维护的方法不正确也有关。身的特点有关,而且与软件开发、维护的方法不正确也有关。概括而言,产生软件危机的原因有如下两个方面:概括而言,产生软件危机的原因有如下两个方面:客观原因:客观原因:软件缺乏可见性软件缺乏可见性 软件规模庞大软件规模庞大 主观原因:主观原因:认识

34、错误认识错误 技术错误技术错误 需求的不断变化需求的不断变化 与软件开发和维护相关的许多错误认识和做法的形成,可归因于在计算机与软件开发和维护相关的许多错误认识和做法的形成,可归因于在计算机发展早期阶段软件开发的个体化特点。这些认识和做法主要表现为:发展早期阶段软件开发的个体化特点。这些认识和做法主要表现为:忽视软件需求分析的重要性;忽视软件需求分析的重要性;认为软件开发就是写程序并设法使之运行;认为软件开发就是写程序并设法使之运行;轻视软件维护。轻视软件维护。在没有完整准确地掌握用户需求的情形下就匆忙着手编写程序,是许多软在没有完整准确地掌握用户需求的情形下就匆忙着手编写程序,是许多软件项目

35、失败的主要原因之一。件项目失败的主要原因之一。另外,必须认识到程序只是软件产品的一个组成部分,在软件生命周期的另外,必须认识到程序只是软件产品的一个组成部分,在软件生命周期的每个阶段都要给出最终产品的一些组成部分每个阶段都要给出最终产品的一些组成部分(通常以文档资料形式呈现通常以文档资料形式呈现)。只重视程序而忽视软件配置其余成分的观念是错误的。只重视程序而忽视软件配置其余成分的观念是错误的。技术上的错误常常表现为开发人员的软件能力不足。技术上的错误常常表现为开发人员的软件能力不足。需求不断的变化常常使软件难以维护需求不断的变化常常使软件难以维护(后期引入的变化所需的代价更大后期引入的变化所需

36、的代价更大)。18TM18大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 软件产品也存在从定义、开发、使用和维护,到被废弃的漫长生软件产品也存在从定义、开发、使用和维护,到被废弃的漫长生命周期。命周期。问题定义就是确定待求解问题是什么?并通过可行性研究确定该问题是否存在问题定义就是确定待求解问题是什么?并通过可行性研究确定该问题是否存在一个可行的解决办法。然后进行需求分析,深入、具体地了解用户需求,取得与一个可行的解决办法。然后进行需求分析,深入、具体地了解用户需求,取得与用户完全一致的认识。用户完全一致的认识。开发阶段可分为概要设计、详细设计、编码实现与测试等。开

37、发阶段可分为概要设计、详细设计、编码实现与测试等。测试工作的工作量通常占软件开发全部工作量的测试工作的工作量通常占软件开发全部工作量的40%50%。编写程序的工作量通常只占软件开发全部工作量的编写程序的工作量通常只占软件开发全部工作量的15%20%。统计数据表明,用于软件维护的费用占软件总费用的统计数据表明,用于软件维护的费用占软件总费用的55%-70%55%-70%。有。有的资料认为高达的资料认为高达90%90%。做好软件定义时期的工作是降低软件成本提高软件质量的关键。做好软件定义时期的工作是降低软件成本提高软件质量的关键。如果软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或

38、如果软件开发人员在定义时期没有正确全面地理解用户需求,直到测试阶段或软件交付使用后才发现软件交付使用后才发现“已完成的已完成的”软件不完全符合用户的需要,这时再修改软软件不完全符合用户的需要,这时再修改软件就为时已晚了,而且花费的代价也将大幅度增加。件就为时已晚了,而且花费的代价也将大幅度增加。19TM19大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言项目计划软件功能软件项目计划评审需求分析或原型需求规格说明书原型评审A定义阶段源程序代码概要设计规格说明数据与结构设计评审评审评审过程设计程序编码原型详细设计规格说明B.开发阶段修改过的源代码测试过程与结果单元测试组装

39、测试确认测试调试评审(QA)评审交付与销售维护操作过程用户文档修改的文档C测试、交付与维护阶段20TM20大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 改正错误的代价随着软件开发的进程大幅度增加改正错误的代价随着软件开发的进程大幅度增加改正一个问题需付出的代价改正一个问题需付出的代价需需求求分分析析结结构构设设计计详详细细设设计计编编码码集集成成测测试试系系统统测测试试现现场场改改正正一一个个问问题题的的估估计计费费用用改改正正一一个个问问题题估估计计的的工工作作量量20200200010005.02.50.050.5(美元)(人天)第一章第一章 软件工程概论软件工程概论2

40、1TM21大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 在软件开发的不同阶段进行修改需要付出的代价是很不相同的。在软件开发的不同阶段进行修改需要付出的代价是很不相同的。引入同一变更付出的代价引入同一变更付出的代价随时间变化的趋势随时间变化的趋势 在早期引入变更,涉及的面较少,因而代价在早期引入变更,涉及的面较少,因而代价也比较低;也比较低;在中期,软件配置的许多成分已经完成,引在中期,软件配置的许多成分已经完成,引入一个变更需要对所有已完成的配置成分都做入一个变更需要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更相应的修改,不仅工作量大,而且逻

41、辑上也更复杂,因此付出的代价剧增;复杂,因此付出的代价剧增;在软件在软件“已经完成已经完成”时再引入变更,当然需时再引入变更,当然需要付出更高的代价。要付出更高的代价。据美国一些软件公司的统计资料,在据美国一些软件公司的统计资料,在后期引入一个变更比在早期引入相同变后期引入一个变更比在早期引入相同变更所需付出的代价高更所需付出的代价高23个数量级。个数量级。右图定性地描绘了不同时期引入一个右图定性地描绘了不同时期引入一个变更需要付出的代价变化趋势。变更需要付出的代价变化趋势。22TM22大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 通过上面的讨论不难认识到,轻视维

42、护是一个最大的错误。通过上面的讨论不难认识到,轻视维护是一个最大的错误。许多软件产品的使用寿命长达许多软件产品的使用寿命长达10年甚至年甚至20年,在这样漫长的时年,在这样漫长的时期中,不仅要改正使用过程中发现的每一个潜在错误,而且当期中,不仅要改正使用过程中发现的每一个潜在错误,而且当环境发生变化时环境发生变化时(如硬件或系统软件更新换代如硬件或系统软件更新换代),还必须相应地,还必须相应地修改软件以适应新的环境,特别是要经常改进或扩充原来的软修改软件以适应新的环境,特别是要经常改进或扩充原来的软件以满足用户不断变化的需要。所有这些改动都属于维护工作,件以满足用户不断变化的需要。所有这些改动

43、都属于维护工作,而且是在软件已经完成之后进行的,因此维护是极端艰巨复杂而且是在软件已经完成之后进行的,因此维护是极端艰巨复杂的工作,需要花费很大代价。的工作,需要花费很大代价。软件工程学的一个重要目标就是提高软件的可软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。维护性,减少软件维护的代价。23TM23大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言2.3 2.3 消除软件危机的途径消除软件危机的途径 (1)(1)正确认识什么是软件正确认识什么是软件?为了消除软件危机,首先应该对计算机软件有一个正确的认识。应该彻底消除为了消除软件危机,首先应该对计

44、算机软件有一个正确的认识。应该彻底消除在计算机系统早期发展阶段形成的在计算机系统早期发展阶段形成的“软件就是程序软件就是程序”的错误观念。一个软件必须的错误观念。一个软件必须由一个完整的配置组成,由一个完整的配置组成,事实上,软件是程序、数据及相关文档的完整集合事实上,软件是程序、数据及相关文档的完整集合。其。其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。当地处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。19831

45、983年年IEEEIEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。虽然表面上看来在这个定义中列出了软及在计算机上运行程序时所必需的数据。虽然表面上看来在这个定义中列出了软件的件的5 5个配置成分,但是,方法和规则通常是在文档中说明并在程序中实现的。个配置成分,但是,方法和规则通常是在文档中说明并在程序中实现的。(2)(2)正确认识软件开发过程正确认识软件开发过程 应充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种应充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组

46、织良好、组织良好、管理严密、各类人员协同配合、共同完成的工程项目管理严密、各类人员协同配合、共同完成的工程项目。必须充分吸取和借鉴人类。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,同时长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,同时在管理上要下功夫。在管理上要下功夫。24TM24大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 前言前言 (3)(3)充分利用被实践证明是成功的技术与方法充分利用被实践证明是成功的技术与方法 应该推广使用在实践中总结出来的成功的开发软件技术和方法,并研究探索更应该推广使用在实践中总结

47、出来的成功的开发软件技术和方法,并研究探索更有效的技术和方法,屏弃一些错误的概念和做法。有效的技术和方法,屏弃一些错误的概念和做法。(4)(4)充分利用好的软件开发工具充分利用好的软件开发工具 应该开发和使用更好的软件工具。正如机械工具可以应该开发和使用更好的软件工具。正如机械工具可以“放大放大”人类的体力一样,人类的体力一样,软件工具可以软件工具可以“放大放大”人类的智力。在软件开发的每个阶段都有许多繁琐重复的人类的智力。在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得

48、既快又好。如果把各个阶段使用的软件工具有机地集合成一个整体,支持软如果把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。件开发的全过程,则称为软件工程支撑环境。总之,为了解决软件危机,既要有总之,为了解决软件危机,既要有技术措施技术措施(方法和工具方法和工具),又要,又要有必要的有必要的组织管理措施组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。算机软件的一门新兴学科。25TM25大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 3 3

49、 成功软件的标准成功软件的标准 用户在用户在用,用,用户的使用是最关键的因素;用户的使用是最关键的因素;用户可以很容易做完要做的事。用户可以很容易做完要做的事。第一章第一章 软件工程概论软件工程概论 开发人员开发出软件达不到用户要求开发人员开发出软件达不到用户要求(人的问题、技术问题人的问题、技术问题)4 4 失败的根本原因失败的根本原因5 5 处在十字路口的中国软件产业处在十字路口的中国软件产业 主权大国必须建立基于自主技术的、完整的软件产业体系。主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国软件本国提供率:中国1/31/3左右,美国左右,美国97%97%。“印度模

50、式印度模式”还是还是“中国模式中国模式”?“中国模式中国模式”是什么?是什么?软件人才结构不合理;软件人才结构不合理;缺乏中高级软件人才;缺乏中高级软件人才;软件人员缺乏软件工程化的概念。软件人员缺乏软件工程化的概念。26TM26大连海事大学计算机科学与技术学院 软件工程研究所 版 权 所 有 6 6 软件工程软件工程的定义的定义Fritz BauerFritz Bauer在在NATONATO会议上给出的定义:会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。的软件而确立和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁