代码之家  ›  专栏  ›  技术社区  ›  Warren P

有人用过UML和OCL吗?程序员使用它还是只使用不编码的分析师?

  •  2
  • Warren P  · 技术社区  · 16 年前

    我想弄清楚为什么我们首先处理设计问题,然后决定使用可视化方法(UML),而不是从碰巧也可以执行的正式规范(RAD原型)开始,而是从不容易证明有效的图开始。因此,当需要证明模型的属性时,我们发现我们需要在设计中定义约束,因此我们设计了一种形式语法(OCL)来定义模型上的约束。我很难理解这个跳跃回到我们开始的地方。 我发现OCL阻碍了UML设计(即使是小册子中显示的示例)不可读,甚至比无数的UML符号和约定更难以理解。所以我想知道的是:OCL在当今工作软件开发领域中使用的关键领域是什么,对谁来说是相关的还是值得学习的?你的工作角色是什么样的?从不编写代码的架构师是使用UML和OCL,还是同样由同一个团队来设计和构建系统的程序员也使用UML和OCL?

    [更新:第二,我突然想到,敏捷开发似乎有点反对“重量级”的过程,而针对设计图约束的领域特定语言(如OCL)似乎并不十分敏捷。UML+OCL是否在任何“敏捷”商店中使用,或者是Scrummers普遍回避的?]

    4 回复  |  直到 16 年前
        1
  •  5
  •   Tim Jarvis    16 年前

    有趣的问题。

    对象约束语言的“圣杯”是提供一个框架,当与UML结合时,它允许一个工具将其转换为一个具体的对象图/元模型,即一组已经连接了基本结构和约束的类,因此开发人员所要做的就是实现业务方法(所有这些都以独立于语言的方式进行)

    Borland的JBuilder尝试在他们的企业版中支持这一点,Delphi和ECO也通过支持查询功能以一种实用的方式使用OCL(尽管不是作为转换输入)。事实上,来自Borland/BoldSoft的andersinver和ECO团队的一位成员,在OCL圣经,对象约束语言,第二版(addison-wesley)上写了这篇文章

    至于它的价值,我还没有看到在实际项目中实际使用OCL的模型驱动开发(除了作为概念证明之外)最近在现实世界中似乎起作用的是敏捷过程、Scrum等,以及使用标准IDE和标准语言和用户情景(可能是白板或故事板上的一些UML)的间接开发。

        2
  •  2
  •   Jordi Cabot    16 年前

    在您的模型上定义OCL约束的好处是可以指定您的领域的所有业务规则,这些规则不能用UML的图形结构来表示(例如,多重性是可以图形化地表示为关联定义的一部分的约束,类C的属性A必须大于5也是一个约束,但在这种情况下必须在OCL中定义,因为UML没有为此提供图形语法)

    不幸的是,提供此功能的工具并不多(请参阅以下列表: http://modeling-languages.com/content/list-ocl-tools )但情况正在慢慢好转

        3
  •  1
  •   EbbHead    14 年前

    作为我的学士论文的一小部分,我研究过OCL约束。Borland(现在的Microfocus)有一个有趣的方法,可以从OCL约束中生成Java代码。您定义了变量X应为>=0或不为空,并一起创建assert命令以自动验证它。

        4
  •  1
  •   Ed Willink    9 年前

    UML2.5使用Eclipse OCL工具来修复UML2.0…2.4嵌入式OCL中的众多错误。

    eclipseocl提供了更强大的UI和OCL2Java代码生成器,因此嵌入Ecore/UML的OCL提供了更多可接受/可执行的代码。

    嵌入在UML中的OCL从未被认真执行过。

    OCL对OCL本身的定义是可悲的。

    推荐文章