关于架构的定义非常多,它们互相接近,但又有细微的差别。这些定义都基于
系统来描述的。所以要理解架构,首先要理解系统的定义。
系统定义为由一组不同的元素相互连接或关联以提供其单独不能提供的独特功能(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.”