大连理工软件学院软件工程课件_第1页
大连理工软件学院软件工程课件_第2页
大连理工软件学院软件工程课件_第3页
大连理工软件学院软件工程课件_第4页
大连理工软件学院软件工程课件_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连理工大学软件学院软件工程软件工程2023/1/4大连理工大学软件学院2第1章软件工程学概述1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.5小结2022/12/28大连理工大学软件学院2第1章软件工程学2023/1/4大连理工大学软件学院3软件及软件工程为什么要讲软件和软件工程只有对软件和软件的开发过程有充分的认识,才能更好的开发出过程受控、质量受控的软件产品。对于软件和软件开发过程的认识是困难的,存在很多困惑,需要对此有深刻的认识。2022/12/28大连理工大学软件学院3软件及软件工程为什2023/1/4大连理工大学软件学院4一些对软件的偏见或误解软件就是程序,软件开发就是编写程序。编完了程序,就一切OK了。掌握了最新的语言和工具,就能写程序了。软件是灵活的,软件的修改很容易。只要会编程,就能写软件,就是程序员;一个公司,只要召些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。2022/12/28大连理工大学软件学院4一些对软件的偏见或2023/1/4大连理工大学软件学院5什么是软件软件的定义—软件由三部分组成:程序:在运行时,能提供所希望的功能和性能的指令集数据:使程序能够正确运行的数据文档:描述程序研制过程、方法及使用的文档软件处理的是信息和逻辑软件的开发,绝不仅仅是编写程序软件围绕着逻辑进行软件就是一个信息交换器产生、管理、获取、修改、显示或传送信息软件≠程序2022/12/28大连理工大学软件学院5什么是软件软件的定2023/1/4大连理工大学软件学院6软件无处不在软件不仅仅是在计算机运行的程序,任何预先定义好的程序步骤的地方,都有软件的身影软件的应用领域系统软件实时软件商业软件工程和科学计算软件嵌入式软件个人计算机软件基于Web的软件(网站)人工智能软件2022/12/28大连理工大学软件学院6软件无处不在软件不2023/1/4大连理工大学软件学院7软件的特征软件是逻辑的而不是有形的系统元件,具有与硬件完全不同的特征软件是被开发或设计的,而不是传统意义上被制造的软件成本集中于开发上,软件项目不能像制造项目那样管理。软件不会磨损,不过它会退化对未发现的BUG的修复,会引起较高的故障率。不能像硬件维修中直接更换磨损的零件,软件维护要复杂得多。2022/12/28大连理工大学软件学院7软件的特征软件是逻2023/1/4大连理工大学软件学院8软件的特征大多数软件开发,仍是手工作坊式的开发模式在硬件世界和现代工业的发展中,被大量使用的标准设计的构建是一条非常成功的路子。标准化也是软件设计的一个方向,软件产业正在向基于构件的组装进前进。软件是一种逻辑实体,具有抽象性。人们可以使用软件,但是无法看到软件本身的形态。必须通过观察、分析、思考、判断,才能了解其功能、性能等特性。设计中,软件的质量、可维护性、可测试性更加重要。当前软件设计的趋势,是设计高度封装,定义良好的应用接口。软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品。软件的复杂,不是因为软件本身复杂,而是人的思想复杂。2022/12/28大连理工大学软件学院8软件的特征大多数软2023/1/4大连理工大学软件学院9软件危机的介绍1.1软件危机硬件和软件发展的不平衡,硬件性能的发展极其迅速,给软件提出了更高的要求软件开发和维护成本越来越大,令人吃惊地高失败的软件开发项目屡见不鲜什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2022/12/28大连理工大学软件学院9软件危机的介绍1.2023/1/4大连理工大学软件学院10软件危机软件危机的表现软件成本日益增长开发进度难以控制软件质量差软件维护困难软件开发速度跟不上计算机发展速度软件危机的原因技术原因软件规模越来越大软件复杂度越来越高管理原因软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性对用户需求没有完整准确的认识,就匆忙着手编写程序如何克服软件危机:软件工程2022/12/28大连理工大学软件学院10软件危机软件危机2023/1/4大连理工大学软件学院112022/12/28大连理工大学软件学院112023/1/4大连理工大学软件学院12引入同一变动付出的代价随时间变化的趋势问题在哪里?软件开发链条的“放大”作用。(规范每个环节)只有早期发现问题,才会尽量减少损失。(失之毫厘,谬以千里)但客观规律:用户的牙膏不会一下子挤完。(静态开发方法“天生”会延迟问题的发现)2022/12/28大连理工大学软件学院12引入同一变动付出2023/1/4大连理工大学软件学院13消除软件危机的途径对计算机软件正确认识。(软件不仅仅是程序)推广使用开发软件成功的技术和方法,研究探索更好更有效的技术和方法,消除错误概念和做法。开发和使用更好的软件工具。需要组织管理措施。软件工程正是从技术和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。无章法(个人英雄主义)工程项目管理模式(团队合作开发)2022/12/28大连理工大学软件学院13消除软件危机的途2023/1/4大连理工大学软件学院141.2软件工程软件工程(IEEE)1968年秋,提出软件工程1)将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。2)对1)中方法的理论研究。软件工程认为:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。主要目标:高效开发高质量软件。软件工程规范工业界:参照修改其它工程项目的管理模式

如ISO,PMI,SixSigma学术界:CMM2022/12/28大连理工大学软件学院141.2软件工程2023/1/4大连理工大学软件学院15软件工程基本原理(开发与维护的指导)用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性2022/12/28大连理工大学软件学院15软件工程基本原理2023/1/4大连理工大学软件学院16软件的生命周期软件开发过程瀑布模型快速原型、螺旋模型

喷泉模型等软件开发新过程敏捷软件开发(极限编程—XP)快速软件开发统一软件开发过程软件开发的规律软件开发方法结构化方法面向对象方法Jackson系统开发方法模块化方法软件复用2022/12/28大连理工大学软件学院16软件的生命周期2023/1/4大连理工大学软件学院17软件工程方法学把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。软件工程方法学三个要素:方法、工具和过程。方法是完成软件开发各项任务的技术,回答“如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什么做”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答“如何控制、协调、保证质量”。管理方法2022/12/28大连理工大学软件学院17软件工程方法学管2023/1/4大连理工大学软件学院18目前使用得最广泛的软件工程方法学。传统方法学也称为生命周期方法学或结构化范型。

当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。结构化-静态分析,面向对象-动态分析世界万物是变化的传统方法学与面向对象方法学2022/12/28大连理工大学软件学院18目前使用得最广泛2023/1/4大连理工大学软件学院19传统方法的特点生命周期模型软件过程划分为若干个阶段每个阶段有各自的任务阶段之间有某种顺序性2022/12/28大连理工大学软件学院19传统方法的特点生2023/1/4大连理工大学软件学院20面向对象方法:对象作为融合数据及在数据之上的操作行为的统一的软件构件。把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。对象彼此间仅能通过发送消息互相联系-封装性。数据:静态操作:动态EverythingisObject.2022/12/28大连理工大学软件学院20面向对象方法:数2023/1/4大连理工大学软件学院21OO特点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式。用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。概念和表示方法上的一致性,阶段间平滑(无缝)过渡。特殊到一般的归纳思维过程;一般到特殊的演绎思维过程。(继承的思想)2022/12/28大连理工大学软件学院21OO特点面向对象2023/1/4大连理工大学软件学院22OO特点(2)最终产品中的对象与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了软件的开发和维护工作。对象是相对独立的实体,容易在软件产品中重复使用,促进了软件重用。面用对象方法特有的继承性,也进一步提高了面向对象软件的可重用性。2022/12/28大连理工大学软件学院22OO特点(2)2023/1/4大连理工大学软件学院23当需求变化时:要求服务员礼貌待客!-问候模拟人类思维迭代开发设计简单、容易理解2022/12/28大连理工大学软件学院23当需求变化时:-2023/1/4大连理工大学软件学院24面向对象分析类图的例子2022/12/28大连理工大学软件学院24面向对象分析类图2023/1/4大连理工大学软件学院251.3软件生命周期

软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。1软件定义2软件开发3运行维护2022/12/28大连理工大学软件学院251.3软件生命2023/1/4大连理工大学软件学院26问题定义(领域分析1)必须回答的关键问题是:“要解决的问题是什么”。可行性研究(领域分析2,问题背景)回答的关键问题是:“上一个阶段所确定的问题是否有行得通的解决办法”。需求分析仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”。此外,要用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明(specification)。2022/12/28大连理工大学软件学院26问题定义(领域分2023/1/4大连理工大学软件学院271.3软件生命周期了解问题,不能准确表达,不知道怎样利用计算机实现了解软件实现,不清楚用户要求与用户配合,充分交流,得出系统需求2022/12/28大连理工大学软件学院271.3软件生命2023/1/4大连理工大学软件学院28概要设计概括地回答“怎样实现目标系统?”这个问题。概要设计又称为初步设计、逻辑设计、高层设计或总体设计。可以给出实现目标系统的几种可能的方案。另一项主要任务是设计程序的体系结构,即确定程序由哪些模块组成以及模块间的关系。详细设计任务是把解法具体化,回答“应该怎样具体地实现这个系统”这个关键问题。还不是编写程序,而是设计出程序的详细规格说明。又称为模块设计、物理设计或低层设计。2022/12/28大连理工大学软件学院28概要设计2023/1/4大连理工大学软件学院29编码和单元测试关键任务是写出正确的容易理解、容易维护的程序模块,并测试。综合测试关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。集成测试、验收测试、系统测试分析系统的可靠性记录测试计划、详细测试方案及实际测试结果,作为软件配置的一部分。2022/12/28大连理工大学软件学院29编码和单元测试2023/1/4大连理工大学软件学院30软件维护维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。2022/12/28大连理工大学软件学院30软件维护2023/1/4大连理工大学软件学院311.4软件过程在实际软件开发时,软件规模、种类、开发环境及开发时使用的技术方法等因素,影响阶段的划分。软件开发软件维护软件定义生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。2022/12/28大连理工大学软件学院311.4软件过程2023/1/4大连理工大学软件学院32瀑布模型

在20世纪80年代之前,唯一被广泛采用的生命周期模型现在仍然是软件工程中应用得最广泛的过程模型。2022/12/28大连理工大学软件学院32瀑布模型在202023/1/4大连理工大学软件学院33瀑布模型传统的瀑布模型开发软件特点:阶段间具有顺序性和依赖性前一阶段完成后开始后一阶段前一阶段输出作为后一阶段输入2022/12/28大连理工大学软件学院33瀑布模型传统的瀑2023/1/4大连理工大学软件学院34瀑布模型传统的瀑布模型开发软件特点:推迟实现不可急于求成清楚地区分逻辑设计与物理实现尽可能推迟程序的物理实现2022/12/28大连理工大学软件学院34瀑布模型传统的瀑2023/1/4大连理工大学软件学院35瀑布模型传统的瀑布模型开发软件特点:质量保证每个阶段都必须完成规定的文档每个阶段结束前都要对所完成的文档进行评审2022/12/28大连理工大学软件学院35瀑布模型传统的瀑2023/1/4大连理工大学软件学院36瀑布模型不希望有“变化”变化来的越晚,付出的代价越高。设计阶段过多的假设,导致理想化、一厢情愿的东西过多。2022/12/28大连理工大学软件学院36瀑布模型不希望有2023/1/4大连理工大学软件学院37瀑布模型传统的瀑布模型实际的瀑布模型2022/12/28大连理工大学软件学院37瀑布模型传统的瀑2023/1/4大连理工大学软件学院38瀑布模型带“反馈环”(实线箭头表示开发过程,虚线箭头表示维护过程)发现错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再继续完成后面阶段的任务。2022/12/28大连理工大学软件学院38瀑布模型带“反馈2023/1/4大连理工大学软件学院39瀑布模型优点:一定程度解决“变化”的问题。缺点:文档驱动,完全依赖书面文字。2022/12/28大连理工大学软件学院39瀑布模型优点:一2023/1/4大连理工大学软件学院40快速原型模型快速建立起可以在计算机上运行的程序,其功能往往是最终产品功能的子集。模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户试用,通过实践来了解目标系统的概貌。(实线箭头表示开发过程,虚线箭头表示维护过程)。2022/12/28大连理工大学软件学院40快速原型模型快速2023/1/4大连理工大学软件学院41快速原型模型用户试用提出修改意见快速地修改原型系统用户再次试用…一旦用户认为原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。2022/12/28大连理工大学软件学院41快速原型模型用户2023/1/4大连理工大学软件学院42快速原型模型快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。(原型通常没有严格的规范化,缺少文档,难以维护)2022/12/28大连理工大学软件学院42快速原型模型快速2023/1/4大连理工大学软件学院43快速原型模型2022/12/28大连理工大学软件学院43快速原型模型2023/1/4大连理工大学软件学院44增量模型每个构件由多个相互作用的模块构成,并且能够完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。(滚雪球方式)增量模型,也称渐增模型。把软件产品作为一系列的增量构件来设计、编码、集成和测试。2022/12/28大连理工大学软件学院44增量模型每个构件2023/1/4大连理工大学软件学院45增量模型增量模型:逐步增加系统功能。较短时间内提交可以工作的产品。减少全新产品带给客户的冲击。困难:需要开放的架构设计。瀑布、快速原型:力求一次性给用户完整的系统。2022/12/28大连理工大学软件学院45增量模型增量模型2023/1/4大连理工大学软件学院46逐个构件进行分析、设计。风险更大。实现各个构件之前完成全部需求分析、规格说明、概要设计。2022/12/28大连理工大学软件学院46逐个构件进行分析2023/1/4大连理工大学软件学院47螺旋模型应采取适当措施消除或减少开发软件时的风险。螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。可以理解为在每个阶段之前都增加了风险分析过程的快速原型模型。简化的螺旋模型2022/12/28大连理工大学软件学院47螺旋模型应采取适2023/1/4大连理工大学软件学院48螺旋模型带箭头的点划线的长度代表当前累计的开发费用。螺线旋过的角度值代表开发进度。每周期对应一个开发阶段完整的螺旋模型2022/12/28大连理工大学软件学院48螺旋模型带箭头的2023/1/4大连理工大学软件学院49螺旋模型优点:有利于软件的重用有助于把软件质量作为软件开发的目标减少测试带来的风险维护作为开发的一个周期,与开发没有本质区别风险驱动:及时终止项目弱点:风险驱动:需要专业的风险评估人员2022/12/28大连理工大学软件学院49螺旋模型优点:2023/1/4大连理工大学软件学院50喷泉模型迭代是软件开发过程中普遍存在的一种内在属性。软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。喷泉模型是典型的面向对象生命周期模型。2022/12/28大连理工大学软件学院50喷泉模型迭代是软2023/1/4大连理工大学软件学院51喷泉模型体现了面向对象软件开发过程迭代和无缝的特性。圆圈重叠:活动之间存在交迭。概念和表示方法的一致性:保证无缝过渡。面向对象方法:分析、设计、编码不存在明显的边界。向下箭头:阶段内的迭代(求精)。2022/12/28大连理工大学软件学院51喷泉模型体现了面2023/1/4大连理工大学软件学院52喷泉模型把一个线性过程作为总目标——避免开发过程过分无序。快速原型模型图中的中心垂线2022/12/28大连理工大学软件学院52喷泉模型把一个线2023/1/4大连理工大学软件学院53思考题1、假设要你开发一个软件,该软件的功能是把读入的浮点数开平发,所得结果应该精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件生命周期模型?请说明理由。2、假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件生命周期模型?请说明理由。2022/12/28大连理工大学软件学院53思考题1、假设要2023/1/4大连理工大学软件学院54思考题1、瀑布模型。需求明确、算法成熟,无需原型。实现之后即被抛弃,无需增量或螺旋。2、增量模型。时间紧,任务并行。广泛应用软件的新版本,旧版本即相当于原型。以后可能扩充。2022/12/28大连理工大学软件学院54思考题1、瀑布模2023/1/4大连理工大学软件学院55敏捷软件开发快速适应需求变化提高软件生产率灵活、动态的人员组织方式面向业务目标持续改进和重组2022/12/28大连理工大学软件学院55敏捷软件开发快速2023/1/4大连理工大学软件学院56敏捷过程与极限编程敏捷软件开发宣言个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划极限编程有效实践极限编程的整体开发过程极限编程的迭代过程2022/12/28大连理工大学软件学院56敏捷过程与极限编2023/1/4大连理工大学软件学院57Rational统一过程2022/12/28大连理工大学软件学院57Rational2023/1/4大连理工大学软件学院58微软过程(MSF)微软过程准则微软软件生命周期规划设计开发稳定发布微软过程模型MicrosoftOperationsFrameworkMicrosoftSolutionsFrameworkOperateDeployBuildPlan2022/12/28大连理工大学软件学院58微软过程(MSF2023/1/4大连理工大学软件学院59

1.5小结

对计算机软件工程学做了简短概述。开发软件的一些错误方法和观念。错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。(引入软件工程的概念)总结经验教训,借鉴工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。(可持续发展)2022/12/28大连理工大学软件学院591.5小结2023/1/4大连理工大学软件学院60传统的方法学面向对象方法=对象+类+继承+封装面向对象方法简化了软件的开发和维护工作,提高了软件的可重用性。(OO特点及优点)软件生命周期(8个阶段)软件过程:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。2022/12/28大连理工大学软件学院60传统的方法学2023/1/4大连理工大学软件学院61生命周期模型(即软件过程模型)规定了把生命周期划分成的阶段及各个阶段的执行顺序。瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;开发阶段没有用户参与,需要尽早发现问题。快速原型模型通过快速构建起一个可运行的原型系统,让用户参与试用,获取真实需求;整体结构不清晰;周期长,成本高。2022/12/28大连理工大学软件学院61生命周期模型(即2023/1/4大连理工大学软件学院62增量模型具有能在软件开发的早期阶段使投资获得明显回报和易于维护的优点,但是,要求软件具有开放结构是使用这种模型时固有的困难。风险驱动的螺旋模型适用于大规模的内部开发项目,但需要专业人员做风险分析。喷泉模型支持迭代、演进;各阶段无明显界限;适合面向对象的开发。2022/12/28大连理工大学软件学院62增量模型具有能在2023/1/4大连理工大学软件学院63作业P32,第5题本课结束,谢谢大家!2022/12/28大连理工大学软件学院63作业P32,第大连理工大学软件学院软件工程软件工程2023/1/4大连理工大学软件学院65第1章软件工程学概述1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程1.5小结2022/12/28大连理工大学软件学院2第1章软件工程学2023/1/4大连理工大学软件学院66软件及软件工程为什么要讲软件和软件工程只有对软件和软件的开发过程有充分的认识,才能更好的开发出过程受控、质量受控的软件产品。对于软件和软件开发过程的认识是困难的,存在很多困惑,需要对此有深刻的认识。2022/12/28大连理工大学软件学院3软件及软件工程为什2023/1/4大连理工大学软件学院67一些对软件的偏见或误解软件就是程序,软件开发就是编写程序。编完了程序,就一切OK了。掌握了最新的语言和工具,就能写程序了。软件是灵活的,软件的修改很容易。只要会编程,就能写软件,就是程序员;一个公司,只要召些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。2022/12/28大连理工大学软件学院4一些对软件的偏见或2023/1/4大连理工大学软件学院68什么是软件软件的定义—软件由三部分组成:程序:在运行时,能提供所希望的功能和性能的指令集数据:使程序能够正确运行的数据文档:描述程序研制过程、方法及使用的文档软件处理的是信息和逻辑软件的开发,绝不仅仅是编写程序软件围绕着逻辑进行软件就是一个信息交换器产生、管理、获取、修改、显示或传送信息软件≠程序2022/12/28大连理工大学软件学院5什么是软件软件的定2023/1/4大连理工大学软件学院69软件无处不在软件不仅仅是在计算机运行的程序,任何预先定义好的程序步骤的地方,都有软件的身影软件的应用领域系统软件实时软件商业软件工程和科学计算软件嵌入式软件个人计算机软件基于Web的软件(网站)人工智能软件2022/12/28大连理工大学软件学院6软件无处不在软件不2023/1/4大连理工大学软件学院70软件的特征软件是逻辑的而不是有形的系统元件,具有与硬件完全不同的特征软件是被开发或设计的,而不是传统意义上被制造的软件成本集中于开发上,软件项目不能像制造项目那样管理。软件不会磨损,不过它会退化对未发现的BUG的修复,会引起较高的故障率。不能像硬件维修中直接更换磨损的零件,软件维护要复杂得多。2022/12/28大连理工大学软件学院7软件的特征软件是逻2023/1/4大连理工大学软件学院71软件的特征大多数软件开发,仍是手工作坊式的开发模式在硬件世界和现代工业的发展中,被大量使用的标准设计的构建是一条非常成功的路子。标准化也是软件设计的一个方向,软件产业正在向基于构件的组装进前进。软件是一种逻辑实体,具有抽象性。人们可以使用软件,但是无法看到软件本身的形态。必须通过观察、分析、思考、判断,才能了解其功能、性能等特性。设计中,软件的质量、可维护性、可测试性更加重要。当前软件设计的趋势,是设计高度封装,定义良好的应用接口。软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品。软件的复杂,不是因为软件本身复杂,而是人的思想复杂。2022/12/28大连理工大学软件学院8软件的特征大多数软2023/1/4大连理工大学软件学院72软件危机的介绍1.1软件危机硬件和软件发展的不平衡,硬件性能的发展极其迅速,给软件提出了更高的要求软件开发和维护成本越来越大,令人吃惊地高失败的软件开发项目屡见不鲜什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2022/12/28大连理工大学软件学院9软件危机的介绍1.2023/1/4大连理工大学软件学院73软件危机软件危机的表现软件成本日益增长开发进度难以控制软件质量差软件维护困难软件开发速度跟不上计算机发展速度软件危机的原因技术原因软件规模越来越大软件复杂度越来越高管理原因软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性对用户需求没有完整准确的认识,就匆忙着手编写程序如何克服软件危机:软件工程2022/12/28大连理工大学软件学院10软件危机软件危机2023/1/4大连理工大学软件学院742022/12/28大连理工大学软件学院112023/1/4大连理工大学软件学院75引入同一变动付出的代价随时间变化的趋势问题在哪里?软件开发链条的“放大”作用。(规范每个环节)只有早期发现问题,才会尽量减少损失。(失之毫厘,谬以千里)但客观规律:用户的牙膏不会一下子挤完。(静态开发方法“天生”会延迟问题的发现)2022/12/28大连理工大学软件学院12引入同一变动付出2023/1/4大连理工大学软件学院76消除软件危机的途径对计算机软件正确认识。(软件不仅仅是程序)推广使用开发软件成功的技术和方法,研究探索更好更有效的技术和方法,消除错误概念和做法。开发和使用更好的软件工具。需要组织管理措施。软件工程正是从技术和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。无章法(个人英雄主义)工程项目管理模式(团队合作开发)2022/12/28大连理工大学软件学院13消除软件危机的途2023/1/4大连理工大学软件学院771.2软件工程软件工程(IEEE)1968年秋,提出软件工程1)将系统化、规范化、可量化的工程原则和方法,应用于软件的开发、运行和维护。2)对1)中方法的理论研究。软件工程认为:按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。主要目标:高效开发高质量软件。软件工程规范工业界:参照修改其它工程项目的管理模式

如ISO,PMI,SixSigma学术界:CMM2022/12/28大连理工大学软件学院141.2软件工程2023/1/4大连理工大学软件学院78软件工程基本原理(开发与维护的指导)用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性2022/12/28大连理工大学软件学院15软件工程基本原理2023/1/4大连理工大学软件学院79软件的生命周期软件开发过程瀑布模型快速原型、螺旋模型

喷泉模型等软件开发新过程敏捷软件开发(极限编程—XP)快速软件开发统一软件开发过程软件开发的规律软件开发方法结构化方法面向对象方法Jackson系统开发方法模块化方法软件复用2022/12/28大连理工大学软件学院16软件的生命周期2023/1/4大连理工大学软件学院80软件工程方法学把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称范型(paradigm)。软件工程方法学三个要素:方法、工具和过程。方法是完成软件开发各项任务的技术,回答“如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什么做”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答“如何控制、协调、保证质量”。管理方法2022/12/28大连理工大学软件学院17软件工程方法学管2023/1/4大连理工大学软件学院81目前使用得最广泛的软件工程方法学。传统方法学也称为生命周期方法学或结构化范型。

当软件规模较大,或对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。结构化-静态分析,面向对象-动态分析世界万物是变化的传统方法学与面向对象方法学2022/12/28大连理工大学软件学院18目前使用得最广泛2023/1/4大连理工大学软件学院82传统方法的特点生命周期模型软件过程划分为若干个阶段每个阶段有各自的任务阶段之间有某种顺序性2022/12/28大连理工大学软件学院19传统方法的特点生2023/1/4大连理工大学软件学院83面向对象方法:对象作为融合数据及在数据之上的操作行为的统一的软件构件。把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。对象彼此间仅能通过发送消息互相联系-封装性。数据:静态操作:动态EverythingisObject.2022/12/28大连理工大学软件学院20面向对象方法:数2023/1/4大连理工大学软件学院84OO特点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式。用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。概念和表示方法上的一致性,阶段间平滑(无缝)过渡。特殊到一般的归纳思维过程;一般到特殊的演绎思维过程。(继承的思想)2022/12/28大连理工大学软件学院21OO特点面向对象2023/1/4大连理工大学软件学院85OO特点(2)最终产品中的对象与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了软件的开发和维护工作。对象是相对独立的实体,容易在软件产品中重复使用,促进了软件重用。面用对象方法特有的继承性,也进一步提高了面向对象软件的可重用性。2022/12/28大连理工大学软件学院22OO特点(2)2023/1/4大连理工大学软件学院86当需求变化时:要求服务员礼貌待客!-问候模拟人类思维迭代开发设计简单、容易理解2022/12/28大连理工大学软件学院23当需求变化时:-2023/1/4大连理工大学软件学院87面向对象分析类图的例子2022/12/28大连理工大学软件学院24面向对象分析类图2023/1/4大连理工大学软件学院881.3软件生命周期

软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。1软件定义2软件开发3运行维护2022/12/28大连理工大学软件学院251.3软件生命2023/1/4大连理工大学软件学院89问题定义(领域分析1)必须回答的关键问题是:“要解决的问题是什么”。可行性研究(领域分析2,问题背景)回答的关键问题是:“上一个阶段所确定的问题是否有行得通的解决办法”。需求分析仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”。此外,要用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明(specification)。2022/12/28大连理工大学软件学院26问题定义(领域分2023/1/4大连理工大学软件学院901.3软件生命周期了解问题,不能准确表达,不知道怎样利用计算机实现了解软件实现,不清楚用户要求与用户配合,充分交流,得出系统需求2022/12/28大连理工大学软件学院271.3软件生命2023/1/4大连理工大学软件学院91概要设计概括地回答“怎样实现目标系统?”这个问题。概要设计又称为初步设计、逻辑设计、高层设计或总体设计。可以给出实现目标系统的几种可能的方案。另一项主要任务是设计程序的体系结构,即确定程序由哪些模块组成以及模块间的关系。详细设计任务是把解法具体化,回答“应该怎样具体地实现这个系统”这个关键问题。还不是编写程序,而是设计出程序的详细规格说明。又称为模块设计、物理设计或低层设计。2022/12/28大连理工大学软件学院28概要设计2023/1/4大连理工大学软件学院92编码和单元测试关键任务是写出正确的容易理解、容易维护的程序模块,并测试。综合测试关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。集成测试、验收测试、系统测试分析系统的可靠性记录测试计划、详细测试方案及实际测试结果,作为软件配置的一部分。2022/12/28大连理工大学软件学院29编码和单元测试2023/1/4大连理工大学软件学院93软件维护维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。2022/12/28大连理工大学软件学院30软件维护2023/1/4大连理工大学软件学院941.4软件过程在实际软件开发时,软件规模、种类、开发环境及开发时使用的技术方法等因素,影响阶段的划分。软件开发软件维护软件定义生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。2022/12/28大连理工大学软件学院311.4软件过程2023/1/4大连理工大学软件学院95瀑布模型

在20世纪80年代之前,唯一被广泛采用的生命周期模型现在仍然是软件工程中应用得最广泛的过程模型。2022/12/28大连理工大学软件学院32瀑布模型在202023/1/4大连理工大学软件学院96瀑布模型传统的瀑布模型开发软件特点:阶段间具有顺序性和依赖性前一阶段完成后开始后一阶段前一阶段输出作为后一阶段输入2022/12/28大连理工大学软件学院33瀑布模型传统的瀑2023/1/4大连理工大学软件学院97瀑布模型传统的瀑布模型开发软件特点:推迟实现不可急于求成清楚地区分逻辑设计与物理实现尽可能推迟程序的物理实现2022/12/28大连理工大学软件学院34瀑布模型传统的瀑2023/1/4大连理工大学软件学院98瀑布模型传统的瀑布模型开发软件特点:质量保证每个阶段都必须完成规定的文档每个阶段结束前都要对所完成的文档进行评审2022/12/28大连理工大学软件学院35瀑布模型传统的瀑2023/1/4大连理工大学软件学院99瀑布模型不希望有“变化”变化来的越晚,付出的代价越高。设计阶段过多的假设,导致理想化、一厢情愿的东西过多。2022/12/28大连理工大学软件学院36瀑布模型不希望有2023/1/4大连理工大学软件学院100瀑布模型传统的瀑布模型实际的瀑布模型2022/12/28大连理工大学软件学院37瀑布模型传统的瀑2023/1/4大连理工大学软件学院101瀑布模型带“反馈环”(实线箭头表示开发过程,虚线箭头表示维护过程)发现错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再继续完成后面阶段的任务。2022/12/28大连理工大学软件学院38瀑布模型带“反馈2023/1/4大连理工大学软件学院102瀑布模型优点:一定程度解决“变化”的问题。缺点:文档驱动,完全依赖书面文字。2022/12/28大连理工大学软件学院39瀑布模型优点:一2023/1/4大连理工大学软件学院103快速原型模型快速建立起可以在计算机上运行的程序,其功能往往是最终产品功能的子集。模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户试用,通过实践来了解目标系统的概貌。(实线箭头表示开发过程,虚线箭头表示维护过程)。2022/12/28大连理工大学软件学院40快速原型模型快速2023/1/4大连理工大学软件学院104快速原型模型用户试用提出修改意见快速地修改原型系统用户再次试用…一旦用户认为原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。2022/12/28大连理工大学软件学院41快速原型模型用户2023/1/4大连理工大学软件学院105快速原型模型快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。(原型通常没有严格的规范化,缺少文档,难以维护)2022/12/28大连理工大学软件学院42快速原型模型快速2023/1/4大连理工大学软件学院106快速原型模型2022/12/28大连理工大学软件学院43快速原型模型2023/1/4大连理工大学软件学院107增量模型每个构件由多个相互作用的模块构成,并且能够完成特定的功能。第一个增量构件往往实现软件的基本需求,提供最核心的功能。(滚雪球方式)增量模型,也称渐增模型。把软件产品作为一系列的增量构件来设计、编码、集成和测试。2022/12/28大连理工大学软件学院44增量模型每个构件2023/1/4大连理工大学软件学院108增量模型增量模型:逐步增加系统功能。较短时间内提交可以工作的产品。减少全新产品带给客户的冲击。困难:需要开放的架构设计。瀑布、快速原型:力求一次性给用户完整的系统。2022/12/28大连理工大学软件学院45增量模型增量模型2023/1/4大连理工大学软件学院109逐个构件进行分析、设计。风险更大。实现各个构件之前完成全部需求分析、规格说明、概要设计。2022/12/28大连理工大学软件学院46逐个构件进行分析2023/1/4大连理工大学软件学院110螺旋模型应采取适当措施消除或减少开发软件时的风险。螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。可以理解为在每个阶段之前都增加了风险分析过程的快速原型模型。简化的螺旋模型2022/12/28大连理工大学软件学院47螺旋模型应采取适2023/1/4大连理工大学软件学院111螺旋模型带箭头的点划线的长度代表当前累计的开发费用。螺线旋过的角度值代表开发进度。每周期对应一个开发阶段完整的螺旋模型2022/12/28大连理工大学软件学院48螺旋模型带箭头的2023/1/4大连理工大学软件学院112螺旋模型优点:有利于软件的重用有助于把软件质量作为软件开发的目标减少测试带来的风险维护作为开发的一个周期,与开发没有本质区别风险驱动:及时终止项目弱点:风险驱动:需要专业的风险评估人员2022/12/28大连理工大学软件学院49螺旋模型优点:2023/1/4大连理工大学软件学院113喷泉模型迭代是软件开发过程中普遍存在的一种内在属性。软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。喷泉模型是典型的面向对象生命周期模型。2022/12/28大连理工大学软件学院50喷泉模型迭代是软2023/1/4大连理工大学软件学院114喷泉模型体现了面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论