如何使用功能树描述需求功能的作用域范围?


一个软件功能或特征(feature)由一个或多个逻辑上相关的系统能力组成,这些能力可以为用户提供价值,并由一组功能需求来描述的。

许多业务分析师使用这些功能特征作为描述项目范围的一种方式。然而,一个简单的列表并不容易显示各种功能的规模和复杂性。快速浏览一个功能列表也不容易揭示项目的全部范围。

功能树是一种可视化的分析模型,它将一组功能以一种易于理解的格式组织在一起。

功能树格式
功能树的结构是以鱼骨图或石川图为基础的:

  • 石川图通常用于将信息组织成基于关系的逻辑分组。
  • 鱼骨图通常用于模拟因果关系,但特征树也使用同样的格式来组织软件解决方案的计划功能。

一个功能树最多可以显示三个层次的特征功能,通常称为第一层次(L1)、第二层次(L2)和第三层次(L3)。
L2功能是L1功能的子功能,而L3功能是L2功能的子功能。
L3以下是个别需求,在功能树上没有显示。
一个功能树不一定要有三层功能;如果解决方案和特征很简单,你可能只有L1功能和其更详细的功能需求。

功能树模型的基本构件是一个带有单行的功能。功能名称在树上简单地显示为单词,线条将相关的功能连接起来。
功能名称应该是简洁的,通常只有两到三个字。

每个功能都显示在自己的行上。每个子功能也有自己的线,它从父特征的线上分支出来。

这使得任何浏览模型的人都能理解解决方案的大体范围。

一个功能树案例
下图显示了一个化学品追踪信息系统的部分特征树。请注意,树的主枝或 "主干 "是一条直线,末端有一个椭圆,显示了正在开发的产品的名称。阴影框代表L1特征,如订购化学品和库存管理。每一个这样的功能都代表了一个用户可能想要执行的逻辑上相关的功能块。从L1分支上下来的线是L2特征。搜索和化学品请求是订购化学品的子功能。从 L2 分支上下来的分支是 L3 特性。本地实验室搜索和目录搜索是搜索的子特征。

功能树用途
功能树通常是在项目的早期创建的,以定义将要完成的工作的广度,但它在整个项目中都是有用的,可以沟通不断变化的范围,帮助团队成员组织和协调他们的工作。你可以在项目的愿景和范围文件或项目章程中包含一个特征树,也可以把它存储在其他地方,并在需要时加以引用。
像功能树这样的可视化模型的一个关键目的是促进项目利益相关者之间清晰而准确的沟通。这种清晰性比教条式地遵守 "正确 "的图表规则更为重要。

1. 发布计划
功能树可以在发布计划中被用来决定和显示哪些特性被分配到每个版本或开发增量中。
一个功能可以在一个功能的版本中全部实现,或者只选择某些L2和L3子功能来实现一部分。
未来的版本可以通过增加更多的L2和L3子功能来丰富这些基本实现,直到每个功能在最终产品中完全实现。
因此,一个特定版本的范围包括了从功能树中选择的L1、L2和/或L3特征的定义集。
功能树可以通过颜色或字体的变化来说明这些跨版本的特征分配。
例如,在图2中,蓝色的特征功能可能代表第一个版本,绿色的特征功能是第二个版本,而黑色的特征功能是尚未分配到一个版本。

2、功能分解
功能树一次显示了所有计划中的产品功能,让人快速了解解决方案的功能广度。以这种方式组织功能,可以很容易地识别缺失和不必要的功能。功能树提供了解决方案的功能分解,用于项目的所有阶段,包括需求的组织,围绕需求的工作规划,以及工作范围的限定。特征树提供了一个比简单列表更丰富的特征视图。

3、寻找差距
因为没有办法保证功能树是完整的,所以让你的利益相关者审查它,以确保它反映他们的期望。越早发现差距越好,因为在项目后期发现这些差距可能会使项目脱轨(并给参与者带来心理创伤)。在项目范围发生变化时,要及时更新功能树,以反映最终的计划功能集。

4、描绘项目范围
功能树应该被用来设定和沟通项目的范围。它是一个有用的模型,可以在管理人员和主要利益相关者之间传阅,以快速沟通解决方案的范围。因为你可以在一页纸上容纳这么多的功能,当你需要一个任何人都可以看的图来快速了解解决方案的要点时,功能树是一个很好的选择。对于打包的软件,特征树提供了产品功能的简短列表或描述中的特征。

当一个利益相关者中途加入一个项目时,对他来说,要了解一个现有系统的功能或一个新系统应该做什么,可能是一个挑战。功能树允许所有的团队成员在高层次上理解并同意解决方案的能力。他们在一个一致的深度上展示了解决方案范围的广度。

5、组织需求
功能树的划分提供了一种方便的方式来组织需求,使信息按功能分组。在一个需求交付物中,每个L1功能和它的子功能的所有需求都可以被组合在一起。对于前面讨论的例子,可以有一整套库存管理的模型和需求,另一个是健康和安全。

如果你的团队对纯文本的需求文档的局限性感到沮丧,可以考虑使用功能树来提供项目范围的一目了然的可视化表示。


banq:这是一种划分上下文的方法,以树干为核心的树枝聚合在一起,形成一颗树的边界,这是一种对问题域简单建模的方法,删除了一些树枝细节,留下当前版本的树枝,这种保留删减本身就是一种抽象建模的表达。