張 艷
(天津海運(yùn)職業(yè)學(xué)院 天津 300350)
當(dāng)今軟件的主流開發(fā)方法是面向?qū)ο蟮某绦蛟O(shè)計(jì)和軟件開發(fā),并取得了一定的發(fā)展,逐漸成熟。而在這種開發(fā)方式發(fā)展的過程當(dāng)中,也形成了不少相對比較復(fù)雜的開發(fā)方法。UML作為一種通用的用于建模的語言,把OOSE、OMT和Booch的概念結(jié)合了起來,是可以對軟件密集型的系統(tǒng)的制品來進(jìn)行構(gòu)造、詳述、可視化和文檔化的一種計(jì)算機(jī)圖形語言。它相對于傳統(tǒng)的計(jì)算機(jī)語言,不僅融入了最新的思想和方法,還可以讓開發(fā)出來的軟件具有更加強(qiáng)大的功能,供用戶使用。下面就探討一下基于UML的軟件體系結(jié)構(gòu)的開發(fā)方法。
基于UML的軟件系統(tǒng)包含著幾個模型,分別是用例分析模型、靜態(tài)結(jié)構(gòu)模型、動態(tài)行為模型和物理結(jié)構(gòu)模型。
用例分析模型的作用是對軟件系統(tǒng)的需求進(jìn)行初步的分析,分析一下軟件可以做到的方面和被期待去做的方面,以及不可以做的方面,具體的情況可以用用例來進(jìn)行描述。
靜態(tài)結(jié)構(gòu)模型的作用是進(jìn)一步對軟件系統(tǒng)的需求進(jìn)行分析,確定類和類之間的關(guān)系以及每個類的作用,把軟件系統(tǒng)的靜態(tài)結(jié)構(gòu)確定下來,一般用對象圖和類圖來描述。
可以通過活動圖、協(xié)作圖、狀態(tài)圖和順序圖來對軟件系統(tǒng)的動態(tài)行為模型進(jìn)行描述。主要用于描述系統(tǒng)基于時間的變化,對象之間會發(fā)生的協(xié)作行為和系統(tǒng)的交互關(guān)系。
通常使用部署圖和構(gòu)件圖來描述物理結(jié)構(gòu)模型,作用是清楚描述軟件系統(tǒng)的物理結(jié)構(gòu)和內(nèi)部的系統(tǒng)構(gòu)建。
軟件體系結(jié)構(gòu)要解決的問題就是如何將以上四種模型來做一個相對平穩(wěn)的過渡。在軟件系統(tǒng)的開發(fā)當(dāng)中,軟件系統(tǒng)模型起到了相當(dāng)關(guān)鍵的作用,是軟件系統(tǒng)開發(fā)的基礎(chǔ)。
絕大部分的軟件體系結(jié)構(gòu)由5部分來構(gòu)成,分別是組件、連接器、配置、角色和端口,其中最基本的元素是組件、連接器和配置。
還帶有類型、接口、約束、語義、演化和非功能等屬性。如server、client、filter和GUI。
連接器相對獨(dú)立,可以不對應(yīng)系統(tǒng)中的編譯元,與組件不同。如pipes和browser-server等。
組件作為軟件體系結(jié)構(gòu)中一個封裝的實(shí)體,它的類可以描述為一個包含接口的集合。組件要想與外部環(huán)境進(jìn)行交互,就要通過它的接口來進(jìn)行,而接口則對組件和外部環(huán)境的交互和行為進(jìn)行了描述。每個端口都包含了有一組端口,而每個端口都對應(yīng)一個交互點(diǎn)。其中要注意的是:一是在組件的描述中,組件接口的類型至少要有一種;二是在接口的描述中,端口的類型至少要有一種;三是在系統(tǒng)的運(yùn)行中,組件的實(shí)例至少要有一個;四是每一個組件都應(yīng)該要有一個用于辨別是符合組件還是原子組件的標(biāo)簽。
在軟件體系結(jié)構(gòu)中,連接器作為一個主要的實(shí)體,接口也是必不可少的,而連接器的接口的組成單位則是角色,每一個在連接器中的角色都對與該連接器交互的參與者進(jìn)行了定義。要注意的地方前三點(diǎn)和組件的描述類似,第四,組件和與組件項(xiàng)鏈的地段連接器來決定連接器的頂部接口;第五點(diǎn)和第四點(diǎn)有相似之處,組件和頂端連接器來決定連接器的底端接口。
一個軟件體系結(jié)構(gòu)的風(fēng)格由它的配置來決定,還能夠根據(jù)配置的信息來確定系統(tǒng)內(nèi)的組件和連接器是否可以正常通信等等。要注意的地方有:一是軟件體系結(jié)構(gòu)的風(fēng)格類型由配置來定義;二是配置與軟件體系結(jié)構(gòu)的連接器和組件相關(guān)聯(lián);三是至少要有一個實(shí)例在配置的系統(tǒng)當(dāng)中。
組件和連接器的實(shí)例組成了軟件體系結(jié)構(gòu),因?yàn)橄到y(tǒng)的高層設(shè)計(jì)問題由體系結(jié)構(gòu)關(guān)注,因此軟件體系結(jié)構(gòu)的用model類來進(jìn)行定義。要注意的地方有:一是構(gòu)成軟件體系結(jié)構(gòu)的類必須要是它的模型元素;二是在組件端口中,至少要參與一個連接器的角色;三和二類似,至多由一個組件端口來實(shí)現(xiàn)每個連接器角色;四是軟件體系結(jié)構(gòu)的內(nèi)部各組件不參與其它軟件體系結(jié)構(gòu)的關(guān)聯(lián)。
要將基于UML的軟件體系結(jié)構(gòu)的開發(fā)方法很好地應(yīng)用到系統(tǒng)的建模當(dāng)中,就要尋求合適的方法,來實(shí)現(xiàn)模型和模型之間的平穩(wěn)過渡。首先,開發(fā)者應(yīng)該獲取用戶的需求,然后根據(jù)用戶的需求創(chuàng)建一個用例分析模型,然后以這個模型作為切入點(diǎn)來將其中的用例轉(zhuǎn)化成各組件和連接器之間的關(guān)系,來導(dǎo)出相應(yīng)的軟件體系結(jié)構(gòu)模型。在導(dǎo)出的過程中,對模型的問題進(jìn)行修正,達(dá)到最好的狀態(tài)。最后,根據(jù)已有模型,再進(jìn)一步精化模型,創(chuàng)建相應(yīng)的靜態(tài)結(jié)構(gòu)視圖,再創(chuàng)建出相應(yīng)的動態(tài)行為模型,最后再根據(jù)已做的所有工作,創(chuàng)建出對應(yīng)的物理結(jié)構(gòu)模型。
以上通過了以UML作為軟件體系結(jié)構(gòu)模型的語言,來開發(fā)一個軟件體系結(jié)構(gòu)。此方法的核心就是以軟件體系結(jié)構(gòu)模型作為中心,并讓用例分析模型放在它之前,其他設(shè)計(jì)模型則安排在它之后,這樣的話,用例分析模型模型就搭起了一座連通與其它模型的橋梁,這樣就可以有效改進(jìn)各模型之間的平穩(wěn)過渡問題。
[1]韓幸才.基于UML的ICU信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展.2012.
[2]朱賢友.基于 UML的公共選修課程管理系統(tǒng)的研究與實(shí)現(xiàn)[D].湖南大學(xué) 2010.
[3]李庭磊.基于UM L描述的軟件體系結(jié)構(gòu)研究[J].中國新技術(shù)新產(chǎn)品.2012.
[4]石琳.探討基于UML的軟件體系結(jié)構(gòu)開發(fā)方法[J].電腦編程技巧與維護(hù).2013.