【问题标题】:"Reverse Engineering" App Architecture [closed]“逆向工程”应用架构 [关闭]
【发布时间】:2022-02-02 18:32:01
【问题描述】:

我继承了一个用 C#/.NET 2.0 编写的旧应用程序。 (un) 幸运的是没有文档——甚至没有 cmets。因此,当我根据新需求为应用程序添加增强功能时,我也在构建一个关于应用程序做什么以及它如何做的心智模型——换句话说,就是架构。

我想知道有哪些工具可以“解构”应用程序并从原始代码升级到更高级别?该应用程序在 OO 中并不是很重 - 实际上使用的对象之一称为“函数”。它主要是一堆方法 - 很多方法似乎突然冒出来。

我想将原始代码翻译成某种需求文档,说明应用的功能和执行方式。最好的方法是什么?有没有可以帮助我的应用程序?也许我应该/不应该包括的模板?也许您推荐的书籍/网站?目标是为我和未来维护应用程序的开发人员提供文档。

【问题讨论】:

  • 您是否在 google 上搜索过从 C# 源代码生成 UML 的工具?

标签: oop architecture reverse-engineering conceptual


【解决方案1】:

就个人而言,我会从 Robert C Martin 的敏捷书和 Eric Evan 的领域驱动设计书开始。这些是理论书籍,但 Bob 大叔的书专门讨论了如何修改代码以使其易于管理,就像您的情况一样。

对您的软件进行分层非常重要,这样您就可以开始删除依赖项,这将使一切变得非常简单且易于维护。

我是一名数据库专家,所以我从一个好的 ORM 开始,比如 Entity Framework 或 Fluent NHibernate。我更喜欢网站,所以我选择了 ASP.NET 的 MVC 2,然后开始编写这些书籍的所有部分,即数据存储库、用于提取数据的服务和用于推送数据的控制。 MVC 很好地将数据关注点和作为您的屏幕的“视图”关注点分开。不久之后,您将拥有非常干净且易于维护的软件。

【讨论】:

  • 谢谢 - 我确实发现自己缺乏理论知识,所以我认为这些书会有所帮助。我实际上一直在研究 MVC 2,但我已经被卖掉了,但我不会维护应用程序足够长的时间来将其转换为那种模式。
  • 一位同事说了同样的话。我构建了一个存储库和控制层,以便他可以从 Web 表单中使用它。现在他调用一行 SaveProducts(List products) 来持久化数据而不是循环和检查等。
【解决方案2】:

如果您使用的是 VS 2010,您会看到一个名称为:Architecture 的菜单。使用此工具,您可以创建应用程序的依赖关系图,您可以按如下所述使用它:

【讨论】:

  • 不幸的是我没有 - 但是这看起来确实很漂亮,所以一旦我们迁移,我会记住它。谢谢!
猜你喜欢
  • 2010-09-08
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2018-09-20
  • 2014-03-26
  • 2011-10-06
相关资源
最近更新 更多