软件架构
一个软件架构是一个软件系统在其操作某个阶段运行时元素的抽象。一个系统可以有很多层抽象和很多个操作阶段组成,每个抽象和操作阶段都有自己的架构。软件的架构和通常所说的软件结构之间的区别是:软件架构是软件系统在运行时的抽象,软件结构是静态源代码的属性。软件的架构和软件结构的设计是分离的,我们常常忽略这一点。一个软件架构由一些架构元素(组件、数据、连接器)的配置来定义,这些元素之间的关系受到约束,以获得想要得到的一组架构属性。一个组件是软件指令和内部状态的一个抽象单元,通过其接口提供对于数据的转换。组件应该由它为其他组件提供的接口及服务来定义,而不是由它在接口之后的实现来定义。一个连接器是对于组件之间的通讯、协调、活着合作进行仲裁的一种抽象机制。一个连接器可以是由组件组成的子系统。数据是是组件通过连接器接收或发送的信息元素。配置是在系统的运行期间组件、连接器和数据之间的架构关系的结构。架构设计的目标是创建一个包含一组架构属性的架构,这些架构属性形成了系统需求的一个超集。一种架构风格是一组协作的架构约束,这些约束限制了架构元素的角色与功能,以及在任何一个遵循该风格的架构中允许存在的元素之间的关系。