收藏 分享(赏)

软件工程1.ppt

上传人:Facebook 文档编号:3283133 上传时间:2018-10-10 格式:PPT 页数:39 大小:392.50KB
下载 相关 举报
软件工程1.ppt_第1页
第1页 / 共39页
软件工程1.ppt_第2页
第2页 / 共39页
软件工程1.ppt_第3页
第3页 / 共39页
软件工程1.ppt_第4页
第4页 / 共39页
软件工程1.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、软件工程基础,航空航天学院洪涛,软件工程基础,2,第1章 软件工程概述,软件工程( Software Engineering, SE)概念是在20世纪60年代末期提出的。这一概念的提出,目的是倡导以工程的原理、原则和方法进行软件开发,用于解决当时出现的“软件危机”。主旨是以工程化的思想进行软件开发,从而生产高质量和高效率的软件。也即是说,软件工程研究的基础就是软件。,航空航天学院洪涛,软件工程基础,3,1.1 关于软件,1.1.1 软件及其特性 软件是一系列程序、数据及其相关文档的集合。 程序是按照特定顺序组织的指令的集合; 数据是程序操作的对象;文档是与程序的开发、维护和使用有关的图文资料。

2、 计算机软件的核心是程序。,航空航天学院洪涛,软件工程基础,4,软件具有下列几个特征: 复杂性 一致性(软、硬件) 磨损和老化 易变性 移植性(计算机系统) 高成本,航空航天学院洪涛,软件工程基础,5,1.1.2软件的演化,自从20世纪40年代产生了世界第1台计算机后,软件的演化大致经历了以下4个阶段:第1阶段(程序设计阶段):从1946年到20世纪60年代初,计算机软件发展的初期,其主要特征是程序生产方式为个体手工方式。第2阶段(程序系统阶段):从20世纪60年代初到70年代初,软件工程学科诞生。软件的开发方式由个体生产发展成为小组生产。,航空航天学院洪涛,软件工程基础,6,第3阶段(软件工

3、程阶段):从20世纪70年代中期至80年代中期,软件工程师把工程化的思想加入到软件的开发过程中,用工程化的原则、方法和标准开发和维护软件。 第4阶段(面向对象阶段):从20世纪80年代中期至今,面向对象的方法学受到人们的重视,从而促进了软件业的飞速发展,软件产业在世界经济中已经占有举足轻重的地位。 软件演化过程的各个阶段有不同的特征,在这些阶段中,软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。,航空航天学院洪涛,软件工程基础,7,随着计算机的普及,程序的稳健性和易读性受到广泛的关注,于是,程序从按个人意图创造的“艺术品”转变成能被广大用户接受的工程化产品。由于外部环境和用户需求不

4、断变化,以及软件开发技术不断发展,注定了软件系统只有不断地演化才能适应用户新的需求。 从整个系统的角度看,开发软件系统的目的是为了满足用户的需求,提高生产力。因此,软件的需求仍是软件发展的动力。 进入软件工程阶段以后,软件的开发具有社会属性,软件要在市场中流通以满足更多用户的需要。,航空航天学院洪涛,软件工程基础,8,1.1.3软件危机,在软件技术发展的第2阶段,随着计算机硬件技术的不断进步,人们要求软件能与之相适应。然而,软件技术的进步一直未能满足形势发展所提出的要求。致使问题积累起来,形成了日益尖锐的矛盾,这就导致了软件危机。 1968年,北大西洋公约组织的计算机科学家在前联邦德国召开的国

5、际学术会议上第一次提出了“软件危机“这个名词,即指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。,航空航天学院洪涛,软件工程基础,9,1)软件危机的表现形式: 软件开发费用和进度失控。 软件的可靠性差。 生产出来的软件难以维护。 2)软件危机产生的原因 用户需求不明确。 缺乏正确的理论指导,缺乏有力的方法学和工具方面的支持。软件开发产品个性化的加剧,也是发生软件开发危机的一个重要原因。 软件开发规模越来越大。 软件开发复杂度越来越高。,航空航天学院洪涛,软件工程基础,10,案例 1.1 软件生产随规模增大复杂度增大以美国宇航局的软件系

6、统为例: 1963年 水星计划系统 200万条指令 1967年 双子星座计划系统 400万条指令 1973年阿波罗计划系统 1000万条指令 1979年哥伦比亚航天飞机系统 4000万条指令,航空航天学院洪涛,软件工程基础,11,案例1.2 丹佛新国际机场 机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定

7、计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划者还无法预测行李系统何时能达到开放的稳定程度。,航空航天学院洪涛,软件工程基础,12,案例1.3 伦敦救护服务系统 伦敦救护服务系统覆盖伦敦市区600平方千米的地域和大约680万的救护人口,成为世界上最大的救护服务中心。该服务中心拥有318辆事故与应急救护车和445病人运输救护车,一个摩托车接应团队和一架直升机。中心的工作人员达到2746人,他们分布在伦敦市区70个救护站,每个救护站又分成4个运营部门。伦敦救护服务系统的目的是自动化转发呼叫请求和处理紧急救护需要,通过计算机系统处理人工系统的所有任务。呼叫999和请求救护服务将呼

8、叫者和派遣者连接起来,派遣者记录呼叫细节和分派合适的车辆。分派者将选择救护车,并将救护信息转发给车载系统。,航空航天学院洪涛,软件工程基础,13,伦敦救护服务系统包括以下3个组成部分。 计算机辅助派遣系统:包括软硬件基础设施、事故记录保存系统、无线电通信系统和无线电系统接口。 计算机地图显示系统:包括复杂地域地形分析软件。 自动化车辆定位系统:具有车辆自动定位能力,以便以最短的时间到达指定位置,并跟踪分析系统的性能。系统包括无线电系统和移动数据终端。,航空航天学院洪涛,软件工程基础,14,伦敦救护服务系统项目于1987年4月启动,前期投资250万英镑用于开发一个有限功能的派遣系统。1989年设

9、计规格被重新修改,增加了移动数据终端和声讯转换系统。1990年10月,项目经过两次峰值负载性能测试失败而被迫终止。截至项目被取消,该项目已经花费了750万英镑,超过预算的300%。 1991年2月,伦敦救护服务系统新的需求重新完成, 1991年8月项目重新启动。为了保证项目的顺利进行,合作方定期举行会议协调项目进度和解决存在的问题。但是到项目截止日期,1992年1月,项目还是被延期。派遣系统没有完全实现和测试,无线电接口系统未能交付,救护车数据终端设计和定位系统需求还需进一步完善,车载定位跟踪系统没有完成安装调试。,航空航天学院洪涛,软件工程基础,15,1992年10月26日,整个新系统全部运

10、转。但是过载问题仍然没有很好地解决,存在呼叫丢失和响应不及时等问题。1992年10月27日,系统不得不改为半自动化方式。1992年11月,系统运行性能开始全面下降,并最终导致系统锁死。由于没有对系统存在的故障及时响应,导致发生病人死亡的事件。工作人员试图切换和重启系统,但均告失败。由于系统没有备份系统,所以操作人员被迫恢复到完全人工过程。 伦敦救护服务系统的失败是由于一系列软件工程中的错误,特别是项目管理中的缺陷造成的,导致1992年秋天出现了两次故障。该系统失败是由于系统的复杂和庞大,系统需求不准确和经常变更,以及管理不到位等导致的。,航空航天学院洪涛,软件工程基础,16,案例1.4 IBM

11、360系列机操作系统 美国IBM公司于1963年1966年开发的IBM360系列机操作系统。该系统花了大约5000人一年的工作量,最多时,有1000人投入开发工作,写出近100万行的源程序。尽管投入了这么多的人力和资源,得到的结果确极其糟糕。据统计,这个操作系统每次发行的新版本都是从前一个版本中找出1000个程序错误而修正的结果。该项目的负责人总结该项目时无比沉痛地硕:“正像一只逃亡的野兽落到泥潭中作垂死挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难,程序设计工作正像这样一个泥潭一批批程序员被迫在泥潭中拼命挣扎,谁也没料到问题竟会陷入这样的困境”IBM360操作系统的历史教训已成为软件开发项

12、目中的典型事例被记入历史史册。,航空航天学院洪涛,软件工程基础,17,其它案例 伦敦股票交易系统预算4.5亿英镑,后来追加到7.5亿。历时五年,但最终还是失败,导致伦敦股票市场声誉下跌。 1963年,美国飞往火星的火箭爆炸,造成1000万美元损失,原因是在FORTRAN程序中将“DO 5 I1,3”误写为“DO 5 I1.3” 。 1967年苏联“联盟一号”载人宇宙飞船在返航时由于软件忽略一个小数点,在进入大气层时由于打不开降落伞而坠毁。,航空航天学院洪涛,软件工程基础,18,1.2 软件工程,1968年秋季,北大西洋公约组织的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头讨

13、论和制订摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)的概念。软件工程的定义: 运用现代科学技术知识设计并构造计算机程序,及为开发、运行和维护这些程序所必需的相关文件资料。,航空航天学院洪涛,软件工程基础,19,软件工程是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完善的工程化原则。 美国IEEE软件工程标准术语对软件工程下的定义为“软件工程是开发、运行、维护和修复软件的系统方法”。其中“软件”的定义为:“与计算机程序、方法和规则相关的文档资料,以及在计事机上运行时所必需的数据”。 尽管软件工程的具体定义不尽相同,但

14、其主要思想都是强调在软件开发的过程中需要应用工程化思想的的重要性。,航空航天学院洪涛,软件工程基础,20,1.2.1软件工程基本原理,1)工程化的观点 软件工程化思想的核心是把软件看做是一个工程产品,这种产品需要通过需求分析、设计、实现、测试、管理和维护等几个阶段。 软件工程化思想主要体现在软件项目管理方面,软件项目管理的作用一方面是提高质量,降低成本;另一方面则是为软件的工程化开发提供保障。 如今,软件开发的工程化管理思想已经得到认可,软件的开发管理已经不再过分依赖软件个人能力。运用项目管理的经验和方法是软件项目成功的前提和保证,这己是今天的软件业内人士的共识。,航空航天学院洪涛,软件工程基

15、础,21,2)推迟实现的观点 推迟实现是软件方法学的一条基本指导思想,软件开发过程应该理性地“推迟实现”。即把逻辑设计与物理设计清楚地划分开,尽可能推迟软件的物理实现。 为了正确高效地进行软件开发,必须在开发的前期安排好问题定义、需求分析和设计等环节,进行周密、细致的软件实现的前期工作。并明确规定这些环节只考虑目标系统的逻辑模型,不涉及软件的物理实现。,航空航天学院洪涛,软件工程基础,22,3)逐步求精的观点 逐步求精解决复杂问题的策略是软件工程方法学中的一项通用技术,也称为“逐步细化” ,即求解一个复杂问题采用有条理,并从抽象到具体的逐步分解和细化,逐步解决,这是人类把复杂问题趋于简单化控制

16、和管理的有效策略。,航空航天学院洪涛,软件工程基础,23,4)分解的观点 分解是把复杂问题趋于简单化处理的有效策略。若把一个复杂问题分解成若干容易解决的小问题,就能够减少解决问题所需要的总工作量。分解必须是科学且合理的,否则反而可能会增加解决问题的难度和工作量。,航空航天学院洪涛,软件工程基础,24,5)抽象的观点 抽象是把一些事物(状态或过程)中存在相似的方面(忽略它们的差异)概括成“共性”的。抽象的主要思想是抽取出事物的本质特性,而暂不考虑它们的细节,即抓“大”放“小”。 是一种分层次的渐进过程,软件工程方法学中广泛采用分层次的从抽象到具体的逐步求精技术。建立模型是软件工程最常用的方法和技

17、术之一。模型是一个方法或过程的合理而规范的框架。研究和建立模型必须运用抽象概括和创造性思维,进行综观全局的科学总结。,航空航天学院洪涛,软件工程基础,25,软件开发过程的每一步都是对软件产品求解过程抽象层次的一次求精,在软件定义期间,软件系统被看做一个最抽象的完整部件;在需求分析期间,软件解法给出用某个方式的抽象描述;当软件解法由总体设计向详细设计过渡时,抽象程度随之继续减少;最后,当源程序编出来时,也就达到了抽象的底层(具体层),软件求解过程结束。,航空航天学院洪涛,软件工程基础,26,例:IDEF0图,航空航天学院洪涛,软件工程基础,27,航空航天学院洪涛,软件工程基础,28,航空航天学院

18、洪涛,软件工程基础,29,6)信息隐蔽的观点 科学而合理的分解,还表现在得到的是一个个最简单、最清晰的“独立”部分。即这些部分的交互接口简单而清晰,不仅便于维护,而且利于复用。信息隐蔽是指“局部化”的信息(关系密切的软件元素,如实现过程、数据等),对于不需要了解这些信息的其他“局部”来说是不可访问(隐蔽)的。 信息隐蔽意味着把一些关系密切的软件元素物理地放置得彼此靠近,使信息最大限度地局部化,软件模块中使用局部数据元素就是局部化的一个例子。 信息隐蔽的指导思想始终贯穿在软件工程的面向过程、面向功能和面向对象的软件开发方法的发展中。,航空航天学院洪涛,软件工程基础,30,7)质量保证的观点 质量

19、保证是为了保证产品和服务能够充分满足消费者要求的质量,从而进行有计划、有组织的活动,是面向消费者的活动,是为了使产品实现用户要求的功能,站在用户立场上掌握产品质量。 确保软件质量的目的是为了客观地核实软件项目的实施行动,以及开发中的产品都遵从于对应的需求、过程描述、标准及规程。 质量保证的基本思路是提倡“预防“,而不是事后“补救“,强调“全过程控制“和“全员参与“。软件质量就是“软件与明确和隐含地定义的需求相一致的程度“,更具体地说,软件质量是软件与明确叙述的功能和性能需求、文档中明确描述的开发标准,以及任何专业开发的软件产品都应该具有的隐含特征相一致 的程度。,航空航天学院洪涛,软件工程基础

20、,31,1.2.2 软件工程基本原则,1)分阶段的软件生存周期 根据这条基本原则,可以把软件生命周期划分为若干个阶段,并相应地制订出切实可行的计划,然后严格按照计划对软件开发与维护进行管理。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。在整个软件生命周期中应指定并严格执行6类计划,即项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划和运行维护计划。,航空航天学院洪涛,软件工程基础,32,2)坚持进行阶段评审 统计结果显示,在软件生命周期各阶段中,编码阶段之前的错误约占63%,而编码错误仅占37%。并且错误发现得越晚,更正错误所付出的代价就越高,有时要增长23个数量级

21、,甚至更高。因此软件的质量保证工作不能等到编码结束以后再进行,必须坚持严格的阶段评审,以便尽早地发现错误。,航空航天学院洪涛,软件工程基础,33,3)实行严格的产品控制 需求的改动往往是不可避免的,这就要求开发人员采用科学的产品控制技术顺应这种需求。其中,主要是实行基准配置管理(又称为“变动控制”)。凡是修改软件的建议,尤其是涉及基本配置的修改建议都必须按规定进行严格的评审,评审通过后才能实施。“基准配置“指的是经过阶段评审后的软件配置成分,以及各阶段产生的文档或程序代码等。当需求变动时,其他各个阶段的文档或代码都要随之相应变动,以保证软件的一致性。,航空航天学院洪涛,软件工程基础,34,4)

22、采用现代程序设计技术 采用先进的程序涉及技术既可以提高软件开发与维护的效率,又可以提高软件的质量,还可以减少维护的成本。 5)明确责任 软件是一种逻辑产品。软件开发小组的工作进展情况可见性差,难以评价和管理。为了更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。,航空航天学院洪涛,软件工程基础,35,6)开发人员应少而精 开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。 7)不断改进开发过程 在软件的工程化生产中,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问

23、题报告统计。这些数据不仅可以用于评估新的软件技术的效果,还可以用于指明必须着重注意的问题,以及应该优先进行研究的工具和技术。,航空航天学院洪涛,软件工程基础,36,1.3 软件工程基本活动,1)开发活动 开发活动是软件人员生产软件的活动,是软件工程的核心过程活动。软件工程提供一整套工程化的方法,用于指导软件人员的工作。开发活动有一系列的阶段,如需求、设计、编码、测试、提交和维护等。这些阶段需要采用一定的控制流程将各个阶段连接起来,并需要规范的操作方式,这就形成了软件生命周期模型。,航空航天学院洪涛,软件工程基础,37,2)维护活动 软件开发完成并交付用户使用后,进入软件的运行和维护阶段。软件维

24、护是在软件交付运行后,为保证软件正常运行、适应新变化等需要而进行的一系列修改活动。主要工作是在软件运行和维护阶段,对软件产品进行必要的调整和修改。软件维护是软件生存周期的最后一个阶段,也是持续时间最长、工作量最大的一项不可避免的过程。软件维护的基本目标和任务是改正错误,增加功能,提高质量,优化软件,延长软件寿命,以及提高软件产品价值。,航空航天学院洪涛,软件工程基础,38,3)管理活动 软件项目管理活动是指如何管理好项目的范围、进度和成本等。为此需要制订一个好的项目计划,然后跟踪与控制好这个计划。需要对项目进行详细的需求分析、制订合理的计划、安排好进度、资源调配、经费使用等,并不断地跟踪和调整。为了降低风险,要进行必要的风险分析并制订风险管理计划。,航空航天学院洪涛,软件工程基础,39,4)过程改进活动 软件过程不仅是软件开发的活动序列,还是软件开发的最佳实践,包括流程、技术、产品、关系、角色和工具等。在软件过程管理中,首先要定义过程。然后合理地描述过程,进而建立企业过程库,并成为企业可以重复使用的资源。对于过程,要不断地进行改进,从而不断地改善和规范过程,帮助提高企业的生产力。软件过程改进是极其复杂的,需要不断总结以往项目的过程经验,形成有形的过程描述(成为最佳实践),并不断地完善并在以后的项目中重复利用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报