您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 《软件工程实用教程》第2章软件生存周期及开发模型
第2章软件生存周期及开发模型本章学习内容:1.掌握软件的生存(生命)周期的概念2.明确学习软件过程模型的意义3.掌握各种过程模型的特点与适用范围4.掌握面向对象软件过程模型的内容与过程第2章软件生存周期及开发模型2.1软件过程概述2.1.1软件生存周期软件的生存周期指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代而停止该软件的使用的全过程。第2章软件生存周期及开发模型软件的生存周期的作用:从时间的角度,对软件开发和维护的复杂过程进行了有效的划分,把整个生命周期划分为若干个互相区别而又彼此联系的阶段,给每个阶段赋予确定而有限的任务,这样就便于每个阶段都采用经过验证,行之有效的管理技术和方法,从技术和管理的角度进行严格审查,以达到保证软件质量、降低成本、合理使用资源,进而提高软件开发生产率的目的。第2章软件生存周期及开发模型2.1.2软件过程各阶段任务1.软件定义期(1)软件任务立项(2)可行性研究(3)软件需求分析(4)制定项目计划第2章软件生存周期及开发模型2.软件开发阶段(1)总体设计(2)详细设计(3)编码和单元测试(4)集成测试(5)确认测试3.运行与维护阶段第2章软件生存周期及开发模型2.2典型的软件过程模型软件过程模型把软件生存周期中各项开发活动的流程用一个合理的框架——开发模型来规范描述,这就是软件过程模型。软件过程模型是从一个特定的角度表现一个过程,主要根据软件的类型、规模,特别是软件的开发方法、开发环境等多种因素确立过程模型。第2章软件生存周期及开发模型2.2.1瀑布模型第2章软件生存周期及开发模型瀑布模型的特点:阶段性阶段评审文档管理瀑布模型适用于具有以下特征的一类系统:在开发时期内没有或很少有需求变化;开发者对应用领域很熟悉;低风险项目,如开发者对目标和开发环境很熟悉;除了在早期阶段,用户对开发工作参与很少;系统编程要求使用面向过程的程序设计语言。第2章软件生存周期及开发模型瀑布模型的缺点阶段与阶段划分固定,阶段间产生大量的文档,极大地增加了工作量;由于开发模型呈线性,当开发成果尚未经过测试时,用户无法看到软件的效果,这些问题往往会导致开发出来的软件不是用户真正需要的软件;无法通过开发活动澄清本来不够确切的软件需求,因此,需要返工或者不得不在维护中纠正需求的偏差;由于固定顺序,前期工作中造成的差错越到后期阶段所造成的损失越大,为了纠正偏差,需要付出高昂的代价。第2章软件生存周期及开发模型改进的瀑布模型第2章软件生存周期及开发模型2.2.2原型模型1.快速原型方法快速原型方法是原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求分析上的模糊认识。快速原型法的特点:快速原型是用来获取用户需求的,或是用来试探某种设计是否有效。一旦需求或设计确定下来,原型就将被抛弃。第2章软件生存周期及开发模型快速原型是暂时使用的,因此并不要求完整。它往往针对某个局部问题建立专门原型,如界面原型、工作流原型、查询原型等。快速原型不能贯穿软件的整个生命周期,它需要和其他的过程模型相结合才能产生作用。对于一个大型复杂的系统,如果不经过分析来进行整体性划分,想直接用屏幕来一个一个地模拟是很困难的;对于大量运算、逻辑性较强的程序模块,快速原型方法很难构造出模型来供人评价。第2章软件生存周期及开发模型原型方法只适用于小型、简单、处理过程比较明确、没有大量运算和逻辑处理过程的系统。第2章软件生存周期及开发模型2.原型进化模型原型进化模型将软件的需求细节定义、产品开发和有效性验证放在同一个工作进程中交替或并行运作。因此,在获得了软件需求框架以后,就可以直接进入到对软件的开发中。原型进化模型是通过不断发布新的软件版本而使软件逐步完善的,因此,这种开发模式特别适合于那些用户急需的软件产品开发。需求描述建立/完善原型使用原型系统系统充分交付目标系统否是第2章软件生存周期及开发模型2.2.3增量模型增量模型的工作流程定义需求框架按照构件组成及其关系设计软件系统体系结构将构件集成进系统验证系统系统已完成最终系统开发增量构件细化构件需求设计构件实现构件验证构件否是第2章软件生存周期及开发模型1.增量模型的三个阶段(1)在系统开发的前期阶段,为了确保所建系统具有优良的结构,仍需要针对整个系统进行需求分析和总体设计,需要启动系统的基于增量构件的需求框架,并以需求框架中构件的组成及关系为依据,完成对软件系统的体系结构设计。(2)在完成软件体系结构设计之后,可以进行增量构件的开发。这时需要对构件进行需求细化,然后进行设计、编码测试和有效性验证。(3)在完成了对某个构件的开发之后,需要将该构件集成到系统中去,并对已经发生了改变的系统重新进行有效性验证,然后再继续下一个增量构件的开发。第2章软件生存周期及开发模型2.增量模型的作用(1)开发初期的需求定义只是用来确定软件的基本结构,这使得开发初期,用户只需要对软件需求进行大概的描述,而对于需求的细节描述,则可以延迟到增量构件开发时进行,以增量构件为单位逐个地进行需求补充。(2)软件系统可以按照增量构件的功能安排开发的优先顺序,并逐个实现和交付使用。这不仅有利于用户尽早地用上系统,能够更好地适应新的软件环境,而且用户在以增量方式使用系统的过程中,还能够获得对软件系统后续构件的需求经验。(3)软件系统是逐渐开展的,因此开发者可以通过对诸多构件的开发,逐步积累开发经验。实际上增量式开发还有利于技术复用,(4)增量式开发还有利于从总体上降低软件项目的技术风险。第2章软件生存周期及开发模型2.2.4螺旋模型第2章软件生存周期及开发模型2.2.4螺旋模型在笛卡尔坐标的4个象限上分别表达各方面的活动:制订计划:确定软件目标,选定实施方案,弄清项目开发限制条件。风险分析:分析所选方案,考虑如何识别和消除风险。实施工程:实施软件开发。用户评估:评价开发工作,提出修正建议。第2章软件生存周期及开发模型2.3面向对象的软件过程模型2.3.1面向对象的软件开发特点开发阶段界限模糊,开发过程逐步求精,开发活动反复迭代。通常,开发活动是在分析、设计和实现阶段之间的反复迭代。每次迭代都会增加或者明确一些目标系统的性质,但却不是对前期工作结构的本质性改动,这样就减少了不一致性,降低了出错的可能性。第2章软件生存周期及开发模型2.3.2软件统一开发过程第2章软件生存周期及开发模型2.3.2软件统一开发过程1.初始阶段初始阶段的目标是为系统建立业务用例和确定项目的边界。本阶段的具体目标如下:明确软件系统的范围和边界条件,包括从功能角度的前景分析、产品验收标准和哪些做与哪些不做的相关决定;明确区分系统的关键用例和主要的功能场景;展现或者演示至少一种符合主要场景要求的候选软件体系结构;对整个项目做最初的项目成本和日程估计;估计出潜在的风险(主要指各种不确定因素造成的潜在风险);准备好项目的支持环境。第2章软件生存周期及开发模型2.细化阶段细化阶段的目标是分析问题域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。本阶段的具体目标如下:确保软件结构、需求、计划足够稳定;确保项目风险已经降低到能够预计完成整个项目的成本和日程的程度;针对项目的软件结构上的主要风险已经解决或处理完成;通过完成软件结构上的主要场景建立软件体系结构的基线;建立一个包含高质量构件的可演化的产品原型;说明基线化的软件体系结构可保障需求可控制在合理的成本和时间范围内;建立好产品的支持环境。第2章软件生存周期及开发模型3.构造阶段在构造阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详尽地测试。本阶段的主要目标如下:通过优化资源和避免不必要的返工达到开发成本的最小化;根据实际需要达到适当的质量目标;据实际需要形成各个版本;对所有必须的功能完成分析、设计、开发和测试工作;采用循环渐进的方式开发出一个可以提交给最终用户的完整产品;确定软件、站点和用户都为产品的最终部署做好了相关准备;达成一定程度上的并行开发机制。第2章软件生存周期及开发模型4.交付阶段完成最后的软件产品和产品验收测试,并编制用户文档,进行用户培训等,将软件产品交付给用户群体。本阶段的具体目标如下。进行Beta测试以期达到最终用户的需要;进行Beta测试和旧系统的并轨;转换功能数据库;对最终用户和产品支持人员的培训;具体部署相关的工程活动;协调Bug修订、改进性能和可用性等工作;基于完整的版本和产品验收标准对最终部署做出评估;达到用户要求的满意度;达成各风险承担人对产品部署基线已经完成的共识。第2章软件生存周期及开发模型2.3.3构件复用模型以构件复用为驱动需求框架描述构件复用分析需求修改细化系统设计构件开发系统集成第2章软件生存周期及开发模型2.4敏捷软件开发过程模型敏捷的价值观:个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;客户合作胜过合同谈判;响应变化胜过遵循计划。第2章软件生存周期及开发模型12条原则:1.最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。2.即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。3.经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。4.在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。第2章软件生存周期及开发模型5.围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。6.在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。7.工作的软件是首要的进度度量标准。8.敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。第2章软件生存周期及开发模型9.不断地关注优秀的技能和好的设计会增强敏捷能力。10.简单——使未完成的工作最大化的艺术——是根本的。11.最好的构架、需求和设计出自于自组织的团队。12.每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。第2章软件生存周期及开发模型极限编程过程第2章软件生存周期及开发模型1.策划:策划活动开始于建立一系列描述待开发软件的必要特征与功能的“故事”。每个故事由客户书写并置于一张索引卡上,客户根据对应特征或功能的全局业务价值标明权值(即优先级)。(1)所有选定故事将在几周之内尽快实现;(2)具有最高价值的故事将移到进度表的前面并首先实现;(3)高风险故事将首先实现。第2章软件生存周期及开发模型2.设计:XP设计严格遵循保持简洁(KeepItSimple,KIS)原则,使用简单而不是复杂的表述。另外,设计为故事提供不多也不少的实现原则,不鼓励额外功能性设计。3.编码:在故事开发和基本设计完成之后,团队不应直接开始编码,而是开发一系列用于检测本次(软件增量)发布的包括所有故事的单元测试。第2章软件生存周期及开发模型4.测试:在编码开始之前建立单元测试是XP方法的关键因素。所建立的单元测试应当使用一个可以自动实施的框架,这种方式支持代码修改之后即时的回归测试策略。
本文标题:《软件工程实用教程》第2章软件生存周期及开发模型
链接地址:https://www.777doc.com/doc-166336 .html