《软件工程生命周期模型的学习总结.doc》由会员分享,可在线阅读,更多相关《软件工程生命周期模型的学习总结.doc(7页珍藏版)》请在金锄头文库上搜索。
1、1 综述软件过程定义了软件开发中采用的方法。软件工程是集成计算机软件开发的过程、方法和工具的学科。软件工程的一般视图:定义阶段(做什么)、开发阶段(如何做)、支持阶段(变化)。2 线性顺序模型有时被称为“传统生存周期或瀑布模型”。活动包括:系统/信息工程和建模、软件需求分析、设计、代码生成、测试、支持为什么线性模型有时候不能奏效?建议:虽然线性模型经常被嘲笑为“旧式的”,但是,在需求被很好理解的情况下,它仍然是一种合理的方法。缺点: 1、实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。 2、 经常情况下客户难以表达真正的需求,而
2、这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。 3、 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。 4、采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。 优点: 1、它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。 2、虽然有不少缺陷但比在软件开发中随意的状态要好得多。 瀑布模型将软件开发活动分为需求分析、设计、编码、测试等几个阶段,这几个阶段是对工程活动
3、的划分,瀑布模型没有再涉及其它方面的活动,因此瀑布模型关注于工程活动。关于选取开发模型 有时开发模型的选取不是很容易判断的,这里面有时不单是需求及开发的问题,对于开发商有开发周期、开发费用的问题,对于用户同样有内部计划、公司发展计划等因素进行影响。一般来说对于应用开发为客户开发软件,客户在开发及测试完毕软件后就要实际开始使用,那么就使用瀑布模型。当然在需求明确的情况下自然也要使用瀑布模型对于自主开发及客户需求不明并有较长的设计时间可以用演化模型。而螺旋模型适于适合于大型软件开发,吸收了演化概念,不过有时也用于用户需求不明的情况下。当然还有其他开发模型,没有在本文讨论。名词定义:瀑布模型:规定了
4、各项软件工程活动。包括:制定开发计划、进行需求分析和说明、软件设计、程序编码、测试及维护。特点:自上而下,相互衔接的固定次序,如瀑布流水、逐级下落。演化模型:第一次只是试验开发,其目标只在于探索可行性,弄清软件需求;第二次则在此基础上获得较为满意的软件产品,通常把一次得到的试验性产品称原型。特点:减少由于软件需求不明确而给开发带来的风险。螺旋模型:将瀑布模型及演化螺旋模型结合起来,并且加入被两种模型都忽略了的风险分析,弥补了两者的不足。瀑布模型的特点: 瀑布模型为软件的开发和维护提供了一种有效有管理模式,对保证软件产品的质量有重要的作用; 可根据这一模式制定出开发计划,进行成本预算,组织开发力
5、量,以项目的阶段评审和文档控制为手段,有效地对整个开发过程进行指导; 在一定程度上消除非结构化软件、降低软件的复杂度、促进软件开发工程化方面起到显著作用; 瀑布模型缺乏灵活性、无法通过开发活动来澄清本来不够确切的需求,这将导致直到软件开发完成时发现所开发的软件并非是用户所需求的。3 原型实现模型原型实现范型定义:需求收集快速设计原型实现模型是迭代的,是帮助客户或开发者理解需求的,总体上讲,并不是交付一个最终产品系统。其流程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头往复循环直到客户对原型满意为止。由于这种模型可以让客户快速的感受到实际的系统(虽然这个系统不带有任何质量的
6、保证),所以客户和开发者都比较喜欢这种过程模型(对于那些仅仅用来演示软件功能的公司而言或从来不考虑软件质量和不害怕长期维护的公司而言)。缺点: 1、没有考虑软件的整体质量和长期的可维护性。 2、大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。 3、由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。 优点: 1、如果客户和开发者达成一致协议:原型被建造仅为了定义需求,之后就被抛弃或者部分抛弃, 那么这种模型很合适了。 2、迷惑客户抢占市场,这是一个首选的模型。 原型实现仍然是软件工程的一个有效范型。关键是定义开始
7、时的游戏规则,即客户和开发者达成一致:原型被建造仅是为了定义需求,之后就被抛弃了(或至少部分被抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。建议:当你的客户有一个合理的续签,但对细节没有任务线索时,先开发一个原型。原型模型则主要是为了解决需求获取的难题而创建原型用于需求的获取和确认,再将需求转化为软件系统,其主要内容集中在软件开发本身,因此原型模型也关注于工程活动。4 RAD模型快速应用开发(Rapid Application Development、RAD)是一个增量型的软件开发过程模型,强调极短的开发周期。是线性顺序模型的一个“高速”变种,通过使用基于构件的建造发放赢得了快速开
8、发。如果需求理解的好而且约束了项目的范围,利用这种模型可以很快的创建出功能完善的“信息系统”。其流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。RAD过程强调的是复用,复用已有的或开发可复用的构件。实际上RAD采用第四代技术。基于构件的软件工程(不理解)适用范围:如果需求理解得很并且约束了项目范围。主要适用于信息系统应用,包括以下阶段:业务建模、数据建模、过程建模、应用生成、测试及反复。业务建模工作流程与其他工作流程的关系如下: 业务模型是需求工作流程的一种重要输入,用来了解对系统的需求。 业务实体是分析设计工作流程的一种输入,用来确定设计模型中的实体类。 缺点: 1、只能
9、用于信息系统。 2、对于较大的项目需要足够的人力资源去建造足够的RAD组。 3、开发者和客户必须在很短的时间完成一系列的需求分析, 任何一方配合不当都会导致RAD项目失败。 4、这种模型对模块化要求比较高,如果有哪一功能不能被模块化,那么建造RAD所需要的构件就会有问题。 5、技术风险很高的情况下不适合这种模型。 优点: 1、开发速度快,质量有保证。 2、对信息系统特别有效。5 演化软件过程模型演化模型是迭代的。它的特征是:使软件工程师渐进地开发逐步完善的软件版本。5.1 增量模型增量模型融合了线性顺序模型的基本成分(重复的应用)和原型实现的迭代特征。增量模型采用随着日程时间的进展而交错的线性
10、序列。每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。 缺点: 1、至始至终开发者和客户纠缠在一起,直到完全版本出来。 优点: 1、人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。 2、当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发
11、布部分功能给客户,对客户起到镇静剂的作用。 3、具有一定的市场。增量模型将瀑布模型的顺序化和多次迭代相结合,每个增量开发都是一次瀑布模型的过程,强调每一个增量均发布一个可运行版本,以满足客户和市场的需要。增量模型主要考虑当需要快速推出可运行的版本,而该版本不需要完整的功能时,在工程活动上的解决方案,因此增量模型也关注于工程活动。5.2 螺旋模型这是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐步产生。螺旋模型被划分为若干框架活动
12、,也称为任务区域。典型地,有3到6个任务区域: 1、客户交流:建立开发者和客户之间有效通信所需要的任务。 2、计划:定义资源、进度、及其它相关项目信息所需要的任务。 3、风险分析:评估技术的及管理的风险所需要的任务。 4、工程:建立应用的一个或多个表示说需要的任务。 5、构造及发布:构造、测试、安装和提供用户支持所需要的任务。 6、客户评估:基于对在工程阶段产生的或在安装阶段实现的软件表示的评估,获得客户反馈所需要的任务。 这是一个相对较新的模型,它的功效还需要经历若干年的使用方能确定下来。 缺点: 1、需要相当的风险分析评估的专门技术,且成功依赖于这种技术。 2、很明显一个大的没有被发现的风
13、险问题,将会导致问题的发生,可能导致演化的方法失去控制。 3、这种模型相对比较新,应用不广泛,其功效需要进一步的验证。 优点: 1、对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。 螺旋模型的主要贡献在于明确提出迭代概念和风险的问题,并指出在项目定义、需求、设计等阶段均存在风险,需要重点考虑,并通过多次迭代的原型主动诱发风险。风险管理不属于工程活动的范围,但我们仍然认为螺旋模型的主要内容是工程方面的:因为对于非工程活动,螺旋模型仅考虑了风险问题,而风险管理仅是非工程活动的一个小部分,不足以依此推断螺旋模型主要关注于非工程活动。5.3
14、WINWIN螺旋模型螺旋模型提出了强调客户交流的一个框架活动。该活动的目标是从客户处诱导项目需求。在理想情况下,开发者简单地询问客户需要什么,而客户提供足够的细节进行下去。不幸的是这种情形很少发生。在现实中,客户和开发者进入一个谈判过程,客户被要求在成本和应市之间的约束下平衡功能、性能、和其它产品或系统特征。最好的谈判追求“双赢”结果,也就是说通过谈判客户获得大部份系统的功能,而开发者则获得现实的和可达到的预算和时限。对客户的交流定义了下面的活动: 1、系统或子系统的关键“风险承担者”的标识。 2、风险承担者的“赢条件”的确定。 3、风险承担者的赢条件谈判,以将它们协调为一组满足各方考虑的双赢
15、条件。 缺点: 1、需要额外的谈判技巧。 优点: 1、客户和开发者达到一种平衡。5.4 并发开发模型这种模型关注于多个任务的并发执行,表示为一系列的主要技术活动、任务及它们的相关状态。并发过程模型是由客户要求、管理决策、评审结果驱动的。该模型不是将软件工程活动限定为一个顺序的事件序列,而是定义了一个活动网络。网络上的每一个活动均可于其它活动同时发生。这种模型可以提供一个项目的当前状态的准确视图。 缺点:暂时无 优点: 1、可用于所有类型的软件开发,而对于客户/服务器结构更加有效。 2、可以随时查阅到开发的状态。6 基于构件的开发模型面向对象的技术为软件工程的基于构件的过程模型提供了技术框架。面向对象模型强调了类的创建、类的封装了的数据、操纵该数据的算法。一般来讲经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统的体系结构中复用。基于构件的开发模型融合了螺旋模型的许多特征,它本质上是演化形的,要求软件创建的迭代方法。然而基于构件的开发模型是利用预先包装好的软件构件(有时成为类)来构造