1、功能树

作为需求分析的手段,功能树是一种框架性工具,有助于需求分析人员一层一层地选择确定系统必须具有的各项功能与特性。作为需求分析的结果,功能树是一种功能表达结构,将“功能大类”、“功能组”和“功能项”的隶属于支持关系以“树”的形式呈现出来。

1.1、与功能模块区别

  • 功能树是一种功能分解结构,功能模块则是对系统进行结构分解的结果示意图。
  • 功能树刻画的是问题领域,功能模块刻画的是解决方案。
  • 功能树属于需求分析层面,功能模块属于设计层面。
  • 功能树是架构师从上游得到的,功能模块则是架构师亲自设计出来的。

2、粗粒度功能模块

从功能组到功能模块是粗粒度功能模块划分的常见手段。

2.1、获得功能树

总体而言有三种途经:1)拿到文档;2)进行沟通;3)分析产品。

功能树除了树状结构之外,还可能是列表结构、表格结构或者功能框图结构等。

2.2、评审功能树

  • 一是面向使用,体现使用价值。
  • 二是覆盖全面,没有范围遗漏。

2.3、粗粒度模块划分

一方面,业务上紧密相关的一组功能在实现上常会涉及相同的函数、类、数据结构等。因此将这组功能映射到一个功能模块,有利于设计的高聚合、松耦合,还有利于程序小组之间的分工。

另一方面,一些公共服务(例如报错处理、Log日志、安全验证)会用于同时支持多组功能的实现,它们不单独属于任何“功能模块”,应当进行独立的模块化,将这些公共服务分别放入相应的通用模块或通用机制中。