最近我正在为我的大学项目编写SRS文档。当我画状态机图时,我不知道应该画什么部分。那是组件的吗?还是上课?
很明显,对象的固有状态显示在状态图中。但是,我的问题是,我们如何找到我们应该绘制的状态。这是从组件还是类中得到的?
SRS是一个系统需求规范:您记录的是需求,而不是解决方案。因此,SRS中的状态图应该与需求相关,无论它们是什么。
在UML中,状态机是为分类器定义的。它们可以定义事件驱动的行为(行为状态机(或与分类器的有效交互集(协议状态机(。分类器通常是一个类或一个组件:两者都有可能。
但在SRS中,你并不在乎:你不需要为每个类或每个组件提供SM;只有在有州相关要求的情况下,您才需要提供SM。
伪示例:
- 用户可以创建一个
shopping basket
,并将catalog
中的items
添加到购物车中。项目也可能被删除。用户可以查看购物车并继续购买。用户可以签出购物车,一旦payment
完成,就不可能再对购物车进行任何更改controller
点燃火箭助推器。一旦检测到增压器燃油液位为空,控制器就会启动增压器的解耦,并点燃主发动机。一旦助推器成功解耦,控制器应监测高度的任何变化
您肯定会用类来建模1,并且关于shopping cart
上操作有效性的约束很容易在状态机中表达。顺便说一句,这对于任何具有要跟踪的生命周期的对象来说都是典型的。其他类似乎没有任何有趣的状态可以建模。
当然,您可以使用controller
组件对2进行建模,并且事件驱动的行为集可以用状态机轻松而清晰地表达。
因此,最终,您不在乎它是一个类还是一个组件。唯一应该在SRS中驱动建模的是,是否存在可以用状态机更精确/容易/清晰地表达的行为或约束。许多SRS甚至没有显示任何状态机,因为状态只在解决方案的设计中出现。