軟件體系架構閱讀筆記一

與最初的大型中央主機相適應,最初的軟件結構體系也是Mainframe結構,該結構下客戶、數據和程序被集中在主機上,一般只有少許的GUI界面,對遠程數據庫的訪問比較困難。隨着PC的普遍應用,該結構逐漸在應用中被淘汰。web

在80年代中期出現了Client/Server分佈式計算結構,應用程序的處理在客戶(PC機)和服務器(Mainframe或Server)之間分擔;請求一般被關係型數據庫處理,PC機在接受到被處理的數據後實現顯示和業務邏輯;系統支持模塊化開發,一般有GUI界面。Client/Server結構由於其靈活性獲得了極其普遍的應用。但對於大型軟件系統而言,這種結構在系統的部署和擴展性方面仍是存在着不足。算法

Internet的發展給傳統應用軟件的開發帶來了深入的影響。基於Internet和Web的軟件和應用系統無疑須要更爲開放和靈活的體系結構。隨着愈來愈多的商業系統被搬上Internet,一種新的、更具生命力的體系結構被普遍採用,這就是爲咱們所知的「三層/多層計算」。數據庫

。客戶層(client tier) 用戶接口和用戶請求的發出地,典型應用是網絡瀏覽器和胖客戶(如Java程序)後端

。服務器層(server tier) 典型應用是Web服務器和運行業務代碼的應用程序服務器瀏覽器

。數據層(data tier) 典型應用是關係型數據庫和其餘後端(back-end)數據資源, 如 Oracle和SAP、 R/3等安全

三層體系結構中,客戶(請求信息)、程序(處理請求)和數據(被操做)被物理地隔離。三層結構是個更靈活的體系結構,它把顯示邏輯從業務邏輯中分離出來,這就意味着業務代碼是獨立的,能夠不關心怎樣顯示和在哪裏顯示。業務邏輯層如今處於中間層,不須要關心由哪一種類型的客戶來顯示數據,也能夠與後端系統保持相對獨立性,有利於系統擴展。三層結構具備更好的移植性,能夠跨不一樣類型的平臺工做,容許用戶請求在多個服務器間進行負載平衡。三層結構中安全性也更易於實現,由於應用程序已經同客戶隔離。應用程序服務器是三層/多層體系結構的組成部分,應用程序服務器位於中間層。服務器

如圖所示,應用程序服務器運行於瀏覽器和數據資源之間,一個簡單的實例是,顧客從瀏覽器中輸入一個定單,web服務器將該請求發送給應用程序服務器,由應用程序服務器執行處理邏輯,而且獲取或更新後端用戶數據。網絡

興起數據結構

六十年代的軟件危機使得人們開始重視軟件工程的研究。起初,人們把軟件設計的重點放在數據結構和算法的選擇上,隨着軟件系統規模愈來愈大、愈來愈複雜,整個系統的結構和規格說明顯得愈來愈重要。軟件危機的程度日益加重,現有的軟件工程方法對此顯得力不從心。對於大規模的複雜軟件系統來講,對整體的系統結構設計和規格說明比起對計算的算法和數據結構的選擇已經變得明顯重要得多。在此種背景下,人們認識到軟件體系結構的重要性,並認爲對軟件體系結構的系統、深刻的研究將會成爲提升軟件生產率和解決軟件維護問題的新的最有但願的途徑。數據結構和算法

自從軟件系統首次被分紅許多模塊,模塊之間有相互做用,組合起來有總體的屬性,就具備了體系結構。好的開發者經常會使用一些體系結構模式做爲軟件系統結構設計策略,但他們並無規範地、明確地表達出來,這樣就沒法將他們的知識與別人交流。軟件體系結構是設計抽象的進一步發展,知足了更好地理解軟件系統,更方便地開發更大、更復雜的軟件系統的須要。

事實上,軟件老是有體系結構的,不存在沒有體系結構的軟件。體系結構(Architecture)一詞在英文裏就是"建築"的意思。把軟件比做一座樓房,從總體上講,是由於它有基礎、主體和裝飾,即操做系統之上的基礎設施軟件、實現計算邏輯的主體應用程序、方便使用的用戶界面程序。從細節上來看每個程序也是有結構的。早期的結構化程序就是以語句組成模塊,模塊的彙集和嵌套造成層層調用的程序結構,也就是體系結構。結構化程序的程序(表達)結構和(計算的)邏輯結構的一致性及自頂向下開發方法天然而然地造成了體系結構。因爲結構化程序設計時代程序規模不大,經過強調結構化程序設計方法學,自頂向下、逐步求精,並注意模塊的耦合性就能夠獲得相對良好的結構,因此,並未特別研究軟件體系結構。

咱們能夠做個簡單的比喻,結構化程序設計時代是以磚、瓦、灰、沙、石、預製梁、柱、屋面板蓋平房和小樓,而面向對象時代以整面牆、整間房、一層樓梯的預製件蓋高樓大廈。構件怎樣搭配才合理?體系結構怎樣構造容易?重要構件有了更改後,如何保證整棟高樓不倒?每種應用領域須要什麼構件(醫院、工廠、旅館)?有哪些實用、美觀、強度、造價合理的構件骨架使建造出來的建築(即體系結構)更能知足用戶的需求?如同土木工程進入到現代建築學同樣,軟件也從傳統的軟件工程進入到現代面向對象的軟件工程,研究整個軟件系統的體系結構,尋求建構最快、成本最低、質量最好的構造過程。

軟件體系結構雖脫胎於軟件工程,但其造成同時借鑑了計算機體系結構和網絡體系結構中不少寶貴的思想和方法,最近幾年軟件體系結構研究已徹底獨立於軟件工程的研究,成爲計算機科學的一個最新的研究方向和獨立學科分支。軟件體系結構研究的主要內容涉及軟件體系結構描述、軟件體系結構風格、軟件體系結構評價和軟件體系結構的形式化方法等。解決好軟件的重用、質量和維護問題,是研究軟件體系結構的根本目的。

相關文章
相關標籤/搜索