實際上,很早就想寫一篇“軟件架構"的歷史,但一直沒能找到時間。寫這個的原因比較簡單,就像我們學很多東西的時候我都會關注歷史一樣,以史為鑒,指導未來。此外,我發現還沒有人寫過類似的文章。希望給大家有所啟示,共同學習。
第一階段:20世紀50年代后期“塊狀圖”出現
1928年,一種通過有限的指令序列來解決這個問題的算法被提出。 馮·諾依曼于1947年開發了“流程圖”(Flow Chart),該流程圖是對指令流的可視化表示,目的是通過繼承流程圖(Flow Process)和多流程圖的思想,來規劃計算機程序。 但是,這里有一個缺口來指出控制的流程。 因此,“控制流程圖”(Control Flow Diagram, CFD)是在20世紀50年代后期發展起來的,用來描述業務流程和程序的控制流。 這不足以查看復雜的系統。 因此,為了通過劃分塊來揭示整個系統,50年代后期開發了“塊狀圖”。 每個模塊的功能以及模塊之間的連接將在圖中顯示。在這個時候,你會發現很多架構師常用的塊狀圖就已經出現了。
第二階段:1968年艾茲格·迪科斯徹提出 “software structure matters”
Edsger Wybe Dijkstra(艾茲赫爾·戴克斯特拉),這位是公認的結構程序設計之父 ,1968年,他提出了“軟件結構很重要”,雖然當時并沒有提到“架構(architecture)”概念,但是我覺得軟件“結構”的設計和實現是軟件架構的基礎,其重要意義不言而喻。同年又引出了“模塊化編程”, 組件之間的邏輯邊界稱為模塊。
第三階段:1975年"Three-schema Approach"提出
在1975年,采用基于模塊化編程的分層體系結構的“三模式法”得到了發展。 它用于在系統開發中使用三個不同的視圖構建信息系統,分別是external,conceptual以及physical。
第四階段:1987年"Zachman Framework"提出
在1987年,約翰·扎克曼(John Zachman)提出了基于上面的三層框架的六層框架,即所謂的“扎克曼框架”(Zachman Framework),它在“企業架構”時代仍然發揮著重要作用,并對框架 DODAF、 TOGAF、 TEAF和 FEAF產生了影響。 1993年, Zachman發布了修改后的 Zachman框架,其中包含了更多的視圖。
第五階段:1995年 Philippe Kruchten 提出了 4+1 視圖
在1995年,Kruchten提出跨時代的4+1視圖,我覺得這個4+1視圖基本上每一個架構師都學習過,這個應該是經典中經典。同年,第一個正式版本的TOGAF也誕生了。次年,Mary Shaw和David Garlan 提出了另外一個經典的“Architecture as high level abstractions”。詳細內容可以參考Mary Shaw 的 wiki。
第六階段:2000年 IEEE 1471
在2000年,世界最大的專業技術學會(IEEE)終于批準軟件架構的第一份正式的標準(Standard for Architecture documentation)。
2006年,ISO采納了IEEE 1471作為內部標準,然后IEEE和ISO一起修訂并以ISO 42010- Systems and Software Engineering Architectural Description為新標題發布,涉及修訂的內容有,
術語澄清:例如架構關注點、架構模型、架構視點
應用范圍:從軟件密集型系統擴展到更大范圍
和ISO生命周期一致:對應ISO 12207和ISO 15288
概念演化:調查‘架構描述’和‘架構決策’是否已有實用的描述
此外,42010還往元模型中添加了架構框架的概念,如下
第七階段:2005年Jansen,A.,Bosch,J:提出了‘架構即設計決策’
在2005年,Jansen等人提出了,架構即設計決策(Architecture as design decisions)。如果說之前所有的工作都是回答"什么是架構"(what),這篇文章告訴我們怎么(how)去做‘軟件架構’。
第八階段:2011年Poort 和Van Vliet 提出 RCDA
在2011年,RCDA(Architecting as a risk- and cost management discipline)提出,將架構視為風險和成本管理學科有助于軟件架構師和利益相關者集中精力他們在高影響力問題上的活動,從而提高架構對組織的價值,這里回答了我們為什么(why)要做軟件的架構。
到此為止,從軟件架構的發展歷史上,已經回答了1)什么是軟件架構2)怎么做架構3)我們為什么要做軟件架構三個重要的問題。