【问题标题】:Can UML be useful for a hobby programmer? [closed]UML 对业余程序员有用吗? [关闭]
【发布时间】:2018-03-03 07:57:43
【问题描述】:

我希望我已经解决了这个问题,而不是基于意见。我不是在问 UML 是好是坏,因为我毫不怀疑它对那些专业使用它的人很有用。

我想知道 UML 工具是否有某种临界质量(例如,以每周编码小时数来衡量)对孤独的业余程序员有用。 p>

当然,这假设我在 UML 方面未能取得成功主要是由于缺乏实践。如果保持实践意味着将 90% 的业余时间花在 UML 上,而没有获得太多工作代码,那么我认为这就是“低于临界质量”的例子。

我所说的业余程序员是指:我的项目的典型源代码大小低于 1 MB。有时我会手工绘制继承树,仅此而已。我有 35 年的编程经验,所以在没有明确设计过程的情况下编写代码(当然除了通常的 OOP 设计原则和模式)是我处理项目的自然方法并且效果很好。

我在过去的工作中与 UML 工具(Rhapsody、Enterprise Architect)有过一些肤浅的接触,这不是主要是软件开发。例如,曾经有人要求我在 SYSML 中建模一个机械概念。

我知道大部分语言结构,大概也知道它们的含义,但老实说,我真的不知道如何为我的利益而使用它们。只是花了很多时间,感觉没有效率。更重要的是,与编写一些代码并只是测试它们相比,没有直接的反馈。此外,在尝试使用 UML 时,我多次发现自己处于一种情况,问题似乎变得更加复杂和过度设计,而不是变得更加清晰。就好像使用抽象语言让我看不到实际需要和相关的东西。

另一方面,我有时会觉得不使用 UML 可能会遗漏一些东西。

【问题讨论】:

  • 我不认为这个问题可以被视为基于意见。您将获得其他人的意见和经验(这基本上是您为自己的观点而写在这里的内容)。试一试看看有什么好处有什么不好?
  • 如果这真的是为了“爱好”编程 - 时间就是你所拥有的。如果你是为了好玩而编码,不要做任何不好玩的事情。如果您的意图是职业发展,那就另当别论了——不再是爱好,而是个人职业发展。这一切仍然是意见。 UML(或任何其他设计符号)有两个目的 - 1)与其他项目利益相关者/开发人员沟通,2)以一种在破解代码时可能困难的方式实现连贯和清晰的设计 -脸。
  • 除非您打算进行完整的端到端模型驱动开发,否则您可以在您的意图变得清晰时停止生成 UML(在这种情况下仅对您而言)并且您有一条路-发展地图。这可能会阻止您离开滑雪道,并为您提供一种确定开发进度和完整性的方法。有时它有助于用代码以外的东西勾勒出一个想法。 UML 是这样做的一种方式,它的好处是定义良好的语义和语法,但这仅在与他人通信或从模型生成代码时才至关重要。意见不统一。
  • EA 相对便宜,但如果你想要零成本,Umbrello 可以服务。不确定 Windows 或 OSX 版本有多好;我之前在 Windows 上的 Linux VM 中使用过它,当时它只是 Linux。
  • 我最终会写一个小总结,虽然我也投票结束这个基于意见...

标签: uml modeling software-design


【解决方案1】:

这是我的故事:多年来,我一直在该行业担任 UML 顾问和建模师。项目通常很大,需要各种 UML 语言来为这些项目建模。毫无疑问,UML 是有效的,有助于发现用户/客户沟通中的问题以及解决编码问题。我也在以业余爱好为基础进行编程(例如,我已经建立了一个程序来管理我们的松涛馆俱乐部的会员资格和付款,并且曾经在 AppStore 上有过一些程序)。这些程序大约是 7.5kloc Swift +- 的东西。所有这些都是从零开始,没有太多设计。而且他们现在都处于没有适当 (UML) 文档的维护开始变得棘手的状态。

为什么不从一开始就使用 UML?好吧,像大多数程序员一样,开始一些事情并快速看到投资回报率是很有趣的。并且因为您在处理它时手头有它,所以您可以在一个又一个功能中添加功能。一段时间后,您开始想念为什么要以您的方式做事以及它是如何工作的。咬牙切齿,喝了几杯咖啡后你就过去了,这种情况会持续一段时间。但过了一会儿,这并没有帮助。这就是我开始重新记录(至少是部分)代码的地方。对于 Swift 来说更难,因为没有可用的 RE 工具,我必须手动创建类图。

所以我只是为复杂的部分绘制类图以获得概览,并更详细地处理我遇到问题的部分。从那开始,我通常会创建几个 SD 来解决这个问题——这真的很有帮助。此外,有时即使在编码期间(!),我也会在某些情况下使用状态图。在解析 DSL 或类似的事情时,它们非常方便。

我没有为我的爱好项目记录用例。很简单,因为只有极少数,而且您没有客户需要处理。

【讨论】:

  • 非常好的帐户。听起来有点像 Programming Addicts Anonymous,但它帮助我看到我并不孤单 ;-) 所以你在工作/损坏已经完成之后使用 UML?有趣的!这是我想做的事情之一,但我不知道工具对反转的支持是否足够,或者你最终最终会得到一些无法使用/未经测试的东西。无论如何,您的意见帮助我看到 DIY-UML 可能不是那么牵强。谢谢!
  • 有时(但实际上很少)我在编码之前就开始设计 - 用于我的爱好项目。当我在 70 年代中期学习编程时,几乎都是文本文档。如果有的话。现在我使用 UML 已有 20 多年了。
  • 哇,这真是丰富的经验。我大约在 1983 年 14 岁时开始在家用计算机时代编程,但我一直非常喜欢它,以至于我花了很长时间才明白为什么 UML 有它的位置。
【解决方案2】:

这取决于我认为你自己如何处理你的项目。

抛开可执行模型不谈,UML 用于分析和设计工作,主要用于软件架构和工程(您可能知道)。正式它对于涉及多人的项目非常有用,他们都受益于说和理解一种共同语言,其中复杂的软件结构被具体表达:工程(在任何学科中)依赖于工程师交叉验证彼此逻辑的能力并找出差距,UML 是软件工程必须这样做的一种语言集。

UML 也可能对您单独有用,以便在破解代码之前思考复杂的问题,或记录您认为无法在代码中正确注释的想法。和你一样,我已经编码了一段时间(自 80 年代以来)并从 1998 年左右开始使用 UML。我现在的专业是软件架构(因此我大量使用 UML)但我仍然做很多编码 - 我经常构建概念验证,我有自己的产品,其中一个大约有 250,000 行代码(为此我有时使用 UML,有时根据需要在没有模型的情况下进行编码)。

熟悉 UML 后您可能会更好地参与的一件事是软件设计模式。这些通常(至少部分)使用 UML 进行记录,因为实现可能因编程语言而异,而模式概念和结构是常见的。

有点啰嗦,但我希望这对你的探索有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2011-01-29
    • 2011-01-28
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多