收藏 分销(赏)

XXXX秋 计算机学科概论 软件工程概述.pptx

上传人:可**** 文档编号:10291351 上传时间:2025-05-17 格式:PPTX 页数:103 大小:4.12MB
下载 相关 举报
XXXX秋 计算机学科概论 软件工程概述.pptx_第1页
第1页 / 共103页
XXXX秋 计算机学科概论 软件工程概述.pptx_第2页
第2页 / 共103页
点击查看更多>>
资源描述
Click to edit Title Slide,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,第10 章 软件工程,软件工程,Software Engineering,2010秋,1.1 软件危机,软件危机的定义、含义、实质、具体表现、产生的原因、解决途径,1.2 软件工程,软件工程的定义、基本原理、软件工程方法学、要素,结构化方法、面向对象方法,1.3 软件生命周期,瀑布、快速原型、增量、螺旋、喷泉、RUP、敏捷、MS,主要内容,计算机系统的发展历程,系统的概念,(1)若干部件的集合;,(2)每个部件有自己独立的功能和边界;,(3)部件之间的关系构成系统的结构;,(4)部件之间的相互作用构成系统的运动。,软件危机,结构的概念:,元素及关系。,关系:,1:1 1:m m:n,系统的观点:,完整、层次、功能、运动,计算机系统的发展历程,过程,文档,数据库,人员,软件,硬件,计算机系统的组成,所谓计算机系统就是指适当地组织在一起的一系列系统元素的集合,这些系统元素互相配合,、相互协作,通过对信息的处理而完成预先定义的目标。,计算机系统的发展历程,计算机系统的发展历程:,经历了四个不同的发展阶段。,个体开发,(1950-1960),软件工程,(1970-1980),软件作坊,(1960-1970),软件产业,(1980-),4GT和4GL?,1.1 软件危机,计算机系统的发展历程,计算机系统的发展,软件危机,软件危机,“危机”:,(1)是危险的环境中酝酿的机会,也是机遇背后暗藏的危险,(2)危险的机会、矛盾、出事了,(3)政治危机、经济危机、金融危机、信任危机、心理危机、婚姻危机,1.1 软件危机,软件危机,“危机”的含义,一是,指突发事件,,出乎人们意料发生的,如地震、水灾、空难、疾病爆发、恐怖袭击、战争等;二是指人所处的,紧急状态,。当个体遭遇重大问题或变化发生使个体感到难以解决、难以把握时,平衡就会打破,正常的生活受到干扰,内心的紧张不断积蓄,继而出现无所适从甚至思维和行为的紊乱,进入一种失衡状态,这就是危机状态。,危机意味着平衡稳定的破坏,引起混乱、不安,。危机出现是因为个体意识到某一事件和情景超过了自己的应付能力,而不是个体经历的事件本身。,软件危机,软件危机的定义,软件危机是指在计算机软件的,开发,和,维护,过程中所遇到的一系列严重问题。,即:,效率,和,质量,的问题。,软件危机,软件危机的具体表现,(1)开发成本和进度估计不准。,(2)用户对“已完成的”软件系统不满意。,(3)软件质量往往靠不住。,(4)软件常常是不可维护的。,(5)软件通常没有适当的文档资料。,(6)软件成本逐年上升。,(7)软件开发生产率滞后于硬件和计算机应用普及。,软件危机,软件开发周期:,一个软件从,定义、开发、使用和维护,,直到最终被,废弃,,要经历一个漫长的时期,该时期称为软件的生命周期。,软件危机,软件危机案例,8客户所付的钱,9上线后的技术支持,7最后交付给用户的软件,0 客户真正的需求,1 客户解释他们想要的,4程序员写出的代码,2项目负责人对客户,需求的认识,3系统分析员分析的,6项目文档一片空白,5顾问所描绘的情景,软件危机,产生软件危机的原因:,(1)软件本身的特性,缺乏可见性、无制造过程、规模庞大,(2)对软件开发错误的认识和做法,软件就是程序、开发软件就是编程序、轻视文档、,不懂测试、不想维护、轻视管理,(3)开发与维护的方法不正确,非工程化(个体、软件作坊),落后的方法学(结构化的、面向对象的),(4)概念的商业炒作与迷信,软件危机仍然在困扰我们。,软件危机,不同时期对软件修改付出的代价:,引入同一变动付出的代价随时间变化的趋势:越晚越大。,O,早,中,晚,变化出现的时期,代价,软件危机,软件危机,软件危机与人月神话焦油坑,史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。,软件危机,软件危机与人月神话焦油坑,过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统,不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。对问题的麻烦程度,每个人似乎都会感到惊讶,并且很难看清问题的本质。不过,如果我们想解决问题,就必须试图先去理解它,。,软件危机,消除软件危机的途径:,(1)对软件正确认识。,(2)推广使用成功的技术和方法。,(3)研究探索更好更有效的技术和方法。,(4)应该开发和使用更好的软件工具。,总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。,软件工程正是从,管理,和,技术,两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,(1)软件是无形的(intangible),比其他工程产品更加不可捉摸。,你无法感觉软件产品的形状,它的设计也难以直观表示。因此确定软件产品的质量或者估计其开发的工作量是非常困难的。这就是人们总是低估系统开发时间的一个原因。,软件的特性,软件的特性,(2)软件副本的大批量生产轻而易举,绝大多数其他类型的工程师非常关心每一个部件耗费的成本与劳动量。换句话说,对于有形产品,设计完成之后的制作过程往往是代价昂贵的部分。,与之相反,软件产品能通过网络下载或制作CD以极低的成本进行复制。因此,几乎全部的软件成本都存在于它的开发过程中,而不是制造过程中。,软件的特性,(3)软件业是劳动密集型的,通过使用机器,制造业与建筑业的许多领域已经实现了自动化;因此其他工程分支可以用更少的劳动量生产出更多的产品。但是,使软件的设计与编程完全实现自动化,需要真正“智能”的机器。目前这个方向上的尝试离成功还很遥远。,软件的特性,(4)一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件,编程新手可以创建复杂的系统完成有用的功能,但它的设计却可能极其紊乱。其他工程领域也可能产生不良的设计,但是这些缺陷通常比较容易发现,因为它们不会隐藏在上千页的源代码中。例如,如果土木工程师设计了一座不安全的桥梁,审查人员一般会比较容易地发现设计中的缺陷,因为他们清楚地知道在每张图纸和每次计算中应当寻找什么。,软件的特性,(5),软件本身很容易修改,但由于它的复杂性,又很难正确地修改,人们总是试图在尚未完全了解软件的时候就去修改它,而这些修改又会带来新的错误。,软件的特性,(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化,对软件的修改很容易引入新的缺陷,因此修改过的软件从设计角度讲容易变差。随着时间的流逝,软件后续,版本,的设计可能会表现出严重的退化,这时就需要完全重新设计了。,软件的特性,(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化。,软件的特性,软件的特性造成的问题,总而言之,以上这些特性说明,大部分现有软件的质量都相对较差,而且还在不断地变得更差。,同时,对新的、修改过的软件的需求旺盛,客户希望它们质量高,并且能够很快地生产出来。,因此,软件开发人员常常满足不了经理与客户的期望许多软件项目不是根本没有交付,就是推迟交付而且超出了预算。,此外,许多已交付的软件系统的问题太多,从未投入使用;而其他一些软件在使用前需要做较大的修改。,什么是工程,对“工程(,engineering),”的理解:,大事情,、施,工,的,过程、工程学科。,大事情:,大的、复杂的、由众多的人共同完成的。,如建筑工程、三峡工程、航天工程。,什么是工程,对“工程(,engineering),”的理解:,1.对“工程”的理解:大事情,,施,工,的过,程,工程学科。,施,工,的过,程:,分析,设计,实现,维护,做啥,怎么做,用什么做(工具、技术),谁作,什么时候做,开始做:,做得怎么样?,持久使用:维修,是啥,要啥,啥样,理解,搞清楚,弄明白,什么是工程,1.对“工程”的理解:,大事情,,施,工,的过,程,工程学科。,工程学科,的简称。,文、理、法、医、农、工 ,计算机工程、化学工程、机械工程、,电子工程 ,什么是工程,1.对“工程”的理解,“人”与“草”的区别,“人”与其它“动物”的共性:面对复杂性,复杂性:体力与智力受到挑战,科学:揭示复杂性,技术:如何解决复杂性,工程:运用科学与技术解决复杂性,软件工程:靠计算机软件延伸人的智力,构建一个小狗屋,可以由一个人制造,需求:,最小的模型,简单的过程,简单的工具,由一个团体建设,并且需要更高的效率、更精确的时间限制,需求模型,良好定义的过程,功能强大的工具,构造一栋房屋,构建一个高层建筑,过程,有限的理论知识,早期的结构,现代的结构,进步,-先进的原材料和 先进的分析,范围,-Pantheon的五倍范围 Cheops的3倍高度,房屋建模,“工程”的定义,定义有很多,通常来说:,用最少的代价解决问题.,.目的是处理实际的难题.,.以科学知识为手段.,.建造工具.,.服务于人类,目标:,使普通人能做以前只有专家圣手才能做的事情。,科学,商业,专业工程,生产,科学,商业,专业工程,生产,手工,“工程”的进化,“工程”化的步伐,手工(Craft),商业(Commerical),工程(Professional Engineering),行家里手和业余天才,熟练的工匠,受过系统教育的专业人员,直觉与强力,既定程序,分析与理论,偶然的进步,注重实效地优化,以科学为指导地升级换代,不经意的推广,言传身教,专业教育课程,奢侈地使用原料,注重成本与原料利用,原料多次利用,生产是为了使用而不是出售,为销售而生产,市场份额,规范化循环,专门的解决方法,土方法,规范化,模型与理论,新的问题,实践提高,讨论,工程、项目、科学、技术、方法、工具、过程之间的关系?,软件工程的背景和历史,1968年由,NATO,(北大西洋公约组织)在德国,Garmish,召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念。,北约(美国)、华约(苏联)、第三世界(中国),软件工程的概念,概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以,经济地,开发出,高质量,的软件并有效地,维护,它,这就是软件工程。,软件工程的概念,1993年IEEE的定义:,(1)把系统化的、规范的、可度量的途径应用与软件开发、运行和维护;,(2)研究(1)中的途径。,软件工程的本质特性,1.关注大型程序的构造,2.中心课题是控制复杂性(分解便于管理),3.软件经常变化,4.开发效率非常重要,5.和谐协作是关键,6.软件必须有效地支持用户,7.开发者与使用者文化不同(隔行如隔山),软件工程的基本原理,1.用分阶段的生命周期计划进行严格管理,2.坚持进行阶段评审,3.实行严格的产品控制,4.采用现代程序设计技术,5.结果应能清楚地审查,6.开发小组的人员应该少而精,7.承认不断改进软件工程实践的必要性,软件,生命周期,定义,可研,分析,总体设计,(概要、外部、方案),详细设计,(内部、算法、模块),编码,测试,维护,定义,分析,设计,实现,维护,开发,维护,软件工程方法学,通常把在软件生命周期全过程中使用的一整套,技术的集合,称为方法学(methodology),也称为范型(paradigm)。在软件工程范畴中,这两个词的含义基本相同。,软件工程方法学,软件工程方法学三要素,这就是,方法、工具和过程,。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的,框架,,它规定了完成各项任务的工作步骤。,软件工程:一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三要素,:,方法、工具、过程,用,什么,做,怎么,做,什么时候,做,什么,做成什么,样,软件工程方法学,传统方法学(结构化方法学):,SA、SD、SP、ST,面向对象方法学:,OOA、OOD、OOP、OOT,4、,软件工程,之,过程,生命周期 Life Cycle,系统规划阶段,明确,系统规划阶段,明确,系统规划阶段,明确,系统开,发请求,修改,初步,调查,可行性,研究,初步方,案讨论,2系统分析阶段,3系统设计阶段,4系统实施阶段,5系统运行阶段,将此图转换为程序流程图?,模型的发展,瀑布模型,瀑布模型,(,Waterfall),在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。,特点:,(1)阶段间具有顺序性和依赖性,(2)推迟实现的观点,(3)质量保证的观点,瀑布模型,analysis,design,code,test,deploy,瀑布模型,analysis,design,code,test,deploy,瀑布模型,analysis,design,code,test,deploy,瀑布模型,The waterfall model of the lifecycle,FEASIBILITY STUDY,REQUIREMENTS ANALYSIS,SPECIFICATION,GLOBAL DESIGN,DETAILED DESIGN,IMPLEMENTATION,DISTRIBUTION,VALIDATION&VERIFICATION,PROJECT PROGRESS,瀑布模型,The waterfall model of the lifecycle,FEASIBILITY STUDY,REQUIREMENTS ANALYSIS,SPECIFICATION,GLOBAL DESIGN,DETAILED DESIGN,IMPLEMENTATION,DISTRIBUTION,VALIDATION&VERIFICATION,PROJECT TIME,DESIGN AND IMPLEMENTATION,瀑布模型,Requirements,Design,Build,Test,Deployment,Maintenance,传统的瀑布模型,线性的,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,定义时期,开发时期,维护时期,传统的瀑布模型,线性的,实际的瀑布模型,带“反馈环”,设计,验证,规格说明,验证,需求分析,验证,编码,测试,变化的需求,验证,综合测试,维护,Requirements,Design,Build,Test,Deployment,Maintenance,名人语录,Tom Gilb:,“假如你不积极地解决你项目(Project)中存在的风险(risk),它们就会积极地解决掉你”。,瀑布方法会掩饰项目中真正的风险,当你太晚发现它们时已无济于事。,快速原型模型Prototype,所谓,快速原型,是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。,delivery 交付,移交,快速原型模型,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛,弃。,树:广度优先,增量模型 Incremental Models,增量模型也称为渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。,树:深度优先,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,增量模型,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,增量模型,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,风险更大的增量模型,规格说明,设计,编码和集成,交付客户,规格说明,设计,编码和集成,交付客户,规格说明,设计,编码和集成,交付客户,构件:,构件2:,构件n:,螺旋模型,软件开发几乎总要冒一定风险,,因此,在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。,螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,如图2.6所示。,完整的螺旋模型如图2.7所示。图中带箭头的点划线的长度代表当前累计的开发费用,螺线,旋过的角度值代表开发进度。,螺旋模型,决定目标、,方案和限制,评价方案、,识别风险、,弱化风险,开发、验证、,下一级产品,计划下一阶段,集成,测试,螺旋模型,图2.6 简化的螺旋模型,需求分析,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,图2.7 完整的螺旋模型,图2.7 完整的螺旋模型,迭代模型:建立在Barry Boehm 的螺旋模型基础上的,迭代模型:建立在Barry Boehm 的螺旋模型基础上的,Planning,Requirements,Analysis&Design,Implementation,Deployment,Test,Evaluation,Management,Environment,Each iteration results in an executable release.,Risk Reduction,Time,Risk,Waterfall,Risk,Iterative,Risk,喷泉模型,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。图2.8所示的喷泉模型是典型的面向对象生命周期模型。,“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。,为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图2.8中的中心垂线)作为总目标。但是,同时也应该记住,面向对象范型本身要求经常对开发活动进行迭代或求精。,喷泉模型,需求阶段,面向对象分析阶段,面向对象设计阶段,编码阶段,集成和测试阶段,运行状态,进一步开发,维护期,按照内容,组织,阶段,开始,细节,构造,过渡,商业建模,核心过程流程,需求,分析设计,实现,测试,展开,核心支持工作流程,配置和变更管理,项目管理,环境,沿着时间组织,迭代,软件过程,process,procedure,生命周期模型,快速原型模型,增量模型,风险驱动的螺旋模型,喷泉模型,the,END,演讲完毕,谢谢观看!,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服