UML软件工程组织 |
RUP:通过用例应用需求管理 | ||
根据领域的不同,需求管理可遵循的方案有无限多种。下面的方案给出了六个详细的工作流程,它们适用于每一个关键的需求管理技巧,但也可以应用到任何领域。 下面的工作流程图摘自 Rational Unified Process [6],需求工作流程明细。这些工作流程用角色、活动和工件(输入或输出)表示,图 9 的活动图对它们进行了概括。旁边的文字简单描述了每个工作流程,希望藉此增进读者对改进需求管理流程的理解和兴趣。关于 Rational Unified Process 的更多信息,可参考 www.rational.com。 图 9 - Rational Unified Process 中的需求工作流程 工作流程明细:分析问题 在问题分析中,主要的活动是制定项目前景。此活动的结果是产生了一个前景文档,它确定了待建系统的高级用户或客户视图。前景文档将初始需求作为关键特性表述,这些特性是系统为了解决重大问题并满足关键涉众需要而必须具备的。系统分析员在此工作流程中扮演主要角色。系统分析员应该具有问题分析领域的专业知识,对问题有一定的理解,还应该能描述其认为可以解决问题的流程。此阶段要求各个项目涉众积极参与,还应该考虑所有相关的涉众请求。 要开始管理依赖关系活动,应该为职责分配属性,如基本原理、相对值或优先级以及请求的来源等。随着前景的发展,分析员确定可能用例的用户和系统(主角)。主角是用例模型的首要要素,它们将定义系统的功能性和非功能性技术需求。 图 10 - 分析问题 工作流程明细:分析问题 启动:一个或多个认识到问题存在的涉众启动工作流程。 开发团队中的系统分析员可以和这几个最初的涉众展开会话,帮助他们描述需要解决的问题。对所认识问题的简要说明达成一致意见是很重要的。下表列出了问题说明的关键元素: 问题 确定问题 对涉众影响 列出受问题影响的涉众 问题的影响 描述问题的影响 成功的解决方案 列出成功解决方案的一些主要优点 问题说明简明扼要解释了项目的目的。问题分析员深入调查所有涉众请求和初始商业理由,包括显著优点以及大致估计的成本等。在定义问题说明的同时,团队还应该编写词汇表,记录常用术语并统一其定义。 用例模型简介 用例模型包括主角、用例以及它们之间的关系。主角代表了必须与系统交换信息的所有事物,包括通常所谓的用户。当主角使用系统的时候,系统执行一个用例。好的用例是一个事务序列,该序列为主角提供一个可评测的价值结果。用例集合是系统的完整功能。 Jacobson I., Christerson M., Jonsson P., Overgaard G., Object-Oriented Software Engineering - A Use Case Driven Approach, Addison Wesley - ACM Press, 1992 问题分析员还确定系统的主要主角。主角是系统的用户或者将与之交换信息的其他任何系统。在这一阶段,问题分析员应该简单确定主角与系统交互的一些显而易见的方式。说明应面向业务流程而非系统行为。例如,预算程序可能会允许一个类型的主角“制定部门预算”,而其他类型的主角可以“合并部门预算”。系统分析员以后可以将它们用到其他用例中,这些用例与特定系统行为结合起来更有意义。例如,“制定部门预算”可以产生像“导入电子表格信息”以及“创建预算视图”等系统用例。 上述问题分析会话通常进行不止一次,会话对象可能是不同的涉众,并且中间还夹带开发团队的内部会话。与涉众打交道的系统分析员将主持一次与开发团队成员的会话,展望问题的技术解决方案,从初始涉众输入中导出特性,并起草前景说明,即待建系统的第一个定义。为了方便初始涉众理解提议的解决方案,系统分析员可以利用建模工具或手工绘图技术来完善前景说明。 要从多方面向初始涉众咨询,以帮助改进问题说明,限制可能解决方案的个数和规模。涉众和系统分析员就关键特性的优先级进行谈判,对资源及开发资源所需的工作量取得一般性的理解,藉此来管理该工作流程中的依赖关系。尽管优先级和工作量/资源的估计不可避免会发生变化,但提早管理依赖关系可建立起一个在整个开发生命周期中一直延续使用的重要模式。这是规模管理的本质所在,是一个项目成功的早期预报器。 在经过几次草案更新后,前景文档进入团队必须决定是否对额外需求获取进行投资的阶段。同时,商业理由的批准过程也分别开始启动了。本文不打算深入探讨商业理由,只对其进行简单说明。商业理由描述: 1 环境(产品领域、市场和规模), 2 技术方案, 3 管理方案(时间安排、风险、对成功的客观评测方法), 4 以及财政预测。 工作流程明细:理解涉众需要 如果初始问题分析证明增加投资是合理的,则郑重开始理解涉众需要工作流程。这一阶段的关键活动是获取涉众请求。主要结果是收集确定优先级的涉众需要和特性,利用此结果可改进前景文档,加深对需求属性的理解。另外,在这个工作流程中,您可以根据用例和主角对系统展开讨论。另一个重要输出结果是经过更新的词汇表,它使团队成员对常用词汇有一致的理解。 工作流程明细:理解涉众需要 系统分析员和关键涉众通过访谈、专题讨论会、示意板、业务流程用例和其他手段,确定更多的涉众,获取他们的请求,确定关键需要和特性。这些会话由一个或多个系统分析员主持进行。需求专题讨论会是最有用的需求获取手段。该流程包括用户、帮助台人员、企业主、测试员以及其他对提议项目的结果有利害关系的个人。涉众请求通常是不明确、重叠甚至是离谱的。除正式的获得结果外,涉众请求还可以用格式设计很好的文档、数据库的缺陷和扩展请求或者电子邮件和群件线程等形式表达。系统分析员记录已确定的关键涉众需要,对其进行分类和区分优先次序。 理解涉众需要:“取悦客户”从何处开始 涉众请求要尽可能在请求涉众使用的语言和格式中获取。与后继的需求类型(通常由具有丰富流程知识和技术的项目团队成员创造)不同,涉众请求通常很难表达清楚。涉众请求经常交叉或重复。而且涉众请求的表达形式多种多样,从纸条到扩展请求数据库等等都有。 分析员(或代表分析员角色的团队)必须复审所有需求,对其进行解释、分类,甚至还要重新录入(不重写),在前景文档中将其翻译成关键涉众需要及系统特性。根据开发的严格程度以及工具的可用性,可应用一部分或所有涉众请求、需要与特性之间的可追踪性,帮助涉众理解在决定系统需求时如何解释清楚他们的请求和需要。 通过应用理解涉众需要工作流程,说明获取请求和满足涉众需要的非常重要事项,对建立涉众对开发团队能力的信心而言具有重大意义。 对涉众需要有了更好的理解之后,开发团队里的系统分析员改进前景文档,将主要精力放在制定“产品定位说明”上。该说明用简洁的两三句话确立项目的显著价值。说明应包括预期用户、项目解决的问题、所带来的利益,以及它所取代的竞争者。所有的团队成员都应该理解该项目的主题。系统分析员还更新词汇表,促进团队对术语的共同理解。 从多方面向关键涉众咨询,以便对从理解涉众需要得到的新特性的优先级进行协商,获得对当前开发新特性所需资源和工作量的理解。利用问题分析,在该工作流程中管理依赖关系有助于管理项目的规模。它还建立起涉众请求、需要与系统特性之间的可追踪性,让涉众相信他们的建议确实得到考虑。 工作流程明细:定义系统 最初的两个需求工作流程明细(分析问题和理解涉众需要)创建了关键系统定义的早期迭代(包括前景文档指定的特性)、用例模型的第一个大纲,以及初始需求属性。下一个工作流程明细即定义系统,通过改进特性定义,添加新主角、用例和补充规约,完善了高级系统需求说明。 图 12 - 定义系统 工作流程明细:定义系统 更新词汇表是为了反映当前对术语的理解,这些术语用于描述在用例模型及补充规约中捕获的特性和需求。 系统分析员使用在改进的前景文档中定义的特性集来派生用例并以说明,这些用例详细阐述用户对系统预期行为的观点。用例模型作为客户、用户和系统开发人员之间的合同,规定了所选特性如何在系统中发挥作用。它有助于系统开发人员设置符合现实的期望和目标,帮助客户和用户验证系统是否达到了这些期望。 一些系统需求没有很好地符合用例。系统分析员就在补充规约里说明这些需求。许多非功能性需求,如可用性、可靠性、性能、可支持性等,都放在补充规约中。应该注意,这些类型的许多非功能性需求专门针对单个用例。用例阐释者最好将这些需求放在用例规约本身(请参见改进系统工作流程),在补充规约里描述系统范围的非功能性需求。 在该工作流程明细中,系统分析员创建和设置了补充需求的属性(如优先级和相关用例)。除此之外,系统分析员还为初始用例和新用例添加并更新属性值。 最后,系统分析员通过追踪重要用户需要和关键特性到相关用例以及补充规约说明的需求,以此来管理依赖关系。 工作流程明细:管理系统规模 在确定特性级别的需求,描述大多数主角、用例以及补充规约所指定的其他需求后,系统分析员应该收集需求属性(如优先级、工作量、成本和风险等),并尽可能精确地为其指定属性值。这使得人们对如何确定系统发布的初始规模有了更好的理解,也让构架设计师能够从结构上确定具有重要意义的用例。 由项目和开发管理人员一起制定的迭代计划,首次出现在该工作流程明细:管理系统规模中。迭代计划也是一个开发计划,它定义为发布版计划的迭代次数和频率。早期的迭代应计划规模内风险最高的元素。 管理规模工作流程的其他重要输出包括软件构架文档的初始迭代和一个修订过的前景文档,前景文档反映分析员和关键涉众对系统功能和项目资源的加深理解。 与前面提到的商业理由一样,迭代计划的第一个问题是,软件构架文档不是需求管理工作流程的一个工件,尽管它与该工作流程有关而且是 Rational Unified Process 的一部分。这部分内容不在本文的讨论范围内。 经验告诉我们,成功管理规模的关键在于,仔细考虑分配给涉众需要、特性、用例和补充规约所指定的其他需求的属性值,与代表性涉众定期进行开放而诚恳的交流。 图 13 - 管理系统规模 工作流程明细:管理系统规模 构架设计师为用例的风险范围、构架重要性和构架覆盖范围确定优先顺序。尽管定义系统时用到了许多用例和补充规约需求,但通常只有用例的一个子集才是好的系统构架的关键。确定用例的优先级后,构架设计师改进迭代或开发计划,利用 Rational Rose 这类工具建立系统构架的用例视图模型。 系统分析员通过改进前景中特性的需求属性来管理依赖关系。他们还对用例和补充规约里的需求进行改进。系统分析员确保涉众需要、特性、用例需求和补充规约需求存在适当的可追踪性。这里特意使用了“适当的可追踪性”。请参见本文中插入的关于可追踪性的说明文字。 在整个项目中,该步骤是最为重要的步骤之一。第一次,我们对所提议的系统了解如此之深,使得我们能对需求、项目资源和交付日期作出重大承诺。同时也必须理解,这些需求将会随着了解程度的加深而变更。如果在前三个工作流程对依赖关系进行管理,则执行这一步骤就会容易得多,将来进行变更也更容易。 贯穿项目的整个生命周期,随着形势和环境的变化,由于系统分析员必须就修改后的项目规模和前景与关键涉众进行协商,因此将会多次重新检查该工作流程明细。涉众和开发团队成员只有把该步骤看作一个自然前进过程 - 既不要让用户措手不及,也不要企图向组织索要更多时间和金钱 - 才能成功管理项目规模,使之与可用资源相符合。该工作流程在项目的主要里程碑处需重复多次,以便评估对系统及系统问题的新认识是否要求变更规模。尽管已承诺的需求、预算和期限很难更改,但随着对确定优先级的用例、补充规约和早期系统迭代的深入理解,不可避免会导致人们重新考虑系统规模。 需要重申,在到达改进阶段之前,以及在贯穿项目生命周期内发生变化前,项目团队应维持日常的规模管理,这一点很关键。涉众代表必须理解并相信,在难度不断增加的规模协商中,他们的优先考虑和利益始终得到认真的对待。在改进系统需求之前,只有重要的需求才有待于协商或修改。除非建立有效的规模管理制度,否则项目注定会变成一次“死亡之旅” - 规模过大的项目将残酷地走向延期和成本超支的绝路。 工作流程明细:改进系统定义 进入改进系统定义后,该工作流程明细假设已经概述了系统级别的用例并至少简要描述了主角。通过项目规模管理,前景中的特性再次确定了优先顺序,现在可以相信,这些特性在比较严格的预算和期限下是可以实现的。该工作流程的输出是对系统功能更深入的理解,这些系统功能在详细用例、已修订的补充规约以及系统本身的初期迭代中进行说明。 显然,不是所有的系统都有用户界面,不是所有的初期迭代都包括 GUI 元素。这里我们仅仅将它们作为初期迭代的示例。其他例子包括原型、模型和示意板。 图 14 - 改进系统定义 工作流程明细:改进系统定义 用例阐释者详述每个用例的事件流定义、前置和后置条件以及其他文本属性。为最大限度地减少工作量并提高可读性,建议使用标准文档格式或用例规约模板来记录每个用例的文字信息。创建考虑周全的用例规约对系统质量至关重要。制定规约要求对涉众需要以及与用例相关的特性有透彻的理解。让项目团队的若干成员(如软件工程师)参与用例创建是再好不过了。 同时,用例阐释者使用并非用例特有的附加需求对补充规约进行修订。 用户界面设计员模拟系统的用户界面并进行原型设计。这项工作与用例的演进密切相关。 对每个需求有更深入的理解后,用例阐释者和系统分析员对其工作量、成本、风险以及其他属性值进行修正。 系统定义改进流程的结果提交给另一轮管理规模工作流程明细。对系统有更多的了解后,可能需要改变优先级。毫无疑问,如果必要,系统发布的规模将需要复审和改进。 工作流程明细:管理需求变更 当变更发生时 -- 变更是不可避免会发生的 -- 管理需求变更工作流程明细需持续应用于项目生命的全过程,这与管理系统规模工作流程明细一样。该工作流程的输出可能导致对每个工件的修改,这又要求在所有的项目团队成员和涉众之间进行有效的交流。 在这个工作流程中,我们引入了受需求工作流程影响的其他工件。需求的变更必然影响在分析设计工作流程中表示的系统模型。需求变更还影响用于验证需求是否正确实施的测试。在前面的例子中,这些工件是 Rational Unified Process 的组成部分,但不是本文论述的主题。在管理依赖关系流程中确定的可追踪性关系是理解这些影响的关键。 可追踪性 在需求领域,与可追踪性有关的事务有很多。许多事务都具有追踪单个客户需求到每个相关规约、测试、模型元素以及最终源码文件的特点。的确,一些可追踪性是成功的需求变更管理的关键。 然而,这里事先警告,在项目的整个生命周期中,建立和维护各种形式的可追踪性都需要投资。像所有的投资一样,可追踪性的投资回报点逐渐减少,这取决于具体情况。本文强调在不同需求类型之间进行追踪的价值。这是一个很好的起点,而且可以用 Rational RequisitePro、Rose、SoDA 和 TeamTest 这样的工具使之自动化。我们相信,你终将发现某个级别的需求可追踪性是好的投资对象。 要了解需求可追踪性策略的更多信息,请参见白皮书“通过用例进行需求管理的可追踪性策略” [6]。 管理需求变更工作流程的另一个重要概念是需求历史追踪。通过把握需求变更的性质和基本原理,复审员(工作受变更影响的任何软件项目团队成员)将收到对变更作出正确响应所需的信息。 图 15 - 管理需求变更 工作流程明细:管理需求变更 出于各种原因,任何涉众或项目团队成员都有可能提出变更需求的请求。所有变更请求 (Cr),包括对需求或扩展请求甚至缺陷的变更,都应该通过同一个变更请求管理 (CRM) 流程进行疏导。至少,这应包括在一个集中数据库系统中记录并追踪请求,并由中央复审委员会执行复审。CRM 流程的详情见 Rational Unified Process 的其他小节。 系统分析员应该协调最好由变更控制委员会 (CCB) 执行的复审活动,收集并检查所有的变更请求,并将它们分类为: 实施中不影响需求的缺陷, 对现有的某类型需求的修改,或者 扩展修改。 分类后,按在其他需求工作流程中描述的方法为所提出的需求变更指定属性和值。 在复审变更请求的时候,系统分析员向一个由涉众代表和项目团队成员组成的 CCB 陈述确定优先顺序的需求变更。超过资源限制的规模修改请求被拒绝,或者将其上交给涉众代表,涉众代表有权批准对日期以及预算事项的必需变更。 CCB 批准或拒绝需求变更。 系统分析员把需求变更传达给需求阐释者,或直接修改前景、用例、补充规约文档或其他需求工件中的需求。 需求复审员(开发人员、测试员、经理及其他团队成员)通过审查需求历史,对需求变更对他们的工作造成的影响进行评估。最后,他们实施变更,对他们有权修改的相关需求作适当改动。 总结 管理需求的需要并不新鲜。那么,究竟是什么值得我们去思考呢? 首先,如果项目常常不能满足客户、错过最后期限和预算超支,就有理由重新考虑开发方案了。在设计方案时,如果您确信与需求相关的问题正在消耗你的开发工作,就有理由考虑改进需求管理了。 其次,本文总结的需求管理方案体现了几千个案例的集体经验和智慧,而且代表了许多个人深思熟虑的观点,他们在需求管理领域与客户合作已有数年时间。我们认为,他们的贡献 - 以及 Rational Unified Process 对这些贡献所作的透彻陈述 - 总结起来代表了需求管理的“最佳方案”。你将发现这些需求建议是最可靠的。 作者向 Dr. Ivar Jacobson 对本文的直接和间接贡献,以及 Dean Leffingwell、Dr. Alan Davis、Ed Yourdon 和 Elemer Magaziner等人的帮助表示感谢。尤其,我们要感谢 Rational Software 的客户,他们在数以百计开发项目中应用和改进了这些方案。 最后,在过去的两年内,生产有效软件开发解决方案的领先公司 Rational Software 接受需求管理的挑战,生产了多种工具来使执行这一艰巨任务实现自动化。长期、普遍存在的需求管理问题得到了解决。也许这最终才是今天在需求管理领域开始追求卓越的最佳原因。 关于上述概念的完整论述,请参考 Dean Leffingwell 的关于软件需求管理的优秀著作[7]。 参考资料 [1] CHAOS, The Standish Group International, Inc., Dennis, MA, 1994, 1997. [2] Computer Industry Daily, December 12, 1997. [3] Dorfman, M. and R. Thayer, Software Engineering, IEEE Computer Society Press, Los Alamitos, CA, 1997 pp.79. [4] Dorfman, M. and R. Thayer, Software Engineering, IEEE Computer Society Press, Los Alamitos, CA, 1997 pp.80. [5] Spence, Ian and Leslee Probasco, “通过用例进行需求管理的可追踪性策略”, 白皮书, Rational Software Corporation, 1998. [6] Rational Unified Process?, Rational Software Corporation, Cupertino, CA, 1999. [7] Leffingwell, Dean and Don Widrig, Managing Software Requirements - A Unified Approach, Addison-Wesley, 2000. |
版权所有:UML软件工程组织 |