《软件工程学概述》PPT课件.ppt

上传人:sh****n 文档编号:12760310 上传时间:2020-05-22 格式:PPT 页数:111 大小:7.45MB
返回 下载 相关 举报
《软件工程学概述》PPT课件.ppt_第1页
第1页 / 共111页
《软件工程学概述》PPT课件.ppt_第2页
第2页 / 共111页
《软件工程学概述》PPT课件.ppt_第3页
第3页 / 共111页
点击查看更多>>
资源描述
袁运浩计算机科学与技术系江南大学物联网工程学院E-mail:yhyuanPhone:15152267727,第一章软件工程学概述,笃学尚行,止於至善!,2020/5/22,第1章软件工程概述,软件工程产生的背景(软件危机)软件工程定义软件工程方法学软件过程模型小结,背景材料1765年,春天的苏格兰.,一位29岁的钟表匠没日没夜地在格拉斯哥大学的实验室中干着。他把他的管子和金属柱接起来,把水加热,测量其运动,然后将其拆开,一次又一次。在四年多的时间里,他不断地接上和拆开这些管子和金属柱1769年1月5日,这位钟表匠获得了第一项专利5年后这项发明的首个实用模型完成。在此过程中,年轻的发明家几次面临破产,而且在他最终完成一个实用模型后,大多数人却忽视了它又经历了20年的时间,世界才发现了它的潜力.1785年,当选为英国皇家学会会员。,这就是被看作工业革命开始的,生产力提高了100倍从繁重劳动解脱,最好是把真理比做燧石,它受到的敲打越厉害,发射出的光辉就越灿烂。瓦特,1978年,春天的Boston.,一名26岁正在哈佛读MBA的学生正在进行案例分析直到深夜。其他学生用纸计算它们的财务数据时这名拥有MIT计算机学位的学生已经在一台DEC小型机(全晶体管电脑)上进行计算以节省时间。他同一个来自MIT的好朋友一起,花了好几个月在他们的“实验室”中寻求答案,1978年,春天的波士顿.,这两位年轻的革新家就是DanBricklin(丹布里克林)thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEE,TheInstituteforElectricalandElectronicengineers.),IEEE1993,软件工程:是(1)把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;(2)研究(1)中提到的途径。,2.1软件工程定义(3)-卡耐基梅隆大学定义,Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.,SEIsoftwareengineeringdefinitionfrom1990SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):卡耐基梅隆大学在本科生软件工程教育的报告中,软件工程:就是应用计算机科学和数学的原理来经济有效的解决软件问题的一种工程。,课本定义,课本:“采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来”总结工程化应用于软件开发、维护管理和技术相结合,软件工程定义几个小问题:(1)软件工程和其它工程的区别每个软件项目都是新的新的需求、新的技术、新的部署方式等每个项目都是在不断变化的软件项目风险很大据统计真正按期、按预算完成的不到20%软件项目通常是团队活动人多不一定力量更大,(2)软件工程:不仅仅是编程,复杂的问题不是光靠编程就能解决的编程之前需要设计设计之前需要分析用户的需求编写好的程序需要集成为完整的系统产品发布前需要测试软件为保持生命力应当不断升级、维护软件开发是团队活动,团队需要管理.,(3)软件工程:关注建模,模型对现实世界的抽象表示结构化方法基于功能分解,将复杂的系统分解为更容易解决的小单元面向对象方法把系统分解为属于一定组件/包的类,类对象之间存在一定关联,(4)软件工程的特性,1.软件工程关注于大型程序的构造2.软件工程的中心课题是控制复杂性3.软件经常变化4.开发软件的效率非常重要5.和谐地合作是开发软件的关键6.软件必须有效地支持它的用户7.在软件工程领域中是由具有一种文化背景的人创造产品,2.2软件工程的基本原理(Boehm,玻姆),用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性,1983年在总结TRW公司开发经验基础上,提出7条定理,确保软件产品开发质量和效率的最小集合。,背景材料,BarryBoehmUCLA(美国加利福尼亚大学)博士19591973:蓝德公司信息科学部部长19731989:TRW公司国防系统集团首席科学家19891992:美国国防部DARPA项目信息科技部主任COCOMO模型、螺旋模型的发明者美国南加州大学(USC)计算机科学系的软件工程教授,同时也是南加州大学系统与软件工程中心的主任。软件成本估算技术.,软件工程的定义:Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料,软件工程:目标,理想化来看:生产出的软件产品完全正确以最短的时间以最小的开发成本软件维护的成本最小,质量时间成本,实际上:“快、好、省任选其二”没有一个软件能同时做到以上几点软件工程的目标就是尽量做到这些软件工程的艺术就在于在实际项目中尽量平衡这些目标,软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。管理:通过计划、组织和控制等活动,合理配置和使用各种资源,以达到既定目标的过程。(第13章)方法学:软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。软件工程方法学包含3个要素:方法、工具和过程。,2.3软件工程方法学,2.3软件工程方法学,软件工程:一种层次化技术,软件工程三个要素:工具、方法、过程,基础层,综合方法及工具,定义方法使用的顺序,所需要的管理,为软件开发提供“如何做”的技术,为软件开发提供自动或半自动的软件支撑环境,建立计算机辅助软件工程(CASE)的软件开发支撑系统,什么叫软件过程?举一个例子:吃饭去餐馆吃:点餐、付账、用餐自己做饭:买菜、洗菜、做饭、吃饭、刷锅洗碗,方法假设采用的是“自己做饭”这种过程模型“做饭”这个阶段可以用的方法有:煎、炒、烹、炸、煮、蒸、涮.工具某种方法可能会用到一些工具:炒菜要炒锅,煎要平底锅,蒸要蒸笼.,工具程序=算法+数据结构,组织管理/计划,过程RUP/XP,工程需求管理/配置管理.,方法OOP/MDA,实现团队经营,问题定义,软件定义,可行性研究,需求分析,软件生命周期,软件开发,-持久满足用户需求,运行维护,综合测试,单元测试,详细设计,总体设计,编码,系统设计,系统实现,2.4软件生命周期,软件工程三个阶段:定义、开发和维护。,what,How,Change,2.5软件过程,软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,工作任务,里程碑、交付物,SQA点,AprocessdefinesWhoisdoingWhat,When,andHow,inordertoreachacertaingoal.,公共过程框架,辅助活动,框架活动,任务集合,(1)软件过程,(2)软件过程模型,软件生命周期的每一阶段都有明确的任务,把规模大、结构复杂、管理复杂的软件开发变得容易控制和管理。各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架用一种模型表示出来,称为软件过程模型(或软件开发模型或软件生命周期模型)。也就是说,软件过程模型是软件开发全部过程、活动和任务的结构框架。,比较:,什么是过程?“AProcessdefinesWhoisdoingWhat,WhenandHow,inordertoreachacertaingoal”用一定的流程将各个环节连接起来,并用规范的方式操作全过程,是跨越软件整个生存期的全部过程、活动和任务的框架过程模型过程的抽象表示定义了:角色分工活动定义提交结果工作流和沟通,我的学生S,案例,T,软件过程模型,这位同学回去后想了一下,列出了一个工作清单:,工作清单一、功能1.读取、显示、另存四种格式的图片2.放大、缩小、漫游3.列出当前目录下所有四种格式图片文件名4.PAGEUP(PAGEDOWN)翻页二、其它说明:1.界面尽量简洁,容易操作2.不需要图片预览和打印,软件过程模型,三、开发工具:VC6.0四、开发环境:普通PC机、Window2000/XP五、工作量:1.研究一下四种图片的格式2.设计一个解析器类,解析这四种格式3.设计一个文档类,实现读取、另存和目录浏览功能4.设计一个视图类,实现显示、缩放、漫游功能,软件过程模型(1):瀑布模型(WaterfallModel),实际情况1一切顺利,学生S按期交付了软件,经过一两周的试用、修改、完善后,三方都比较满意,该软件在老师的朋友那里成为一个得心应手的工具,瀑布模型(传统的生命周期模型、线性模型),需求分析,可行性研究,总体设计,详细设计,编程,测试,交付,维护,软件过程模型(1):瀑布模型,软件过程模型(1):瀑布模型,可行性研究,需求分析,分析,开发,编码和单元测试(实现),集成测试,维护,维护,(1)瀑布模型-传统瀑布模型,1.需求分析弄清楚要做些什么记录用户要求的特性注:有时用户自己也不知道想要什么目的保证做出来的东西是用户想要的,2.需求规格说明书需求分析结果的正式的、完整的、书面的记录,3.设计确定体系结构划分模块确定模块间的接口开始考虑如何做,软件过程模型各个环节任务,4.实现编程测试5.集成把各个模块组装成一个系统并测试6.发布交付用户使用同时开始维护,传统瀑布模型的特点提供了软件过程模型的基本框架(模板)。强调了每一阶段活动的严格顺序。质量保证观点:以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。传统瀑布模型存在什么问题?,(1)瀑布模型-实际的瀑布模型,反馈环,瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。(文档-便于维护)“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成(才能使用)。,瀑布模型的优缺点,瀑布模型也称为生命周期模型、线性模型采用结构化分析、设计、编程技术特点顺序性和依赖性推迟实现保证质量,软件过程模型:瀑布模型,瀑布模型假定:用户需求基本不变设计人员运筹帷幄决胜千里每个子模块到集成时可以自然的合在一起缺陷:真正的系统很少完全遵从线性模式用户最初可能很难说清楚需求直到后期才能得出一个可用的系统这些假定显然受建筑工程的影响,软件过程模型:瀑布模型,软件工程和建筑工程都和规模相关:狗窝还是摩天大楼需要大规模团队合作很难修改设计软件中的很多术语来自建筑工程:体系结构architecture、构建build、组件component,软件过程模型:瀑布模型,软件工程和建筑工程有很多不同软件除了静态结构外,更注重动态行为建筑施工是对建筑蓝图的原样实现,少偏差建筑工程的成本主要在施工环节,而软件成本主要在测试和维护,我的学生S,实际情况2,T,T,事情就这样定下来了,S愤怒的撕掉了自己的工作清单.,回去后S花一天时间用Delphi做了个样子,只能读BMP和JPG文件,做了些菜单和工具栏,用Access建了一个图片库。就这个“假”的程序,S和C讨论了一天,S又修改了几次,又讨论了几次,一周后,这个“假”的程序表面看起来和真的一模一样。于是S打算用VC重写这个程序,但是他很快发现继续用Delphi写更方便,因为至少界面不用重做了,于是.两个月后,这个事情终于结束了。S顺利的完成了他的毕业设计JPG压缩优化算法设计,C一直使用这个软件管理他的图片,并庆幸花了这么少的钱得到了这么有用的东西,而T,则正在考虑如何为他下一批学生分派任务。,快速原型法,(2)原型模型快速原型模型(RapidPrototypeModel),用户不能给出完整、准确的需求说明或者开发者不能确定算法的有效性,操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。,建造/修改原型,听取用户意见,用户测试运行原型,原型实现范型,(2)快速原型法,适合用户需求不明或易变的系统称为用户驱动,建立/修改原型,用户测试原型,听取用户需求,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,维护过程,开发过程,原型模型存在的问题为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。开发过程不便于管理。有效的使用原型模式建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。,原型:系统的一个早期可运行的版本它反映最终系统的部分重要特性比如:大致界面、基本功能.就像概念车,新颖独特超前的构思,(2)快速原型法,建立原型的目的分析用户需求评论员比作家更容易当“百闻不如一见”,用户亲眼看见产品的原型更容易说出他心中的需求评估关键技术展示新概念和方法软件中的概念车Google就是靠一个简单的概念模型赢得了第一笔10万美元的种子资金开始了创业之路,发展到今天的最大搜索引擎。,(2)快速原型法,如何建造原型分清主次原型只是为了展示基本功能、大致界面等因此不需要注重性能、质量兵贵神速选用快速开发工具比如界面原型,可以使用VB、Python等,甚至使用Visio等绘图软件而且修改次数不要太多,(2)快速原型法,从原型走向产品抛弃策略建立原型的目的一旦达到,就抛弃之因为:原型的质量不好建立原型的工具和建造产品的工具可能不同演化策略原型作为产品的内核和起点在此内核的基础上不断修改、滚动开发前提:建立原型的工具和开发工具相容,(3)增量模型(IncrementalModel),是一种渐进地开发逐步完善的软件版本的模型。,需求分析,验证,规格说明,验证,设计,验证,维护,针对每个构件完成详细设计、编码和集成,经测试后交付给用户,分析,分析,分析,分析,设计,设计,设计,设计,编码,编码,编码,编码,测试,测试,测试,测试,增量1,增量2,增量3,增量4,交付,交付,交付,交付,反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。早期的版本实现用户的基本需求,并提供给用户评估的平台。,增量模型,在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。,增量模型的优点,增量模型的困难,在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险。,(3)增量模型,增量(渐增)模型多个迭代同时展开每次迭代其实就是一个瀑布模型每次迭代实现一个功能子集类似流水线充分利用人力资源有利于规避风险,核心产品:最基本的功能,更多的功能,(4)螺旋模型(SpiralModel),软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。,快速原型,验证,规格说明,验证,设计,验证,编码,测试,综合测试,维护,变化的需求,验证,风险分析,风险分析,风险分析,风险分析,风险分析,风险分析,可看作在每个阶段之前都增加了风险分析过程的快速原型模型。,简化的螺旋模型,提交线评审,风险分析,原型1,模拟、建模、评测,需求计划、生存期计划,操作概念,原型2,风险分析,软件需求,需求确认,开发计划,风险分析,原型3,软件产品设计,设计确认与验证,组装与测试,风险分析,可运行原型,详细设计,单元测试,编码,组装与测试,验收测试,实现,累计成本,顺时针,实施工程:开发、验证下一产品,客户评估,制定计划:决定目标方案和限制,风险分析:评价方案识别风险消除风险,(4)螺旋模型,框架活动,也称任务区域通常36个制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件风险分析:分析所选方案,考虑如何识别和消除风险实施工程:实施软件开发客户评估:评价开发工作,提出修正建议从核心开始按顺时针方向沿螺旋移动,(4)螺旋模型,每一圈都要经过这些任务区域每一圈分别完成:需求分析总体设计详细设计、编码等项目管理者可以调整所需的迭代次数,螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足维护和开发之间并没有本质区别螺旋模型的特点风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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