關于架構的定義非常多,它們互相接近,但又有細微的差別。這些定義都基于
系統來描述的。所以要理解架構,首先要理解系統的定義。
系統定義為由一組不同的元素相互連接或關聯以提供其單獨不能提供的獨特功能(Eberhardt Rechtin)。IEEE擴展了這個定義:系統是一組組件組織起來完成一個或一組特別的功能(IEEE Std. 610.12-1990)。
架構是一個系統的基礎組織,包括其組件,組件之間的關系,組件和外界環境之間的關系,以及指導這些
組件設計、演化的原則。(The fundamental organization of a system embodied in its
components, their relationships to each other, and to the environment,
and the principles guiding its design and evolution. IEEE Std 1471-2000)
不同的受益人從不同的視點(Viewpoint)看待架構,這導致了架構的描述必定具有不同的視圖。不同的架構方法(如Rose 4+1
View、RM-ODP參考模型)都對不同的視圖提供了支持。而在企業級應用中,也是根據不同的Viewpoint把企業應用架構分成業務架構
(Business Architecture)、IT技術架構(Information Technology
Architecture)、信息架構(Information Architecture)和應用架構(Application
Architecture)。就其根本來說是一樣的,都是從不同的Viewpoint出發,來描述整個架構。下面是RM-ODP中的不同視圖和企業架構中
的分類對應:
Enterprise Viewpoint <---> Business Architecture
Computional Viewpoint <---> Application Architecture
Information Viewpoint <---> Information Architecture
Technology Viewpoint <---> Information
Technology Architecture
Engineering Viewpoint <---> Information Technology Architecture
上述兩種雖然形式有所差別,但內容上是比較一致的。而且,其基本要求都是各ViewPoint互相之間描述一致,不得有沖突。
我們通常說到架構時,往往偏向Computional, Information和Technology方面。最近以來,似乎有更加偏向Technology的趨勢,這不是一個好現象。
關于系統、架構的其他定義:
系統:
UML 1.3: A system is a collection of connected units that are organized to accomplish
a specific purpose. A system can be described by one or more models, possibly from
different viewpoints.
架構:
Dewayne E. Perry and Alexander L. Wolf:
software architecture is a set of architectural (or, if you will,
design) elements that have a particular form. We distinguish three
different classes of architectural element: processing elements; data
elements; and connecting elements.
Garlan and Perry: The structure of the
components of a program/system, their interrelationships, and
principles and guidelines governing their design and evolution over
time.
Boosch: Software architecture encompasses the set of significant decisions about the organization of a software system
? selection of the structural elements and their interfaces by which a system is composed
? behavior as specified in collaborations among those elements
? composition of these structural and behavioral elements into larger subsystem
Bass, Clements, and Kazman: The software architecture of a program or computing system is the structure or structures of the system, which comprise
- the externally visible properties of those components,
- and the relationships among them.”