1. 程式人生 > >軟體架構發展的幾個階段

軟體架構發展的幾個階段

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

軟體架構發展的幾個階段

 

 1.基礎研究階段(1985年~1994年)
    從20世紀60年代到20世紀80年代中期,軟體系統的設計人員就已經習慣使用一些沒有統一格式和語義的圖線來描述系統的結構。當然,這樣對所設計系統的表述是一種很直觀和容易理解的下意識的做法。雖然這樣的做法已經有二十幾年的歷史,長期的實踐經驗也使這些設計人員認識到:雖然描述的是各自負責的不同型別的系統,但在描述風格和手段方面卻有著很多共性的東西。更重要的是,不同系統之間也有著很多設計手段或風格上的共性。不幸的是,大家依舊使用各自的辦法、各自的思路和設計手段來解決相似的問題。這樣花樣百出的系統結構描述和設計方式已經開始被當時的軟體工程界接受為“架構”。但是,系統化的、風格通用的、嚴謹而且是結構化可重用的軟體系統設計方法並沒有被總結出來。
    具有里程碑意義的是,從20世紀80年代中期開始,一些重要的基本思想和基礎概念開始浮出水面。這些重要的思想包括:將資料/資訊隱藏和封裝、利用抽象資料型別、以一系列封裝的黑盒元素組成軟體結構等。軟體設計就是從這些重要的基礎概念(有趣的是,這些基礎概念也是經過了Redwine/Riddle模型所界定了15年到20年的演化歷程)開始了自己的輝煌歷程。當今最為著名的所謂面向物件的軟體設計和開發就是來源於這些基礎思想(當然,那是90年代以後的事了)。Dijkstra和Parnas在他們各自的著作裡詳盡闡述了這些通過自己多年實踐觀察所得來的重要思想。但是,這些基礎概念不足以解決軟體系統設計中遇到的其他典型問題,例如:如何解決模組之間的依賴性?如何使設計有利於設計和程式碼的維護和擴充套件?
    從20世紀80年代晚期開始,軟體設計界開始嘗試總結一些為了解決特定行業、特定問題所採用的具有明顯針對性的設計手段和設計結構。試圖探索出為了開發這樣的特定軟體系統,在結構設計時所帶來的經驗;同時總結出同類系統可重用的設計手法及其優缺點。這個時期的主要代表Louis Coglianese和E. Mettala分別在他們的研究結果中闡述了在特定的產品線環境以及特定的應用領域內的經驗和分析。例如:航空電子工業領域、導彈控制領域。
    就在同一時期,其他的相關研究也正逐漸起步。這些研究的目的是試圖從那些非正式、不標準的經驗知識中,提煉和組織出構造軟體架構可利用的、相似的問題解決手段和設計風格。這樣,研究的成果就可以被不同的領域、在解決相似的問題時所重用。這些研究都是針對當時一些著名系統進行分析和總結的,試圖識別出那些通用的系統架構風格和設計手法。其中,由Gregory Andrews領導的研究小組,分析和識別了很多不同型別系統的架構形式;由Robert Allen和David Garlan領導的研究小組,嘗試找到和應用一些通用的方法來描述不同型別的系統結構。他們的不懈努力最終奠定了後人前進的基石。1992年以後,後人在他們研究成果的基礎上,完善和建立了一些著名的系統架構風格,例如:pipe-filter架構風格、repository架構風格、隱式呼叫、流程協同等。他們的研究成果和基礎思想,直到今天還被很多文章引用。
2.概念確立階段(1992年~1996年)
    從1992年至1996年,人類在軟體架構方面的發展歷程明顯進入了新的一個重要階段:架構基本概念和模型的確立。它是以五個方面的長足進展為標誌的:架構描述語言的發展、初步的架構表述及分析規則的制定、架構元素及架構風格的分類研究、架構的評估方法(例如SAAM)、可借鑑的架構視角(例如4+1視角)。處於這個階段的人們下意識地把主要的精力放在了所有軟體系統結構中可能具有的共性方面。希望通過總結性的研究,發現那些在實踐中反覆出現的、具有共性的結構;並且能夠把這些發現以比較嚴格的邏輯和規則統一描述出來,以方便業界同行的交流、改進和重用。
    以R.N.Taylor為代表,軟體架構描述語言(ADL)方面的眾多研究成果,成為了充實架構各個細節方面的強有力的媒介和載體。這個時期出現了很多架構描述語言,基本上都是以實踐為根據,著重強調如何以縝密的邏輯方式來表述一些軟體系統的組織結構。其中比較著名的包括:由David Garlan 領導的Aesop語言,它揭示了不同架構風格所具有的不同特徵;由美國加州大學N. Medvidovic領導的C2語言,它揭示了基於事件處理的架構設計的魅力;由英國倫敦皇家大學J. Magee領導的Darwin語言,它揭示了動態分散式系統設計風格的實踐;由P. Blinn與S. Vestal協同釋出的Meta-H,它成為了實時系統設計在航空控制領域的經典;D.C. Luckham為架構描述語言家族增添了著名的Rapide語言,它為大家闡述瞭如何模擬和分析系統結構中動態行為的最佳實踐;作為基於構件的系統,Robert Allen和David Garlan在1994年為業界提供了近乎完美的描述構件、構件埠、聯結器、角色、互動的架構描述語言——Wright。我們還能舉出那個時期其他很多的成就,例如Acme描述語言、UniCon描述語言等。
    架構表述及分析規則的制定是概念確立階段的另外一個重要標誌。它的完善也使架構描述語言得到了發展。這些規則有時很好地在架構描述語言中得到了應用。其中Darwin語言、Rapide語言和Wright語言就是表述規則和表述語言的和諧整合。但是,同時期也有一些其他人制定的架構表述規則(例如Robert Allen領導制定的表述規則),它們沒有和某種語言結合,而是主要用來描述架構風格的;Kevin Sullivan提出的分析規則,可以用來分析特定的一些架構模型(比如說基於構件的架構模型)。C. Locke在一些應用領域分析方面也提出了自己的分析規則。後來,P. Kruchten認識到,只有提煉和總結上述各種規則,才能使架構分析更加趨於完善,同時也間接地幫助客戶規範對系統的需求。
    架構元素及架構風格分類的研究同時在概念確立階段得到了長足的發展。其中,Mary Shaw 與Paul Clements提出的一些架構風格的分類原則和各種架構風格的實際應用場景分析,成為了後人繼續研究的基礎。這個時期針對架構元素及架構風格的研究,已經開始嘗試運用我們今天所運用的方式來進行表述,即設計模式的表述方式。其中具有里程碑性質的成果,包括Gang of four(即中國架構界俗稱的“四人幫”)最著名的23個設計模式的成果,包括Frank Buschmann通過多年實踐獲取的經典設計模式和設計理念,還包括Mary Shaw和David Garlan為軟體架構未來的發展所總結出的優秀架構風格與設計實踐。
    Redwine/Riddle模型表明,在概念確立階段還需要不斷地提煉和完善所研究問題的結構。架構評估技術和方法就是在這個時期應運而生的。早期的架構設計人員通過自己長年的實踐經驗意識到:要設計一個架構,並檢驗該架構的有效性,一般是先明確該系統在質量方面的要求(即要解決的問題),然後從眾多候選問題的解決方法中選用最適當的方法,這樣的過程就是後來架構領域經常提到的一個用語——“設計決策”。只有系統在質量方面的要求與設計決策完全對應起來,才能確保該系統架構是有效的。所以該時期出現的一些常用方法有:Richard W. Selby與Ronald Reimer提出的衡量大型軟體系統內各個部件互聯關係的標準;AT&T公司提供給架構師的檢查列表;C.Smith提出的基於系統的不同屬性要求(例如效能要求)而可以採用的架構分析評估方法等。綜合上面這些經驗,R.Kazman等人在1994年彙總形成了更為通用的架構評估方法SAAM(Software Architecture Analysis Method)。
    概念確立階段的最後的一個重要實踐總結,是為後人發揚光大的“架構視角(Architecture View)”概念。其實,早在1974年,D. L. Parnas在《On a “buzzword”: hierarchical structure》一文中就已經為架構視角的研究開創了先河。他在對眾多軟體系統進行研究後提出了自己的成果:不同的軟體系統運用不同形式的結構來構建和表述,是因為不同的構建形式能夠滿足不同的工程需求和目標。之後,架構視角的研究本身也經歷了自己完整的Redwine/Riddle週期。期間出現了眾多高質量的研究結果,當中最著名的是P. Kruchten在1995年提出的“4+1”視角,他為以後的架構實踐奠定了堅實的基礎。當今設計領域經常應用的那些UML檢視,就是一個很典型的例子。
    1992年至1996年期間,國際上開始組織眾多國際會議(例如軟體設計國際大會),明顯地完成了Redwine/Riddle模型中概念確立階段的職能:溝通基本思想和概念並形成統一的認知。這些會議成為軟體架構領域內從業人員的大家庭。為了有效地組織和確立研究團隊、密切配合解決各個具體的子問題、逐步明確未來的研究方向、劃分研究領域,國際軟體架構研究會在1995年正式成立。在該組織的帶領下,從1995年開始,召開了一系列國際軟體架構會議,成為大家發表和討論架構領域最新研究成果的大論壇。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述