Java应用架构设计:模块化模式与OSGi
上QQ阅读APP看书,第一时间看更新

3.1 定义架构

关于架构(architecture)这个词,有多种定义。但是在这些定义中存在一个共同的主题以及一些关键词。以下是诸多定义中的一个,它由Booch、Rumbaugh和Jacobson提出(1999):

架构就是一系列重要的决策,这些决策涉及软件系统的组织、组成系统的结构化元素及其接口的选择、元素之间协作时特定的行为、结构化元素和行为元素形成更大子系统的组合方式以及引导这一组织——也就是这些元素及其接口、它们之间的协作以及组合——的架构风格。

现在看一下ANSI/IEEE Std 1471—2000(开放组织,the open group)的定义:

一个系统的基本组织,通过组件、组件之间和组件与环境之间的关系以及管理其设计和演变的原则具体体现。

在开放组织架构框架(The Open Group Architecture Framework,TOGAF)中,架构根据上下文有两个含义:

1)系统的正式描述,或者系统在组件级别的详细计划,这个计划会指导系统的实现。

2)组件的结构、它们之间的关系以及管理其设计和随时间演变的原则和指导

查看这些定义会发现有很多共同的关键词,在这些定义中我们用黑体突出显示。重要的潜在含义都是由这些关键词呈现的。但是,这些关键词引出了一些重要的问题,为了完全理解架构就必须要回答这些问题。是什么使得一个决策具备架构上的重要性?组成元素是什么?我们如何适应架构的演化?为了实现模块化必须要做什么?在分析这些问题前,我想从一个关于软件架构的故事开始。