有哪些开源工具可以检查软件架构的稳健性?
我认为这是一个棘手的问题,但我想验证我的软件的架构是否足够强大。
我计划在我的代码上执行这些工具:
但我想要一些工具来检查(除其他外):
- 关系程序集之间的依赖
- 关系之间的耦合太强
- ,等等。
总之,我希望开源工具能够突出显示我的项目的任何架构问题。
我知道最好的工具是经验丰富的建筑师,但即使是最好的木匠也需要一把好锤子;)
I think it is a tough question but I want to verify the architecture of my software is robust enough.
I've plans to execute these tools on my code:
But I want some tools to check (among others):
- the relations between assembly's' dependencies
- too strong coupling between my objects
- and so forth.
In a word, I want open source tools to highlight any architectural glitches of my project.
I understand the best tool is an experienced architect, but even the best carpenter needs a good hammer ;)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您有高级版本,内置的 Visual Studio 工具就很好。
您还可以查看nDepend,这是一个进行静态分析并指出系统中存在问题的区域的工具大量的依赖关系或耦合以及许多其他功能。 nDepend 是一款商业产品,但拥有免费的学术许可证,并且如果您正在进行开源开发,则可以免费使用 - 因此这可能符合也可能不符合您的标准。
请注意,所有这些工具都有一个学习曲线,您可能不会有一个“灵丹妙药”来告诉您到底要在系统上更改什么,但它们对于提高性能和可维护性以及减少风险。
The built-in Visual Studio tools are good, if you have the advanced editions.
You can also look at nDepend, which is a tool to do static analysis and point out areas of your system that have a high number of dependencies or coupling, among many other features. nDepend is a commercial product, but has a free academic license and is free to use if you are working on open-source development -- so this may or may not meet your criteria.
Be aware that all of these tools have a learning curve, and you are probably not going to have a "silver bullet" that tells you exactly what to change on your system, but they can be really useful to improve performance and maintainability, and reduce risk.
我认为你对工具的要求有点太多了。软件架构很像建筑物的架构,没有正确的方法(可能有错误的方法)并且要求一个工具来测量它几乎是不可能的。
有大量的工具可以测量较小的方面(注释、命名约定、性能等),但您找不到一个工具可以告诉您是否正确构建了解决方案。
I think you are asking a bit too much from the tools. Software architecture is a lot like the architecture of buildings, there is no right way to do it (there can be wrong ways) and to ask a tool to measure this is close to impossible.
There are a huge number of tools that can measure smaller aspects (comments, naming conventions, performance, etc) but you will not find a tool that can tell you whether you have architected the solution correctly.
到目前为止,您所列举的工具都是静态代码分析工具,可以帮助可视化一些新兴的架构模式,但不能做更多的事情。它们非常适合帮助减少开发人员的错误,(在一定程度上)证明程序的正确性,并消除不良气味和良好实践。
然而,建筑有许多维度是这些无法衡量的。可扩展性、性能、部署占用空间、正常运行时间、运行时特征等。
其中许多工具根本不了解业务上下文。这更多的是衡量成功的标准。
The tools you've enumerated so far are static code analysis tools that can help visualize some of the emergent architectural patterns, but won't be able to do much more than that. They are wonderful for helping reduce developer error, prove program correctness (to a degree), and tease out bad smells and good practices.
Yet, there are many dimensions to architecture that these won't measure. Scalability, performance, deployment footprint, uptime, runtime characteristics, etc.
Many of these tools simply don't know anything about the business context either. That's more of a measure of success.