2011-01-13 55 views
1

我是一位软件开发顾问,寻找一些工具来帮助我在客户现场开始一个新项目时快速了解新的应用程序。 我认为对于获得应用程序或系统的高层次概述很有用的事情是DB架构图,领域对象模型图,UML图,API等。基本上,这些东西给我一个高层次的概述产品,以及如何从开发人员的角度与应用程序一起工作。现在我在Visual Studio中使用对象浏览器,但觉得应该有更好的选择。我确实使用了一个名为Doc-O-Matic的工具,它让我对C#解决方案中的类文件的关系有了一些了解。寻求工具,技巧,快速学习新应用程序的技巧(从编码的角度)

我目前的项目是一个庞大的用&编写的应用程序,用C#,Spring.net,NHibernate,MVC编写,我试图让我的脑袋围绕设计。它看起来非常复杂,并且大量使用面向对象的设计模式,并且事物非常抽象,这使得很难跟踪应用程序正在做什么(尽管我确信它是从面向对象的角度设计的)。

什么样的工具和技术可以帮助我在客户提供少量文档或不提供文档的情况下获取这种信息(通常情况下)?你用什么工具,技巧来快速学习新系统?

谢谢!

回答

1

你(至少我)无法学习整个系统设计及其工作原理。这太耗时了。当我开始工作时,我曾遇到同样的问题,尽管我有一个大型项目并没有很好的设计。一些步骤,迅速得到用户的动作是:

  • 了解如何将应用程序从用户的角度工作来看,这意味着你必须在
  • 当你的工作区使用的应用程序熟悉问题域并知道在应用程序中解决哪些业务案例,然后转到您必须在上工作的模块/部分代码。
  • 最好是从(前)开发人员获得启动。如果您没有人这样做,请尝试调试您必须更改的进程/代码,以便您可以看到涉及的组件。
  • 从最小的使用案例开始。如果应用程序设计得很好,那么在整个代码中应用相同的模式的可能性非常高。所以,如果你“破解”了一段代码,你会得到全部(......至少是设计逻辑部分)。
  • 一旦你理解了他们,记下下来的东西,否则由于你在短时间内收集了大量的信息,你会忘记他们。
  • 评论代码缺少文档,但如果您是第一次使用该应用程序,则这是一件危险的事情。你会遇到你认为自己明白发生了什么的情况,但你没有。

这只是我所做的一些经验。

0

首先,不要马上假设一个难以遵循的程序是“从面向对象的角度来看架构良好”。 OOA & D的目的不过是让代码更容易理解,扩展和重构,避免使用“意大利面条代码”(代码中包含大量无序文件,其中包含大量跳转;它几乎是唯一可以完成的方式)旧的语言)。但是,您可以通过过度使用设计模式来构建其他编程意图:“lasagna代码”(很多抽象层难以深入到您想要检查的实际代码)或“馄饨代码”(代码被破坏分成许多小块,您可以不断从文件移动到文件以追踪单个简单算法的执行情况)。

无论如何,对于.NET项目,VS有一些工具来生成类图。 Office Visio Professional还可以与Visual Studio集成并扩展此功能,允许在更改图表和更改实际代码之间“来回”。同样,它可以插入MSS并为您提供架构图。但是,真正没有比实际操作更好的工具。即使是最精心设计的代码也会有一些特质,要求你知道代码库以便将具有问题的对象(或者对象之间的关系等)归结为零。我还没有遇到过一位雇主,他并没有指望它至少需要一个月的时间才能让新员工熟悉当前足够的架构,从而开始提高生产力。从契约的角度来看,这种期望可能不太宽松,但期望有人潜入一个庞大的代码库,只需很少或没有外部文档,并开始像奥运短跑运动员那样游泳,这是不合理的。