第3章 软件项目全生命周期的阶段划分

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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