任务:为项目定制开发流程
在此任务中定制开发流程以满足项目的特定需要。
规程:环境
用途

此任务的目的是:

  • 根据项目的具体要求合理确定软件开发流程的大小
  • 为项目成员提供足够的相关流程指导信息,使其以可接受的质量高效地完成工作。
  • 为项目成员提供相关、可用的流程说明。
关系
角色主执行者: 其他执行者:
输入必需:
    可选:
      输出
        流程使用情况
        主要描述

        以下任务提供关于特定于项目的方法资产的开发信息。它们与此任务的方法开发步骤联合执行:

        在使用开发案例时,则与此定制任务一起协作执行任务:制定开发案例

        步骤
        分析项目
        目的: 获得对当前问题和项目可用资源的了解。

        交付流程与当前项目以及项目的大小和形式需求相关对于项目的成功很关键。流程太大往往会妨碍创造性和效率。流程太小会导致混乱的环境,通常会让项目的个人成员作出局部的决策,可能造成低效、不一致和不可预测的结果。

        定义定制工作的范围
        目的: 定义要在特定于项目的流程中覆盖哪些流程领域。

        分析项目资源以及他们在类似软件开发项目中的经验的结果有助于确定定制工作的范围。特定于项目的流程不必包含 RUP 中的所有规程,也不必覆盖 RUP 中定义的所有角色。请记住,RUP 是适合范围很广的项目类型的流程框架,因此一个特定的项目要遵循它,就有太多的内容需要遵循。在项目的流程中选择覆盖的领域极大地依赖于项目成员现有的技能组合以及当前项目的性质。以下是确定定制工作范围时一般需要考虑的一些事项。

        • 项目成员已经有统一工作方式的领域,在这些领域没有必要引进新的流程和工具。例如,如果他们知道如何测试,那么最好就不要引进 RUP 的测试规程,以降低新因素的数量。您可以重点引进 RUP 的一些部分,以纠正其现有流程中存在的问题。请参阅概念:在项目中实施流程,“改进流程和工具”一节,获取详细信息。 
        • 项目必须引进新的流程和工具的领域(规程),因为其中没有现有的工作方式。在有些情况下没有可以依赖的现有的流程和工具,这样就有必要引进大多数 RUP 及其支持工具。请参阅概念:在项目中实施流程,“彻底更改”一节,获取详细信息。 
        • 现有流程中存在的问题。侧重于改进组织有问题的领域。
        • 要使用哪些工具?如果项目已经决定使用某些工具,开发流程一般就应该覆盖 RUP 中相应的领域。
        • 项目对于变更的容量。在考虑组织的问题时,往往倾向于尝试一次解决所有问题,特别因为这些问题中很多是一起出现的。这通常是个致命的陷阱。 组织就像个人一样,可以包容变更,但只是在有限的范围内。如果对于变更的容量很低,您就必须跟着降低,可能在第一个项目中只能引进一个或两个 RUP 规程。
        • 项目成员缺乏知识或者是他们的弱项的领域。让开发流程覆盖这些领域。 要确保能很容易在 RUP 中找到恰当的信息。

        关于定义定制工作范围的更多信息,请参阅指南:RUP 定制。 

        关于影响针对项目定制流程因素的描述,请参阅指南:流程判别式

        确定要改进的领域不必在相同的项目中第一次引进。 减少未知因素的数量,并查看开发组织过去深受其苦的领域。 我们建议您用迭代的方式实施 RUP,就像概念:在项目中实施流程中所描述的那样。 示例:小型项目采纳 RUP 中也有小项目的指导信息。

        虽然可能会发现数个规程中有改进的需要,请考虑在几个项目期间以迭代的方式进行改进,而不要尝试“一次改变一切”的方法。 这种折衷的一个示例是:如果以前的项目受不清晰和/或不充分的需求之苦,或者如果用户主要抱怨交付的产品不能满足他们的需要,那么就可以引入“用例需求”而推迟引入新的 CM 流程。

        作出的折衷和生成的范围应记录为此流程的一部分,以将范围决策传达给外部项目干系人。

        制定特定于项目的内容
        目的: 在认为 RUP 流程框架中的覆盖率对于项目不足的领域中创建更多的“流程专业知识”。

        RUP 方法框架在使用基于 UML 的元模型定义的流程模型中显示。RUP 方法框架基于称为“统一方法体系结构”(UMA)的元模型。在概念:统一方法体系结构(UMA)的主要能力中描述了 UMA 的基础。 

        您可以通过添加角色任务和/或工作产品来扩展 RUP 框架,或者可以将特定于项目的指导信息添加到现有 RUP 框架。  

        作为任何特定于项目的流程的一部分,都应该有一套定制的可用资源,为生成项目工件提供具体的帮助和参考材料。举例来说,这样的资源有:

        • 关于如何生成某些工件的通用指南。
        • 为跨项目使用而定制的模板。这些模板将使用项目信息进行部分实例化。
        • 与项目已定义的一套可交付件和选择的技术相关的工件示例。
        • 可重用资产,如设计模式和代码库。

        在项目开始时,项目经理一般与流程工程师合作选择一套适当的资源,并使它们作为特定于项目的流程的一部分供项目成员使用。对其他资源的需要在每个迭代开始时重新提出。

        配置流程
        目的: 合理地确定流程的大小,以支持项目的确切需要。

        配置流程涉及选择流程中包含的方法内容(工作产品、任务、角色等)。关于为每个规程包含哪些方法元素的特定建议,请参阅为每个 RUP 规程提供的“<规程名称> 中的重要决策”指南。为给定的项目选择一套恰当的方法内容不是一个小任务。 要使流程有效,流程必须存在相关性,并且在不同方面都应该确定恰当的大小,如项目大小(资源和日历时间)、形式、技术平台、领域等等。

        关于记录各个工作产品的重要性以及是否将使用它们的分类方案的信息,请参阅指南:将工作产品分类

        为项目定义生命周期模型
        目的: 为项目定义生命周期模型。

        为项目定制流程的一个重要部分是确定一个生命周期模型供项目遵循,包括阶段和迭代的细分。对于这部分定制工作,流程工程师应该与项目经理紧密协作,因为选择的生命周期模型将充当项目规划流程的基础。根据项目的性质,可能需要调整 RUP 生命周期,以更好地与具体的需要相匹配。例如,原始开发通常要求比维护项目更多的努力。因此,生命周期说明应该根据项目的性质进行调整。关于各种类型的生命周期模型的讨论,请参阅概念:迭代

        除了选择整体的生命周期模型,确定如何执行与每个规程关联的工作流程(规程包含在定制工作中),以及确定在生命周期的什么时候引入规程的工作流程的每一部分也是十分重要的。确定如何执行工作流程涉及确定以何种顺序执行哪些活动。确定何时执行工作流程的每个部分涉及确定在生命周期的什么位置(例如,哪个阶段)引入所选的活动。 关于如何为每个 RUP 规程定制工作流程的信息,请参阅为每个 RUP 规程提供的参考工作流程的使用说明。

        您可以在此时指定的附加信息是各种生命周期点对于工作产品的时间和形式需求。例如,在哪个阶段创建和/或更新工作产品,对工作产品要求的形式是什么(例如,它需要客户签字认可吗)。

        对项目成员提供流程
        目的: 使特定于项目的流程可以为项目成员所用。

        完成初始的定制工作后,生成的流程需要以可使用的格式提供给项目团队。

        一种可能性是通过 Web 站点来提供流程,该站点可能驻留在组织网络的 Web 服务器上,或安装在每个团队成员的计算机上。如果项目成员大多数时间都连接到网络,则建议部署到 Web 服务器,以避免在项目生命周期期间由于流程更新而产生的任何开销。

        维护流程

        虽然定制工作大部分是在项目早期完成的,但它应该持续保持最新状态,因为项目团队在流程中不断发现障碍和其他问题。随着流程的展开,人们会在流程本身进行期间学到东西,流程工程师就使用学到的东西作为反馈来改进流程。 项目期间作出的评估也是改进流程的重要输入。

        小的调整一般由项目进行处理,而对特定于项目的流程的更新则是作为为即将到来的迭代准备开发环境的一部分进行的。此类流程改进往往会带来特定于流程的流程更新(例如,对工作产品模板和指南进行改进)。更为复杂的问题被作为对流程的变更请求提出。 

        迭代式开发的主要好处之一是它使项目团队能够逐步改善开发软件的方式。我们建议每个项目都包含流程工程小周期,由下列步骤组成:

        • 定义流程
        • 根据定义的流程执行项目工作
        • 评估您的工作
        • 改进流程


        图示
        关键注意事项

        无论执行哪个级别的定制,记录定制工作的结果(可能还有理由)都是十分重要的。另外,如果要定制的流程计划再次进行定制(例如,流程是针对整个组织进行定制的,所产生的组织流程计划将针对每个项目进行定制),则制定关于如何定制已定制的开发流程的指南也是十分重要的。 此类定制决策和建议可在单独的文档中记录,或作为开发流程的组成部分进行记录。关于定制级别的更多信息,请参阅概念:定制 RUP

        软件开发计划和组织对开发流程有很大影响,反之亦然。流程的定制必须与项目计划的制定相协调。例如,如果项目决定使用与 Rational Unified Process(RUP)中不同的一组阶段,则需要在定制的开发流程中记录此决定。另外,在定制开发流程之后,必须将其实例化为可规定的项目计划。 关于项目计划的更多信息,请参阅任务:计划阶段和迭代任务:制定迭代计划


        定制流程时,建议不要立即定制整个流程。而应侧重于下一步要应用于项目的规程。关于流程实施迭代法的更多信息,请参阅概念:在项目中实施流程。 

        开发组织的评估(如果可获取)会表明整个开发组织需要关注哪些领域。需要作出基于全面信息的决策:项目应该以哪些已确定的改进领域为目标。此决策将直接影响定制工作的范围

        定制项目流程本身应该当作一个项目,因为它有独立的规划、预算和控制机制。您应该根据投资收益率分析为它定义业务案例。插件的实际开发将受益于遵照 RUP 中的生命周期和规程进行操作。我们建议您在实际项目中实践插件背后的主要思想,然后再开始开发插件的项目。

        开发案例可用于记录定制决策(例如,定制 RUP 的哪些部分及原因),以及记录将来的定制工作的指南。根据所执行的定制级别,开发案例可作为开发流程本身的一部分包含到其中,或者仅用于规划、推动和记录定制工作。 关于定制级别的更多信息,请参阅概念:定制 RUP

        替代方案
        对于 RUP,存在有多种不同的定制级别。关于更多信息,请参阅概念:定制 RUP
        更多信息