软件危机与软件工程

上传人:宝路 文档编号:47996362 上传时间:2018-07-08 格式:PPT 页数:105 大小:2.09MB
返回 下载 相关 举报
软件危机与软件工程_第1页
第1页 / 共105页
软件危机与软件工程_第2页
第2页 / 共105页
软件危机与软件工程_第3页
第3页 / 共105页
软件危机与软件工程_第4页
第4页 / 共105页
软件危机与软件工程_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《软件危机与软件工程》由会员分享,可在线阅读,更多相关《软件危机与软件工程(105页珍藏版)》请在金锄头文库上搜索。

1、考核方式 平时 30% 笔试 70%参考书目 软件工程:实践者的研究方法(第五版) 梅宏等译 机械工业出版社 OOD启思录 Arthur J.Riel 人民邮电出版社 重构改善既有代码的设计 Martin Fowler 中国电力出版社 实用软件工程 郑人杰 清华大学出版社+软件工程组织 +希赛网 http:/ +http:/ html+http:/www.chinaxp.org/ +http:/www.agilechina.org/ 暑期实践论文第一章 软件危机与软件工程软件的发展软件的发展:(1)程序设计阶段:约5060年代。软件产品:程序;语言:汇编语言及机器语言;主要工作:编写程序;组

2、织:个人;质量因素:编程技术(技巧)。 (2)程序系统阶段:约6070年代。软件产品:程序及说明书;语言:高级程序设计语言;主要工作:设计程序及测试;组织:开发小组;开发技术:结构化程序设计方法软件的发展(3)软件工程阶段:70年代以后。软件产品:程序、数据、文档;语言:软件语言(需求定义语言、软件功能语言、软件设计语言、程序设计语言);主要工作:软件生存周期各个阶段;组织:大中型软件开发机构;需求者:面向市场,面向用户;开发技术和手段:工程化开发方法,开发工具及开发环境起重要作用;质量因素:管理水平。软件危机1、什么叫软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题

3、。1968年北大西洋公约组织在联邦德国召开的国际会议上提出来的。软件危机2、主要表现:(1)对软件开发的成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件质量往往靠不住:软件质量保证技术(审查、复审和测试)没有坚持不懈地应用到软件开发全过程中;(4)软件常常不可维护:错误难改,难适应新的硬件环境,难适应用户要求增加的新的功能需求,软件的复用性不高;软件危机5)软件通常没有适当的文档资料;文档资料的作用是:管理和评价软件开发过程的进展情况,开发者与用户和开发者之间通信的工具,维 护工具。往往危机是指在计算机软件的开发和维护过 程中所遇到的一系列严重问

4、题。 (6)软件成本在计算机系统总成本中所占的比例逐年上 升;(1985年美国软件成本占计算机系统总成本的比 例为90%) (7)软件开发生产率提高的速度赶不上计算机普及的速 度。 若干年前开发的应用软件经过几十次修 改已无人认识它的内部结构,己经不可 维护。 由于经济原因,嵌入式系统存在许多怪现 象,企业不愿意投入资源再生产,而采 取打补丁+时髦界面的方法。许多软件项目不能满足客户的要求许多软件项目超出预算和时间安排软件危机产生的原因(1)软件是计算机的逻辑部件而不是物理部件。软件问题是在开发时期引入的而在测试阶段没能测出来的故障,修改软件故障要修改软件原来的设计。(2)软件不同于一般程序,

5、它的特点是规模庞大,软件开发工作量随软件规模增大非线性增长;(3)与早期软件开发个体化特点有关:认为软件开发就是写程序并设法使之运行,轻视需求分析和软件维护。软件危机产生的原因三个错误认识:a、软件就是程序;b、软件开发就是编程;(编程仅占工作量的10%-20%)c、将错误留到编程后的测试和维护时再改。(相同的错误在后期引入软件更改比早期引 入软件更改所需的代价高出2-3个数量级。)早中晚引入同一变 动付出的代 价随时间变 化的趋势改正一个问题的估计费用 (美元)改正一个问题的估计工作量 (人天)20200100020000.52.55.0RASDDDCDITSTRTBell 实验室统 计结果

6、(US)0.05解决软件危机的途径(1)借助各种工程项目开发所积累的经验(原理、概念、技术和方法);(2)总结软件开发成功的技术和方法;(3)应用软件开发辅助工具。软件工程 软件工程是指采用工程的概念 、原理、技术和方法来开发与 维护软件,把经过时间考验而 证明正确的管理技术和当前能 够得到的最好的技术方法结合 起来。软件工程三要素软件工程过程方法工具软件工程釆用层次化的方法,每个层次都包括 过程、方法、工具三要素。软件工程三个要素 软件工程方法 是完成软件开发的各项任务的技术方法,为 软件开发提供了“如何做”的技术。 软件工具 为软件工程方法提供了自动的或半自动的软 件支撑环境。 软件工程的

7、过程 是将软件工程的方法和工具综合起来以达到 合理、及时地进行计算机软件开发的目的。软件工程的基本原理1、用分阶段的生命周期计划严格管理生命周期:问题定义、需求分析、可行性研究、总体设计、详细设计、编码和单元测试、综合测试、软件维护。在软件的整个生命周期中应该严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。软件工程的基本原理2、坚持进行阶段性评审软件的质量保证工作不能等到编码结束以后进行: (1)大部分错误是在编码之前造成的,占63%;(2)错误发现与改正得越晚,所需付出的代价也越高.软件工程的基本原理2、坚持进行阶段性评审软件的质量保证工作不能

8、等到编码结束以后进行: (1)大部分错误是在编码之前造成的,占63%;(2)错误发现与改正得越晚,所需付出的代价也越高.软件工程的基本原理3、实行严格的产品控制(1) 产品控制:指在软件生产过程中保持软件各个配置(文档或程序代码)的一致性,即不能随意修改软件。(2)基线配置:是经过阶段评审后的软件配置成分。对基线配置的修改都要按照严格的规程进行评审。软件工程的基本原理4、采用现代程序设计技术采用先进的程序设计技术可以提高软件的生产效率。SA(structure analyse):结构分析;SD(structure design):结构设计。软件工程的基本原理5、结果应能清楚地审查软件是看不到的

9、逻辑产品。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查。软件工程的基本原理6、开发小组的人员应该少而精(1)精:(2)少:为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查。7、承认不断改进软件工程实践的必要性软件工程常用的方法学 两种主要方法: 传统方法学 面向对象方法学传统方法学 也称为生命周期方法学或结构化范型 以结构化程序设计为基础 结构化分析(SA)结构化设计(总体设计、详细 设计)

10、面向过程的编码测试 使用适当的软件工具或软件工程环境来支持结构化 技术的运用 这种方法学把软件生命周期的全过程依次划分为若干 个阶段,然后顺序地完成每个阶段的任务。面向对象方法学 面向对象方法学的出发点和基本原则 是尽量模拟人类习惯的思维方式,使开发软件的方 法与过程尽可能接近人类认识世界解决问题的方法 与过程,从而使描述问题的问题空间(也称为问题 域)与实现解法的解空间(也称为求解域)在结构 上尽可能一致。 以面向对象程序设计为基础 软件分析与对象抽取对象详细设计面向对象的编码测试 优点: 降低了软件产品的复杂性,提高了软件产品的可理 解性,简化了软件的开发和维护工作。 促进了软件重用。比较

11、 传统方法系统是过程的集合 过程与数据实体 交互过程接受 输入并产生输出面向对象方法系统是 交互对象的集合对象 与人或其它对象 交互 发送与响应消息消息1.3 软件的生存期软件工程的传统途径:生命周期法。 软件从开始计划到最后废弃不用整个阶段称为计算机软件的生命周期。生命周期方法学:从时间角度对软件开发和维护的复杂问题分解为若干阶段,每个阶段都有相对独立的任务,然后逐步完成每个阶段的任务。(1)前一阶段完成,后一阶段才能开始;前一阶段是后一阶段的基础,后一阶段是前一阶段的细化。(2)每一个阶段都有开始和结束的标准,前一阶段结束的标准就是后一阶段开始的标准;每一个阶段结束后都要提交一个完整的高质

12、量的文档资料(软件配件文件)。(3)每一个阶段结束之前都要进行正式严格的技术审查和管理复审;1.3 软件的生存期 软件生命周期分为三个时期: 软件定义 软件开发 软件维护 每个时期又可进一步划分成若干个阶段。软件生命周期:软件定 义、软件设计、软件使用 与维护三阶段,而又可以 具体分成几个子阶段。(1)可行性研究和制定计划(2)需求分析和定义(3)总体设计(4)详细设计(5)编码(实现) (6)软件测试、运行维护生命周期各阶段的基本任务1、问题定义(1)回答的关键问题是:“要解决的问题是什么?”;(2)参与人员:系统分析员;(3)工作过程:分析员将自己对问题的理解提交由用户和开发方共同参加的会

13、议讨论。(4)完成的任务:提交关于问题性质、工程的目标和规模的书面报告。生命周期各阶段的基本任务2、可行性研究(1)回答的关键问题是:“对上阶段所确定的问题有行得通的解决办法吗?”;(2)参与人员:系统分析员;(3)工件过程:一个大简化了的系统分析和设计过程;(4)完成的任务:提出系统的高级逻辑模型,即数据流图、数据字典,确定系统的目标和规模,系统的成本/效益分析。生命周期各阶段的基本任务3、需求分析(1)回答的关键问题是:“为了解决这个问题,目标系统应该做什么?”;(2)参与人员:系统分析员和用户;(3)完成的任务:确定系统的逻辑模型,通常用数据流图、数据字典和简要的算法表示,这个系统模型经

14、过用户确认后才能进入下一阶段。生命周期各阶段的基本任务4、总体设计(1)回答的关键问题是:“概括地说,应该如何解决这个问题?”;(2)参与人员:系统分析员;(3)主要工作:提出几种可供选择的解决方案(是人工完成还是计算机完成,是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐一种方案。最后确定一种方案。(4)完成的任务:可能的解法(每种方解法的系统流程图和成本效益分析),推荐的系统结构(层次图或结构图)。生命周期各阶段的基本任务5、详细设计(1)回答的关键问题是:“应该如何具体地实现这个系统?”;(2)参与人

15、员:系统分析员和程序员;(3)主要工作:设计程序详细的规格说明,用图形工具或伪码描述模块的实现。但还不是编程,它类似于其它工程上的图纸。(4)完成的任务:编码规格说明书,用HIPO图或PDL描述的详细设计的结果。生命周期各阶段的基本任务6、编码(1)关键问题是:写出正确的容易理解、容易维护的程序模块;(2)参与人员:程序员;(3)主要工作:选取一个适当的程序设计语言(高级程序设计语言或汇编语言),把详细设计的结果翻译成用选定的语言书写的程序,仔细测试编写出的每一个模块。(4)完成的任务:源程序清单,单元测试方案和结果。生命周期各阶段的基本任务7、综合测试(1)关键问题是:通过各种类型的测试和调

16、试使软件达到预期的要求。(2)参与人员:专门的测试人员、用户;(3)主要工作:集成测试:根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户积极参加下)对目标系统进行验收。平行运行:新旧系统同时运行,在保障系统安全的前提下使新系统接爱实战演练,同时对用户进行培训。(4)完成的任务:综合测试方案和结果,完整一致的软件配置生命周期各阶段的基本任务8、软件维护(1)关键问题是:通过各种必要的维护活动使系统持久地满足用户的需要。是压缩和简化了的软件定义和开发过程。(2)参与人员:软件工程师、用户;(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号