开发者

What are some open source tools to check a software architecture's robustness?

开发者 https://www.devze.com 2023-04-12 20:50 出处:网络
I think it is a tough question but I want to verify the architecture of my software is robust enough.

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 ;)


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号