【问题标题】:Assessing an UML class diagram评估 UML 类图
【发布时间】:2019-11-24 14:40:42
【问题描述】:

假设我画了一个 UML 类图来表示我的项目的类和接口结构。在实际创建这些类和接口之前,是否有任何方法可以评估 UML 设计?

示例:已知下图会导致菱形问题。并且必须更改或处理。

【问题讨论】:

  • 你的模型说任何Domestic Animal 都是Cat Dog。这在我的世界里似乎不成立。
  • @GeertBellekens 我展示了图片来举例说明我的问题。可能没有你说的那么准确。

标签: uml associations multiple-inheritance class-diagram class-design


【解决方案1】:

UML 是一种强大的设计语言。它独立于编程语言(尽管它偏向于基于类的语言),因此允许设计在某些语言中无法实现但在某些其他语言中微不足道的东西。

真正的问题是你对评估的期望:

  • 模型的句法和语义有效性是否符合 UML 规范?在您的图中,您使用void 类型,它不属于UML 的原始类型。它是一种依赖于语言的类型。
  • 模型的完整性和准确性,关注潜在的歧义和缺失的信息?在您的图表中,Animal.eats() 可能是 {abstract}。但是缺少这些信息是否表明它不是抽象的?
  • 评估类设计,例如它的复杂性、继承的深度、关系的强度、相互依赖等... ?但是,当某些领域本身就很复杂时,这如何有助于发现糟糕的设计呢?
  • 可行性UML allows for multiple inheritance,但并未准确定义其背后的语义。例如,在 C++ 中,您可以使用 virtual inheritanceAnimal 很好地应对这种设计。在 Java 中,多重继承是被禁止的,这将无法实现(您需要更改此模型以引入接口并使用interface realization)。现在在这里,我们不会重新打开debate about MI

每天都会对图表进行系统审查。这种评估的目标是查看符号是否与 UML 规范一致,并最终与所选UML profile 的约束条件一致。有一些research papers 探索了这种一致性评估的自动化。

设计目前不是高度自动化的;因此,据我所知,没有系统的方法来评估设计。

有一些通用指标(例如CK metrics),其中一些可以是calculated for UML 类图(例如,6 个 CK 指标中只有 3 个)。指标不是评估,但它们可以帮助分析师完成这项任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 2012-03-21
    • 1970-01-01
    • 2018-12-12
    • 2020-10-09
    • 2017-06-10
    • 2020-11-29
    相关资源
    最近更新 更多