上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.3 规划、架构与设计
架构是客观存在的,不管你是否有意识地考虑过它。架构不是孤立存在的,它是在具体的上下文环境中,为了达成明确的目标而存在的。
1.3.1 三个不同层次的概念
规划、架构、设计,这三者是紧密联系的,因此常常被混为一谈。为了理解这些概念的联系和区别,可以与市政规划进行类比。在考虑系统架构或软件架构时,可以借鉴巴西利亚[4]的建城理念和华盛顿[5]的城市规划理念。不能孤立地谈架构,应该结合规划和设计来谈,有确定的上下文环境,有明确的目标。图 1.1[6]清楚地展示了“规划”“架构”“设计”三者的层次关系,有助于更好地理解这些概念。架构处于承上启下的位置。
图1.1
1.3.2 规划与架构
这里把规划与架构分开阐述而不是将它们混为一谈,是为了帮助理解思考与实践的不同阶段和步骤,使思路更加清晰。将软件工程与建筑工程进行类比,更容易理解架构和规划。
架构,应该是比规划更具体的层次。在中国历史上,曾经有很多著名的大都城在城市规划布局上都体现了《周礼》(图1.2[7])中的礼制思想。《周礼·考工记》中有“九经九纬”“前朝后市”“左祖右社”的记载,这些都可以理解为规划。然而,宫、殿等各种房屋怎么建就要涉及架构方式了,比如我国的硬山式、庑殿式,西方的罗马式、哥特式等。
图1.2
通过基本架构的灵活组合,可以得到各种各样的具体架构,用于满足各个项目的具体需求。常用的三层架构(或者多层架构)本质上可以看作是由多个二层架构(Client/Server)组合而成的。
1.3.3 架构与设计
所有的架构都是设计,但不是所有的设计都是架构[8]。架构可以是宏观设计、顶层设计。
与架构相比,设计属于更具体的层面。比如要建一个硬山式房屋,每个房间要具备某些功能,就要有对应的设计;又比如在软件架构上,有三层架构、MVC架构等,用于指导软件设计,确定设计方案和技术方向。