在软件维护中使用UML模型的好处?

时间:2014-05-24 02:21:34

标签: uml

在软件维护中使用UML模型有哪些主要好处?关于UML模型在软件维护方面的成本和收益,我只发表了一些论文。

2 个答案:

答案 0 :(得分:5)

UML在软件相关活动中总是很有用,但你必须知道自己在做什么而不是使用它,因为"我的老板说UML很酷!"。

UML的好处取决于很多因素。在某些情况下,它可能更有益。我试着提一下其中一些。

可能更有益:

  • 更大更复杂的是你的主题,你可以期待更多的好处。特别是当它们是不同方面之间的关系时
  • 如果此SW维护意味着一些额外的开发/扩展,使用UML来澄清它可能非常有用。您可以显示现有系统及其扩展方式。你当然可以随时展示nre reqs。
  • 如果您的系统已经使用UML建模,则可以使用它来查找问题并规划进一步的增强功能
  • 如果建模者和模型读者都知道OO并且在UML方面有一些经验,那么他们几乎总能使它变得有益。
  • 如果您想进一步生成一些代码
  • 如果你需要支持没有文档的系统,首先记录它可能是有用的(使用逆向工程来导入代码并用UML组织它)。
  • 如果你计划长期维持这个系统并且有很多人

也许不那么有益:

  • 如果维护不涉及密集扩展/编程
  • 如果维护的对象太小 - 使用自然语言甚至口语可能更有效
  • 如果模拟人员或稍后使用该图表的人员不熟悉OO和UML。如果没有,请忘记使用UML并开始学习它:)
  • 如果您已经有其他类型的文档

答案 1 :(得分:2)

想象一下:

简介

你是一名程序员,负责维护大型遗留代码库(成千上万的文件,该死的代码行,过去几年由几个已经离开的人编写,编码约定和类库已更改)在原始开发期间多次)

没有人喜欢这项工作,这是无聊和重复的,所以人们试图尽快逃脱,并用一些超酷的语言做一些新鲜而有光泽的发展。你是一个初级维护者'你的大多数同事也是如此,所以你没有向导要求并快速获得魔法并正确回答你的新手问题。

代码被构造成许多不同的文件,许多不同的类(例如在Java中读取20个类的代码,你必须打开20个不同的文件。在C中为了读取代码,你总是必须阅读2个文件同时* .h和* .c等。)

现在你必须解决一些问题。您可以在测试实验室中重现它,以便选择调试器并开始解决问题,控制和数据流向何处以及隐藏失败的位置(可能是某些断言失败或可能是您现场“哦,这是一个愚蠢的错误与你的鹰眼”。

梦魇

没有断言失败,你没有发现任何东西,因为它是C ++代码并说"你好"在C ++中需要大约10个加密图形句子,其中"你好"就在中间。大多数代码都不是用你所知的语言编写的,而是使用你从未听说过的宏语言,并调用你从未听说过的类的方法。

此外,您发现有几个代码流(线程)同时运行,并且您尝试跟踪的数据包到达某个位置并排队等待另一个线程进行处理,并且调试器在等待锁定时停止。

您正在尝试使用调试器来描绘正在发生的事情,耐心地踩入未知数并记录不同词语的含义。

经过几天的调试,拉扯你的头发,诅咒你面前的所有开发人员,认真考虑辞掉这份工作

减轻

你找到了一些文件。有人用人类的话来写它,专为人类阅读,解释基本概念,给出代码中的地方链接和其他解释文档,甚至在文档中也有一些图片。

你看一下图片(UML图或其他一些前UML图),现在你可以看到数据流向何处,你已经遇到过的一些类应该做什么以及你在哪里应该看。

你发现UML图既为你保存了许多死神经元,也为你节省了无数个小时的代码。因为您不仅可以阅读和理解数千行代码,而且可以阅读数百行解释文档或阅读几个解释图片。

结论

由新的'提供支持我看到'你在几个关键位置放置断点的知识,检查变量值,你发现在这个地方X不应该是1.因为文档说...而且你已经知道X变量的依赖性是什么。所以你放了几个其他条件断点,你最终在逻辑中发现了一个错误,因为现在代码流经了一些未预见到的条件组合。

所以你在一行代码中改变了几个字母,错误是固定的,你应该得到你的薪水。维护工作不再是一场噩梦(尽管你仍然考虑退出工作)并且UML图片有所帮助。

所以你绘制了一些UML风格的图表来解释各种相互依赖关系(你已经学到了很多困难)首先使用纸和笔作为小文档,总有一天比没有文档更好http://agilemodeling.com/essays/documentLate.htm


我知道结论部分是科幻小说。因为没有任何维护人员会真正开始为一个系统创建缺失的文档,这个系统将在几年内被更新,更有光泽的系统所取代。 (s)他将auto-create some UML diagrams by reverse engineering the code,在使用后丢弃它们并尽快退出工作

但是,您了解在软件维护中使用UML模型有关成本的好处