第8章软件工程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8章软件工程(授课2学时)
内容提要
本章对软件工程中相关的概念和内容作介绍。
通过本章学习应理解软件工程和软件生存期的含义,了解软件开发的工程化方法,知道软件开发的瀑布模型、渐增模型、演化模型、螺旋模型、喷泉模型和智能模型。了解软件开发的工程化方法,特别应对面向对象方法和软件复用技术有比较深入的了解。了解软件过程工程和过程改进的概念,特别应对软件能力成熟度模型有比较深入的了解。
教学目标:
理解软件工程和软件生存期的含义,了解软件开发的工程化方法,特别应对面向对象方法和软件复用技术有比较深入的了解。了解软件过程工程和过程改进的概念,特别应对软件能力成熟度模型有比较深入的了解。
教学内容:
8.1软件工程的概念
教学要求:理解软件工程和软件生存期的含义
重点:什么是软件工程
难点:软件生存周期
教学设计:讲解。结合一个软件开发的实例讲解。
8.1.1为什么提出软件工程
20世纪60年代,国外在开发一些大型软件系统时,遇到了许多困难:
❖有些系统最终彻底失败了
❖有些系统虽然完成了,但比原定计划推迟了好几年,而且费用大大超过了预算;
❖有些系统未能圆满地符合用户当初的期望;
❖有些系统则无法进行修改维护。
这是由于大型软件系统大大增加了软件复杂性,软件规模的增加使技术复杂性和管理复杂性呈指数上升。20世纪60年代末期所发生的软件危机,体现在软件可靠性没有保障、软件维护费用不断上升、进度无法预测、成本增长无法控制、程序人员无限度地增加等各个方面,以致形成人们难以控制软件开发的局面。软件开发工程化的概念和方法应运而生。
8.1.2什么是软件工程
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
是应用计算机科学、数学及管理科学等原理,借鉴传统工程的原则、方法来创建软件,从而达到提高质量、降低成本的目的。其中计算机科学和数学用于构造模型、分析算法,工程科学用于制定规范、明确样例、评估成本、确定权衡,管理科学用于进度、资源、质量、成本等的管理。
8.1.3软件生存周期
是一个从用户需求开始,经过开发、交付使用,在使用中不断地增补修订,直至让位于新的软件的全过程,是指软件产品从考虑其概念开始,到该软件产品不再能使用为止的整个时期。一般包括:概念阶段、需求阶段、设计阶段、实现阶段、测试阶段、安装阶段以及交付使用阶段、运行阶段和维护阶段。
8.2软件开发模型
教学要求:了解软件开发模型
重点:瀑布模型、渐增模型
难点:瀑布模型、渐增模型
教学设计:结合软件开发实例讲解
8.2.1瀑布模型
瀑布模型(Waterfall Model)是1970年Winston Royce提出的最早出现的软件开发模型。它将软件开发过程中的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件系统或软件产品。
制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行和维护6个步骤见。
8.2.2渐增模型
渐增模型(Incremental Model)亦称有计划的产品改进型,它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动。第一个中间版本纳入一部分需求,下一个中间版本纳入更多的需求,依此类推,直到系统完成。每个中间版本都要执行必要的过程、活动和任务。
这种模型在开发每个中间版本时,开发过程中的活动和任务顺序地或部分平行地使用。当相继中间版本在部分并行开发时,开发过程中的活动和任务可以在各中间版本间平行地采用。
8.2.3演化模型
演化模型(Evolutionary Model)主要针对事先不能完整定义需求的软件项目开发。许多软件开发项目由于人们对软件需求的认识模糊,很难一次开发成功,返工再开发难以避免。为此,人们对需开发的软件给出基本需求,作第一次试验开发,其目标仅在于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最终设计和实现。通常把第一次试验性开发出的软件称为原型(prototype)。
❖“丢弃型”方式为当原型开发后,已获得了更为清晰的需求反馈信息,原型无需保留而丢弃,开发的原型仅以演示为目的,这往往用在软件的用户界面的开发上;
❖“样品型”方式为原型规模与最终产品相似,只是原型仅供研究用;
❖“渐增式演化型”把原型作为最终产品的一部分,它可满足用户的部分需求,经用
户试用后提出精化系统、增强系统能力的需求,开发人员根据反馈信息,实施开发的迭代过程。
8.2.4螺旋模型
螺旋模型(Spiral Model)是由TRW公司的Barry Boehm于1988年提出的,它将瀑布模型和演化模型等结合起来,并且强调了其他模型均忽略了的风险分析。
螺旋模型更适合于大型软件的开发,应该说它对于具有高度风险的大型复杂软件系统的开发是较为实际的方法。该模型通常用来指导大型软件项目的开发,它将开发划分为制订计划、风险分析、实施开发和客户评估4类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。如果开发风险过大,开发机构和客户无法接受,项目有可能就此终止。多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品。
8.2.5喷泉模型
喷泉模型(Fountain Model)是由B.H.Sollers和J.M.Edwards于1990年提出的一种新开发模型。喷泉模型主要用于采用对象技术的软件开发项目,喷泉一词本身就体现了迭代和无间隙的特性。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限。由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。
8.2.6转换模型
转换模型是用形式化的方法自动生成程序,转换的主要步骤为
❖采用形式化的规格说明书。
❖通过自动系统自动地变换成代码。
❖必要时做一些优化,改进性能。
❖交付用户使用。
❖根据使用的经验来调整形式化的规格说明书。返回第一步重复整个过程。
转换模型的优点是解决了代码结构经多次修改而变坏的问题;减少了许多中间步骤,如设计、编码、测试等等,是软件自动生产的有意义的尝试。但是,转换模型仍有较大局限。
8.2.7智能模型
智能模型(Intelligent Model)也称为基于知识的软件开发模型,它是知识工程与软件工程在开发模型上结合的产物;它有别于上述的几种开发模型,并可协助软件开发人员完成开发工作。