我是一名软件开发顾问,正在寻找一些工具来帮助我在客户站点开始新项目时快速了解新应用程序。 我认为对于获得应用程序或系统的高级概述有用的东西是DB Schema图,Domain对象模型图,UML图,API等。基本上可以让我对产品进行高级概述,以及如何从开发人员的角度处理应用程序。现在我在visual studio中使用对象浏览器,但感觉应该有更好和更多的选择。我确实使用了一个名为Doc-O-Matic的工具,它让我对C#解决方案中类文件的关系有所了解。
我目前的项目是一个大型的&用C#,Spring.net,NHibernate,MVC编写的复杂应用程序,我试图了解设计。它似乎非常复杂,并且大量使用OO设计模式,而且事情非常抽象,这使得更难以遵循应用程序正在做的事情(虽然我确信它从OO角度设计得很好)。
有哪些工具和技术可以帮助我在客户提供很少甚至没有文档的情况下获得此类信息(通常情况下)?您使用哪些工具,技巧快速学习新系统?
谢谢!
答案 0 :(得分:1)
你(至少我)无法学习整个系统设计以及它是如何工作的。这太费时间了。我开始工作的时候曾经遇到过同样的问题。虽然我的项目设计不是很好。快速采取行动的一些步骤是:
这只是我的一些经历。
答案 1 :(得分:0)
首先,不要立即假设一个难以遵循的程序是“从OO的角度精心设计”。 OOA& D的目的不过是通过避免“意大利面条代码”(包含大量跳转的大型无组织文件的代码)来使代码更容易理解,扩展和重构;这几乎是它可以在较旧的语言)。但是,您可以通过过度使用设计模式,构建其他编程面板:“千篇一律代码”(如此多的抽象层,很难深入到您想要检查的实际代码)或“馄饨代码”(代码被破坏)进入如此多的一口大小的块,你不断地从一个文件移动到另一个文件来追踪一个简单算法的执行。)
无论如何,对于.NET项目,VS有一些生成类图的工具。 Office Visio Professional还可以与Visual Studio集成并扩展此功能,允许在更改图表和更改实际代码之间“来回”。同样,它可以插入MSS并为您提供架构图。但是,实际上没有比实践经验更好的工具。即使是设计最精良的代码也会有一些特性要求您知道代码库,以便将对象置于问题(或对象之间的关系等)。我还没有遇到一个雇主,他不希望新员工花费至少一个月的时间来熟悉当前的架构,以便开始提高工作效率。从契约的角度来看,这种期望可能不那么宽松,但是期望有人潜入大量的代码库,只需要很少或没有外部文档就可以开始像奥林匹克短跑运动员一样游泳。