首先是需求分析 數據庫
需求分析從三個層次進行,客戶,用戶以及開發,客戶級別就是公司的領導意圖以及需求方投資人的意圖,比較高層的需求,好比項目週期,資金,目的,以及其餘需求;用戶級別,就是真正的使用的需求,,第三個就是開發級別,好比項目的團隊成員,須要哪方面的技能;接着是每一個層次都從三個維度進行分析,功能性的,好比機務維修系統,這個系統的目的就是要算明白錢,深航領導就是想要知道錢都花在哪些地方,由於以前他們使用Orcal海波龍的財務系統,計算的維度和口徑比較粗,並且和領導的想要看到的內容不太同樣;質量 windows
功能(系統的目標是什麼)緩存 |
質量(對於系統在使用層面上達到那些標準)可用性,性能,伸縮,擴展等tomcat |
約束(用戶的水平,特殊的要求)服務器 |
|
客戶架構 |
機務維修系統,這個系統的目的就是要算明白錢,深航領導就是想要知道錢都花在哪些地方,由於以前他們使用Orcal海波龍的財務系統,計算的維度和口徑比較粗,並且和領導的想要看到的內容不太同樣數據庫設計 |
可以相對準確的計算出成本性能 |
歷史遺留系統amicos,須要和它進行交互;須要和現有的財務系統進行交互;交互的方式只能是經過深航的數據交換中心;spa |
用戶架構設計 |
預算,C檢(機身,其餘) |
使用人數上面100人左右,對於性能要求不高;海爾那個項目就須要考慮用戶20萬 |
機務維修用戶水平比較高,能夠在操做上有一些高要求;對於中廣核項目,由於供應商接口使用者不可控,因此要求易用性要高; |
開發 |
海爾項目對於質量要求性能比較高,伸縮性要求比較高,設計須要考慮 |
海爾項目開發人員經驗很少;技術要求基於Linux;開發語言Java;中廣核項目要求基於windows2008,C#開發; |
需求分析以後,做爲架構師瞭解了項目狀況開始對需求進行梳理,使用序列圖對流程、職責、業務內容進行梳理;這種梳理不是所有需求的梳理,而是核心業務的梳理;核心業務的含義:必作的,共同的,特殊的;
接下來就是需求轉設計,高層架構設計。
首先使用魯棒圖對業務進行時概念設計,魯棒圖用來識別終端,控制以及實體三種圖例,好比中廣核的調撥,經過畫魯棒圖,識別出來,終端包括:倉庫管理員輸入頁面,SAP;業務包括:輸入業務,校驗,入庫,通知SAP,實體是調撥歷史記錄,倉庫信息;接着是基於Layer以及tire進行分層,頂層是UI,中間是邏輯,邏輯劃分爲應用層,核心層以及基本信息層,其中最重要的就是核心層,就是將操做的原子操做進行識別,好比中廣核項目,儘管流程比較負責,其實本質就是UP的添加修改,以及倉庫的進出,訂單操做,發貨操做,檢驗、入庫都是基於底層的本質的操做一種組合而已;基本信息就是字典表等,配置信息表的封裝;
第三部就是落地架構設計
從邏輯視圖,數據視圖,物理視圖以及開發視圖四個視圖分別進行設計,好比邏輯視圖,上面基本劃分出來職能塊了,那接下來就是設計職能類;調撥系統,調撥分爲同場調撥和跨場調撥,基本操做是同樣的,可是有一個差異就是通知SAP,這裏就抽象出調撥的基類,實現入庫功能,一般和跨長分別繼承基類;再好比海爾物聯家電的架構,由於MINA系統自己就是事件驅動的架構,作的擴展也是基於事件驅動,架構出事件接收器(繼承AdapterHandler,實現messagereceive,實現對上報協議的解析),事件分發器(dispatcher,相似於factory,基於解析的出來的協議內容,轉發給相應的事件處理器)以及事件處理器(好比上報協議,下發協議,升級協議等);數據視圖就是數據庫設計;物理視圖就是物理部署,需求轉設計中也有一個基於分層分塊的設計,可是那個是"能夠達到"的設計,物理視圖則是根據須要,設計到底部署幾臺服務器,每臺服務器功能職責是什麼(商用空調和家用空調,在部署上必定要分開部署,兩個tomcat);最後一個是開發視圖,就是基於質量需求,選擇技術(緩存,數據庫,代理服務器),項目樹結構怎樣,包來怎麼設計,還包括管理機制,Maven+Jekins,仍是ant等等;