《軟件工程與開發(fā)技術(shù)(西電第二版)第13章構(gòu)件模型和部署模型》由會員分享,可在線閱讀,更多相關(guān)《軟件工程與開發(fā)技術(shù)(西電第二版)第13章構(gòu)件模型和部署模型(16頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第13章 構(gòu)件模型和部署模型,,13.1 代碼實現(xiàn)與構(gòu)件模型 13.2 部署圖(deploy diagram) 13.3 小結(jié),13.1 代碼實現(xiàn)與構(gòu)件模型 13.1.1 概述 系統(tǒng)模型的大部分內(nèi)容反映了系統(tǒng)的邏輯和物理設(shè)計方面的信息,并且獨立于系統(tǒng)的最終實現(xiàn)單元。然而,為了可重用性和可操作性的目的,系統(tǒng)實現(xiàn)方面的信息也很重要。 UML使用兩種視圖來表示實現(xiàn)單元:構(gòu)件視圖和部署視圖。 構(gòu)件視圖將系統(tǒng)中可重用的代碼塊包裝成具有可替代性的物理單元,這些單元被稱為構(gòu)件。構(gòu)件視圖也稱為實現(xiàn)視圖。構(gòu)件視圖用構(gòu)件及構(gòu)件間的接口和依賴關(guān)系來表示設(shè)計元素(例如類)的具體實現(xiàn)。構(gòu)件是系統(tǒng)高層的可重用的組成部件。
2、圖13.1表達了構(gòu)件和接口之間的實現(xiàn)關(guān)系。,圖13.1 構(gòu)件與接口之間的實現(xiàn)關(guān)系,構(gòu)件是定義了良好接口的物理實現(xiàn)單元,它是系統(tǒng)中可替換的部分。每個構(gòu)件體現(xiàn)了系統(tǒng)設(shè)計中特定類的實現(xiàn)。良好定義的構(gòu)件不直接依賴于其他構(gòu)件而依賴于構(gòu)件所支持的接口。在這種情況下,系統(tǒng)中的一個構(gòu)件可以被支持正確接口的其他構(gòu)件所替代。 構(gòu)件具有它們支持的接口和需要從其他構(gòu)件得到的接口。接口是被軟件或硬件所支持的一個操作集。通過使用命名的接口,可以避免在系統(tǒng)中各個構(gòu)件之間直接發(fā)生依賴關(guān)系,有利于新構(gòu)件的替換。構(gòu)件視圖展示了構(gòu)件間相互依賴的網(wǎng)絡(luò)結(jié)構(gòu)。構(gòu)件視圖可以表示成兩種形式,一種是含有依賴關(guān)系的可用構(gòu)件(構(gòu)件庫)的集合,它是
3、構(gòu)造系統(tǒng)的物理組織單元。另一種表示為一個配置好的系統(tǒng),用來建造它的構(gòu)件已被選出。在這種形式中,每個構(gòu)件與給它提供服務(wù)的其他構(gòu)件連接,這些連接必須與構(gòu)件的接口要求相符合。構(gòu)件用一邊有兩個小矩形的一個長方形表示,它可以用實線與代表構(gòu)件接口的圓圈相連,如圖13.2所示。,13.1.2 構(gòu)件(Component)和構(gòu)件圖(Component Diagram)在UML中,構(gòu)件代表一個具有良好定義接口的軟件模塊,包括源代碼、二進制代碼、可執(zhí)行代碼、動態(tài)鏈接庫等。構(gòu)件的接口由其所提供的一個或多個接口元素表示。構(gòu)件之間的關(guān)系用來表示軟件模塊之間的編譯、運行、調(diào)用、接口的依賴關(guān)系,也可以表達構(gòu)件和類之間的實現(xiàn)關(guān)
4、系,在Rational Rose中是通過在類和構(gòu)件之間建立指派(Assigned)關(guān)系實現(xiàn)的。,,圖13.2 帶接口的構(gòu)件,構(gòu)件圖表示了構(gòu)件之間的依賴關(guān)系,如圖13.3所示。每個構(gòu)件實現(xiàn)(支持)一些接口,并使用另一些接口。如果構(gòu)件間的依賴關(guān)系與接口有關(guān),那么構(gòu)件可以被具有同樣接口的其他構(gòu)件替代。,,圖13.3 構(gòu)件圖,一個系統(tǒng)可能由多種軟件模塊組成,如可執(zhí)行文件(exe)、動態(tài)鏈接庫文件(dll)、圖片文件、網(wǎng)頁文件、文本文件等。每種軟件模塊由模型中的一個組件代表。為區(qū)別不同種類的構(gòu)件,可以使用版型(Stereotype)機制,如圖13.4所示。,,圖13.4 用版型表示不同種類的構(gòu)件,13.
5、1.3 構(gòu)件(Component)圖的作用構(gòu)件模型在軟件開發(fā)過程中的實現(xiàn)階段創(chuàng)建,是最終軟件產(chǎn)品的物理模型或者叫做物理構(gòu)件,直接對應(yīng)最終的各種程序和數(shù)據(jù)文件。構(gòu)件模型是軟件系統(tǒng)最終發(fā)布和部署的基礎(chǔ)。在某些語言中,程序的邏輯構(gòu)件,例如類和構(gòu)件之間的對應(yīng)關(guān)系是比較復(fù)雜的,有可能是多對多的關(guān)系,例如C++中,一個類的完整定義應(yīng)該放在兩個文件中,接口定義(.h)和實現(xiàn)文件(.cpp)中,即一個類可能會對應(yīng)多個實現(xiàn)文件,而一個源代碼文件中也可以定義多個類,這說明類和構(gòu)件之間是多對多的關(guān)系。另一些語言中,這種對應(yīng)關(guān)系比較簡單,例如,Java中的一個類只能對應(yīng)一個類構(gòu)件(.class)文件,反之亦然,是一對
6、一的關(guān)系;類和源程序之間的對應(yīng)關(guān)系是多對一的關(guān)系。,,在類與構(gòu)件之間是多對多關(guān)系時,從類跟蹤到構(gòu)件或者從構(gòu)件跟蹤到類是比較繁瑣的事情,這可以通過構(gòu)件模型很容易地達到此目的。在某些建模工具,例如Rational Rose中,選擇類或者構(gòu)件,通過建立類和構(gòu)件的指派關(guān)系,可以很方便地顯示出其對應(yīng)的構(gòu)件或者類列表,為軟件開發(fā)過程中的產(chǎn)品可跟蹤性奠定基礎(chǔ)。另外,構(gòu)件模型也是建立產(chǎn)品基線和發(fā)布以及產(chǎn)品生產(chǎn)線的基礎(chǔ)。,,,13.2 部署圖(Deploy Diagram),圖13.5 B/S三層模型系統(tǒng)的部署模型,部署是將開發(fā)出的軟件產(chǎn)品安裝在運行環(huán)境中,使之正確運行的軟件開發(fā)活動。目前的運行環(huán)境多為基于網(wǎng)絡(luò)
7、的分布式環(huán)境,部署過程較為復(fù)雜,因此部署過程也需要建模。將開發(fā)出的物理構(gòu)件和處理器結(jié)點對應(yīng)起來,以利于正確的部署和運行。部署圖表示了構(gòu)件和處理器物理結(jié)點之間的這種對應(yīng)關(guān)系。在UML中,部署圖表示了處理器、設(shè)備及其連接關(guān)系,也可以表示軟件構(gòu)件和處理器之間的關(guān)系。每個系統(tǒng)模型中只包含一個部署圖,表示該系統(tǒng)中處理器、設(shè)備之間的連接以及進程對處理器的分配。,,部署視圖表示運行時的計算資源(如處理器及它們之間的連接)的物理布置拓?fù)浣Y(jié)構(gòu),這些運行資源被稱作計算節(jié)點。在運行時,節(jié)點包含構(gòu)件和對象的動態(tài)映射進程和線程。構(gòu)件和對象在計算節(jié)點上的分配可以是靜態(tài)的,它們也可以在節(jié)點間遷移。如果含有依賴關(guān)系的構(gòu)件實例放置在不同節(jié)點上,則部署視圖可以展示出執(zhí)行過程中的瓶頸。圖13.5是一個基于B/S模式的三層模型。,,,13.3 小 結(jié)在UML中,構(gòu)件代表源程序文件或者二進制文件,是軟件開發(fā)的最終產(chǎn)品。從軟件產(chǎn)品的最初需求到系統(tǒng)的概念模型,從系統(tǒng)的邏輯模型到最終的物理文件,構(gòu)成了軟件系統(tǒng)完整的開發(fā)生命周期。一般來說,生命周期的開始與問題或者業(yè)務(wù)領(lǐng)域比較接近,后期則和計算機系統(tǒng)更為接近。這種從問題域到程序域的映射過程中,可跟蹤性顯得非常重要,因為最終的解決方案可能和最初的問題形式相距甚遠,構(gòu)件模型則給出了從邏輯模型到物理模型的跟蹤性,也給出了軟件構(gòu)件之間的依賴性,是軟件測試、發(fā)布和維護的基礎(chǔ)。,,,