在产品计划中安排要求
在对您的客户要求进行充分分析并了解产品的预期功能之后,必须制定一份实现该产品的计划。或者,对于现有产品,必须找出所缺少的功能并制定一份更改计划。不过,要求不会自动告诉您该计划。
本主题从一组要求着手,概述了一种获取计划的方法。这仅仅是将在 Visual Studio 上有效运行的诸多方法之一,您应对此进行调整以使其能够满足您的需求。
主题内容
要求和功能
方案分解
为迭代指派叶方案
功能 - 在每次迭代中完成的要求
服务质量功能
产品计划
迭代计划
要求和功能
此方法涉及两类要求:客户要求和功能。客户要求是您通过对客户的产品预期功能进行分析所获得的。功能是产品计划中与一小部分客户要求相对应的项。每个功能可能包含多个客户要求片段,这些片段源自用户体验的不同方面和不同功能区域。
客户要求
客户要求通过与预期用户和其他利益干系人进行商讨来确定。
为了帮助您分析这些要求,您通常需要创建演示图板和模型,并将方案分解为多个更细小的步骤,从而形成一个树。可以将建模元素(如用例和活动)链接到这些方案工作项。
客户要求包括两种:
方案(也称为用例),用于表示为实现特定目标而在用户和产品之间进行交互的序列。示例方案可以采用类似于“用户购买书籍”这样的标题。
服务质量要求,包括性能、安全性、可用性和其他条件。
可以将这些要求表示为要求类型的工作项,并将“要求类型”字段设置为“方案”或“服务质量”。
应将这些要求工作项链接到系统测试,以便可以确保测试所有要求。
使用客户要求查询列出这些要求工作项。
使用“要求进度”报表监视已满足的要求。
有关更多信息,请参见制定要求、共享查询 (CMMI)、“要求进度”报表 (CMMI)和针对产品积压工作项、用户情景或要求创建测试。
功能
功能是产品计划中表示一组任务的项。制定产品计划时,开发团队代表和利益干系人为迭代指派功能。有关更多信息,请参见规划项目 (CMMI)。
将功能输入为要求工作项,并将“要求类型”字段设置为“功能”。
功能标题应采用用户术语指定用户通过该产品将能实现在早期迭代中无法实现的功能。计划中不包含任何无法提供新用户价值的项,或者包含很少这样的项。
例如,以下功能序列可形成一个实现计划:
“购买者可以从列表中挑选书籍,并将其添加到意愿清单中。”
“书籍列表显示价格。在意愿清单中显示总价。”
“供应商可以为书籍附加标签。购买者可以按照标签筛选书籍列表。”
请注意,没有任何功能仅涉及用户体验中的一个步骤,并且没有任何功能仅涉及产品体系结构的一个部分。相反,在实现功能时,将重新访问多个功能,并为这些功能扩充新的用户价值。
功能在产品计划期间指派给迭代。必须将某一功能下的所有任务指派给同一迭代。有关更多信息,请参见规划项目 (CMMI)。
功能描述对客户要求的部分实现。它是客户要求的一部分,并且可能会在有限范围内实现每个客户要求。
每个功能都可以链接到一个或多个测试用例,以测试该功能表示的部分要求。这些测试用例是链接到客户要求的系统测试的一部分。
功能状态不能标记为已完成,直到已完全定义和通过其测试。
每个功能都是一组开发和测试任务。它是 Visual Studio Team Foundation Server 任务树的根。开发任务实现该功能描述的部分要求。测试任务设计和执行相应测试用例。
使用“产品要求”查询可以列出功能。若要显示产品计划,请单击“列选项”并将“迭代路径”添加到显示的列的列表中。若要按迭代进行排序,请单击“迭代路径”列。有关更多信息,请参见共享查询 (CMMI)。
查找功能
将要求划分到渐进式功能中是一项创造性任务,它需要开发人员、分析人员和利益干系人的共同参与才能完成。功能 (feature) 定义了产品的某一部分功能 (functionality),可以切合实际地独立于周边其他功能独立实施。因此,一组可行的功能定义和计划排序部分取决于系统体系结构。
由于这个原因,产品计划和初始设计必须同时进行,特别是在迭代 0 中,在此期间,将制定大部分计划的草图。
方案分解
为了帮助您将要求安排到功能中,将方案分解为多个更小的步骤会很有帮助。
使用演示图板常常有助于此活动的开展。演示图板是用于演示方案的图片序列。UML 活动图有助于显示备选路径,UML 序列图有助于讨论多个参与者之间的交互。在使用这些工具分析方案之后,您可以将分解后的方案输入到团队资源管理器中。这样,您可以将测试用例链接到这些方案,从而确保要求已满足。有关更多信息,请参见 UML 活动图:准则和 UML 序列图:准则。
在本演练中,由于篇幅有限,您将采用小型方案树的形式输入一组客户要求。这将提供一个创建功能所基于的示例。
在 Excel 中打开客户要求树
在团队资源管理器中,打开 MSF for CMMI Process Integration 5.0 版项目。
依次展开**“工作项”、“团队查询”和“计划和跟踪”,然后运行“客户要求”**。
如果未显示**“迭代路径”和“要求类型”列,请单击“列选项”**,然后将这些列添加到显示列表中。
您还可能需要添加**“区域路径”**列。
设置查询以显示树。
单击**“编辑查询”**。
将**“查询类型”设置为“工作项树”**。
单击**“保存查询”**。
如果无法将该查询保存到**“团队查询”,请将其保存到“我的查询”**。
单击**“查看结果”**关闭编辑视图。
单击**“在 Microsoft Office 中打开”,然后单击“在 Microsoft Excel 中打开查询”**。
在 Office Excel 中,如果标题为**“标题 1”的列未后跟有标题为“标题 2”和“标题 3”的列,请单击“团队”选项卡,然后单击“添加树级别”**以创建其他列。
现在,您可以按批处理方式方便地输入方案。
在实际情况下,您可能会在开始时输入一个级别的方案,然后在单独的操作中将每个方案分解为更小的步骤。
输入方案
在紧靠现有工作项(如果有)末行后的行中,在**“标题 1”**列中输入顶级方案的标题:
客户订购餐点。
在与业务利益干系人的讨论中,应确定构成顶级方案的主要步骤。
在紧靠顶级方案后的行中,在**“标题 2”**列中输入这些步骤:
客户选择餐馆。
客户从餐馆菜单中选择菜单项,以下达订单。
客户输入支付详细信息。
餐馆准备并配送订单。
在客户提供的卡中扣除相应费用。
深入分析(可能使用 UML 活动图或交互关系图)为其中的某些方案生成更详细的步骤。
在紧靠“客户选择餐馆”下方,插入某些行,然后在**“标题 3”**列中输入这些步骤:
客户输入配送区域的邮政编码。
网站显示一个可配送到该地址的餐馆列表。
客户可以浏览显示的所有餐馆的菜单。
客户选择一家餐馆以便开始订购。
删除任何空行。
在所有新行的**“工作项类型”列中,将类型设置为“要求”**。
将所有新行的**“要求类型”列设置为“方案”**。
若要将要求发布到 Team Foundation Server,请选择工作项表中的任何单元格,然后单击**“团队”选项卡上的“发布”**。
现在,您已建立一个客户要求树,您可以在 Office Excel 或团队资源管理器中对该树进行进一步编辑。
为迭代指派叶方案
“叶”方案即自身没有任何子级的方案。
通过设置迭代路径字段,将方案中最基本的步骤指派给迭代。可以在 Office Excel 视图中执行此操作。
然后,将具有子级的每个方案指派给最早的迭代,在此迭代中,可以将方案视为可用方案。
在下面的示例中,在迭代 1 和 2 中实现最基本的方案,并在后续迭代中添加其他功能。
迭代 2 - 客户选择餐馆。
迭代 5 - 客户输入邮政编码。
迭代 2 - DinnerNow 显示餐馆列表。
迭代 3 - 客户可以浏览各餐馆的菜单。
迭代 2 - 客户选择一家餐馆以便下达订单。
迭代 1 - 客户从菜单中选择菜单项,以下达订单。
迭代 1 - 客户单击菜单项以将其添加到订单中。
迭代 2 - 订单汇总显示订单总价。
迭代 1 - 客户单击“确认”以完成订单。
迭代 4 - 客户输入支付详细信息。
迭代 2 - 餐馆准备并配送订单。
迭代 4 - 在客户提供的卡中扣除相应费用。
通过这些指派,您可以在早期阶段制定系统整体设计,而将许多详细信息留到以后处理。被视为低风险的某些方面可以留到后续迭代处理。在本示例中,团队曾经有过链接到卡支付系统的经验。因此,该团队自信地将此部分留到后续迭代处理。
在某些情况下,您需要进一步分解叶方案,以便将更全面的简化版本划分到不同迭代中,如下图所示。
功能 - 在每次迭代中完成的要求
功能是对用户在每次迭代完成后可执行的功能进行汇总的要求。您可以为每次迭代创建多个功能。将功能输入为要求工作项,并将“要求类型”设置为“功能”。
使用方案到工作项的指派方式帮助您定义功能。下面的示例功能计划派生自上一部分中方案到迭代的指派方式:
迭代 1
- 客户从菜单中选择菜单项,将其添加到订单中,并添加配送地址。
迭代 2
客户首先显示一个餐馆列表,并选择其中一家餐馆。
客户完成订单之后,将在所选餐馆的屏幕上显示订单。
将在订单上显示菜单项价格和总价。
迭代 3
在配送准备好的餐点之后,餐馆将订单标记为“已完成”。针对餐馆记录餐点。
每家餐馆可以输入和更新其菜单。
客户可以浏览各餐馆的菜单,然后选择某家餐馆。
迭代 4
客户在完成订单之后输入支付详细信息。餐馆将订单标记为“已完成”之后,将在客户提供的卡中扣除相应费用。
针对标记为“已完成”的订单向餐馆付款。
迭代 5
- 餐馆可以设置其配送区域。客户会话开始时输入邮政编码。网站仅显示可向当地提供配送服务的餐馆。
部分实现的方案
将方案分解为多个小步骤有助于您将某些可在早期实现的步骤与其他可在稍后实现的步骤区分开来。
但是,有时您可以区分方案的其他方面。在本示例中,团队可以在早期迭代中实现用户体验的基本版本,并在稍后进行改进。因此,您可以添加以下功能:
- 迭代 6 - 餐馆可以选择其菜单的配色方案和字体,并上载它自己的徽标和餐点图片。
此类功能并非从步骤分解过程直接形成,而往往在演示图板讨论中形成。用户体验功能适用于后续迭代。
输入并检查功能
创建工作项类型为要求的工作项,并将“要求类型”字段设置为“功能”。将功能标题设置为简短说明。
若要成批输入功能并讨论它们到迭代的指派方式,请调整“产品要求”查询,并使用 Office Excel 视图。
输入和编辑功能
在团队资源管理器中,打开 MSF for CMMI Process Improvement 5.0 版项目。
依次展开**“工作项”、“团队查询”和“计划和跟踪”,然后打开“产品要求”**。
单击**“列选项”,并将“初始估计”和“迭代路径”**添加到显示的列的列表中。
单击**“在 Microsoft Office 中打开”,然后单击“在 Microsoft Excel 中打开查询”**。
在询问是否保存查询的对话框中,单击**“是”**。
(可选)在 Office Excel 中,输入功能标题列表,设置迭代路径,并按迭代路径对行排序。
若要将更改发布到Team Foundation Server,请单击工作项表中的任何单元格,然后单击**“团队”选项卡上的“发布”**。
跟踪要求的功能
可以通过以下方式将功能链接到要求:
将功能工作项链接到其迭代的叶方案要求。由于页方案已具有父级,因此必须使用“相关项”链接来链接功能工作项。
将测试用例工作项链接到这些工作项所测试的方案和服务质量要求。在开发功能时,请将功能链接到应通过的部分测试用例。通过这种方式,测试用例充当功能和客户要求之间的链接。
服务质量功能
在软件设计方面,服务质量要求通常具有普遍性。例如,安全性要求一般不与特定开发任务相关。
尽管如此,应为每个服务质量要求创建一个功能工作项,该工作项的子级主要为测试任务,用于确保满足服务质量条件。这些工作项称为服务质量功能。
某些服务质量功能可以包含开发任务。例如,在早期迭代中,您可以实现仅处理少数用户的系统版本,并将其作为概念证明。在后续迭代中,您可以按照客户要求规定添加指定目标功能的功能。
产品计划
请在每次迭代开始之前召开产品计划评审会议。首次产品计划会议创建计划,后续会议基于早期迭代对该计划进行评审。有关更多信息,请参见规划项目 (CMMI)。
在产品计划评审中,围绕功能与业务利益干系人展开讨论,做好重新设置功能优先级的准备,并将这些功能安排到不同迭代。会议应包括业务利益干系人和开发团队代表。
会议讨论开发各个功能的顺序。可以对“产品要求”查询的 Office Excel 视图进行投影或屏幕共享,并按迭代对功能进行排序,从而展开讨论。
备选方法是按特定序列放置功能,然后考虑可在每次迭代中实现的功能数。例如,开发人员可以讨论是否应将迭代 2 中的“客户可以显示价格”移至迭代 3,而不在此序列中移动它。若要按顺序放置项,请在电子表格中添加一个名为“级别”的额外的列,并插入表示顺序的整数。按此列对电子表格进行排序。不会将这些等级存储在 Team Foundation Server 中,但是,您可以保存电子表格。当再次打开电子表格时,请单击工作项表中的任何单元格,然后单击“团队”选项卡上的“刷新”。
产品计划会考虑功能优先级和开发成本。优先级由业务利益干系人提供,并辅以开发人员提供的有关风险的某些指南。成本估计由开发人员提供。为了准确估计成本,开发团队必须已对产品体系结构开展了某些工作,并且可能需要从早期迭代中汲取一些经验。为此,应在每次产品计划评审中完善成本估计。
迭代计划
请在产品计划评审之后计划迭代。产品计划确定迭代结束时将交付的功能。迭代计划确定团队为实现和测试功能将开展的工作。
下面的活动隶属于迭代计划的一部分:
创建开发和测试任务,并将这些任务作为子级链接到功能要求。
针对要在每个功能中制定的客户要求方面创建测试用例。应将测试用例链接到客户要求,以便可以监视要求的完成情况。
也可以将测试用例链接到相应功能,以便可以跟踪功能和客户要求之间的对应关系。不能将功能标记为已完成,直到已通过链接的测试用例为止。
有关更多信息,请参见计划迭代 (CMMI)。