《软件项目全生命周期的阶段划分》由会员分享,可在线阅读,更多相关《软件项目全生命周期的阶段划分(55页珍藏版)》请在金锄头文库上搜索。
1、第第3章章 软件项目全生命周期软件项目全生命周期 的阶段划分的阶段划分主要内容: 软件项目分类 软件项目全生命周期的阶段划分 软件项目各阶段之间的关系 软件项目生命周期中里程碑的设定与管理3.1 软件项目分类软件项目分类根据实施主体实施主体的不同分为两大类:(1)自主研发项目对于立项的软件项目,采取自主开发和自主维护的方式进行。即立项单位本身就是项目开发单位,既是实施单位,也是受益单位。由于整个项目的立项、开发在一个单位内部独立完成,整个开发过程只存在于本单位项目内部的组织和管理,不存在不同单位之间的协作,所以这类项目管理的难度要小些。 (2)外包软件项目提出项目立项的单位本身不具备软件开发的
2、能力,项目实施要借助于专业的软件研发机构来完成。由于项目主体方和项目实施方属于不同的单位,在项目实施过程中,由于利益及责任的不同,双方在项目的实施过程中存在着复杂的协作关系,造成项目在组织上和管理上存在较大的困难。根据应用类型应用类型的不同也可分为两大类:(1)系统软件是支持计算机及应用软件集成化运行的基础平台及软件。操作系统软件、目录服务软件、文件服务软件、通讯服务软件、数据库服务软件、语言编译软件等。(2)应用软件。是最终用户使用的用来提高办公效率的终端软件。应用软件不像系统软件具有更广泛的通用性,它一般是为客户在某一个专用领域提供服务而定制的。 3.2 软件项目全生命周期的阶段划分软件项
3、目全生命周期的阶段划分3.2.1软件开发模型软件开发模型在软件项目的实施过程中,选择有效的开发模型对项目的成功有很大的影响。比较典型的软件开发模型有瀑布模型、演化模型和螺旋模型。(1)瀑布模型。1970年,由RoyceWinston提出,如图3-1所示。瀑布模型规定软件开发各阶段的活动依次是:用户提出软件需求,项目成员开展需求分析、系统设计、编码、测试、实施和运行维护等一系列的任务。模型中各阶段的活动从上一阶段向下一阶段逐级过渡,如同瀑布逐级下落,最终完成软件产品并交付用户使用。 其软件开发活动具有以下特点特点: 1)阶段性要求在开发过程中前一阶段工作完成以后,后一阶段工作才能开始。2)阶段评
4、审对每一阶段完成的工作都要进行评审,以利于尽早发现问题,避免后期的返工,如果评审不合格,则不能开始下一阶段工作。3)文档管理每个阶段都明确规定了要完成的工作。如果文档没有完成,就认为本阶段的工作没有完成。 瀑布模型为软件开发与维护提供了一种有效的项目管理模式。但在实际应用中,软件开发活动的各阶段间的关系并非是简单的线性关系,阶段评审可能会出现向上一阶段反馈的现象,使模型中产生环路,像图3-1中虚线所示。瀑布模型的不足不足:由于开发阶段呈线性,当开发成果尚未经过测试阶段时,用户无法看到软件的运行效果,可能会存在需求方面的缺陷,造成开发出来的软件不是用户真正需要的软件,造成项目的返工或在维护中纠正
5、需求的偏差。由于固定顺序,前期工作中造成的偏差如果延续到后期阶段,所造成的损失将会更大,项目的风险也就会越大。 (2)演化模型是利用迭代的思想,使软件开发活动逐步完善的机制。该模型设计主要针对在用户需求阶段,难以给出准确、完整的用户需求的软件项目。在项目开始时,用户可以给出目标系统的核心功能需求,开发人员可以根据核心需求开发系统的核心模块。系统核心模块开发完成后,交付用户试用,用户根据试用的结果,提出细化和增强后的新的用户需求。开发人员可在新需求的基础上实施开发的迭代过程,以实现系统的最终目标。每一迭代过程均由需求、设计、编码、测试、集成等阶段组成。图32是采用演化模型开展软件项目的过程模型。
6、利用演化模型进行软件开发的最大优点或特点是在软件开发过程中,如果一次迭代还不能满足用户的实际需求,可通过下一次的迭代完成,这样就可以在一定程度上减少软件开发的盲目性,提高软件的开发效率。(3)螺旋模型螺旋模型是在演化模型的基础上发展起来的。它在演化模型的基础上增加了风险分析机制。它将软件项目开发划分为制定计划、风制定计划、风险分析、实施开发险分析、实施开发,以及客户评估客户评估四类活动。软件风险是任何软件项目中普遍存在的问题,不同项目只是风险大小不同而已。项目规模越大、问题越复杂,资源、成本、进度等因素的不确定性就越大,承担项目的风险也就越大。进行风险分析与管理的目的就是使人们在危害造成之前及
7、时对风险进行识别、分析,采取对策,消除或减少风险所造成的损失。 如图3-3所示,软件项目沿着螺旋式模型旋转在笛卡儿坐标的四个象限上。1)制定计划确定软件项目的目标,选定实施方案,定义项目的边界条件。2)风险分析分析所选方案,考虑如何识别、预防、避免和清除风险。3)项目实施开展软件项目全生命周期的分析、设计、编码、测试和实施等工作。4)客户评估评价软件项目各阶段的工作,提出修正性建议。螺旋模型的优越性在于适合大型软件的开发。可使开发人员和用户对每一个演化层出现的情况均有所了解,并对下一阶段工作做出正确的安排。在实际应用过程中,如果用户提出了明确的业务需求,开发人员也正确理解了用户需求后,开发过程
8、无需开发原型系统,整个开发过程可采用瀑布模型。(4)模型的使用在模型实际的使用不能生搬硬套现有的开发模型,而是要深刻领会模型的精神,结合自己软件项目的实际情况,选择符合本身项目特点的开发模型。瀑布模型无法解决软件需求不明确或不准确的问题,会对整个软件开发工作带来严重影响,最终可能导致开发出的软件并不是用户真正需要的,且这一点只有在软件开发完成后才可以被发现,所以瀑布模型对于需求简单、明确的软件开发项目比较适合。演化模型有效地解决了瀑布模型的不足,利用原型技术可有效防范软件开发过程中的风险,但对风险的分析的预防机制略显不足,因而适合规模中等的软件项目开发。螺旋模型既继承了演化模型的特点,又有效地
9、增加了风险预防和解决机制,适合于大型规模的软件项目开发。3.2.2软件项目生命周期阶段划分软件项目生命周期阶段划分不同的软件开发模型,生命周期的阶段划分会有所差别。这里所论述的软件项目生命周期阶段划分是以经典“瀑布”模型为原型,吸纳其他典型软件开发模型的知识,再加上现代软件项目工作开展的特点提出的。如图3-5所示。整个软件开发活动可划分为四个主要的工作阶段:立项、设计、实现立项、设计、实现及收尾收尾。每个阶段又包含多个不同的子过程,各个子过程之间关系紧密,并且并行的、反复循环的工作内容比较频繁。(1)项目立项。软件项目立项工作有两个方面:项目定义项目定义和项目启动项目启动。通过项目的可行性分析
10、研究解决项目是否立项。对于已经立项的项目,指定项目负责人,制定项目实施的全面工作计划。在这一阶段中,项目的启动工作要在确定项目必须开展的情况下才能开始。 (2)软件系统设计软件系统设计包括需求分析需求分析和系统设计系统设计两方面的工作。需求分析是系统设计(包括概要设计、详细设计等)的前提,也是系统设计内容的重要组成部分。在实际工作中,在软件设计的前期阶段,就已经开始了一些重要的难度较大的开发试验工作,也只有这样才能确保设计出的逻辑系统可以实现。 (3)软件系统实现实现阶段的任务包括编码编码、测试测试、试运行试运行等多个连续循环往复的软件开发工作,也正是这些工作的不断反复与循环才最终获得客户满意
11、的交付成果,它是设计模型的物理实现,是直接面向用户的真实系统。一般在软件项目管理过程中,系统设计与系统实现各占整个项目工作量的三分之一,其他内容占项目总工作量的三分之一。 (4)收尾阶段收尾阶段包括项目验收项目验收、系统运行系统运行、系系统维护统维护、直到软件系统生命周期结束软件系统生命周期结束等一系列收尾过程的活动。(5)各阶段之间的关系各阶段之间:(1)既有严格的工作接续关系,即前一阶段工作完成以后,后一阶段工作才能开始;(2)同时又存在一定的工作并行性以及工作反馈与循环,如在前一阶段工作即将结束前,开始着手下一阶段的计划制定。3.2.2.13.2.2.1项目定义项目定义项目定义阶段主要考
12、虑项目的立项立项问题,具体任务是完成问题定义与项目可行性分析、问题定义与项目可行性分析、研究与论证工作研究与论证工作,确定是否立项。(1)问题定义软件项目立项的第一个任务是问题定义,确定所要实现的软件系统的背景、目标、功能、性能以及预期达到的效果,并进行成本的粗略估计。问题定义通常很简短,但在性质上它是一个相对独立的步骤,不应该和其他步骤混淆,更不应该省略。问题定义清楚后,形成形成一份关于该项目的规模、目标及成本粗略估一份关于该项目的规模、目标及成本粗略估计的报告书计的报告书。 (2)可行性分析可行性分析的主要目的是论证项目在时间、时间、资源、资金、效果、实现技术和方法资源、资金、效果、实现技
13、术和方法等方面的必要性和可能性。主要包括经济可行性经济可行性、技术可行性技术可行性与操作可行性操作可行性等方面。1)经济可行性对开发项目进行成本效益分析,评估项目的开发成本,估算项目成本是否会超过项目预期的全部利润。其中成本费用包括购置软硬件及其相关设备的费用,系统开发费用,系统安装、运行、维护费用,人员培训费用等。效益包括经济效益和社会效益。经济效短能够通过直接的或统计的方法估算,社会效益只能用定性的方法估算。2)技术可行性根据需求定义所要实现系统功能、性能等各方面,从软件技术的角度研究系统实现的可能性。技术可行性分析是系统开发过程中难度最大的工作。系统目标、功能和性能的不确定性往往会给技术
14、可行性论证带来许多困难。技术可行性研究包括:风险分析风险分析、资源资源分析分析和技术分析技术分析。风险分析的任务是在给定的约束条件下,判断能否设计并实现系统所需功能和性能。资源分析的任务是论证是否具备系统开发所需的各类人员、软件、硬件资源和工作环境等。技术分析的任务是当前的科学技术是否支持系统开发的全过程以及拟采用的技术路线等。 3)操作可行性包括政策政策、法律法律等因素。政策因素在软件开发项目中有着重要的作用,如果项目得到政策的扶持,往往在人力、财力等方面都会有充分的保证。另外,在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题,也必须加以认真研究。(3)交付成果在可行
15、性分析阶段,应提出实现系统的各种初步方案,并形成书面报告即可行性分可行性分析报告析报告,作为项目立项阶段的交付成果,它是项目能否继续开展研究与开发的重要依据。本阶段的工作以项目的受益者即客户为核心开展工作。在我国,传统的做法是客户自己通过多方调查来完成论证,但往往由于客户对软件及其应用效果不能有很多直观的印象、对软件应用后的效益很难估算造成可行性论证阶段缺乏科学的依据。3.2.2.23.2.2.2项目启动项目启动项目的可行性研究表明项目可行后,就应立即启动。软件项目启动阶段包括项目计划的制定项目计划的制定、项目的招投标项目的招投标、系统开发环境与运行环境的系统开发环境与运行环境的确定与购买确定
16、与购买、项目经理的选择、项目团队的项目经理的选择、项目团队的计划和组织计划和组织等、各种合同的签订各种合同的签订等一系列软件项目开发前的准备工作和基础性工作。软件项目启动过程完成的重要标志有:成立项目管理委员会、任命项目经理、组织成立项目管理委员会、任命项目经理、组织项目团队、获取项目许可证、签订开发协议、项目团队、获取项目许可证、签订开发协议、准备好一切软件开发的基础环境准备好一切软件开发的基础环境等。3.2.2.33.2.2.3需求分析需求分析客户需求是软件开发的依据。软件需求分析是用户对目标软件系统在功能、行为、性功能、行为、性能、设计约束能、设计约束等方面的理解、认识、定义和理解、认识
17、、定义和期望期望。通过对相应问题及系统环境的理解与分析,为问题涉及的信息、功能及系统行为建立软件系统模型,实现将用户需求精确化、完全化,最终形成需求规格说明书需求规格说明书。需求分析主要包括三个子阶段的工:作,即问题分析、需求描述及需求评审问题分析、需求描述及需求评审。 (1)问题分析阶段分析人员通过对环境及问题的理解、分析和综合,并在用户的帮助下对相互冲突的要求进行折衷,努力清除用户需求的模糊性、二义性。在这一阶段,分析人员一方面应根据自己对原始问题的理解和软件开发经验结合起来,以便发现片面性或短期行为导致的不合理需求;另一方面要发现用户未认识到的、有价值的潜在需求,然后为原始问题及其软件建
18、立需求模型。 (2)需求描述阶段以问题分析为基础,并考虑问题的软件可解性,生成需求规格说明需求规格说明和初步的用户手初步的用户手册册。需求规格说明包含对目标软件系统的外部行为的完整描述、需求验证标准以及用户在性能、质量、可维护性等方面的要求。用户手册包括用户界面描述以及有关目标软件使用方法的初步构想。 (3)需求评审阶段对完成的需求规格说明和初步的用户手册进行复检,以确保软件需求的全面性、精确性和一致性。并使用户和软件设计人员对需求规格说明及用户手册的理解达成一致。在需求规格说在需求规格说明得到用户和软件开发方的一致确认后,它明得到用户和软件开发方的一致确认后,它应成为用户方与开发方之间的合同
19、应成为用户方与开发方之间的合同,任何改任何改变都应当由提出问题的一方承担责任变都应当由提出问题的一方承担责任。3.2.2.43.2.2.4系统设计系统设计主要完成系统的总体设计总体设计、详细设计详细设计、边界设计、信息模型设计、过程设计、功能设计以及软硬件环境的搭建与准备等工作。在勾画出系统总体逻辑框架的同时,要详细划分出组成系统的各个物理元素程序、文件、数据库、人工过程和文档等,并确定系统功能模块及其之间的相互关系,系统功能模块的划分遵循了模块内的高内聚,模块间低耦合的基本原则。设计阶段还涉及各种流行的设计思想和方法,交付成果是各种版各种版本的系统设计报告本的系统设计报告:详细内容请参考第6
20、章。3.2.2.53.2.2.5编码实现编码实现编码实现是系统目标实现的具体过程以及完成软件系统的程序编写工作。本阶段首先需要考虑开发本软件项目要用到何种程序设计语言以及采用哪种数据库管理系统,其次是编程思路和具体算法的实现与优化等问题。具体内容参见第7章。3.2.2.63.2.2.6系统测试系统测试系统测试是针对软件项目交付成果的正正确性、科学性确性、科学性以及达到目标系统的逼近程度达到目标系统的逼近程度进行测试,测试的对象是软件系统或软件产品,测试的目标是为了尽可能早地发现并修改软件中存在的错误。软件测试按范围和内容可以划分为局部测局部测试和集成测试试和集成测试,也称为单元测试和综合测试两
21、方面的内容。单元测试任务由程序开发者和专业测试者共同完成;而综合测试则由专门的软件测试机构负责。需要说明的是,不能保证通过测试的程序一定正确。测试只能找出错误,而不能证明程序中测试只能找出错误,而不能证明程序中没有错误。没有错误。在软件开发过程的各个阶段,测试工作是不间断的,随时进行的,软件投入使用后,用户将扮演测试者的角色。软件系统典型的测试方法有白盒测试和白盒测试和黑盒测试黑盒测试两种方法,具体内容请参考第8章。3.2.2.73.2.2.7系统试运行系统试运行软件产品经过正确性和完整性测试后,软件项目成果最终将交付给用户。在项目验收之前,系统试运行是必须进行的重要实践环节,很多软件系统商也
22、称之为系统实施过程。试运行结果和运行报告与记录将形成用户使用报告,它是软件项目能否通过最终验收的重要依据。 软件系统试运行是软件系统客户化过程的一部分,是检验软件系统能否满足用户需求的关键阶段。软件系统客户化过程包括很多内容,如系统功能定制,用户权限分配,客户数据装载、数据转换、新老系统切换、客户培训等一些将软件系统交付给客户使用的过程和环节。详细内容参见第9章。3.2.2.83.2.2.8项目验收项目验收软件项目结束时,项目开发方将软件产品交付给用户前,项目接收方将与开发方、监理方以及业内专家等需要对项目的工作成果进行全面审查和考核,查核应交付的软件产品是否满足用户需求。若检查合格,将项目成
23、果交付项目接收方,完成系统切换工作,使新系统正式投入使用。项目验收后,整个软件项目即告结束。3.2.2.93.2.2.9运行维护运行维护新系统交付使用后,开发方按照合同进入系统的免费或有偿维护服务阶段,即运行维护。由于软件行业的发展非常迅速,软件产品更新换代速度也比较快,用户在认识、理解和熟悉软件系统后,将会根据新的业务提出新的需求。在运行维护期,如果用户提出的要求是本项目初始界定的目标范围内,则开发方应尽其责进行完善;如果提出的需求超出了项目目标范围,双方可以商量再立一个新的项目来开展工作,切忌客户随意提要求,开发方信口答应的不规范做法。3.3软件项目各阶段之间的关系软件项目各阶段之间的关系
24、(1)层次与继承关系在软件项目的开发过程中,往往上一个阶段的输出就是下一个阶段的输入,下一阶段的成果是对上一阶段成果的丰富、完善、加强和具体化与实现。在实际工作开展过程中,各个阶段的工作会出现一定的并行性,不一定完全按照必须前一个阶段工作完成和评审后,才允许开展下一阶段的工作。(2)沟通与协调关系良好的沟通是软件项目成败的关键,在沟通顺畅的情况下,往往可以起到事半功倍的效果,而如果沟通不顺畅,则会使项目开发陷入各自为政的状态,最终可能导致项目的失败。项目的沟通管理就是要保证各阶段产生的项目信息及时、准确地提取、收集、传播、存储以及最终进行处置。在软件项目进展过程中,协作与沟通主要体现在项目经理
25、与成员之间、项目经理与客户之间、各阶段团队成员之间以及多个阶段团队成员之间的沟通与协作。3.4软件项目生命周期中里程碑的设定软件项目生命周期中里程碑的设定与管理与管理 软件项目开展过程中,包括以下重要的里程碑节点:(1)项目立项完成期(2)项目启动完成期(3)需求分析完成期(4)系统设计完成期(5)软件编码完成期(6)软件测试完成期(7)系统试运行完成期(8)项目验收完成期软件项目里程碑的有效管理和控制是保证整个项目成功的关键活动,通常的作法是根据软件项目的总工期,设定每个里程碑事件的计划、内容、方案、阶段性交付成果等重要因素,并执行阶段性考核和验收,验收结果以表格形式描述和记录,并签字备案。
26、表31是一个软件项目里程碑管理的内容备案表的示例。每个里程碑计划的执行与控制,必须在成本、质量、进度计划、交付成果、风险评估等方面实行严格的管理、审查和考核,及时发现问题并解决问题,决不可等到项目进行不下去的时候才开始找漏洞。里程碑的管理是将整个项目的风险分解到各个阶段的个有效方法,在实际的软件项目运作过程中,一定要注意运用这种风险分散的方法,把握好每个风险控制环节。作业: 1.软件项目生命周期有哪些任务,分为哪些阶段?最重要的哪个阶段,其任务是什么? 2.软件项目中,软件系统设计做什么?软件系统实现做什么?软件收尾阶段做什么? 3.软件项目中,项目定义需要做哪些具体的工作? 4.软件项目生命
27、周期中,通常设定哪些里程碑,成果物是什么? 9、静夜四无邻,荒居旧业贫。2024/7/192024/7/19Friday,July19,202410、雨中黄叶树,灯下白头人。2024/7/192024/7/192024/7/197/19/202412:42:32PM11、以我独沈久,愧君相见频。2024/7/192024/7/192024/7/19Jul-2419-Jul-2412、故人江海别,几度隔山川。2024/7/192024/7/192024/7/19Friday,July19,202413、乍见翻疑梦,相悲各问年。2024/7/192024/7/192024/7/192024/7/1
28、97/19/202414、他乡生白发,旧国见青山。19七月20242024/7/192024/7/192024/7/1915、比不了得就不比,得不到的就不要。七月242024/7/192024/7/192024/7/197/19/202416、行动出成果,工作出财富。2024/7/192024/7/1919July202417、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。2024/7/192024/7/192024/7/192024/7/199、没有失败,只有暂时停止成功!。2024/7/192024/7/19Friday,July19,202410、很多事情努力了未必有
29、结果,但是不努力却什么改变也没有。2024/7/192024/7/192024/7/197/19/202412:42:32PM11、成功就是日复一日那一点点小小努力的积累。2024/7/192024/7/192024/7/19Jul-2419-Jul-2412、世间成事,不求其绝对圆满,留一份不足,可得无限完美。2024/7/192024/7/192024/7/19Friday,July19,202413、不知香积寺,数里入云峰。2024/7/192024/7/192024/7/192024/7/197/19/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。19七月2024202
30、4/7/192024/7/192024/7/1915、楚塞三湘接,荆门九派通。七月242024/7/192024/7/192024/7/197/19/202416、少年十五二十时,步行夺得胡马骑。2024/7/192024/7/1919July202417、空山新雨后,天气晚来秋。2024/7/192024/7/192024/7/192024/7/199、杨柳散和风,青山澹吾虑。2024/7/192024/7/19Friday,July19,202410、阅读一切好书如同和过去最杰出的人谈话。2024/7/192024/7/192024/7/197/19/202412:42:32PM11、越是
31、没有本领的就越加自命不凡。2024/7/192024/7/192024/7/19Jul-2419-Jul-2412、越是无能的人,越喜欢挑剔别人的错儿。2024/7/192024/7/192024/7/19Friday,July19,202413、知人者智,自知者明。胜人者有力,自胜者强。2024/7/192024/7/192024/7/192024/7/197/19/202414、意志坚强的人能把世界放在手中像泥块一样任意揉捏。19七月20242024/7/192024/7/192024/7/1915、最具挑战性的挑战莫过于提升自我。七月242024/7/192024/7/192024/7/
32、197/19/202416、业余生活要有意义,不要越轨。2024/7/192024/7/1919July202417、一个人即使已登上顶峰,也仍要自强不息。2024/7/192024/7/192024/7/192024/7/19MOMODA POWERPOINTLorem ipsum dolor sit, eleifend nulla ac, fringilla purus. Nulla iaculis tempor felis amet, consectetur adipiscing elit. Fusce id urna blanditut cursus. 感感谢谢您您的的下下载载观观看看专家告诉