任务:完善架构
在合适的水平上完善架构细节,以支持开发。
规程:架构
用途

制定并记录支持开发所必要的架构决策。

关系
角色主执行者: 其他执行者:
输入必需:
    可选:
      输出
        主要描述

        此任务在架构大纲基础上构建架构,并做出具体、明确的决策,以支持开发。它将考虑到目前为止已经开发的所有设计和实现的工件。换句话说,当设计并实现解决方案时演进架构,并更新架构文档以反映开发所产生的变化。这是个关键,因为实际的实现是证明软件架构可行的唯一的“证据”,并为验证架构的适用性提供了明确的依据。更多信息,参见概念:Executable Architecture

        记录结果以被将来参考,并跨团队进行沟通。

        步骤
        完善架构目标和架构关键需求

        同团队一起,特别是利益相关人和需求团队,Review 架构目标 和 架构关键需求 的状态,并根据需要完善它们。这可能导致出现新的架构关键需求,或者架构的目标和优先级发生变化。

        到当前为止所执行的开发工作也将影响那些已定义的决策和目标。使用那些在当前设计和实现系统时所获得的信息,调整并完善所做的决策和目标。

        识别架构关键设计元素

        识别具体的设计元素(如Component、类和子系统),并为它们命名并给出简要的描述。

        以下是一些设计元素的来源:

        识别组件有助于隐藏系统的复杂性,并帮助你在较高的层次上工作。组件需要具有高内聚,并通过一个受限的接口来提供对外的服务。在此时,接口不需要进行详细的描述,但需要描述它们需要的、可使用的、以及依赖的元素。

        识别组件可基于架构的层次、部署选择、或者关键抽象。问问自己这些问题:

        • 哪些是逻辑或功能上相关的(如相同的用例或服务)?
        • 哪些实体为他人提供服务?
        • 哪些实体彼此依赖?强或弱?
        • 哪些实体能够独立的和其它实体进行交互?
        • 哪些将运行在同一个进程或网络节点中?
        • 哪些部分受到了类似的性能需求的约束?

        当识别了某个组件时,必须简要的概述分配给该组件的的功能。

        完善架构机制

        完善架构机制,以支持设计的需要。例如,将某个分析机制完善成相应的设计机制,和/或将设计机制完善成实现机制。

        定义开发架构和测试架构

        确保定义了开发和测试架构。注意这些环境中的任何架构关键差异,并和团队一起制定策略来缓解可能出现的风险。

        识别更多的重用机会

        继续寻找更多的重用已有资产的机会。在合适的情况下,识别可以那些可以构建或使用的已存在的组件。

        更多信息,参见指南:Software Reuse

        验证架构

        确认架构支持团队的需求和需要。

        开发足够的可工作的软件以展示架构的可行性。这将为架构的适用性验证提供明确的基础。当迭代的开发软件时,可能需要不止一个增量构建来证明架构。在项目的早期阶段,提供不完整或原型感觉的软件是可以接受的,因为此时关注于建立架构基线,以为剩余的开发工作提供一个稳定的基础。

        将软件映射到硬件

        将架构关键设计元素映射到目标部署环境。同硬件和网络专家一起,确保硬件充分满足了系统需要,以及在需要时有新的硬件可用。

        沟通决策

        确保那些遵照架构工作的人们理解并能够依据架构进行工作。确保架构描述不仅仅清晰的描述了解决方案,还包括那些限制了架构的决策相关的动机和目的。这将使架构更容易被理解,并随时间进行调整。

        关键注意事项

        通过在一定的抽象层次上持续的降低解决方案的复杂性很重要。更多信息,参见指南:Abstract Away Complexity

        在完善架构的过程中,持续的同整个团队合作,从而促进对整体解决方案的共识和共同理解。架构师应该协调并指导团队的技术活动,而不是独自完成这些工作。特别强调,在这些任务中应包括开发人员,因为是他们开发了解决方案从而证明了架构,并完善了架构文档。

        确保那些遵照架构工作的人们理解并能够依靠架构进行工作。确保架构描述不仅清晰的表达了解决方案,还包括那些限制了架构的决策相关的动机和目标。这将使架构更容易被理解,并随时间进行调整。

        可以通过许多途径来沟通你所做的决策。例如:

        • 发布参考的源代码
        • 发布参考的模型
        • 发布软件架构文档
        • 正式的演讲材料
        • 非正式的架构走读

        当演进架构时,你可能希望演进你的架构模型。更多信息,参见指南:Modeling the Architecture

        更多信息