45

我正在尝试提出一个清单或一组问题/标准来评估和评估提议的或新兴的架构(执行架构审查)。在尝试规划、评估或审查架构时,您提出的最重要的问题是什么?

我知道这是一个很大的话题,所以我想把它限制在一个单一的端到端系统上,而不是整个组织的架构。

Code Complete提供了一个不错的起点:

建筑学

  • 程序的整体组织是否清晰,包括良好的架构概述和理由?
  • 模块是否定义良好,包括它们的功能和与其他模块的接口?
  • 需求中列出的所有功能是否都被合理地涵盖了,既没有太多也没有太少的模块?
  • 架构是否旨在适应可能的变化?
  • 是否包括必要的购买与建造决策?
  • 架构是否描述了如何使重用代码符合其他架构目标?
  • 所有主要的数据结构都隐藏在访问例程后面吗?
  • 数据库组织和内容是否合理?
  • 是否描述了所有关键算法并证明了其合理性?
  • 所有主要对象都被描述和证明了吗?
  • 是否描述了处理用户输入的策略?
  • 是否描述并证明了处理 I/O 的策略?
  • 是否定义了用户界面的关键方面?
  • 用户界面是模块化的,所以它的变化不会影响程序的其余部分吗?
  • 内存使用估计和内存管理策略是否得到描述和证明?
  • 架构是否为每个模块设置了空间和速度预算?
  • 是否描述了处理字符串的策略,是否提供了字符串存储估计?
  • 是否提供了一致的错误处理策略?
  • 是否将错误消息作为一组进行管理以呈现干净的用户界面?
  • 是否规定了稳健性水平?
  • 是否有任何部分架构过度或不足?是否明确规定了该领域的期望?
  • 主要系统目标是否明确说明?
  • 整个架构在概念上是否结合在一起?
  • 顶层设计是否独立于用于实现它的机器和语言?
  • 是否提供了所有重大决策的动机?
  • 作为将要实现系统的程序员,您对架构感到满意吗?

我正在寻找带有示例的实用知识,例如,您创建的架构中最痛苦的点是什么?

4

6 回答 6

40

根据我的研究,这里有一些架构审查清单,我发现这些清单可以更公正地回答这个问题,并提供一些关于架构审查是什么的背景知识。(这里似乎有点混乱。)

这些潜在候选人中的每一个都包括许多不同的类别。这些类别的总体重要性会因业务需求而有所不同。恕我直言,没关系。在通过检查清单进行审查并排除它时提出另一个问题的成本要低于完全错过一个问题或类别,因为它最初似乎不够重要,无法包含在清单中。

似乎也有关于这个主题的白皮书,虽然我还没有阅读过。它试图在大约 11 页的过程中回答这个问题。

此外,一位同事推荐了 Springer 的一套书,尽管我自己没有检查过这些书:

于 2009-06-23T20:19:15.810 回答
3

需要考虑的其他几点:

  • 是否确定了所有利益相关者?(示例:客户、最终用户、业务分析师、用户界面设计人员、开发人员、测试人员、维护人员。)架构是否与利益相关者一起验证?
  • 该架构如何解决安全问题?
  • 是否规定了对可用性和可靠性的要求?架构如何解决这些问题?(例如:平均故障间隔时间、平均修复时间。)
  • 灾难恢复如何处理?

有更多想法的两本好书:

于 2009-05-31T14:22:33.970 回答
2

你将如何测试它

于 2009-05-30T06:50:45.587 回答
2

它是否使用 SOLID 原则?

于 2009-05-30T07:29:18.317 回答
2

架构是否符合技术供应商的指导和路线图?

您想从您选择的平台获得支持,而不是与之抗争。

例如,对于以 Microsoft 为中心的解决方案,这意味着记录您的选择在何处以及为何偏离Microsoft 体系结构指南

于 2009-06-01T19:59:04.407 回答
0

是否有一个人可以负责架构,具有足够的(1)所提议架构的技术知识,(2)管理事物的经验,(3)站在公司中,这样他的决定就不会被不知道的管理层推翻什么都不知道。

由于(2)和(3)并不真正依赖于架构,我会找到这个人并问他想做什么。

现在假设你是那个人(这从你的问题中并不明显——只有当你认为你仍然会在一段时间内担任这件事的首席架构师时才适用),我会接受Joel On Software 的建议写博客并编写设计规范,包括计划、目标、客户、解释设计选择等。那应该清除视图。

后来的想法

我试着想一想在你写完规范之后你可能会问自己什么确切的问题,比如“更新你的项目容易吗”、“它是否允许最终目标的灵活性”、“它会让事情变得容易吗?”支持”,“是否有任何安全问题”等,但是,尽管提出这样的问题是值得的,但我根本看不到它们可以用于任何“评估”,因为除了过滤掉明显的错误我认为任何具体问题都不会对“评估架构”有多大帮助。也许您的问题会从改写中受益?

于 2009-06-01T01:15:08.797 回答