代码之家  ›  专栏  ›  技术社区  ›  Keithius

应用程序架构检查表中应该包括什么?

  •  37
  • Keithius  · 技术社区  · 6 年前

    我正试图提出一个检查表或一组问题/标准来评估和评估提议的或紧急的体系结构(执行体系结构审查)。在计划、评估或审查架构时,您问的最重要的问题是什么?

    我知道这是一个大主题,所以我想将其约束到单个端到端系统,而不是整个组织的体系结构。

    代码完成 提供了一个不错的起点:

    建筑

    • 项目的总体组织是否清晰,包括 建筑概况和 正当理由?
    • 模块是否定义良好,包括其功能和 它们与其他模块的接口?
    • 要求中列出的所有功能是否都被合理地包括在 模块既不太多也不太少?
    • 架构是否设计为适应可能的变化?
    • 是否包括必要的购买-建造决策?
    • 体系结构是否描述了如何使重用代码符合 其他架构目标?
    • 所有主要的数据结构是否都隐藏在访问例程之后?
    • 数据库组织和内容是否合理?
    • 所有的关键算法都被描述和证明了吗?
    • 所有主要对象是否都被描述和证明?
    • 是否描述了处理用户输入的策略?
    • 是否描述和证明了处理I/O的策略?
    • 是否定义了用户界面的关键方面?
    • 用户界面是否模块化,以便其更改不会影响 剩下的节目?
    • 内存使用评估和内存管理策略 描述和证明?
    • 体系结构是否为每个模块设置空间和速度预算?
    • 是用于处理描述的字符串的策略,并且是字符串 是否提供了存储估计?
    • 是否提供一致的错误处理策略?
    • 错误消息是否作为一个集合进行管理以呈现干净的用户界面?
    • 是否指定了鲁棒性级别?
    • 是否有任何部分过度或欠架构?期望值在 这个区域是明确的?
    • 主要系统目标是否明确?
    • 整个体系结构是否在概念上联系在一起?
    • 顶层设计是否独立于机器和 将用于 实施吗?
    • 是否提供了所有重大决策的动机?
    • 作为一个将实现系统的程序员,您是否对 建筑?

    我在用实例寻找实践知识,例如,在您创建的架构中,最痛苦的地方是什么?

    6 回复  |  直到 9 年前
        1
  •  31
  •   Keithius    12 年前

    基于我的研究,这里有一些架构审查清单,我发现这样做的问题更公正一点,并提供了一些背景什么是架构审查。(这里似乎有点困惑。)

    每一个潜在的候选人都包括许多不同的类别。根据业务需要,这些类别的总体重要性会有所不同。嗯,没关系。在审查和排除检查表时,问另一个问题的成本要比完全漏掉一个问题或一个类别的成本低得多,因为它看起来不太重要,不足以包括在最初的检查表中。

    虽然我没有读过,但似乎还有一篇关于这个主题的白皮书。它试图用大约11页的篇幅来回答这个问题。

    另外,一位同事推荐了斯普林格的一套书,尽管我自己没有检查过:

        2
  •  3
  •   markusk    15 年前

    还有一些需要考虑的问题:

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

    两本好的书可以提供更多的想法:

        3
  •  2
  •   Steven A. Lowe    15 年前

    你打算怎么测试它

        4
  •  2
  •   aleemb    15 年前

    它是否使用可靠的原则?

        5
  •  2
  •   Peter Stuer    15 年前

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

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

    例如,对于以Microsoft为中心的解决方案,这意味着记录您的选择与 Microsoft Architecture guidance .

        6
  •  0
  •   ilya n.    15 年前

    有没有一个人能用足够的时间来负责建筑 (1)拟建建筑的技术知识; (2)管理事物的经验; (3)站在公司的立场,使其决定不会被一个不知情的管理者推翻。

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

    现在假设你是那个人(从你的问题上来说这并不明显——这只适用于你认为你会在一段时间内仍然是这件事的首席架构师的情况),我会考虑 advice of Joel On Software blog 写一份设计说明书,包括计划,目标,客户,解释设计选择,一切。这应该能使视野开阔。

    后世思想

    我试着想一想,在编写了规范之后,您可能会问自己哪些确切的问题,比如“是否易于更新项目”、“是否允许最终目标的灵活性”、“是否会使支持变得容易”、“是否存在安全问题”等,但是,尽管有必要问这样的问题,我只是不想。看不出它们可以用于任何“评估”,因为除了过滤掉明显的错误之外,我认为没有任何 具体的 这个问题对“评估体系结构”有很大帮助。也许你的问题会从重新措辞中受益?