您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第3章软件项目全生命周期的阶段划分
第3章软件项目全生命周期的阶段划分主要内容:软件项目分类软件项目全生命周期的阶段划分软件项目各阶段之间的关系软件项目生命周期中里程碑的设定与管理3.1软件项目分类根据实施主体的不同分为两大类:(1)自主研发项目对于立项的软件项目,采取自主开发和自主维护的方式进行。即立项单位本身就是项目开发单位,既是实施单位,也是受益单位。由于整个项目的立项、开发在一个单位内部独立完成,整个开发过程只存在于本单位项目内部的组织和管理,不存在不同单位之间的协作,所以这类项目管理的难度要小些。(2)外包软件项目提出项目立项的单位本身不具备软件开发的能力,项目实施要借助于专业的软件研发机构来完成。由于项目主体方和项目实施方属于不同的单位,在项目实施过程中,由于利益及责任的不同,双方在项目的实施过程中存在着复杂的协作关系,造成项目在组织上和管理上存在较大的困难。根据应用类型的不同也可分为两大类:(1)系统软件是支持计算机及应用软件集成化运行的基础平台及软件。操作系统软件、目录服务软件、文件服务软件、通讯服务软件、数据库服务软件、语言编译软件等。(2)应用软件。是最终用户使用的用来提高办公效率的终端软件。应用软件不像系统软件具有更广泛的通用性,它一般是为客户在某一个专用领域提供服务而定制的。3.2软件项目全生命周期的阶段划分3.2.1软件开发模型在软件项目的实施过程中,选择有效的开发模型对项目的成功有很大的影响。比较典型的软件开发模型有瀑布模型、演化模型和螺旋模型。(1)瀑布模型。1970年,由RoyceWinston提出,如图3-1所示。瀑布模型规定软件开发各阶段的活动依次是:用户提出软件需求,项目成员开展需求分析、系统设计、编码、测试、实施和运行维护等一系列的任务。模型中各阶段的活动从上一阶段向下一阶段逐级过渡,如同瀑布逐级下落,最终完成软件产品并交付用户使用。其软件开发活动具有以下特点:1)阶段性要求在开发过程中前一阶段工作完成以后,后一阶段工作才能开始。2)阶段评审对每一阶段完成的工作都要进行评审,以利于尽早发现问题,避免后期的返工,如果评审不合格,则不能开始下一阶段工作。3)文档管理每个阶段都明确规定了要完成的工作。如果文档没有完成,就认为本阶段的工作没有完成。瀑布模型为软件开发与维护提供了一种有效的项目管理模式。但在实际应用中,软件开发活动的各阶段间的关系并非是简单的线性关系,阶段评审可能会出现向上一阶段反馈的现象,使模型中产生环路,像图3-1中虚线所示。瀑布模型的不足:①由于开发阶段呈线性,当开发成果尚未经过测试阶段时,用户无法看到软件的运行效果,可能会存在需求方面的缺陷,造成开发出来的软件不是用户真正需要的软件,造成项目的返工或在维护中纠正需求的偏差。②由于固定顺序,前期工作中造成的偏差如果延续到后期阶段,所造成的损失将会更大,项目的风险也就会越大。(2)演化模型是利用迭代的思想,使软件开发活动逐步完善的机制。该模型设计主要针对在用户需求阶段,难以给出准确、完整的用户需求的软件项目。在项目开始时,用户可以给出目标系统的核心功能需求,开发人员可以根据核心需求开发系统的核心模块。系统核心模块开发完成后,交付用户试用,用户根据试用的结果,提出细化和增强后的新的用户需求。开发人员可在新需求的基础上实施开发的迭代过程,以实现系统的最终目标。每一迭代过程均由需求、设计、编码、测试、集成等阶段组成。图3—2是采用演化模型开展软件项目的过程模型。利用演化模型进行软件开发的最大优点或特点是在软件开发过程中,如果一次迭代还不能满足用户的实际需求,可通过下一次的迭代完成,这样就可以在一定程度上减少软件开发的盲目性,提高软件的开发效率。(3)螺旋模型螺旋模型是在演化模型的基础上发展起来的。它在演化模型的基础上增加了风险分析机制。它将软件项目开发划分为制定计划、风险分析、实施开发,以及客户评估四类活动。软件风险是任何软件项目中普遍存在的问题,不同项目只是风险大小不同而已。项目规模越大、问题越复杂,资源、成本、进度等因素的不确定性就越大,承担项目的风险也就越大。进行风险分析与管理的目的就是使人们在危害造成之前及时对风险进行识别、分析,采取对策,消除或减少风险所造成的损失。如图3-3所示,软件项目沿着螺旋式模型旋转在笛卡儿坐标的四个象限上。1)制定计划确定软件项目的目标,选定实施方案,定义项目的边界条件。2)风险分析分析所选方案,考虑如何识别、预防、避免和清除风险。3)项目实施开展软件项目全生命周期的分析、设计、编码、测试和实施等工作。4)客户评估评价软件项目各阶段的工作,提出修正性建议。螺旋模型的优越性在于适合大型软件的开发。可使开发人员和用户对每一个演化层出现的情况均有所了解,并对下一阶段工作做出正确的安排。在实际应用过程中,如果用户提出了明确的业务需求,开发人员也正确理解了用户需求后,开发过程无需开发原型系统,整个开发过程可采用瀑布模型。(4)模型的使用在模型实际的使用不能生搬硬套现有的开发模型,而是要深刻领会模型的精神,结合自己软件项目的实际情况,选择符合本身项目特点的开发模型。瀑布模型无法解决软件需求不明确或不准确的问题,会对整个软件开发工作带来严重影响,最终可能导致开发出的软件并不是用户真正需要的,且这一点只有在软件开发完成后才可以被发现,所以瀑布模型对于需求简单、明确的软件开发项目比较适合。演化模型有效地解决了瀑布模型的不足,利用原型技术可有效防范软件开发过程中的风险,但对风险的分析的预防机制略显不足,因而适合规模中等的软件项目开发。螺旋模型既继承了演化模型的特点,又有效地增加了风险预防和解决机制,适合于大型规模的软件项目开发。3.2.2软件项目生命周期阶段划分不同的软件开发模型,生命周期的阶段划分会有所差别。这里所论述的软件项目生命周期阶段划分是以经典“瀑布”模型为原型,吸纳其他典型软件开发模型的知识,再加上现代软件项目工作开展的特点提出的。如图3-5所示。整个软件开发活动可划分为四个主要的工作阶段:立项、设计、实现及收尾。每个阶段又包含多个不同的子过程,各个子过程之间关系紧密,并且并行的、反复循环的工作内容比较频繁。(1)项目立项。软件项目立项工作有两个方面:项目定义和项目启动。通过项目的可行性分析研究解决项目是否立项。对于已经立项的项目,指定项目负责人,制定项目实施的全面工作计划。在这一阶段中,项目的启动工作要在确定项目必须开展的情况下才能开始。(2)软件系统设计软件系统设计包括需求分析和系统设计两方面的工作。需求分析是系统设计(包括概要设计、详细设计等)的前提,也是系统设计内容的重要组成部分。在实际工作中,在软件设计的前期阶段,就已经开始了一些重要的难度较大的开发试验工作,也只有这样才能确保设计出的逻辑系统可以实现。(3)软件系统实现实现阶段的任务包括编码、测试、试运行等多个连续循环往复的软件开发工作,也正是这些工作的不断反复与循环才最终获得客户满意的交付成果,它是设计模型的物理实现,是直接面向用户的真实系统。一般在软件项目管理过程中,系统设计与系统实现各占整个项目工作量的三分之一,其他内容占项目总工作量的三分之一。(4)收尾阶段收尾阶段包括项目验收、系统运行、系统维护、直到软件系统生命周期结束等一系列收尾过程的活动。(5)各阶段之间的关系各阶段之间:(1)既有严格的工作接续关系,即前一阶段工作完成以后,后一阶段工作才能开始;(2)同时又存在一定的工作并行性以及工作反馈与循环,如在前一阶段工作即将结束前,开始着手下一阶段的计划制定。3.2.2.1项目定义项目定义阶段主要考虑项目的立项问题,具体任务是完成问题定义与项目可行性分析、研究与论证工作,确定是否立项。(1)问题定义软件项目立项的第一个任务是问题定义,确定所要实现的软件系统的背景、目标、功能、性能以及预期达到的效果,并进行成本的粗略估计。问题定义通常很简短,但在性质上它是一个相对独立的步骤,不应该和其他步骤混淆,更不应该省略。问题定义清楚后,形成一份关于该项目的规模、目标及成本粗略估计的报告书。(2)可行性分析可行性分析的主要目的是论证项目在时间、资源、资金、效果、实现技术和方法等方面的必要性和可能性。主要包括经济可行性、技术可行性与操作可行性等方面。1)经济可行性对开发项目进行成本效益分析,评估项目的开发成本,估算项目成本是否会超过项目预期的全部利润。其中成本费用包括购置软硬件及其相关设备的费用,系统开发费用,系统安装、运行、维护费用,人员培训费用等。效益包括经济效益和社会效益。经济效短能够通过直接的或统计的方法估算,社会效益只能用定性的方法估算。2)技术可行性根据需求定义所要实现系统功能、性能等各方面,从软件技术的角度研究系统实现的可能性。技术可行性分析是系统开发过程中难度最大的工作。系统目标、功能和性能的不确定性往往会给技术可行性论证带来许多困难。技术可行性研究包括:风险分析、资源分析和技术分析。风险分析的任务是在给定的约束条件下,判断能否设计并实现系统所需功能和性能。资源分析的任务是论证是否具备系统开发所需的各类人员、软件、硬件资源和工作环境等。技术分析的任务是当前的科学技术是否支持系统开发的全过程以及拟采用的技术路线等。3)操作可行性包括政策、法律等因素。政策因素在软件开发项目中有着重要的作用,如果项目得到政策的扶持,往往在人力、财力等方面都会有充分的保证。另外,在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题,也必须加以认真研究。(3)交付成果在可行性分析阶段,应提出实现系统的各种初步方案,并形成书面报告即可行性分析报告,作为项目立项阶段的交付成果,它是项目能否继续开展研究与开发的重要依据。本阶段的工作以项目的受益者即客户为核心开展工作。在我国,传统的做法是客户自己通过多方调查来完成论证,但往往由于客户对软件及其应用效果不能有很多直观的印象、对软件应用后的效益很难估算造成可行性论证阶段缺乏科学的依据。3.2.2.2项目启动项目的可行性研究表明项目可行后,就应立即启动。软件项目启动阶段包括项目计划的制定、项目的招投标、系统开发环境与运行环境的确定与购买、项目经理的选择、项目团队的计划和组织等、各种合同的签订等一系列软件项目开发前的准备工作和基础性工作。软件项目启动过程完成的重要标志有:成立项目管理委员会、任命项目经理、组织项目团队、获取项目许可证、签订开发协议、准备好一切软件开发的基础环境等。3.2.2.3需求分析客户需求是软件开发的依据。软件需求分析是用户对目标软件系统在功能、行为、性能、设计约束等方面的理解、认识、定义和期望。通过对相应问题及系统环境的理解与分析,为问题涉及的信息、功能及系统行为建立软件系统模型,实现将用户需求精确化、完全化,最终形成需求规格说明书。需求分析主要包括三个子阶段的工:作,即问题分析、需求描述及需求评审。(1)问题分析阶段分析人员通过对环境及问题的理解、分析和综合,并在用户的帮助下对相互冲突的要求进行折衷,努力清除用户需求的模糊性、二义性。在这一阶段,分析人员一方面应根据自己对原始问题的理解和软件开发经验结合起来,以便发现片面性或短期行为导致的不合理需求;另一方面要发现用户未认识到的、有价值的潜在需求,然后为原始问题及其软件建立需求模型。(2)需求描述阶段以问题分析为基础,并考虑问题的软件可解性,生成需求规格说明和初步的用户手册。需求规格说明包含对目标软件系统的外部行为的完整描述、需求验证标准以及用户在性能、质量、可维护性等方面的要求。用户手册包括用户界面描述以及有关目标软件使用方法的初步构想。(3)需求评审阶段对完成的需求规格说明和初步的用户手册进行复检,以确保软件需求的全面性、精确性和一致性。并使用户和软件设计人员对需求规格说明及用户手册的理解达成一致。在需求规格说明得到用户和软件开发方的一致确认后,它应成为用户方与开发方之间的合同,任何改变都应当由提出问题的一方承担责任。3.2.2.4系统设计主要完成系统的总体设计、详细设计、边界设计、信息模型设计、过程设计、功能设计以及软硬件环境的搭建与准备等
本文标题:第3章软件项目全生命周期的阶段划分
链接地址:https://www.777doc.com/doc-781632 .html