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架構等,用于指導軟件設計,確定設計方案和技術方向。
推薦閱讀
- Unreal Engine Physics Essentials
- WildFly:New Features
- 編程的修煉
- Vue.js快跑:構建觸手可及的高性能Web應用
- Java加密與解密的藝術(第2版)
- Java 9 Programming Blueprints
- Java Web開發技術教程
- EPLAN實戰設計
- PHP+Ajax+jQuery網站開發項目式教程
- INSTANT Yii 1.1 Application Development Starter
- Processing創意編程指南
- Hands-On GUI Programming with C++ and Qt5
- OpenCV with Python By Example
- Java 從入門到項目實踐(超值版)
- SwiftUI極簡開發