應用軟體開發作為一個行業已經有了30多年的發展曆史,但是也許是軟體之複雜,也許是軟體之無形,目前依然處於一種原始的手工作坊式生產方式,需要依靠大量的人力去開發,品質難於保障,使用和營運成本高昂。
造成這種局面的原因多種多樣,但我認為最根本的原因並不在於管理,而在於對應用軟體合理構造的科學認識不足,沒有建立起公司專屬應用程式架構的標準和具體產品。我們分析人類社會的所有工業產品,它都有基本趨同的統一結構性標準架構,例如汽車,它包括動力系統、行走系統、操控系統、承載空間等,但我們分析汽車的發展史會發現,它也是從比較粗糙原始的模式逐步發展到構造完整、科學合理的,早期的汽車連雨刷這樣最簡單的必備組件都沒有。
一個系統結構和構造是最關鍵的,忽略軟體構造,只談管理是很難把軟體做好的,就像一個汽車企業雖有先進的管理體系,但不知道汽車應該是個什麼樣子,這不可能成為一個好的汽車製造企業,只關心軟體企業的CMM-Capability Maturity Model for Software,而不關心軟體科學構造同樣不可能成為好的軟體企業。
因此探討應用軟體的科學構造、建立軟體架構成熟度等級模型AMM - Architecture Maturity Model for Software對於軟體企業更加重要和基礎。為了匯出科學的軟體架構,我們需要研究一下軟體的進化過程,分析軟體為了的進化方向,確定進階軟體系統的基本構造和體系架構,這樣才能夠建立架構成熟度等級模型,在正確的方向指引下,我們才能夠朝一個正確的方向前進。我認為如同進階哺乳動物都有基本相同的構造(例如老鼠與大象他們都有嘴、眼、鼻、耳,五髒六腑、四肢百骸)一樣,進階軟體系統的構造必然也是同構的,如果我們能建立起這樣的架構,在此基礎上編製具體應用就輕而易舉了。
本以為AMM是自己獨立發明的概念,結果到我網上一搜,早在1987年,J.A.Zachman在IBM的一個內部刊物上發表了“A Framework for Information Systems Architecture”的文章,第一次提出了企業架構EA-Enterprise Architecture的概念。EAMM是何時建立的不清楚,但EAMM基本參照了CMM的分類方式,將EA的成熟度等級分為了6級:
EA LEVEL 0 - NO PROGRAM
EA LEVEL 1 - INFORMAL PROGRAM
EA LEVEL 2 - REPEATABLE PROGRAM
EA LEVEL 3 - WELL-DEFINED PROGRAM
EA LEVEL 4 - MANAGED PROGRAM
EA LEVEL 5 - CONTINUOUSLY IMPROVING VITAL PROGRAM