架構師:我們需要頂層設計
背景:
某公司,建立的程序又被推倒,外人覺得很奇怪,這個程序的主管非常敬業,關注到了程序每一個細節,甚至包括每一個按鈕的文字和位置。
這個主管很委屈,他說,他完全是按照客戶需求制作的,客戶怎么說的,他就怎么做了,難道有錯?!
某公司,建立的程序又被推倒,外人覺得很奇怪,這個程序的主管非常敬業,關注到了程序每一個細節,甚至包括每一個按鈕的文字和位置。
這個主管很委屈,他說,他完全是按照客戶需求制作的,客戶怎么說的,他就怎么做了,難道有錯?!
但是,這個程序還是被推倒了,當然也有其公司派系斗爭的因素在里面。但是,不得不引起我們的注意,這個程序敗就敗在了太拘泥于細節,而忽略了頂層設計被客戶牽著鼻子走,想知道客戶自己說什么嗎?
|
|
|
|
|
客戶說:<我說的就一定對嗎?>
客戶說:<我說的就一定對嗎?>
頂層設計——規劃。
當提到這個詞的時候,很多程序員很不屑,規劃?不就是需求嗎?和架構設計有啥區別?就寫寫PPT有那么重要嗎?
我們說一個好的程序開發的設計應該包含如下層次,如下圖所示:

一、設計分為三個層次
1、第一層次,信息系統規劃(項目或產品規劃)
我們稱之為規劃,這個層次是對整個系統在宏觀中的地位的把握。如果從一個大型企業的高度看,應該包含整個企業的時間與空間的集合體。
什么是空間?
空間就是涵蓋到企業中的各個數據環節以及保證關鍵的數據流走向的合理,并確保調度優化。頂層模塊設計需要研究需要關注的各個業務塊之間的結構關系,研究業務框架的整合模式。
行業內比較有名的業務框架,如:eTom業務框架,ITIL等。
行業內比較有名的業務框架,如:eTom業務框架,ITIL等。
什么是時間?
時間就是,企業未來發展以及企業所處行業的整體發展的預期,要兼顧發展才可以從規劃的角度使應用系統不過時。
只有從時間和空間的三維角度進行思考,才可以得出合理的規劃。
2、第二個層次,是架構設計
架構設計是從程序架構的設計方式角度出發,建立一種合理的程序邏輯的構架方式,也是時間與空間的集合體。
空間:
滿足設計會話,利用架構設計適應各個模塊的構建方法,使程序邏輯運行于程序的各個模塊中而游刃有余,盡可能避免超出架構設計模塊無法構建的應用需求。
時間:
滿足頂層設計規劃,同時兼顧程序未來發展,好的架構設計構造出的程序可能會用很多年不會變。
3、第三層,是微觀設計
這個是程序員在處理具體應用程序編寫程序時的創新與設計,當然其首要前提是滿足上面兩個層次的設計。
二、架構設計與規劃的區別
架構設計是程序框架構建方式作為其關注點,更多的探討的是該程序如何滿足規劃需求的結構健壯性。
而作為頂層設計的規劃,更多的是從產品、系統、業務,整體宏觀的角度考慮整體的模塊地位與框架,并不關注其具體實現方法。
比如,業務邏輯分為幾個層次這個問題是規劃,這幾個層次或模塊之間的數據關聯方式用EAI還是EDI還是WebService還是什么方式的問題就是架構設計。
三、忽略架構設計和規劃設計的危害
業內相當一部分人都認為,找幾個會編程序的程序員,就可以做出產品,就可以接活兒了。
可能可以,然而,如果是一個需要若干年持續進行的產品或系統,沒有架構設計是短視的,其前期很快搭建后期捉襟見肘。
還有想當一部分人認為,有了架構設計和幾個會編程的程序員就可以做出產品和搭建應用系統了。
這也確實可以,但是如果面對一個更復雜的系統,缺乏頂層設計就會陷入關注細節關注需求,被需求牽著鼻子走的路上去。