用例图和顺序图是互补的UML工具这些工具协同工作,以全面理解系统功能和行为。本指南将引导您如何有效地结合使用这些图表,通过实际示例和详细解释进行说明。
用例图表示系统的高层次功能(用例)以及与这些功能交互的外部参与者(用户或其他系统)。它们有助于识别什么系统从用户角度应执行的功能。用例以椭圆表示,参与者以小人图示表示,关系则展示交互或依赖关系。
示例:考虑一个在线银行系统。用例图可能包括客户、银行管理员和外部支付网关等参与者。用例可能包括“登录”、“转账”、“查看账单”和“管理账户”。关系将展示哪些参与者与哪些用例进行交互,从而清晰地呈现系统的功能范围。
顺序图描述了如何通过展示对象(类的实例)之间随时间交换的消息序列,来实现特定用例。它们描绘了对象的生命周期线以及执行用例行为所需的时间顺序交互流程。
示例:对于在线银行系统中的“转账”用例,顺序图将展示客户、银行账户、交易处理程序和外部支付网关等对象之间的交互。该图将展示消息的顺序,例如“请求转账”、“验证账户”、“处理交易”和“确认转账”,从而提供对实现该功能所需的动态行为和协作的详细视图。
识别并建模系统的关键用例和参与者。这能清晰地展示系统的功能范围和用户交互。
示例:对于一个图书馆管理系统,用例图可能包括图书管理员、会员和管理员等参与者。用例可能包括“借书”、“还书”、“搜索目录”和“管理库存”。关系将展示哪些参与者与哪些用例进行交互,有助于定义系统的功能需求。
选择一个具体的用例(例如“借书”)进行进一步探讨。该用例将成为您顺序图的基础。
示例:在图书馆管理系统中,选择“借书”用例需要确定会员借书所需的关键交互和步骤。这包括检查书籍的可用性、更新会员账户以及记录交易。
建模用例场景中涉及的对象(例如会员、书籍、图书馆数据库、交易日志)。按它们发生的顺序展示这些对象之间的交互(消息),以实现用例。这明确了实现该功能所需的动态行为和协作。
示例: 对于“借书”用例,顺序图将展示成员、书籍、图书馆数据库和交易日志之间的交互。该图将展示诸如“请求借书”、“检查可用性”、“更新成员账户”和“记录交易”等消息的顺序,提供对实现该功能所需的动态行为和协作的详细视图。
除了主流程外,还应创建额外的顺序图,以表示用例中的替代流程或异常流程。
示例: 对于“借书”用例,替代流程可能涉及书籍不可用的情况。该替代流程的顺序图将展示诸如“请求借书”、“检查可用性”、“通知不可用”和“推荐替代书籍”等交互,详细展示系统如何处理异常情况。
通过将顺序图与相应的用例关联起来,保持可追溯性,确保在高层次需求与详细交互之间能够清晰导航。
示例: 在图书馆管理系统中,将“借书”用例的顺序图与用例图关联起来,可确保利益相关者能够轻松在高层次概览与详细交互之间导航。这种可追溯性有助于在整个开发过程中保持清晰性和一致性。
| 图表类型 | 目的 | 关键要素 | 在开发中的作用 |
|---|---|---|---|
| 用例图 | 捕获系统功能和参与者 | 参与者、用例、关系 | 定义 什么 系统所执行的功能 |
| 顺序图 | 对随时间变化的对象交互进行建模 | 对象(生命线)、消息 | 定义 如何 系统动态行为的方式 |
在线书店的用例图识别出如客户和管理员等参与者,以及“下单”和“管理库存”等用例。关系展示了哪些参与者与哪些用例进行交互,从而清晰地呈现了系统的功能范围。
示例:
时序图通过展示客户、购物车、订单和库存对象之间按顺序发生的交互,来模拟“下单”用例。这明确了实现该功能所需的动态行为和协作关系。
示例:
通过结合用例图和时序图,你既能获得系统功能的高层次概览,也能看到实现这些功能所需的详细交互过程,从而实现清晰的沟通和高效系统设计。
用例图:
“开具处方”时序图:
用例图:
“结账”顺序图:
通过结合使用用例图和顺序图,您可以全面理解系统功能和行为。用例图提供了系统应执行功能的高层次概览,而顺序图则提供了系统动态行为的详细视图。这种结合确保了清晰的沟通、有效的系统设计以及复杂系统的成功实施。
参考文献:
[1] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2577
[2] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2577_sequencediag.html
[3] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2575/6362_drawinguseca.html
[4] https://www.visual-paradigm.com/learning/handbooks/software-design-handbook/sequence-diagram.jsp
[5] https://www.visual-paradigm.com/VPGallery/diagrams/Sequence.html
[7] https://www.visual-paradigm.com/support/documents/vpuserguide/124_interoperabi.html
[8] https://www.visual-paradigm.com/support/documents/vpuserguide/94/2575_usecasediagr.html