IBM Rational Unified Process(RUP) 提倡通过用例来提取系统中可操作的需求。 1 软件需求说明书,即 Software Requirements Specification (SRS),包括软件的所有需求,其中包括很多相关的文档。用例就是其中的一个重要部分。 SRS主要包括以下几部分:
用例模型,包括:
用例图:可视化的描述系统用户,和系统为用户提供的服务。
角色定义:用文字描述系统功能,和系统所需的服务。
用例描述:用文字描述系统提供的主要功能。
软件补充规格文档:这个文档包括了整个系统相关的各种需求,和一些与对系统用户和用例都不直接相关的隐藏需求。
在RUP方法中,这个需求文档是后续的分析和设计工作的起点。不同的开发方式,对项目的推动力是不同的,也就会产生不同的文档。如果软件发布之后,你还总是在不停的修补缺陷,你很可能根本没有需求文档。只能从Bug报告中看出,软件已经和最开始设计的样子不一样了。如果你在维护或者改进一个软件版本(比如增加一项新功能),你可能有一两个用例,他们描述了这些新功能和用户之间如何交互,但是你不会有软件补充规格文档,因为这些功能之外的部分并没有改变。
在这里,用一个虚构的软件项目"green-field" 作为例子。这是一个面向对象的软件项目,使用UML来描述系统中的各种概念与关系。读者需要具有对象和类的基础知识,熟悉UML 版本1.x 或者2.0中的类图、顺序图和协作图。
用例分析活动
下面我们讨论一下RUP中的用例分析。如图1所示,将RUP中结构分析的结果整合起来。
图1: 结构分析的工作流程(early Elaboration)
显而易见,严格来说的话,软件开发过程应该侧重于企业系统级的架构设计,以及软件重用。但是基于以下三点原因,在这里我不会长篇大论的讲述结构分析:
我的目标不是结构分析设计,而是面向开发人员的更底层的日常工作。
这不是一本专著,没有那么多篇幅来讲述结构分析。
根据我多年在软件架构和软件过程方面的咨询经验来看,只有很少的软件开发组织能够很规范的进行结构分析。如果你正在从事结构分析,你一定曾经经历过本文中的一些内容。对一个新的,或是一个大型的软件项目来说,采用结构分析是明智的选择。但是如果你不太熟悉结构分析,本文的内容将会对你有所裨益。
用例分析的目的:
找出用例中的执行流程、事件的各个类。
通过实现用例,把用例的行为指定到具体的类。
找出类的责任、属性和他们相互的关系。
规范地确定系统中各用例的职责。
我们也可以认为,用例分析的目标,就是把我们对用例的理解,转变为与业务一致的形式,实现需求的价值。在用例设计的时候,我们把业务概念抽象成类、对象、关系、组件、接口等等,这些都与目标系统直接对应。