我正在尝试提出一个清单或一组问题/标准来评估和评估提议的或新兴的架构(执行架构审查)。在尝试规划、评估或审查架构时,您提出的最重要的问题是什么?
我知道这是一个很大的话题,所以我想把它限制在一个单一的端到端系统上,而不是整个组织的架构。
Code Complete提供了一个不错的起点:
建筑学
- 程序的整体组织是否清晰,包括良好的架构概述和理由?
- 模块是否定义良好,包括它们的功能和与其他模块的接口?
- 需求中列出的所有功能是否都被合理地涵盖了,既没有太多也没有太少的模块?
- 架构是否旨在适应可能的变化?
- 是否包括必要的购买与建造决策?
- 架构是否描述了如何使重用代码符合其他架构目标?
- 所有主要的数据结构都隐藏在访问例程后面吗?
- 数据库组织和内容是否合理?
- 是否描述了所有关键算法并证明了其合理性?
- 所有主要对象都被描述和证明了吗?
- 是否描述了处理用户输入的策略?
- 是否描述并证明了处理 I/O 的策略?
- 是否定义了用户界面的关键方面?
- 用户界面是模块化的,所以它的变化不会影响程序的其余部分吗?
- 内存使用估计和内存管理策略是否得到描述和证明?
- 架构是否为每个模块设置了空间和速度预算?
- 是否描述了处理字符串的策略,是否提供了字符串存储估计?
- 是否提供了一致的错误处理策略?
- 是否将错误消息作为一组进行管理以呈现干净的用户界面?
- 是否规定了稳健性水平?
- 是否有任何部分架构过度或不足?是否明确规定了该领域的期望?
- 主要系统目标是否明确说明?
- 整个架构在概念上是否结合在一起?
- 顶层设计是否独立于用于实现它的机器和语言?
- 是否提供了所有重大决策的动机?
- 作为将要实现系统的程序员,您对架构感到满意吗?
我正在寻找带有示例的实用知识,例如,您创建的架构中最痛苦的点是什么?