一、架構的含義
許多人對什麼是架構或者架構設計包含什麼內容比較模糊。我就來說上幾句。
『什麼是架構』涉及定義,需要精確性,難免會有爭論。不過,以下幾個理解估計共鳴者不少。
1、架構是一種設計
我們平時說『張三,你做一下架構設計;李四,請將架構(設計)圖給我看一下』,總是將架構與設計關聯使用。事實上,英文表述是『architecture design』,也是這個意思。
那麼,已經有了『設計』,為何還要『架構』這個新名詞呢?之所以將『架構』單列出來,其實是跟軟體的規模越來越大有關。
蓋乙個民房不大需要設計,那些5個人的小施工隊就可以搞定;或者蓋個6層樓的小高層,簡單的設計完全足夠了;但是,建個金茂大廈、東方明珠什麼的,恐怕沒有精心的設計是不行的。
類似地,軟體設計領域也早已經從單機應用,走向c/s應用,網際網路應用,海量系統。隨著複雜性的增強,通常意義上的設計已經不能應付了,需要總體設計、系統設計,所以專業化地提出了『架構設計』這個詞。
2、架構是高層設計
軟體工程中有個基本方法叫『自頂向下、分而治之』。架構設計就是高層設計,與以前的名詞『系統設計』是一致的。而我們平時說的設計(非架構),可以理解為『詳細設計(detail design)』。
所以,千萬別把某個類的設計、某個api的設計叫作『架構』。
二、架構的內容或分類
不少人以為架構就是指軟體邏輯設計,事實上就象蓋高樓一樣,除了主體建築設計,還有強電、弱電、供水、通風、裝修設計。
軟體架構通常包含以下內容(也可稱為分類):
通常意義上的架構,較多是指某一應用的(軟體)架構,但又絕非簡單的資料架構或者邏輯架構。
1)業務架構(ba,business architecture)
最容易被大家忽略(甚至於許多技術人員不認可)的是『業務架構』。--周愛民同學去支付寶,角色就是『業務架構』。
但是千萬別忽略的這個『業務架構』,因為它是其它3個架構的引導。業務架構的核心是整理業務需求,列出功能,描述出業務藍圖。
為了實現這個業務藍圖,就需要轉換成應用的軟體架構,通常由二部分表述:邏輯架構、資料架構。
2)邏輯架構(la,logical architecture)
通常用領域模型來表述。
3)資料架構(da,data architecture)
資料架構設計就是決定資料的記憶體與儲存形式,主要是指後者。以前我們稱為資料存貯設計。
單機軟體時,只需要設計資料結構;隨著c/s系統的出現,主要是dbschema設計;隨著大型網際網路的出現,資料變成海量,讓系統更具備scalability就顯得異常重要--這就是資料架構(da)。--大輝同學之前就是支付寶的da。
4)物理(總署)架構(pa,physical deployment architecture)
三、一些誤解
1)架構師是程式設計高手
所有人都承認貝聿銘是偉大的建築設計師,但沒有人認為他是個施工高手,也沒有人認為他有這個必要。
2)架構師是全才
貝聿銘最善長的是主體建築設計,但不見得精通強電、弱電、供水、通風的設計;即使某些方面也懂,但沒有人會認為他是那方面的大師。
這2條意見,可以讓你的招聘更有效。
CTO札記 雜論架構
一 架構的含義 許多人對什麼是架構或者架構設計包含什麼內容比較模糊。我就來說上幾句。什麼是架構 涉及定義,需要精確性,難免會有爭論。不過,以下幾個理解估計共鳴者不少。1 架構是一種設計 我們平時說 張三,你做一下架構設計 李四,請將架構 設計 圖給我看一下 總是將架構與設計關聯使用。事實上,英文表述...
CTO札記 招聘出題
公司要去招人,ray出了乙份產品運營崗位的試題,被我斃了 因為我覺得 試卷不能測試出需要的素質 做事有了目標 方向就好辦,ray迅速思考出了 產品人的八種素質 再基於此他再次出了份試卷 抱歉我不能透露 這個 目標 要素 內容 方法 點子 的模式,是我向大家推薦的。今天讀了jenny blogbus ...
CTO札記 招聘出題
公司要去招人,ray出了乙份產品運營崗位的試題,被我斃了 因為我覺得 試卷不能測試出需要的素質 做事有了目標 方向就好辦,ray迅速思考出了 產品人的八種素質 再基於此他再次出了份試卷 抱歉我不能透露 這個 目標 要素 內容 方法 點子 的模式,是我向大家推薦的。今天讀了jenny blogbus ...