深入解析:将UML用例作为契约进行分析
1. 引言
统一建模语言(UML)是一种强大且富有表现力的图形化符号,用于描述面向对象的软件系统。UML标准定义了多种类型的图,用于描述系统的不同方面或视图。例如,类图展示系统的面向对象结构,状态图展示对象的动态行为。本文聚焦于如何描述和分析用例图。
用例最初由Jacobson引入,它展示了系统与外部实体(即所谓的参与者)的交互,并将系统的功能描述为一个黑盒,而不揭示其内部结构。尽管最初被认为过于非正式和简单,但正是这种简单性使它们广受欢迎,因为它们既抽象又易于理解。我们还可以将用例视为系统与参与者之间的契约。如果参与者按照用例中的描述行事,系统承诺提供用例中描述的功能。
契约的概念已经被多位作者引入。在组件导向领域,契约规定了组件提供者必须满足的义务和组件客户端可能有的期望。重用契约由协作组件集合的接口描述组成。Di Marzo等人使用契约在系统开发过程中逐步细化系统模型。
我们采用Back和von Wright提出的契约观点。计算涉及多个参与者,他们根据预先制定的文档(如规范或程序)执行操作。当对计算进行推理时,我们可以将此文档视为参与者之间的契约。细化演算是Dijkstra最弱前置条件演算的扩展,它不仅为契约提供了严格的数学基础,还提供了操作它们的工具。通过使用细化演算中的契约概念,我们为UML用例图和用例模型提供了形式化的对应物。
2. 用例
用例最初的定义为:“用例是系统中的一系列事务,其任务是为系统的单个参与者产生可衡量的价值”。目前,大多数软件工程过程从客户的初始规范开始,该规范非正式地描述了未来系统应该做什么。这些信息用于识别与系统交互的参与者、他们的目标,并构