《软件生命期周和开发模型.ppt》由会员分享,可在线阅读,更多相关《软件生命期周和开发模型.ppt(84页珍藏版)》请在三一办公上搜索。
1、2023/9/16,1,软件工程Software Engineering,第二讲 软件生命周期和开发模型Lesson 2:Software Life Cycle and Process Model 杨 莉,2023/9/16,2,主讲内容,软件生命周期软件开发模型中国与印度软件行业对比CASE工具和环境,2023/9/16,3,软件发展阶段,程序设计阶段 50至60年代程序系统阶段 60至80年代软件工程阶段 80年代以后,2023/9/16,4,软件工程:一种层次化的技术,对质量的关注支持软件工程的根基过程管理部分方法技术手段工具对过程和方法提供自动/半自动的支持CASE,质量焦点,过程,方
2、法,工具,2023/9/16,5,软件开发方法的发展,结构化开发方法(60年代)原型化开发方法(70年代)面向对象开发方法、计算机辅助软件工程(80年代)基于部件开发、软件综合集成、解决方案(90年代),2023/9/16,6,软件工程过程,问题识别,需求分析,软件设计(概要设计、详细设计),编程实现,系统测试,系统维护,制定开发计划,What,Why,Who,When,What,Who,When,What?是什么?,How?怎么做?,可行性分析/风险分析,2023/9/16,7,软件生命周期 life cycle,软件有一个孕育、诞生、成长、成熟、衰亡的生存过程 软件生存期(生命周期)软件产
3、品从考虑其概念开始,到该软件产品不再能使用为止的整个时期。,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,9,软件生命周期(3),软件生命周期方法学的定义从时间角度对软件开发和维护的复杂问题进行分解,把软件生命的漫长周期依次划分为若干阶段.每个阶段有相对独立的任务,然后逐步完成每个阶段的任务.,2023/9/16,10,软件生命周期(4),优点降低整个软件开发工程的难度便于不同人员分工协作便于在各个阶段采用科学的管理技术便于在各个阶段采用先进的开发方法和技术便于对软件开发工程的全过程的组
4、织和管理,2023/9/16,11,软件生命周期(5),软件生存期的划分原则划分方法多种受软件规模、种类、开发方式、开发环境、方法论的影响原则各阶段的任务尽可能独立同一阶段各项任务的性质尽可能相同,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,13,1 可行性研究,任务了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性,2023/9/16,14,1可行性研究(2),技术途径(1)调查和了解用户要求 和 现实环境(2)撰写调查报告(3)可行性论证 和 分析(技
5、术、经济等)(4)如可行,制定初步项目开发计划(人员,进度),2023/9/16,15,1可行性研究(3),阶段性产品(1)可行性论证报告(2)初步的项目开发计划,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,17,2 需求分析,任务确定用户对待开发软件系统的需求。包括:功能性能运行环境约束需求分析阶段的任务不是具体地解决问题,而是准确地确定软件系统必须做什么,确定软件系统必须具备哪些功能,2023/9/16,18,2 需求分析(2),重要性软件开发依据,软件验收的标准困难性难以说清,动
6、态变化,歧义,复杂,2023/9/16,19,2 需求分析(3),技术途径需求分析人员需与用户不断、反复地交流和商讨,使用户需求逐步准确化、一致化、完全化抽象、问题分解、快速原型、多视点等技术工具Rational Rose,2023/9/16,20,2 需求分析(4),阶段性产品软件需求规格说明书SRS(功能,性能和运行环境约束),软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,22,3 概要设计,任务根据SRS建立目标软件系统的总体结构、设计全局数据库和数据结构,规定设计约束,制定组装测
7、试计划等。概要设计原则力争做到功能模块之间有较低的耦合度,功能模块内部有较高的内聚度。,2023/9/16,23,3 概要设计(2),技术途径根据软件需求规格说明书,自顶向下,逐步求精,抽象,模块化,局部化,信息隐藏工具Rational Rose,2023/9/16,24,3 概要设计(3),阶段性产品 概要设计规格说明书,数据库或数据结构设计说明书,集成测试计划。,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,26,4 详细设计,任务细化概要设计所生成的各个模块,并详细描述程序模块的内
8、部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划原则与软件需求保持一致。设计的软件结构应支持模块化、信息隐藏等。,2023/9/16,27,4 详细设计(2),技术途径根据SRS和概要设计结果进行Rational Rose阶段性产品详细设计规格说明书,单元测试计划,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,29,5 实现,任务根据详细设计规格说明书编写源程序,并对程序进行调试和单元测试,验证程序与详细设计文档 一致性原则系统分析方法、设计方法、编程方法及选用的程序设
9、计语言应尽可能匹配。,2023/9/16,30,5 实现(2),技术途径以详细设计规格说明书为依据、基于某种程序设计语言进行编码工具Visual C+,Java,2023/9/16,31,5 实现(3),阶段性产品源程序代码,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,33,6 集成测试,任务根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试,2023/9/16,34,6 集成测试(2),技术途径以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试工具IDE,专
10、有工具等,2023/9/16,35,6 集成测试(3),阶段性产品满足概要设计要求、可运行的系统源程序和系统集成测试报告,软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,37,7 确认测试,任务根据软件需求规格说明书,测试软件系统是否满足用户的需求途径 由用户参与,以软件需求规格说明书为依据进行确认测试专有工具,2023/9/16,38,7 确认测试(2),阶段性产品可供用户使用的软件产品(文档,源程序),软件生命周期(2),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认
11、测试,使用与维护,退役,软件定义,软件开发,维护,2023/9/16,40,8 软件维护,任务 对使用后的软件进行维护例如:修正使用过程中发现的错误纠错性维护增加新的功能完善性维护从一个环境搬迁到另一个环境适应性维护,2023/9/16,41,8 软件维护(2),途径以文档和源程序为基础按用户要求进行阶段性产品版本更新的软件产品,2023/9/16,42,软件生命周期 各阶段的关键问题和阶段性成果,2023/9/16,43,软件定义开发与测试的关系,2023/9/16,44,软件开发模型,软件开发全过程、软件开发活动以及它们之间关系的的结构框架为软件项目的管理提供里程碑和进度表为软件开发提供原
12、则和方法,里程碑是用来说明项目进展情况的事件。通常把一个开发活动的结素或一项开发任务的完成定义为一个里程碑,2023/9/16,45,软件开发模型种类,以软件需求可完全确定为前提的瀑布模型在软件开发初期只能提供基本需求所采用的渐进式开发模型如原型模型、增量模型、螺旋模型,1.瀑布模型,可行性研究,需求分析,概要设计,详细设计,实 现,组装测试,确认测试,使用与维护,2023/9/16,47,1.瀑布模型(2),主要思想软件开发过程与软件生命周期是一致的相邻二阶段之间存在因果关系需对阶段性产品进行评审,带反馈的瀑布模型示意图,可行性研究,需求分析,概要设计,详细设计,实 现,组装测试,确认测试,
13、使用与维护,2023/9/16,49,1.瀑布模型(3),特点生命周期的各个阶段自顶向下,恰如奔流不息拾级而下的瀑布阶段间具有顺序性和依赖性推迟实现的观点(推迟编码)区分逻辑设计与物理设计尽可能推迟物理实现质量保证的观点,2023/9/16,50,1.瀑布模型(4),瀑布模型在软件工程中占有重要地位优点明确各个开发阶段的内容,控制进度支持结构化软件开发,控制复杂性,促进工程化。克服了软件开发的随意性,从而提高了大型软件项目开发的质量和效率。适用有稳定的产品定义和易于理解的技术解决方案的项目,2023/9/16,51,1.瀑布模型(5),缺点项目开始阶段用户很难精确的提出产品需求,由于技术进步,
14、用户对系统深入的理解,修改需求十分普遍。项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”,特别是项目的开始和结束,2023/9/16,52,2.快速原型模型示意图,2023/9/16,53,原型不是一个新概念,用户和建筑师之间的关系 软件开发人员根据用户提出的要求快速开发出一个原型,她向客户展示了待开发软件系统的全部或部分软件功能和性能,在征求客户对原型意见的过程中,进一步修改、完善、确认软件系统的需求并达到一致的理解。,建筑师接到一个项目后,他根据用户提出的要求和自己对用户需求的理解,按一定比例设计并建造一个
15、原型,用户和建筑师以原型为基础进一步研究并确定建筑物的需求,当用户和建筑师对建筑物的需求取得一致理解之后,建筑师再组织对建筑物的设计和施工。针对软件开发初期在确定软件系统需求方面存在的困难,人们开始借鉴建筑师在设计和建造原型方面的经验。,2023/9/16,54,2.快速原型模型(1),阶段初步需求分析 快速设计 原型的建造 逐步调整原型,2023/9/16,55,2.快速原型模型(3),优点原型模型支持软件需求开发,帮助用户和开发人员理解需求,是软件需求工程的关键。它产生的正式需求文挡,是软件开发的基础。如果开发的原型是可运行的,它的若干高质量的程序片段和开发工具可用于工作程序的开发。原型的
16、开发和评审是系统分析员和用户/客户共同参予的迭代过程,每个迭代循环都是线性过程。尽早发现软件中的错误,支持需求的动态变化。,一个迭代包含将软件开发的核心规程应用于生产出可证明的,可执行的开发后的产品,并确保在一系列的迭代后(每次都根据产品和由先前迭代而来的教训)产品会不断演化成我们所需要的。,2023/9/16,56,2.快速原型模型(4),缺点用户有时误解了原型的角色,例如他们可能误解原型应该和真实系统一样可靠缺少项目标准,进化原型法有点像编码修正缺少控制,由于用户可能不断提出新要求,因而原型迭代的周期很难控制额外的花费:研究结果表明构造一个原型可能需要10%额外花费运行效率可能会受影响原型
17、法要求开发者与用户密切接触,有时这是不可能的。例如外包软件。,2023/9/16,57,3.增量模型,增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。设计开放的软件体系结构,2023/9/16,58,3.增量模型示意图,2023/9/16,59,4.螺旋模型(1),基本思想瀑布模型、原型模型的有机结合增加了风险分析产生 70和80年代,面对复杂的大型软件系统,用线性的瀑布模型难于有效的完成项目Barry Boh
18、em于1988年提出,2023/9/16,60,螺旋模型,2023/9/16,61,螺旋模型特征,螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划确定软件目标,选定实施方案,弄清项目开发的限制风险分析分析所选方案,考虑如何识别和消除风险实施工程实施软件开发客户评估评价开发工作,提出修正建议,2023/9/16,62,4.螺旋模型(2),软件工程项目从螺旋中心开始启动,沿顺时针方向前进。第一圈 产生产品规格说明;第二圈 产生一个用于开发的原型;第三圈 产生软件产品的初始版本;第四圈 产生软件产品比较完善的新版本。特点演化软件过程模型将原型的迭代特征与瀑布模型中的控制和系统化
19、的方面结合起来软件开发是一系列的增量发布。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,2023/9/16,63,4.螺旋模型(3),优点支持需求的动态变化尽早发现软件中的错误支持风险分析适用于需求动态变化,开发风险较大的系统缺点 风险分析需要有丰富的风险评估知识和方法,不容易掌握,2023/9/16,64,小结,软件过程是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出高质量的软件产品。按照在软件生命周期全过程中应完成的任务的性质,在概念上可以把软件生命周期划分成问题定义、可行性研
20、究、需求分析、概要设计、详细设计、编码和单元测试、综合测试以及维护等八个阶段。实际从事软件开发工作时,软件规模、种类、开发环境及使用的技术方法等因素,都影响阶段的划分。因此,一个科学、有效的软件过程应该定义一组适合于所承担的项目特点的任务集合。,2023/9/16,65,小结(续),生命周期模型(即软件过程模型)规定了把生命周期划分成的阶段及各个阶段的执行顺序。本章介绍了四类典型的软件生命周期模型。瀑布模型历史悠久、广为人知,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终交付的产品可能不是用户真正需要的。快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建起一个可运
21、行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。增量模型具有能在软件开发的早期阶段使投资获得明显回报和易于维护的优点,但是,要求软件具有开放结构是使用这种模型时固有的困难。,2023/9/16,66,小结(续),风险驱动的螺旋模型适用于大规模的内部开发项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。每个软件开发组织都应该选择适合于本组织及所要开发的软件特点的软件生命周期模型。这样的模型应该把各种生命周期模型的合适特性有机地结合起来,以便尽量减少它们的缺点,充分利用它们的优点。,2023/9/16,67,案例分析1选择效率低
22、下的开发模型,Giga-Safe公司区域代理商:要求升级Giga-Quote1.0改正错误,修改用户界面上的小问题时限:6个星期Bill:Giga-Quote1.1项目的项目经理采用原型法:“原型法是最新、最快的方法”Mike:项目的技术负责人;Sue:开发人员,2023/9/16,68,案例分析选择效率低下的开发模型(续),第2周演示原型代理商经理:要增加新的报表第3-4周每天:需要修改的内容第12周Bill:把已经完成的部分交付Mike,Sue:中断工作,2023/9/16,69,案例分析选择有效的开发模型,Square-Tech公司:Cube-It时限:一年Eddie:项目经理降低风险:
23、螺旋生命期模型George,Jill:开发人员,2023/9/16,70,案例分析选择有效的开发模型(续),2周:第一次迭代分析风险,发现两个基本方案4周:第二次迭代需求,目标,时间计划3个月:第三次迭代设计,精确估算第11个月:系统测试准时交付,2023/9/16,71,当前发展情况(1),质量的本质在变化早期:与规格说明一致 以后:用户满意 90年代:指导应用方向,2023/9/16,72,当前发展情况(2),ISO9000的影响质量体系ISO9000质量管理和质量保障系列国际标准 设计、开发、生产、安装和服务的质量保障模式:ISO9001 生产和安装的质量保障模式:ISO9002 最终检
24、验和试验的质量保障模式:ISO9003CMM(The Capability Maturity Model):评估软件开发组织的能力,2023/9/16,73,我国软件业的现状,我国软件业的规模目前,我国从事软件开发、研制、销售、维护和服务的软件企业有2000家左右,加上兼营的企业,总数大约有10000多家,其中具有自主软件研发能力的软件企业约5700家,已经通过双软认定的有2300余家,从事软件销售、维护和服务的企业5000多家。在这里面,营业规模超过一亿元的软件企业达到100家以上,超过5亿元的达到18家,超过10亿元的达到12家。,2023/9/16,74,2001年,世界软件产品市场销售
25、额超过1865亿美元,我国当年的销售额为285亿元人民币,只占世界市场不到2的份额。国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。2001年我国软件销售总额963亿美元,软件企业约5000家,从业人员29万。2001年印度软件销售总额1023亿美元,软件企业约6000家,从业人员40万。2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。印度在软件出口方面,则一直保持高速的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为778亿
26、美元,已经占到了印度全部出口总额的10.5。,2023/9/16,75,印度的软件业,印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员升上来的,至少有四年以上的经验,而公司所有的东西(包括草稿)都有文档,其详细文档要求达到只有这个文档就可以编码的程度。于是,印度软件公司开发出来的软件整个体系架构非常清晰,而且相当稳定。由于印度企业不是靠一
27、两个软件英雄搞研发,而是靠一大批软件技术人员的分工协作,所以,他们必须注重标准化,注重开发的流程管理,以与国际接口。,2023/9/16,76,CASE和CASE工具,计算机辅助软件工程(CASE)在软件工程活动中,软件开发人员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助来开发、维护和管理软件产品的过程 CASE工具,2023/9/16,77,CASE工具分类(1),事务系统规划工具项目管理工具支撑工具文档工具网络系统软件软件配置管理工具数据库管理工具,2023/9/16,78,CASE工具分类(2),分析和设计工具程序设计工具测试工具静态分析工具动态分析工具。测试管理工具,202
28、3/9/16,79,CASE工具分类(3),原型建筑工具维护工具逆向工程工具代码重构和分析工具在线系统再工程工具框架工具,2023/9/16,80,ICASE,集成CASE环境将CASE工具、信息按统一标准和接口组装起来,使工具间、人员间、各个过程间能方便交互的环境。如Visual C+将编辑、编译、调试、界面设计、安装程序生成等等集成在一起。(推土机、锄头联合收割机),2023/9/16,81,ICASE的结构,集成CASE环境,环境体系结构,硬件平台,操作系统,可移植服务,集成框架,CASE工具,2023/9/16,82,CASE工具和环境(3),目前已有大量的CASE工具 项目管理工具:估算项目成本和工作量,制定项目规划等等;分析和设计工具:用于系统建模;程序设计工具:编译器,调试器等;测试工具:测试用例生成,程序动态跟踪工具,2023/9/16,83,小结,软件生命周期软件开发模型中国与印度软件行业对比CASE工具和环境,2023/9/16,84,作业和思考题,思考题你认为软件开发有什么特点?面临主要问题是什么?软件开发模型和软件生命周期有何区别?软件开发模型在软件开发过程中起到什么作用?没有它行吗?,