资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
第11页 / 共27页
第12页 / 共27页
第13页 / 共27页
第14页 / 共27页
第15页 / 共27页
第16页 / 共27页
第17页 / 共27页
第18页 / 共27页
第19页 / 共27页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2004 IBM Software Institute,IBM Software Institute,软件开发生命周期,软件开发生命周期,1,第一章 软件工程概述,章节目标,了解什么是软件,了解什么是软件工程,理解软件工程为什么很重要,学习软件工程的意义,Unit 标题,第一章 软件工程概述章节目标Unit 标题,2,什么是软件?,软件是程序和所有使程序正确运行所需要的相关文档和配置信息。,软件产品有以下两类:,通用软件产品,如:操作系统、多媒体、word、PowerPoint等。,定制软件产品,如:模拟训练、数据管理、辅助决策、人工智能等各个领域。,第一章 软件工程概述,什么是软件?软件是程序和所有使程序正确运行所需要的相关文档和,3,什么是软件工程?,软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。软件工程还包括上述方法的研究。,1962年,第一个金星探测器水手1号偏离航线失败。原因:导航程序一个语句语义错误,Apollo8存储器信息丢失;11号运行10天18个软件错误。,规模相对较小;,崇尚个人技巧技艺,缺乏有效方法与软件工具支持,不重视开发过程的管理,维护困难,(编写1条汇编语句=研制2个硬件逻辑门;维护1汇编语句条=修理4个硬件逻辑门),1968年NATO(北大西洋公约组织)会议:software crisis,software engineering.,第一章 软件工程概述,什么是软件工程?软件工程是将系统化的、规范的、可度量的方法应,4,第一章 软件工程概述,二、什么是软件工程?,软件工程中的分层,第一章 软件工程概述二、什么是软件工程?软件工程中的分层,5,第一章 软件工程概述,二、什么是软件工程?,如果不考虑应用领域、项目规模和复杂性,与软件工程相关的工作可分为三个一般的阶段:,.定义阶段集中于“做什么”,.开发阶段集中于“如何做”,.维护阶段集中于“改变”,软件工程的一般视图,第一章 软件工程概述二、什么是软件工程?如果不考虑应用领,6,第一章 软件工程概述,二、什么是软件工程?,.软件项目追踪和控制,.正式的技术评审,.软件质量保证,.软件配置管理,.文档的准备和产生,.可复用管理,.度量,.风险管理,典型的保护性活动,第一章 软件工程概述二、什么是软件工程?.软件项目追踪,7,第一章 软件工程概述,为什么需要那么长时间才能结束开发?,为什么成本如此之高?,为什么我们不能在把软件交给客户之前就发现所有的错误?,为什么在软件开发过程中我们难以度量其进展?,理解软件工程为什么很重要,第一章 软件工程概述 为什么需要那么长时间才能结束开发,8,第一章 软件工程概述,二、什么是软件工程?,逻辑产品而不是实物,其功能依赖于人的操作和相关硬件而体现,对软件产品的要求比一般有形产品来的复杂,100万汇编语句,1万子功能,每功能2个实现,则2,10000,=10,3000,组合!,Hetgel负责软件研制工程时候:,几个人)时候,认为关键是方法学问题:,50人时候,文档越来越重要,200人:关键是管理问题。,复杂性:功能多样性,实现多样性,能见度低,结构合理性差,其“资金密集程度”中包含更多的人的成分(即“智力密集”),软件工程与一般工程的差异,第一章 软件工程概述二、什么是软件工程?逻辑产品而不是实,9,第一章 软件工程概述,软件销售收入比较图,三、理解软件工程为什么很重要,第一章 软件工程概述软件销售收入比较图三、理解软件工程为,10,学习软件工程是大势所趋,第一章 软件工程概述,世界上唯一不变的东西就是,变化,。拒绝改变的人将永远也找不回他的奶酪!,人对不了解的东西会产生抵触。他因为害怕而拒绝改变!,谁动了我的奶酪?,学习软件工程是大势所趋第一章 软件工程概述 世界上,11,习题和答案,1,什么是软件危机?为什么会产生软件危机?怎样克服软件危机?,解:,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的,“,软件危机,”,。,产生软件危机的原因:,用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求。,软件开发人员对用户需求的理解与用户的本来愿望有差异,导致开发出来的软件产品与用户要求不一致。,大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。,软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。,缺乏有利的方法学和工具方面的支持,过分的依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。,软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。,要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。,2.,什么叫软件工程?软件工程的诞生是否从根本上消除了软件危机?为什么?,解:,软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。,软件工程的诞生只能大大减少软件开发成本并提高软件质量,不能从根本上消除软件危机。,3,软件生存周期为什么要划分阶段?各个阶段的任务是什么?,解:,软件也是一种产品,同样存在生存周期。把软件生存周期划分为几个阶段后,软件开发按照每个阶段的基本任务进行并产生相应的工作结果,这样有利于对软件开发过程进行管理,有利于提高软件产品质量。,可行性研究与计划阶段的基本任务:研究开发该项目的可行性。,需求分析阶段的基本任务:理解和表达用户的要求。,设计阶段的基本任务:建立系统的结构。,编程阶段的基本任务:编写程序。,测试阶段的基本任务:发现错误和排除错误。,4,什么是软件?如何评价软件的质量?,解:,软件是程序以及开发、使用和维护程序所需的所有文档。,软件质量从可维护性、可靠性、可理解性和效率等方面对软件作较全面的评价。,习题和答案1什么是软件危机?为什么会产生软件危机?怎样克,12,传统软件工程概论,一般问题的工程设计过程,问题阐述,问题分析(设计 细节),寻找解法,判定最佳解法,设计规约(规格说明、报告),实现,传统软件工程概论一般问题的工程设计过程,13,程序设计方法回顾,结构化程序设计(SP),三种基本结构:,顺序结构,分支结构,循环(迭代),原则:,只有上面三种结构,自底向上,逐步抽象,最终形成一个函数型节点,每个节点只有,一个出口和一个入口,其他:注意风格:注视和缩进等,程序设计方法回顾结构化程序设计(SP),14,程序设计方法回顾,程序正确性证明,?调试能证明吗?,调试(debugging)的三个概念:,测试testing,Unit testing,integration testing,acceptance testing,确认validation(开发结束时进行的评价),验证verification(开发过程中某阶段是否到达前一阶段确定要求的活动),程序设计方法回顾程序正确性证明,15,程序设计方法回顾,模块化与信息隐蔽,模块化:,自顶向下,逐步细化,模块直接的接口应尽可能简明,模块之间尽可能彼此隔离,要求:,可修改性,易读性,以验证性,程序设计方法回顾模块化与信息隐蔽,16,程序设计方法回顾,内聚度cohesion:模块所执行的任务在功能上互相关联的程度,巧合内聚coincident cohesion,Logical cohesion,Temporal cohesion,Procedure cohesion,Communicational cohesion,Sequential cohesion,Functional cohesion,程序设计方法回顾内聚度cohesion:模块所执行的任务在功,17,程序设计方法回顾,耦合度coupling:模块之间相互依赖的程度,非直接nondirect耦合,数据data耦合(参数),标记stamp耦合,控制control耦合(控制语句),外部external耦合,公用common耦合,内容content耦合,程序设计方法回顾耦合度coupling:模块之间相互依赖的程,18,程序设计方法回顾,扇入fan in,模块直接隶属的模块个数:,一个模块被其他模块调用的个数,称为该模块的扇入。扇入大些,一般不会影响问题的复杂性,而且,扇入越大,说明该模块的复用性越好,扇出fan out:,直接下属的模块个数,一个模块调用其他模块的个数,称为该模块的扇出。,扇出越大,,设计该模块时需要考虑的问题就越多,,因而复杂性越高,。,程序设计方法回顾扇入fan in,19,程序设计方法回顾,原则:高内聚度、低耦合度,一般中等内聚即可(功能性最理想),尽量不采用控制耦合(不使用goto语句),限制使用外部、公共、内容耦合,扇出越多,模块间逻辑关系越复杂。应控制在7+-2,扇入越多,模块可复用性越强(但可能产生低内聚),模块大小:30句以上,程序员对其的理解力,迅,速下降;50-100句,开发成本迅速上升,。,程序设计方法回顾原则:高内聚度、低耦合度,20,软件工程的成本,开发成本分布,描述 设计 开发 集成和测试,0 25 50 75 100,其中集成和测试最高,40%50%,另外,软件投入使用后,其变更和更新也需要成本。对许多使用期限长的软件而言,该成本往往高达开发成本的,34,倍!,软件工程的成本开发成本分布描述,21,什么是CASE,计算机辅助软件工程Computer Aided Software Engineering,分类:,高端CASE:支持软件过程的早期阶段,如分析和设计,低端CASE:支持实现和测试,如调试器,程序分析系统,测试用例生成器和程序编辑器等。,什么是CASE计算机辅助软件工程Computer Aided,22,优良软件属性,可维护性:不断进化,满足用户需求变化;,可依赖型:可靠性、安全性、保密性等,以及失败时不造成伤亡和损失。,有效性:不浪费内存和系统资源等,可用性:用户不需特殊努力即可操作。,优良软件属性可维护性:不断进化,满足用户需求变化;,23,软件工程面临的问题,遗留系统的挑战,多样性的挑战,交付上的挑战(在不损及质量的情况下,缩短移交时间),软件工程面临的问题遗留系统的挑战,24,职业和道德上的责任,机密:保守雇主或客户的机密,而不管是否签署了保密协议,工作能力:实事求是表述自己的工作能力,不应有意接受超出自己能力的工作。,知识产权:知晓相关法律,保护雇主和客户的知识产权。,计算机滥用:不得将自己的技能滥用与他人的计算机。,职业和道德上的责任机密:保守雇主或客户的机密,而不管是否签署,25,ACM/IEEE职业道德准则,ACM美国计算机学会,IEEE电气和电子工程师协会,公众感,客户和雇主,产品,判断力,管理,职业干,同事,自己,ACM/IEEE职业道德准则ACM美国计算机学会,26,软件开发生命周期课件,27,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6