《软件工程与过程软件过程模型.pptx》由会员分享,可在线阅读,更多相关《软件工程与过程软件过程模型.pptx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.1.现代软件工程现代软件工程(国家示范性软件学院系列教材国家示范性软件学院系列教材)张家浩张家浩/东南大学东南大学 机械工业出版社机械工业出版社 2009.12009.12.2.软件工程软件工程 理论与实践理论与实践 许家珆许家珆 曾翎曾翎 彭德中彭德中 编著编著 高等教育出版社高等教育出版社 2004.72004.73.3.软件工程软件工程-实践者的研究方法实践者的研究方法 (美)(美)Roger S.PressmanRoger S.Pressman著著 郑人杰等译郑人杰等译 机械工业出机械工业出版社版社 2008.62008.6 4.4.Software Engineering,6th
2、 EditionSoftware Engineering,6th EditionSoftware Engineering,6th EditionSoftware Engineering,6th Edition Sommerville.I.(Sommerville.I.(影印版影印版)机械工业出版社机械工业出版社 2003.42003.4主要参考书:主要参考书:第1页/共47页总总 目目 录录第1章 软件工程学概述(2学时)第2章 软件过程(2学时)第3章 软件过程模型(4学时)第4章 案例研究(2学时)第5章 软件需求分析过程(4学时)第6章 结构化分析建模(4学时)第7章 面向对象分析(6学
3、时)第8章 软件设计(4学时)第9章 结构化设计方法(4学时)第2页/共47页总总 目目 录录第10章 面向对象设计(4学时)第11章 软件实现(2学时)第12章 软件测试(4学时)第13章 软件维护(2学时)第14章 软件项目管理(2学时)第15章 软件项目估算(1学时)第16章 软件项目计划与管理(1学时)第3页/共47页第第3章章 软件过程模型软件过程模型3.1 瀑布模型3.2 增量模型3.3 螺旋模型3.4 协同开发模型3.5 面向对象模型3.6 面向方面的软件开发3.7 实验要求及习题第4页/共47页 在20世纪80年代之前,瀑布模型一直是惟一被广泛采用的生命周期模型,现在它仍然是软
4、件工程中应用得最广泛的过程模型,它提供了软件开发的基本框架。传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。瀑布模型将软件生命周期划分为软件计划、需求分析和定义、软件设计、软件实现、软件测试、软件运行和维护这6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落而得名。3.1 3.1 瀑布模型第5页/共47页图3.1 传统的瀑布模型第6页/共47页 传统的瀑布模型有下述的几个特点:1.阶段间具有顺序性和依赖性 2.推迟实现的观点3.质量保证的观点 瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。但是,“瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点
5、。第7页/共47页 图3.2 实际的带“反馈环”的瀑布模型第8页/共47页图3.3 上下阶段间循环第9页/共47页图3.4 具有维护阶段循环的软件生存期的瀑布模型第10页/共47页 增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。第一个增量构件往往实现软件的基本需求,提供最核心的功能。第二个增量构件提供更完善的编辑和文档生成功能。第三个增量构件实现拼写和语法检查功能。能在较短时间内向用户提交可完成部分工作的产品,是增量模型的一个优点。3.2 3.2 增量模型第11页/共4
6、7页增量方式包括:增量开发:以一定的时间间隔开发部分工作软件增量提交:以一定的时间间隔增量方式向用户提交工作软件及相应文档 增量模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征,故分为渐增模型和原型模型。渐增模型是瀑布模型的变种,有两类渐增模型:增量构造模型:在瀑布模型基础上,对一些阶段进行整体开发,对另一些阶段进行增量开发演化提交模型:它在瀑布模型的基础上,所有阶段都进行增量开发,也就是说不仅是增量开发,也是增量提交。第12页/共47页 增量模型逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。但也存在以下缺陷:1.必须把软件的
7、体系结构设计得便于按这种方式进行扩充,也就是说,软件体系结构必须是开放的。2.模型适应变更的灵活性优于瀑布模型,但容易退化为边做边改模型,使软件过程的控制失去整体性。从长远观点看,具有开放结构的软件拥有真正的优势,这样的软件的可维护性明显好于封闭结构的软件。第13页/共47页需求分析设计编码1测试1测试2编码2编码3测试3图3.5 3.5 增量构造模型1 1增量模型融合了线性顺序模型的基本成份和原型实现模型的迭代特征。第14页/共47页图3.6 增量构造模型2第15页/共47页图3.7 风险更大的增量模型第16页/共47页 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能
8、往往是最终产品能完成的功能的一个子集。快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。从图3.8可以看出,快速原型模型是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上是线性顺序进行的。快速原型模型第17页/共47页图3.8 快速原型模型第18页/共47页 软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。软件风险在不同程度上损害软件开发过程和软件产品质量。在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。对于大型软件,只开发一个
9、原型往往达不到要求,故螺旋模型特别适合于大型复杂的系统。螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析(风险识别、风险分析、风险控制)。3.3 3.3 螺旋模型第19页/共47页 图3.9 完整的螺旋模型每一个周期都包括需求定义、风险分析、工程实现和评审。第20页/共47页 螺旋模型有许多优点:(1)有利于已有软件的重用,有助于把软件质量作为软件开发的一个重要目标;(2)减少了过多测试或测试不足所带来的风险;(3)维护只是模型的另一个周期,在维护和开发之间并没有本质区别。螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。螺旋
10、模型的主要优势在于,它是风险驱动的,但是,这也可能是它的一个弱点。第21页/共47页协同开发模型(Collaborative Development Model,简称CDM),有时也叫做协同工程,可以表示为一系列框架活动、软件工程动作和任务以及相应的状态。在某一特定时间,建模活动可能处于任何一种状态。协同开发模型定义了一系列事件,这些事件将触发软件工程活动、动作或任务的状态转换。3.4 3.4 协同开发模型第22页/共47页空状态开发状态等待变更状态评审状态修改状态建立基线状态结束状态建模活动图3.10 3.10 协同开发模型第23页/共47页3.5 喷泉模型分 析系统 设计软件 设计实 现图
11、3.11 3.11 喷泉模型该模型是由B.H.Sollers和J.M.Edwards于1990年提出的一种面向对象开发模型。又称快速应用开发模型(RADRAD,Rapid Application Development ModelRapid Application Development Model)它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性。其特点如下:()开发过程有分析、系统设计、软件设计和实现4个阶段。()各阶段相互重叠,反映了软件过程并行性的特点。()以分析为基础。(4 4)反映了软件过程迭代性。()强调增量开发,整个过程是一个迭代
12、的逐步提炼的过程。第24页/共47页3.6 3.6 3.6 3.6 智能模型智能模型(Intelligent Model)(Intelligent Model)(Intelligent Model)(Intelligent Model)获取需求需求分析具体描述优化程序调整验证维护知识库专家系统程序 也称为基于知识的软件开发模型,是知识工程与软件工程相结合的软件开发模型。图1.20 1.20 智能模型 其主要特点是必须建立知识库,并将模型本身、软件工程知识、特定领域知识放入知识库。具体描述可以使用形式功能规约,也可以使用知识处理语言描述等。第25页/共47页构件组装模型的特征:应用软件可用预先编
13、好的、功能明确的产品部件定制而成,并可用不同版本的部件实现应用的扩展和更新。利用模块化方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。突破时间、空间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。3.7 3.7 构件组装模型(组件集成模型)需求分析和定义体系结构设计构件库建立测试和发布应用软件构建1:N第26页/共47页构件组装模型的优点:n构件组装模型导致了软件的复用,提高了软件开发的效率,面向对象技术是软件工程的构件组装模型的基础。n构件可由一方定义其规格说明,被另一方实现,然后供给第三方使用。n构件组装模型允许多个项目同时开发
14、,降低了费用,提高了可维护性。n可实现分步提交软件产品。构件组装模型的缺点:u可重用性和软件高效性不易协调。u缺乏通用的组装结构标准,而自定义的组装结构标准引入较大的风险。u需要精干的有经验的分析和开发人员,一般的开发人员插不上手。u客户的满意度低。第27页/共47页3.83.8 统一过程模型统一过程(Unified Process,UP)是风险驱动的、基于用例技术的、以架构为中心的、迭代和增量的、可配置的软件开发流程。统一过程是一个软件开发过程,是一个通用的过程框架,可用于各类软件系统和应用领域,它重复一系列组成系统生命周期的循环。每次循环包括四个阶段:初始细化构造移交每个阶段又进一步细分为
15、多次迭代的过程,每次循环迭代会产生一个新的版本。第28页/共47页预备循环 Iter.#1周期处理工作流反复支持工作流 Iter.#2 Iter.#n Iter.#n+1 Iter.#n+2 Iter.#m Iter.#m+1管理环境配置管理业务模型实现测试分析和设计分布需求详细化提交初始化构造第29页/共47页RUPRUP的时间轴被分解为四个顺序的阶段,分别是:初始阶段(Inception)(Inception)、细化阶段(Elaboration)(Elaboration)构造阶段(Construction)(Construction)、交付阶段(Transition)(Transition
16、)每个阶段结束于一个主要的里程碑(Major Milestones)(Major Milestones)每个阶段本质上是两个里程碑之间的时间跨度在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。RUPRUP的阶段目标:初始阶段的目标是为系统建立业务案例并确定项目的边界。细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。交付阶段的重点是确保软件对最终用户是可用的。第30页/共47页RUPRUP的核心工作流:R
17、UP RUP中有6 6个核心过程工作流和3 3个核心支持工作流。尽管6 6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访问。9 9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。核心过程工作流:(1 1)业务建模工作流为组织开发一个构想,并基于这个构想在业务用例模型和业务对象模型中定义组织的过程,角色和责任。(2 2)需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。(3 3)分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实
18、现环境相匹配,优化其性能。第31页/共47页(4 4)实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。(5 5)测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别、提出缺陷并确认缺陷在软件部署之前被处理。(6 6)部署工作流的目的是成功的生成版本并将软件分发给最终用户。核心支持工作流:(1 1)配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物,管理演化系统中的多个
19、变体,跟踪软件创建过程中的版本。(2 2)软件项目管理工作流平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。(3 3)环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。第32页/共47页RUPRUP模型的优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。RUPRUP模型的缺点:RUP RUP在理论上,是比较理想的,但在
20、实际应用上,还需要更多的工具的支持和普及推广工作。第33页/共47页3.9 面向方面的软件开发面向方面的软件开发(Aspect-Oriented Software Development,简称AOSP)是一系列新兴技术,用以寻找软件系统中新的模块化特性。强调独立描述关注点,软件关注点就是客户需要的属性或者技术兴趣点,它一般体现在整个架构设计中。有些关注点涉及系统多个方面的功能、特性和信息,这些关注点通常称为横切关注点。第34页/共47页方面需求(Aspectual Requirement)定义了那些对整个软件体系结构产生影响的横切关注点:对等关注点,这种关注点是相互独立的,没有任何一个对等关注
21、点比另一个更重要。如 ATM的取款、转帐和存款等;扩展(extension),是在基础组件(base)之上定义的组件,它用来表示附加的服务或功能。如在图书馆系统中,当还书时发现该书已经超期,那么系统就要计算罚金。计算罚金功能就是还书的扩展。第35页/共47页对等关注点第36页/共47页对等关注点(分离限制)第37页/共47页扩展第38页/共47页对等关注点(分离限制)问题:缠绕(tangling),各个组件包含满足不同关注点的实现(也就是编码),如组件“房间”;分散(Scattering),某个特定关注点的实现是分散在多个组件中,如“登记入住”。分离扩展是一种使复杂问题易于理解的技术。第39页
22、/共47页关注点分离技术关注点分离技术(Concern Separation Technique)对关注点进行建模和结构化。用例技术关注点合成机制关注点合成机制(Concern Composition Mechanism)将关注点合成发生在编译时、编译后,甚至是运行时第40页/共47页扩展相互分离扩展相互分离Jacobson早在1986发表的论文“支持易于变化的实时系统的语言”术语:表示原有程序、扩展基础的术语existion;表示添加到existion的新功能的术语extensions。第41页/共47页扩展在编译或运行阶段,而非编码阶段,往existion中插入extensions(扩展)
23、原有系统的源代码甚至二进制代码都与任何扩展之间保持了清晰性和无关性优点:扩展更为简单系统将更易于理解第42页/共47页序列变化器第43页/共47页项目管理咨询顾问系统分析软件编码软件测试文档制作客户服务解决方案行销教育培训工程项目的组成第44页/共47页瀑布模型:最早期、最简单的时间分段迭代模型:对瀑布模型的改进,用在需求和设计阶段喷泉模型:OO方法,OOA与OOD融合增量模型:更深入迭代,是产品与项目阶段共存模式螺旋模型:高风险防范模型、应用在产品研发构件模型:新的开发模式,重点是架构和合适的组件RUP模型:最接近现代软件工程思想,是课程的基础软件工程的生存周期问题小结第45页/共47页实验2:软件工程标准化文档软件工程标准化的概念、国家标准规范和意义?支持国家标准和行业标准信息的网站?软件产品开发文件的基本内容?软件工程标准化(软件设计标准化、文件编写标准化、项目管理标准化)?国际标准、国家标准、行业标准、企业规范、项目规范5 5个级别?软件文档(用户文档、开发文档、管理文档)编写指南?要求:理解实验内容与方法、提交实验报告习题1、2、4、7、103.10 3.10 实验要求及习题第46页/共47页感谢您的观看!第47页/共47页