軟件架構與架構建模技術_第1頁
軟件架構與架構建模技術_第2頁
軟件架構與架構建模技術_第3頁
軟件架構與架構建模技術_第4頁
軟件架構與架構建模技術_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

軟件架構與架構建模技術2023/6/71第一頁,共五十一頁,編輯于2023年,星期一7.1從設計模式到軟件架構隨著軟件系統(tǒng)越來越復雜和龐大,對數(shù)據(jù)結構及算法的選擇在許多情況下成為較次要的部分,代碼級別的軟件復用已經遠遠不能滿足大型軟件開發(fā)的需求。而對整個系統(tǒng)的設計和描述變得越來越重要。由此便產生了軟件架構(SoftwareArchitecture)這一概念,軟件架構是軟件設計抽象的進一步發(fā)展,它使得軟件開發(fā)人員視野更加開闊,滿足了更好地理解軟件系統(tǒng),更方便地開發(fā)更大、更復雜的軟件系統(tǒng)的需要。2023/6/72第二頁,共五十一頁,編輯于2023年,星期一7.1.1軟件架構的定義雖然軟件架構已經在軟件工程領域中有著廣泛的應用,但迄今為止還沒有一個被大家所公認的定義。許多專家學者從不同角度和不同側面對軟件架構進行了刻畫。2023/6/73第三頁,共五十一頁,編輯于2023年,星期一7.1.1軟件架構的定義我們將使用軟件架構的下列定義:軟件架構為軟件系統(tǒng)提供了一個結構、行為和屬性的高級抽象,由構成系統(tǒng)的元素的描述、這些元素的相互作用、指導元素集成的模式以及這些模式的約束組成。軟件架構不僅指定了系統(tǒng)的組織結構和拓撲結構,并且顯示了系統(tǒng)需求和構成系統(tǒng)的元素之間的對應關系,提供了一些設計決策的基本原理。2023/6/74第四頁,共五十一頁,編輯于2023年,星期一7.1.2軟件架構的發(fā)展史

20世紀70年代以前,此階段系統(tǒng)規(guī)模較小,很少明確考慮系統(tǒng)結構,一般不存在系統(tǒng)建模工作。70年代中后期,由于結構化開發(fā)方法的出現(xiàn)與廣泛應用,軟件開發(fā)中出現(xiàn)了概要設計與詳細設計,而且主要任務是數(shù)據(jù)流設計與控制流設計。因此,此時軟件結構已作為一個明確的概念出現(xiàn)在系統(tǒng)的開發(fā)中。2023/6/75第五頁,共五十一頁,編輯于2023年,星期一7.1.2軟件架構的發(fā)展史

20世紀80年代初到90年代中期,是面向對象開發(fā)方法興起與成熟階段。90年代以后則是基于構件的軟件開發(fā)階段,該階段以過程為中心,強調軟件開發(fā)采用構件化技術和體系結構技術,要求開發(fā)出的軟件具備很強的自適應性、互操作性、可擴展性和可重用性。此階段中,軟件架構已經作為一個明確的文檔和中間產品存在于軟件開發(fā)過程中,同時,軟件架構作為一門學科逐漸得到人們的重視,并成為軟件工程領域的研究熱點。2023/6/76第六頁,共五十一頁,編輯于2023年,星期一7.1.2軟件架構的發(fā)展史

經歷了4個階段:(1)“無體系結構”設計階段:以匯編語言進行小規(guī)模應用程序開發(fā)為特征;(2)萌芽階段:出現(xiàn)了程序結構設計主題,以控制流圖和數(shù)據(jù)流圖構成軟件結構為特征;(3)初級階段:出現(xiàn)了從不同側面描述系統(tǒng)的結構模型,以UML為典型代表;(4)高級階段:以描述系統(tǒng)的高層抽象結構為中心,不關心具體的建模細節(jié),劃分了體系結構模型與傳統(tǒng)的軟件結構的界限,該階段以Kruchten提出的“4+1”模型為標志。2023/6/77第七頁,共五十一頁,編輯于2023年,星期一7.2經典軟件架構模式人們在軟件開發(fā)實踐中總結出了許多軟件架構模式,這些模式在提出后得到了不斷的修正和完善,逐漸成為人們選擇軟件架構時首先考慮的模式,因此稱為經典軟件架構模式。2023/6/78第八頁,共五十一頁,編輯于2023年,星期一7.2.1管道和過濾器模式1、管道和過濾器模式的基本結構

2023/6/79第九頁,共五十一頁,編輯于2023年,星期一7.2.1管道和過濾器模式2、管道和過濾器模式的優(yōu)點管道和過濾器模式的軟件架構具有許多很好的特點:(1)使得軟構件具有良好的隱蔽性和高內聚、低耦合的特點;(2)允許設計者將整個系統(tǒng)的輸入/輸出行為看成是多個過濾器的行為的簡單合成;(3)支持軟件重用。只要提供適合在兩個過濾器之間傳送的數(shù)據(jù),任何兩個過濾器都可被連接起來;(4)系統(tǒng)維護和增強系統(tǒng)性能簡單。新的過濾器可以添加到現(xiàn)有系統(tǒng)中來;舊的可以被改進的過濾器替換掉;(5)允許對一些屬性如吞吐量、死鎖等的分析;(6)支持并行執(zhí)行。每個過濾器是作為一個單獨的任務完成,因此可與其它任務并行執(zhí)行。

2023/6/710第十頁,共五十一頁,編輯于2023年,星期一7.2.1管道和過濾器模式3、管道和過濾器模式的不足采用管道和過濾器模式的系統(tǒng)也存在著若干不利因素。(1)通常導致進程成為批處理的結構。這是因為雖然過濾器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設計者必須將每個過濾器看成一個完整的從輸入到輸出的轉換。(2)不適合處理交互的應用。當需要增量地顯示改變時,這個問題尤為嚴重。這樣的系統(tǒng)幾乎無法顯示系統(tǒng)數(shù)據(jù)流細微的變換過程。(3)因為在數(shù)據(jù)傳輸上沒有通用的標準,每個過濾器都增加了解析和合成數(shù)據(jù)的工作,這樣就導致了系統(tǒng)性能下降,并增加了編寫過濾器的復雜性。2023/6/711第十一頁,共五十一頁,編輯于2023年,星期一7.2.1管道和過濾器模式4、模式實例一個特征顯著的實例是傳統(tǒng)的編譯器。傳統(tǒng)的編譯器一直被認為是一種管道系統(tǒng),在該系統(tǒng)中,一般包含四個階段即:詞法分析、語法分析、語義分析和代碼生成,每一個階段的輸出是另一個階段的輸入。

2023/6/712第十二頁,共五十一頁,編輯于2023年,星期一7.2.2面向對象模式1、面向對象模式的基本結構2023/6/713第十三頁,共五十一頁,編輯于2023年,星期一7.2.2面向對象模式2、面向對象模式的優(yōu)點面向對象系統(tǒng)具有如下4個基本特征:信息隱藏、數(shù)據(jù)抽象、動態(tài)匯集和繼承性,其優(yōu)點大致歸納為以下幾方面:(1)高度模塊化,系統(tǒng)中的每個對象都是功能和數(shù)據(jù)獨立的單元,對象之間的聯(lián)系是明確的和可預知的。(2)功能封裝、信息隱藏,用戶不必知道對象的內部狀態(tài),只需了解其功能描述就可以使用。因為對象對其它對象隱藏它的表示,所以可以改變一個對象的表示,而不影響其它的對象。(3)可重用性好,面向對象的繼承性提供了一種代碼共享的手段,可以避免重復的代碼設計。(4)靈活性

,對象可以根據(jù)自身的特點進行功能實現(xiàn),提高了系統(tǒng)的靈活性。(5)系統(tǒng)易維護,面向對象的封裝性決定了類和對象內聚性,從而將可能出現(xiàn)的錯誤限制在對象內部,不會向外傳播,易于檢錯和修改,對某個對象中錯誤的修改也不會導致其它對象代碼失效。(6)可擴充性好,面向對象系統(tǒng)可以通過繼承機制不斷擴充功能,這種增量式的功能擴充方式不會影響原有系統(tǒng)的運行。

2023/6/714第十四頁,共五十一頁,編輯于2023年,星期一7.2.2面向對象模式3、面向對象模式的不足(1)為了使一個對象和另一個對象通過過程調用等進行交互,必須知道被調用對象的標識(對象名或其他標識符)。這就增加了對象之間的依賴關系,只要一個對象的標識改變了,就必須修改所有其他明確調用它的對象。(2)如果修改一個對象,也必須修改所有顯式調用它的其它對象,并消除由此帶來的一些副作用。例如,如果A使用了對象B,C也使用了對象B,那么,C對B的使用所造成的對A的影響可能是料想不到的。

2023/6/715第十五頁,共五十一頁,編輯于2023年,星期一7.2.2面向對象模式4、模式實例以一個最簡單的交互式矢量繪圖系統(tǒng)為例。

2023/6/716第十六頁,共五十一頁,編輯于2023年,星期一7.2.3分層模式1、分層模式的基本結構2023/6/717第十七頁,共五十一頁,編輯于2023年,星期一7.2.3分層模式2、分層模式的優(yōu)點(1)支持基于抽象程度遞增的系統(tǒng)設計,使設計者可以把一個復雜系統(tǒng)按遞增的步驟進行分解。(2)支持功能增強,有較好的擴展性。因為每一層至多和相鄰的上下層交互,因此功能的改變最多影響相鄰的上下層;如果該層次功能的變化僅僅局限于某些功能函數(shù)的具體實現(xiàn),而沒有對接口進行修改,那么對其相鄰層次幾乎沒有影響。(3)支持軟件重用。只要提供的服務接口定義不變,同一層的不同實現(xiàn)可以交換使用。這樣,就可以定義一組標準的接口,而允許各種不同的實現(xiàn)方法。

2023/6/718第十八頁,共五十一頁,編輯于2023年,星期一7.2.3分層模式3、分層模式的不足(1)并不是每個系統(tǒng)都可以很容易地劃分為分層的模式,甚至即使一個系統(tǒng)的邏輯結構是層次化的,出于對系統(tǒng)性能的考慮,系統(tǒng)設計師不得不把一些低級或高級的功能綜合起來;(2)很難找到一個合適的、正確的層次抽象方法。

2023/6/719第十九頁,共五十一頁,編輯于2023年,星期一7.2.3分層模式4、模式實例層次系統(tǒng)最廣泛的應用是分層通信協(xié)議。在這一應用領域中,每一層提供一個抽象的功能,作為上層通信的基礎。較低的層次定義低層的交互,最低層通常只定義硬件物理連接。以ISO/OSI參考模型為例。該模型采用了7層體系結構,從高到低分別是:應用層、表示層、會話層、傳輸層、網絡層、數(shù)據(jù)鏈路層和物理層。

2023/6/720第二十頁,共五十一頁,編輯于2023年,星期一7.2.4知識庫模式

1、知識庫模式基本結構2023/6/721第二十一頁,共五十一頁,編輯于2023年,星期一7.2.4知識庫模式2、知識庫模式的優(yōu)缺點知識庫模式常應用于專家系統(tǒng)中,是專家系統(tǒng)中不可替代的軟件架構模式,但在其他領域應用的案例較少見。

2023/6/722第二十二頁,共五十一頁,編輯于2023年,星期一7.2.4知識庫模式4、模式實例知識庫模式的軟件體系架構常見于專家系統(tǒng)中。專家系統(tǒng)是一類具有專門知識和經驗的計算機智能程序系統(tǒng),通過對人類專家的問題求解能力的建模,采用人工智能中的知識表示和知識推理技術來模擬通常由專家才能解決的復雜問題,達到具有與專家同等解決問題能力的水平。

2023/6/723第二十三頁,共五十一頁,編輯于2023年,星期一7.3客戶/服務器模式

當一臺連入網絡的計算機向其他計算機提供各種網絡服務(如數(shù)據(jù)、文件的共享等)時,它就被叫做服務器。而那些用于訪問服務器資料的計算機則被叫做客戶機??蛻魴C和服務器都是獨立的計算機。采用客戶/服務器(Client/Server,C/S)結構的系統(tǒng),有一臺或多臺服務器以及大量的客戶機。服務器配備大容量存儲器并安裝數(shù)據(jù)庫系統(tǒng),用于數(shù)據(jù)的存放和數(shù)據(jù)檢索;客戶端安裝專用的軟件,負責數(shù)據(jù)的輸入、運算和輸出。嚴格說來,客戶機/服務器模型并不是從物理分布的角度來定義,它所體現(xiàn)的是一種網絡數(shù)據(jù)訪問的實現(xiàn)方式。采用這種結構的系統(tǒng)目前應用非常廣泛。

2023/6/724第二十四頁,共五十一頁,編輯于2023年,星期一7.3.1協(xié)作計算模型的發(fā)展在集中式計算技術時代,廣泛使用大型機/小型機計算模型。70年代以后,隨著微型計算機和計算機網絡的出現(xiàn),集中式結構逐漸被以PC為主的微機網絡所取代。網絡/文件服務器計算模型的產生用以解決個人PC和工作站的數(shù)據(jù)和外部設備共享問題。以PC機為主體的文件服務器并不能滿足分布式計算的需求,因此客戶機/服務器技術應運而生,它集中了大中型系統(tǒng)及文件服務器的優(yōu)點,并有良好的系統(tǒng)開放性和可擴展性。隨著信息的全球化,區(qū)域的界限已經被打破,電子商務作為Internet的強大的驅動力,迫使客戶機/服務器模式從局域網(LAN)向廣域網(WAN)延伸。

2023/6/725第二十五頁,共五十一頁,編輯于2023年,星期一7.3.2傳統(tǒng)兩層客戶機/服務器模式1、兩層客戶機/服務器模式的基本結構客戶機/服務器系統(tǒng)有三個主要部件:數(shù)據(jù)庫服務器、客戶應用程序和網絡。(1)服務器負責有效地管理系統(tǒng)的資源,其任務集中于:數(shù)據(jù)庫安全性的要求數(shù)據(jù)庫訪問并發(fā)性的控制數(shù)據(jù)庫前端的客戶應用程序的全局數(shù)據(jù)完整性規(guī)則數(shù)據(jù)庫的備份與恢復(2)客戶端應用程序的主要任務是:提供用戶與數(shù)據(jù)庫交互的界面向數(shù)據(jù)庫服務器提交用戶請求并接收來自數(shù)據(jù)庫服務器的信息利用客戶應用程序對存在于客戶端的數(shù)據(jù)執(zhí)行應用邏輯要求(3)網絡通信軟件的主要作用是,完成數(shù)據(jù)庫服務器和客戶應用程序之間的數(shù)據(jù)傳輸。2023/6/726第二十六頁,共五十一頁,編輯于2023年,星期一7.3.2傳統(tǒng)兩層客戶機/服務器模式1、兩層客戶機/服務器模式的基本結構2023/6/727第二十七頁,共五十一頁,編輯于2023年,星期一7.3.2傳統(tǒng)兩層客戶機/服務器模式2、兩層客戶機/服務器模式的優(yōu)缺點(1)系統(tǒng)的客戶端應用程序和服務器部件分別運行在不同的計算機上,系統(tǒng)中每臺服務器都可以適合各部件的要求,這對于硬件和軟件的變化顯示出極大的適應性和靈活性,而且易于對系統(tǒng)進行擴充和維護。(2)在客戶機/服務器模型中,系統(tǒng)中的功能部件充分隔離,客戶端程序的開發(fā)集中于數(shù)據(jù)的顯示和分析,而數(shù)據(jù)庫服務器的開發(fā)則集中于數(shù)據(jù)的管理,不必在每一個新的應用開發(fā)中都要對一個數(shù)據(jù)庫進行編碼。(3)將大的應用處理任務分布到許多通過網絡連接的低成本計算機上使系統(tǒng)部署費用極大降低。(4)兩層模式的客戶機/服務器模式和多層模式相比,開發(fā)、部署和維護成本較低。2023/6/728第二十八頁,共五十一頁,編輯于2023年,星期一7.3.2傳統(tǒng)兩層客戶機/服務器模式2、兩層客戶機/服務器模式的優(yōu)缺點(1)系統(tǒng)的可靠性有所降低。一個客戶機/服務器系統(tǒng)是由各自獨立開發(fā)、制造和管理的各種硬件和軟件的組成的混合體

,其內在的可靠性不如單一的、中央管理的大型機或小型機,出現(xiàn)問題時,很難立即獲得技術支持和幫助。(2)維護費用較高。盡管這種應用模式在某種程度上提高了生產效率,由于客戶端需要安裝龐大而復雜的應用程序,當網絡用戶的規(guī)模達到一定的數(shù)量之后,系統(tǒng)的維護量急劇增加,因而維護應用系統(tǒng)變得十分困難。(3)系統(tǒng)資源的浪費。隨著客戶端的規(guī)模越來越大,對客戶機資源的要求也越來越高??蛻魴C硬件要適應系統(tǒng)要求而不斷更新,每個客戶機都要重復購置、安裝大量應用軟件,這無疑是一種巨大的浪費。(4)系統(tǒng)缺乏靈活性??蛻魴C/服務器需要對每一應用獨立地開發(fā)應用程序,消耗了大量的資源。(5)二層C/S結構是單一服務器且以局域網為中心的,所以難以擴展至大型企業(yè)廣域網或Internet;(6)數(shù)據(jù)安全性不好。因為客戶端程序可以直接訪問數(shù)據(jù)庫服務器,那么,安裝在客戶端計算機上的其他程序也可以訪問數(shù)據(jù)庫服務器,從而使數(shù)據(jù)庫的安全性受到威脅。2023/6/729第二十九頁,共五十一頁,編輯于2023年,星期一7.3.2傳統(tǒng)兩層客戶機/服務器模式3、應用實例以一個早期構建的學生信息管理系統(tǒng)為例。系統(tǒng)硬件包括若干臺客戶機和一臺服務器以及連接它們的網絡環(huán)境,服務器上安裝Unix操作系統(tǒng),使用Oracle數(shù)據(jù)庫管理系統(tǒng)管理和存儲數(shù)據(jù);客戶機上安裝Windows操作系統(tǒng),使用Delphi語言開發(fā)客戶端管理軟件,再部署到每個管理人員使用的客戶機上。服務器和客戶機軟件要采用一些安全控制策略和加密手段以保證數(shù)據(jù)的安全。

2023/6/730第三十頁,共五十一頁,編輯于2023年,星期一7.3.3經典三層客戶機/服務器模式

1、三層客戶機/服務器模式基本結構三層C/S結構是將應用功能分成表示層、功能層和數(shù)據(jù)層三部分。表示層是應用的用戶接口部分,它擔負著用戶與應用間的對話功能。它用于檢查用戶從鍵盤等輸入的數(shù)據(jù),顯示應用輸出的數(shù)據(jù)。為使用戶能直觀地進行操作,一般要使用圖形用戶接口(GUI),操作簡單、易學易用。在變更用戶接口時,只需改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他兩層。檢查的內容也只限于數(shù)據(jù)的形式和值的范圍,不包括有關業(yè)務本身的處理邏輯。功能層相當于應用的本體,它是將具體的業(yè)務處理邏輯地編入程序中。表示層和功能層之間的數(shù)據(jù)交互要盡可能簡潔。數(shù)據(jù)層就是DBMS,負責管理對數(shù)據(jù)庫數(shù)據(jù)的讀寫。DBMS必須能迅速執(zhí)行大量數(shù)據(jù)的更新和檢索。目前的主流是采用關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。因此一般從功能層傳送到數(shù)據(jù)層的要求大都使用SQL語言。

2023/6/731第三十一頁,共五十一頁,編輯于2023年,星期一7.3.3經典三層客戶機/服務器模式1、三層客戶機/服務器模式基本結構2023/6/732第三十二頁,共五十一頁,編輯于2023年,星期一7.3.3經典三層客戶機/服務器模式2、三層C/S模式的優(yōu)缺點

(1)三層C/S結構具有更靈活的硬件系統(tǒng)構成,對于各個層可以選擇與其處理負荷和處理特性相適應的硬件。(2)合理地分割三層結構并使其獨立,可以使系統(tǒng)的結構變得簡單清晰,這樣就提高了程序的可維護性。(3)三層C/S結構中,應用的各層可以并行開發(fā),各層也可以選擇各自最適合的開發(fā)語言,有利于變更和維護應用技術規(guī)范。按層分割功能使各個程序的處理邏輯變得十分簡單。(4)允許充分利用功能層有效地隔離開表示層與數(shù)據(jù)層,未授權的用戶難以繞過功能層而利用數(shù)據(jù)庫工具或黑客手段非法地訪問數(shù)據(jù)層,這就為嚴格的安全管理奠定了堅實的基礎;整個系統(tǒng)的管理層次也更加合理和可控制。(5)系統(tǒng)可用性高,具有良好的開放性,可跨平臺操作,支持異構數(shù)據(jù)庫。三層C/S模式當然也存在一些不足,例如相比兩層C/S模式來講,開發(fā)的技術難度加大,對于小企業(yè)和小型應用項目來說,部署成本過高等。2023/6/733第三十三頁,共五十一頁,編輯于2023年,星期一7.3.3經典三層客戶機/服務器模式3、應用實例由于三層C/S模式應用較廣泛,各行業(yè)的應用實例也不勝枚舉,仍以學校學生信息管理系統(tǒng)為例。出于性能和數(shù)據(jù)安全的考慮,上節(jié)實例中提到的學校對自己的學生信息管理系統(tǒng)進行了升級改造,增加了兩臺應用服務器,其中一臺處理學生信息查詢業(yè)務,另一臺處理學生信息修改業(yè)務,這兩臺應用服務器軟件使用微軟COM+組件開發(fā),對客戶機軟件也進行了修改。這樣改造的結果是:業(yè)務處理邏輯分配到了兩個服務器節(jié)點上,系統(tǒng)性能得到提升,支持的終端數(shù)可以成倍增加;查詢和修改兩個業(yè)務邏輯分離,更有利于系統(tǒng)安全控制;客戶機軟件只處理表示邏輯,系統(tǒng)開發(fā)工作量大大減少;客戶機軟件和應用服務器軟件可由兩個小組分別開發(fā)和維護,提高和效率。2023/6/734第三十四頁,共五十一頁,編輯于2023年,星期一7.3.3經典三層客戶機/服務器模式4、多層客戶機/服務器模式在大型系統(tǒng)中,為了進一步提高系統(tǒng)性能,增加系統(tǒng)靈活性,還可以對三層C/S結構中的功能層繼續(xù)進行細分。例如將數(shù)據(jù)庫存取的相關操作獨立出來形成數(shù)據(jù)庫訪問層,該層專門負責和數(shù)據(jù)庫交互,存取數(shù)據(jù)。這樣就形成了四層乃至N層客戶機/服務器模式。這樣做的優(yōu)點在于,對于大型系統(tǒng)來說,邏輯結構更加清晰,系統(tǒng)各層的開發(fā)和維護、部署更加靈活,但也帶來了管理成本加大的問題。在實際應用中,系統(tǒng)架構師應根據(jù)項目的具體情況選擇合適的架構模式。2023/6/735第三十五頁,共五十一頁,編輯于2023年,星期一7.4瀏覽器/服務器模式

瀏覽器/服務器(Browser/Server,B/S)架構模式實際上是上述三層C/S架構的一種實現(xiàn)方式,其具體結構為:瀏覽器/Web服務器/數(shù)據(jù)庫服務器,2023/6/736第三十六頁,共五十一頁,編輯于2023年,星期一7.4瀏覽器/服務器模式2、主要優(yōu)缺點B/S結構的主要優(yōu)點是分布性強、維護方便、開發(fā)簡單且共享性強、總體擁有成本低。提供了異種機、異種網、異種應用服務的聯(lián)機、聯(lián)網、統(tǒng)一服務的最現(xiàn)實的開放性基礎。用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達到了"零客戶端"的功能,很容易在運行時自動升級。主要缺點在于:一是存在數(shù)據(jù)安全性問題、對服務器要求過高、數(shù)據(jù)傳輸速度慢、軟件的個性化特點明顯降低;二是難以實現(xiàn)傳統(tǒng)模式下的特殊功能要求。例如通過瀏覽器進行大量的數(shù)據(jù)輸入或進行報表的應答、專用性打印輸出都比較困難和不便。三是實現(xiàn)復雜的應用構造有較大的困難。雖然可以用ActiveX、Java等技術開發(fā)較為復雜的應用,但是相對于已經發(fā)展的非常成熟的C/S一系列應用工具來說,這些技術還不夠成熟。2023/6/737第三十七頁,共五十一頁,編輯于2023年,星期一7.4瀏覽器/服務器模式3、應用實例還以上文學校學生信息管理系統(tǒng)為實例說明這種架構模式。學校準備向全校學生開放部分信息,在校學生可以在校園網上用自己的計算機查詢自己的諸如考試成績、圖書借閱記錄等信息,學校難道要讓每個學生都下載安裝一個客戶機信息軟件嗎。這種情況下,B/S模式就顯示出它的巨大優(yōu)勢,改用這種模式就是一種必然的選擇。新系統(tǒng)采用B/S架構,結合了ASP技術,并將組件技術COM+和ActiveX技術分別應用在服務器端和客戶端。該系統(tǒng)的實現(xiàn)主要分為三個部分:ASP頁面、COM+組件和數(shù)據(jù)庫,是一個三層結構。表示層由ASP頁面組成,用以實現(xiàn)WEB頁面顯示和調用COM+組件,業(yè)務邏輯和數(shù)據(jù)訪問由一組用VC實現(xiàn)的COM+組件構成。為了便于維護、升級和實現(xiàn)分布式應用,在實現(xiàn)過程中,又將業(yè)務邏輯層和數(shù)據(jù)訪問層分離開,ASP頁面不直接調用數(shù)據(jù)訪問層,而是通過業(yè)務邏輯層調用數(shù)據(jù)庫。一些需要用WEB處理的、滿足大多數(shù)訪問者請求的功能界面采用B/S結構,例如任課教師可以通過瀏覽器查詢所教班級學生各種相關信息;學校管理人員通過瀏覽器對學校的學生、教師等信息進行管理與維護以及查詢統(tǒng)計;領導層可通過瀏覽器進行數(shù)據(jù)的查詢和決策。2023/6/738第三十八頁,共五十一頁,編輯于2023年,星期一7.5基于構件的模式1、基于構件模式的基本結構一般認為,構件是指語義完整、語法正確和有可重用價值的單位軟件,是軟件重用過程中可以明確辯識的系統(tǒng);結構上,它是語義描述、通訊接口和實現(xiàn)代碼的復合體。簡單地說,構件是具有一定的功能,能夠獨立工作或能同其它構件裝配起來協(xié)調工作的程序體,構件的使用同他的開發(fā)、生產無關。從抽象程度來看,面向對象技術已達到了類級重用(代碼重用),它以類為封裝的單位。這樣的重用粒度還太小,不足以解決異構互操作和效率更高的重用。構件將抽象的程度提到一個更高的層次,它是對一組類的組合進行封裝,并代表完成一個或多個功能的特定服務,也為用戶提供了多個接口。整個構件隱藏了具體的實現(xiàn),只用接口提供服務。

2023/6/739第三十九頁,共五十一頁,編輯于2023年,星期一7.5基于構件的模式2、基于構件模式的優(yōu)缺點基于構件的軟件架構模式是軟件開發(fā)發(fā)展到一定階段的產物,是目前主流的應用軟件架構模式,其優(yōu)點體現(xiàn)在以下幾個方面:(1)完全黑盒的軟件復用,整個構件隱藏了具體的實現(xiàn),只用接口提供服務。不僅能實現(xiàn)代碼復用,還實現(xiàn)了核心功能復用。(2)總體架構的松耦合,構件與構件之間都是松耦合的,相同接口而不同實現(xiàn)的構件完全可以互換。(3)軟件生產周期縮短,目前,人們更傾向于購買使用已開發(fā)好的構件來構建自己的系統(tǒng),從而使開發(fā)時間大大縮短。(4)能適應遠程訪問的分布式、多層次異構系統(tǒng)。(5)具有靈活方便的升級能力和系統(tǒng)模塊的更新維護能力。存在的缺點主要有以下幾點:一是大量使用第三方構件給軟件的安全帶來隱患;二是購買構件可能使軟件成本增加;三是非定制的構件中存在的無用部分可能帶來性能負擔。2023/6/740第四十頁,共五十一頁,編輯于2023年,星期一7.5基于構件的模式3、應用實例在此以企事業(yè)單位的檔案管理系統(tǒng)為例,檔案MIS系統(tǒng)基于C/S(Client/Server)與B/S(Browser/Server)混合結構對檔案信息進行全面收集、加工、存儲、傳輸和利用,并對管理活動進行控制。針對檔案管理的業(yè)務流程,檔案管理信息系統(tǒng)應具有庫文件管理、著錄標引、分類編目、排序、查詢、借閱、打印、統(tǒng)計、報表等功能,形成若干子系統(tǒng)。根據(jù)對檔案工作領域的分析結果,建立開發(fā)模型,明確劃分三類構件,即:將系統(tǒng)中不變(或基本不變)部分作為通用類構件,如各類型的檔案單位都要進行大量的查詢、統(tǒng)計、報表等操作;可變部分,則歸入專用類構件,如著錄標引、分類編目、借閱等;而系統(tǒng)類構件,則是在整個MIS中都要用到的構件,如開發(fā)工具的菜單、窗口、網絡安全模塊等。

2023/6/741第四十一頁,共五十一頁,編輯于2023年,星期一7.5基于構件的模式3、應用實例2023/6/742第四十二頁,共五十一頁,編輯于2023年,星期一7.6軟件架構建模技術研究軟件架構的首要問題是如何表示軟件架構,即如何對軟件架構建模。根據(jù)建模的側重點的不同,可以將軟件架構的模型分為5種:結構模型、框架模型、動態(tài)模型、過程模型和功能模型。在這5個模型中,最常用的是結構模型和動態(tài)模型。(1)結構模型這是一個最直觀、最普遍的建模方法。這種方法以架構的構件、連接件和其他概念來刻畫結構,并力圖通過結構來反映系統(tǒng)的重要語義內容,包括系統(tǒng)的配置、約束、隱含的假設條件、風格、性質。研究結構模型的核心是架構描述語言。(2)框架模型框架模型與結構模型類似,但它不太側重描述結構的細節(jié)而更側重于整體的結構??蚣苣P椭饕砸恍┨厥獾膯栴}為目標建立只針對和適應該問題的結構。2023/6/743第四十三頁,共五十一頁,編輯于2023年,星期一7.6軟件架構建模技術(3)動態(tài)模型動態(tài)模型是對結構或框架模型的補充,研究系統(tǒng)的"大顆粒"的行為性質。例如,描述系統(tǒng)的重新配置或演化。動態(tài)可能指系統(tǒng)總體結構的配置、建立或拆除通信通道或計算的過程。這類系統(tǒng)常是激勵型的。(4)過程模型過程模型研究構造系統(tǒng)的步驟和過程。因而結構是遵循某些過程腳本的結果。(5)功能模型該模型認為架構是由一組功能構件按層次組成,下層向上層提供服務。它可以看作是一種特殊的框架模型。這5種模型各有所長,如果將5種模型有機地統(tǒng)一在一起,形成一個完整的模型來刻畫軟件架構,將能更加準確、全面地反映軟件架構。2023/6/744第四十四頁,共五十一頁,編輯于2023年,星期一7.6.1軟件架構“4+1”視圖模型

PhilippeKruchten在1995年提出了一個"4+1"的視角模型。"4+1"模型從5個不同的視角包括邏輯視角、過程視角、物理視角、開發(fā)視角和場景視角來描述軟件架構。每一個視角只關心系統(tǒng)的一個側面,5個視角結合在一起才能夠反映系統(tǒng)的軟件架構的全部內容。"4+1"視圖模型如圖7.14所示。2023/6/745第四十五頁,共五十一頁,編輯于2023年,星期一7.6.2“4+1”視圖模型建模方法

1、邏輯視角-邏輯結構邏輯視角主要對系統(tǒng)的邏輯結構進行建模,采用的是面向對象的分解的方法。邏輯架構主要支持功能性需求――即在為用戶提供服務方面系統(tǒng)所應該提供的功能。系統(tǒng)分解為一系列的關鍵抽象,(大多數(shù))來自于問題域,表現(xiàn)為對象或對象類的形式。它們采用抽象、封裝和繼承的原理。分解并不僅僅是為了功能分析,而且用來識別遍布系統(tǒng)各個部分的通用機制和設計元素。一般使用Rational/Booch方法來表示邏輯架構,主要借助于類圖和類模板的手段。類圖用來顯示一個類的集合和它們的邏輯關系:關聯(lián)、使用、組合、繼承等等。相似的類可以劃分成類集合。類模板關注于單個類,它們強調主要的類操作,并且識別關鍵的對象特征。如果需要定義對象的內部行為,則使用狀態(tài)轉換圖或狀態(tài)圖來完成。公共機制或服務可以在類功能(classutilities)中定義。對于數(shù)據(jù)驅動程度高的應用程序,可以使用其他形式的邏輯視圖,例如E-R圖,來代替面向對象的方法。

2023/6/746第四十六頁,共五十一頁,編輯于2023年,星期一7.6.2“4+1”視圖模型建模方法

2、進程視角-進程架構進程視角主要對系統(tǒng)的進程架構進行建模,采用過程分解的方法。進程架構考慮一些非功能性的需求,如性能和可用性。它解決并發(fā)性、分布性、系統(tǒng)完整性、容錯性的問題,以及邏輯視圖的主要抽象如何與進程結構相配合在一起――即在哪個控制線程上,對象的操作被實際執(zhí)行。進程架構可以在幾種層次的抽象上進行描述,每個層次針對不同的問題。在最高的層次上,進程架構可以視為一組獨立執(zhí)行的通信程序的邏輯網絡,它們分布在整個一組硬件資源上,這些資源通過LAN或者WAN連接起來。多個邏輯網絡可能同時并存,共享相同的物理資源。例如,獨立的邏輯網絡可能

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論