用例——需求规格中定义功能需求的最佳实践
一直以来,很多组织的软件研制任务书与需求规格说明中的需求描述几乎一模一样。
这是不符合软件研制任务书和需求规格说明的定位的。软件研制任务书定位的是用户需求,是站在用户角度描述软件要完成的功能;而需求规格说明定位的是软件需求,是软件开发人员对用户需求分析的结果。
如果软件研制任务书与需求规格说明几乎一模一样,那需求分析在哪里呢?
其实,用例这种结构化的需求描述方法可以完美地体现需求分析的内容。在需求规格说明中应当使用用例来描述功能需求。这也使得需求规格说明与软件研制任务书泾渭分明,呈现出明显的不同。
广义的用例是系统中各个项目相关人员就系统行为所达成的契约。它描述了在不同条件下,系统对某一项目相关人员的请求做出响应时发生的系统行为。
当用用例来描述一个软件的需求时,那么被讨论的系统指的就是计算机软件,项目相关人员指使用该软件的人、拥有该软件的组织、管理机构和其他一些计算机软件。
用例的描述是结构化的,它通常包括以下内容:
执行者(actor):任何操作软件的人或其它软件。
项目相关人员(stakeholder):对软件有特定兴趣的人或物。
主执行者(primary actor):主动激活与软件的一次交互活动,从而达到某一目标的人或其它软件。
用例(use case):规定软件行为的协议。
范围(scope):待开发的软件。
前置条件和保证(precondition and guarantee):在用例执行之前和之后必须满足的条件。
主成功场景(main success scenario):正常情况下完成这一用例所需的一系列步骤。
扩展(extension):主成功场景执行过程中出现的异常情况。
扩展中的编号指在主成功场景中异常情况发生时所处的执行步骤号码(例如,步骤4a和4b指主成功场景中步骤4的两种不同情况)。
当一个用例引用另一个用例时,被引用的用例加下画线。
使用用例来描述功能需求,就很自然地确定了用例的操作者,前置条件和保证条件,正常情况下功能被执行的步骤,以及可能出现的异常情况。而这些在软件研制任务书中往往描述的并不清晰。
所以,在需求规格说明中使用用例来描述功能需求,不仅比软件研制任务书中更加具体、详细,而且也让开发人员“不得不”完成需求的分析。把用例说成是定义功能需求的最佳实践并不为过。
这正是:
描述需求用用例,自然而然去分析
需求规格任务书,各自定位很清晰
参考书目:编写有效用例,作者:(美)科伯恩(Cockburn,A.),译者:王雷,张莉,出版社:电子工业出版社