【问题标题】:What are some open source tools to check a software architecture's robustness?有哪些开源工具可以检查软件架构的稳健性?
【发布时间】:2011-10-15 05:06:23
【问题描述】:

我认为这是一个棘手的问题,但我想验证我的软件架构是否足够强大。

我计划在我的代码上执行这些工具:

但我想要一些工具来检查(除其他外):

  • 程序集的依赖关系之间的关系
  • 我的对象之间的耦合太强了
  • 等等。

总之,我想要开源工具来突出我项目的任何架构故障。

我知道最好的工具是经验丰富的建筑师,但即使是最好的木匠也需要一把好锤子;)

【问题讨论】:

  • 您是否通过 Visual Studio 对您的代码运行代码分析和代码度量?
  • 是的,但我忘了把它放在列表中。我编辑我的帖子
  • 不是免费或开源的,但你看过 nDepend 吗?
  • 我认为一个问题是“稳健”没有定义,只有一些可能适合您尝试做的事情。例如,软件无法知道可扩展性对您有多重要(它可能不知道)。或者低延迟或审计跟踪有多重要。您当然可以检查诸如“一个方法的参数不超过 4 个”之类的规则,但这并不能测试稳健性,只是符合经验法则。

标签: c# .net architecture


【解决方案1】:

如果你有高级版本,内置的 Visual Studio 工具很好。

您还可以查看nDepend,这是一个进行静态分析并指出系统中具有大量依赖关系或耦合的区域以及许多其他功能的工具。 nDepend 是一款商业产品,但拥有免费的学术许可,如果您从事开源开发工作,则可以免费使用 - 所以这可能符合您的标准,也可能不符合您的标准。

请注意,所有这些工具都有一个学习曲线,您可能不会有一个“灵丹妙药”来准确告诉您要对系统进行哪些更改,但它们对于提高性能和可维护性非常有用,并降低风险。

【讨论】:

  • -1...到目前为止,包括 nDepend 在内的所有工具都没有按照 OP 的要求提供架构检查。
  • 我认为这取决于你如何定义“检查”——nDepend 确实提供了关于海报提到的确切问题的详细可视化报告,即依赖关系和紧密耦合。
【解决方案2】:

我认为您对工具的要求有点过高。软件架构很像建筑物的架构,没有正确的方法(可能有错误的方法),并且要求一个工具来衡量这几乎是不可能的。

有大量工具可以衡量较小的方面(cmets、命名约定、性能等),但您找不到可以告诉您是否正确构建解决方案的工具。

【讨论】:

  • +1。抱歉,没有人工智能——当你进入架构评论的那一刻,你需要一个大脑和经验,以及看看你的架构是否明智的要求。这不是工具。
  • 我不是在寻找建筑制造者/校正者的圣杯,而是告诉我某个地方有难闻气味的工具。最终的架构决定将是我的 ;)
【解决方案3】:

到目前为止,您所列举的工具都是静态代码分析工具,它们可以帮助可视化一些新兴的架构模式,但不能做更多的事情。它们非常有助于减少开发人员错误、证明程序的正确性(在一定程度上)以及梳理出不好的气味和良好的做法。

然而,架构中有许多维度无法衡量。可扩展性、性能、部署足迹、正常运行时间、运行时特性等。

其中许多工具也根本不了解业务环境。这更多是衡量成功的标准。

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2011-12-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多