系统顺序图(SSD)并非是UML中的顺序图,是为阐述与所讨论系统相关的输入和输出事件而快速、简单地创建的制品。
系统顺序图表示的是,对于用例的一个特定场景,外部参与者产生的事件,其顺序和系统之内的时间。所有的系统被视为黑盒。此图强调的是从参与者到系统的跨越系统边界的事件。
准则:应为每个用例的主成功场景,以及频繁发生的或者复杂的替代场景绘制SSD。
为什么要绘制SSD呢?
软件设计中一个有趣且有用的问题是:我们系统中会发生什么事件?为什么?因为我们必须为处理和响应这些事件(来自于鼠标、键盘、和其他系统---)来设计软件。基本上,软件系统要对以下三种事件进行响应:1)来自于参与者(人或计算机)的外部事件,2)时间事件,3)错误或异常(通常来源于外部)。因此,需要准确的知道,什么是外部输入事件,即系统事件。
SSD和用例之间的关系
SSD展示了用例中一个场景的系统事件,因此它是从对用例的考察中产生的。下图 SSD由用例导出,表示了一个场景。
下面就谈谈系统操作
什么是系统操作?可以为系统操作定义操作契约,系统操作是作为黑盒构件的系统在其公共接口中提供的操作。这里解释一下操作契约。操作契约包括以下部分:
- 操作:操作的名称和参数。
- 交差引用:会发生此操作的用例。
- 前置条件:执行操作之前,对系统或领域模型对象状态的重要假设。这些假设比较重要,应该告诉读者。
- 后置条件:最重要的部分。完成操作后,领域模型对象的状态。
什么是逻辑架构和层
逻辑架构(logical architecture)是软件类的宏观组织结构,它将软件类组织为包(或命名空间)、子系统和层等。之所以称其为逻辑架构,是因为并未决定如何在不同的操作系统进程或网络中物理的计算机上对这些元素进行部署。
层(layer)是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的职责。同时、层按照较高层(例如UI层)可以调用较低层的服务,而反之则不然的方式组织。
OO系统中通常包括的层有:
- 用户界面
- 应用逻辑和领域对象——表示领域概念的软件对象
- 技术服务——提供支持性技术服务的常用对象和子系统,例如数据库接口或错误日志。
SSD描述了系统操作,但是隐藏了特定的UI对象。然而,捕获系统操作请求的对象通常是系统UI层的对象。设计良好的分层架构支持高内聚和关系分离,UI层对象将从UI层向领域层转发请求以进行处理。
从UI层发送到领域层的消息将是SSD中所描述的消息。