寻求工具,技巧,技术来快速学习新的应用程序(从编码的角度来看)

时间:2011-01-13 16:12:30

标签: c# architecture domain-driven-design uml dns

我是一名软件开发顾问,正在寻找一些工具来帮助我在客户站点开始新项目时快速了解新应用程序。 我认为对于获得应用程序或系统的高级概述有用的东西是DB Schema图,Domain对象模型图,UML图,API等。基本上可以让我对产品进行高级概述,以及如何从开发人员的角度处理应用程序。现在我在visual studio中使用对象浏览器,但感觉应该有更好和更多的选择。我确实使用了一个名为Doc-O-Matic的工具,它让我对C#解决方案中类文件的关系有所了解。

我目前的项目是一个大型的&用C#,Spring.net,NHibernate,MVC编写的复杂应用程序,我试图了解设计。它似乎非常复杂,并且大量使用OO设计模式,而且事情非常抽象,这使得更难以遵循应用程序正在做的事情(虽然我确信它从OO角度设计得很好)。

有哪些工具和技术可以帮助我在客户提供很少甚至没有文档的情况下获得此类信息(通常情况下)?您使用哪些工具,技巧快速学习新系统?

谢谢!

2 个答案:

答案 0 :(得分:1)

你(至少我)无法学习整个系统设计以及它是如何工作的。这太费时间了。我开始工作的时候曾经遇到过同样的问题。虽然我的项目设计不是很好。快速采取行动的一些步骤是:

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

这只是我的一些经历。

答案 1 :(得分:0)

首先,不要立即假设一个难以遵循的程序是“从OO的角度精心设计”。 OOA& D的目的不过是通过避免“意大利面条代码”(包含大量跳转的大型无组织文件的代码)来使代码更容易理解,扩展和重构;这几乎是它可以在较旧的语言)。但是,您可以通过过度使用设计模式,构建其他编程面板:“千篇一律代码”(如此多的抽象层,很难深入到您想要检查的实际代码)或“馄饨代码”(代码被破坏)进入如此多的一口大小的块,你不断地从一个文件移动到另一个文件来追踪一个简单算法的执行。)

无论如何,对于.NET项目,VS有一些生成类图的工具。 Office Visio Professional还可以与Visual Studio集成并扩展此功能,允许在更改图表和更改实际代码之间“来回”。同样,它可以插入MSS并为您提供架构图。但是,实际上没有比实践经验更好的工具。即使是设计最精良的代码也会有一些特性要求您知道代码库,以便将对象置于问题(或对象之间的关系等)。我还没有遇到一个雇主,他不希望新员工花费至少一个月的时间来熟悉当前的架构,以便开始提高工作效率。从契约的角度来看,这种期望可能不那么宽松,但是期望有人潜入大量的代码库,只需要很少或没有外部文档就可以开始像奥林匹克短跑运动员一样游泳。