官术网_书友最值得收藏!

  • 現(xiàn)代軟件工程
  • 周蘇
  • 3050字
  • 2020-05-29 11:56:11

4.5 設(shè)計(jì)模型

在軟件設(shè)計(jì)過(guò)程中,包含體系結(jié)構(gòu)、接口、構(gòu)件級(jí)和部署表示的設(shè)計(jì)模型是主要的工作產(chǎn)品。隨著每個(gè)元素的開(kāi)發(fā),逐漸形成更全面的設(shè)計(jì)視圖。體系結(jié)構(gòu)元素使用各種信息以獲得軟件、軟件子系統(tǒng)和構(gòu)件的完整的結(jié)構(gòu)表示,這些信息來(lái)自應(yīng)用域、需求模型,以及模式與風(fēng)格的分類(lèi)。接口設(shè)計(jì)元素為外部和內(nèi)部的接口,以及用戶(hù)接口建模。構(gòu)件級(jí)元素定義體系結(jié)構(gòu)中的每一個(gè)模塊(構(gòu)件)。最后,部署級(jí)設(shè)計(jì)元素劃分體系結(jié)構(gòu)、構(gòu)件和容納軟件的物理配置的接口。

可以從兩個(gè)維度觀察設(shè)計(jì)模型,如圖4-3所示。過(guò)程維度表示設(shè)計(jì)模型的演化,設(shè)計(jì)任務(wù)作為軟件過(guò)程的一部分被執(zhí)行。抽象維度表示詳細(xì)級(jí)別,分析模型的每個(gè)元素轉(zhuǎn)化為一個(gè)等價(jià)的設(shè)計(jì),然后迭代求精。圖中,虛線(xiàn)表示分析模型和設(shè)計(jì)模型之間的邊界。在某些情況下,分析模型和設(shè)計(jì)模型之間可能存在明顯的差別;而在有些情況下,分析模型慢慢地融入設(shè)計(jì)模型而沒(méi)有明顯的差別。設(shè)計(jì)模型的元素使用了很多UML圖,有些UML圖在分析模型中也使用了。差別在于這些圖被求精和細(xì)化為設(shè)計(jì)的一部分,并且提供了更多具體的實(shí)施細(xì)節(jié),突出了體系結(jié)構(gòu)的結(jié)構(gòu)和風(fēng)格、體系結(jié)構(gòu)中的構(gòu)件,以及構(gòu)件之間、構(gòu)件和外界之間的接口。

然而,沿橫軸表示的模型元素并不總是順序開(kāi)發(fā)的。大多數(shù)情況下,初步的體系結(jié)構(gòu)設(shè)計(jì)是基礎(chǔ),隨后是接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)(并行進(jìn)行)。通常直到設(shè)計(jì)全部完成后才開(kāi)始部署模型的工作。在設(shè)計(jì)過(guò)程中的任何地方都可以應(yīng)用設(shè)計(jì)模式。這些模式能夠使設(shè)計(jì)人員將設(shè)計(jì)知識(shí)應(yīng)用到他人已經(jīng)遇到并解決了的特定領(lǐng)域問(wèn)題。

978-7-111-52634-6-Chapter04-3.jpg

圖4-3 設(shè)計(jì)模型的維度

4.5.1 數(shù)據(jù)設(shè)計(jì)元素

和其他軟件工程活動(dòng)一樣,數(shù)據(jù)設(shè)計(jì)(有時(shí)也稱(chēng)為數(shù)據(jù)體系結(jié)構(gòu))創(chuàng)建在高抽象級(jí)上(以客戶(hù)或用戶(hù)的數(shù)據(jù)觀點(diǎn))表示的數(shù)據(jù)模型和(或)信息模型之后,數(shù)據(jù)模型被逐步求精為特定于實(shí)現(xiàn)的表示,亦即基于計(jì)算機(jī)的系統(tǒng)能夠處理的表示。在很多軟件應(yīng)用中,數(shù)據(jù)體系結(jié)構(gòu)對(duì)必須處理該數(shù)據(jù)的軟件的體系結(jié)構(gòu)有深遠(yuǎn)的影響。

數(shù)據(jù)結(jié)構(gòu)通常是軟件設(shè)計(jì)的重要部分。在程序構(gòu)件級(jí),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及處理這些數(shù)據(jù)的相關(guān)算法對(duì)創(chuàng)建高質(zhì)量的應(yīng)用程序而言是至關(guān)重要的。在應(yīng)用級(jí),數(shù)據(jù)模型(源于需求工程)到數(shù)據(jù)庫(kù)的轉(zhuǎn)變是實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)目標(biāo)的關(guān)鍵。在業(yè)務(wù)級(jí),收集存儲(chǔ)在不同數(shù)據(jù)庫(kù)中的信息并重新組織為“數(shù)據(jù)倉(cāng)庫(kù)”要使用數(shù)據(jù)挖掘或知識(shí)發(fā)現(xiàn)技術(shù),這些技術(shù)影響業(yè)務(wù)本身的成功。在每一種情況下,數(shù)據(jù)設(shè)計(jì)都發(fā)揮了重要作用。

4.5.2 體系結(jié)構(gòu)設(shè)計(jì)元素

軟件的體系結(jié)構(gòu)設(shè)計(jì)好比房屋的平面圖。平面圖描繪了房間的整體布局,包括各房間的尺寸、形狀、相互之間的聯(lián)系,以及房間的門(mén)窗。平面圖提供了房屋的整體視圖,而體系結(jié)構(gòu)設(shè)計(jì)元素提供了軟件的整體視圖。

體系結(jié)構(gòu)模型從以下3個(gè)來(lái)源獲得:①關(guān)于將要構(gòu)建的軟件的應(yīng)用域信息;②特定的需求模型元素,如數(shù)據(jù)流圖或分析類(lèi)、現(xiàn)有問(wèn)題中它們的關(guān)系和協(xié)作;③體系結(jié)構(gòu)風(fēng)格和模式的可獲得性。

體系結(jié)構(gòu)設(shè)計(jì)元素通常描述為一組相互聯(lián)系的子系統(tǒng),并且常常從需求模型的分析包中派生出來(lái)。每個(gè)子系統(tǒng)有自己的體系結(jié)構(gòu)(例如,圖形用戶(hù)接口可能根據(jù)之前存在的用戶(hù)接口體系結(jié)構(gòu)進(jìn)行了結(jié)構(gòu)化)。

4.5.3 接口設(shè)計(jì)元素

軟件的接口設(shè)計(jì)相當(dāng)于一組房屋的門(mén)、窗和外部設(shè)施的詳細(xì)繪圖(以及規(guī)格說(shuō)明)。這些繪圖描繪了門(mén)窗的尺寸和形狀、門(mén)窗的工作方式、設(shè)施(例如水、電、氣和電話(huà))連接入室的方式,以及平面圖上描繪的在室內(nèi)的分布方式。圖紙可以告訴人們門(mén)鈴在哪、是否使用內(nèi)部通信以通知有客來(lái)訪(fǎng),以及如何安裝保安系統(tǒng)。門(mén)、窗、外部設(shè)施的詳細(xì)圖紙(以及規(guī)格說(shuō)明)作為平面圖的一部分,大體上告訴人們事件和信息如何流入和流出住宅,以及如何在平面圖的房間內(nèi)流動(dòng)。軟件接口設(shè)計(jì)元素描述了信息如何流入和流出系統(tǒng),以及被定義為體系結(jié)構(gòu)一部分的構(gòu)件之間是如何通信的。

接口設(shè)計(jì)有3個(gè)重要的元素:①用戶(hù)界面(UI);②其他系統(tǒng)、設(shè)備、網(wǎng)絡(luò)或其他信息生成者或使用者的外部接口;③各種設(shè)計(jì)構(gòu)件之間的內(nèi)部接口。這些接口設(shè)計(jì)元素能夠使軟件進(jìn)行外部通信,還能使軟件體系結(jié)構(gòu)中的構(gòu)件之間進(jìn)行內(nèi)部通信和協(xié)作。

UI設(shè)計(jì)(越來(lái)越多地被稱(chēng)為可用性設(shè)計(jì))是軟件工程中的主要活動(dòng)。可用性設(shè)計(jì)包含美學(xué)元素(例如,布局、顏色、圖形、交互機(jī)制)、人機(jī)工程元素(例如,信息布局、隱喻、UI導(dǎo)航)和技術(shù)元素(例如,UI模式、可復(fù)用構(gòu)件)。

外部接口設(shè)計(jì)需要關(guān)于發(fā)送和接收信息的實(shí)體的確定信息。在所有情況下,這些信息都要在需求工程中收集,并且一旦開(kāi)始進(jìn)行接口設(shè)計(jì),還要檢驗(yàn)這些信息。外部接口設(shè)計(jì)應(yīng)包括錯(cuò)誤檢查和(在必要時(shí))適當(dāng)?shù)陌踩卣鳈z查。

內(nèi)部接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)緊密相關(guān)。分析類(lèi)的設(shè)計(jì)實(shí)現(xiàn)表示了所有操作和消息傳遞模式,使得不同類(lèi)的操作之間能夠進(jìn)行通信和協(xié)作。每個(gè)消息的設(shè)計(jì)必須提供必不可少的信息傳遞和已被請(qǐng)求操作的特定功能需求。如果選擇經(jīng)典的“輸入處理輸出”設(shè)計(jì)方法,每個(gè)軟件構(gòu)件接口就基于數(shù)據(jù)流表示和處理過(guò)程說(shuō)明中描述的功能進(jìn)行設(shè)計(jì)。

在有些情況下,接口建模的方式和類(lèi)所用的方式幾乎一樣。在UML中接口定義如下:“接口是類(lèi)、構(gòu)件或其他分類(lèi)符(包括子系統(tǒng))的外部可見(jiàn)的(公共的)操作說(shuō)明,而沒(méi)有內(nèi)部結(jié)構(gòu)的規(guī)格說(shuō)明。”更簡(jiǎn)單地說(shuō),接口是一組描述類(lèi)的部分行為的操作,并提供了那些操作的訪(fǎng)問(wèn)方法。例如,SafeHome安全功能使用控制面板,控制面板允許戶(hù)主控制安全功能的某些方面。在系統(tǒng)的高級(jí)版本中,控制面板的功能可能會(huì)通過(guò)無(wú)線(xiàn)PDA或移動(dòng)電話(huà)實(shí)現(xiàn)。

4.5.4 構(gòu)件級(jí)設(shè)計(jì)元素

軟件的構(gòu)件級(jí)設(shè)計(jì)相當(dāng)于一個(gè)房屋中每個(gè)房間的一組詳圖(以及規(guī)格說(shuō)明)。這些圖描繪了每個(gè)房間內(nèi)的布線(xiàn)和管道、電器插座和墻上開(kāi)關(guān)、水龍頭、水池、淋浴、浴盆、下水道、壁櫥和儲(chǔ)藏室的位置,還說(shuō)明了所使用的地板、裝飾,以及和房間相關(guān)的任何細(xì)節(jié)。軟件的構(gòu)件級(jí)設(shè)計(jì)完整地描述了每個(gè)軟件構(gòu)件的內(nèi)部細(xì)節(jié)。為此,構(gòu)件級(jí)設(shè)計(jì)為所有局部數(shù)據(jù)對(duì)象定義數(shù)據(jù)結(jié)構(gòu),為所有在構(gòu)件內(nèi)發(fā)生的處理定義算法細(xì)節(jié),并定義了允許訪(fǎng)問(wèn)所有構(gòu)件操作(行為)的接口。

在面向?qū)ο蟮能浖こ讨校褂肬ML圖表現(xiàn)的一個(gè)構(gòu)件如圖4-4所示。圖中表示的構(gòu)件名為SensorManagerment(SafeHome安全功能的一部分)。虛線(xiàn)箭頭連接了構(gòu)件和名為Sensor的類(lèi)。SensorManagement構(gòu)件完成所有和SafeHome傳感器相關(guān)的功能,包括監(jiān)測(cè)和配置傳感器。

構(gòu)件的設(shè)計(jì)細(xì)節(jié)可以在很多抽象級(jí)別建模。UML活動(dòng)圖可用來(lái)表示處理邏輯,構(gòu)件詳細(xì)的過(guò)程流可以使用偽代碼表示,也可以使用一些圖形(如流程圖或盒圖)來(lái)表示。算法結(jié)構(gòu)遵守結(jié)構(gòu)化編程的規(guī)則(即一套約束程序構(gòu)造)。對(duì)于基于待處理的數(shù)據(jù)對(duì)象的特性所選擇的數(shù)據(jù)結(jié)構(gòu),在實(shí)現(xiàn)中通常使用偽代碼或程序語(yǔ)言建模。

4.5.5 部署級(jí)設(shè)計(jì)元素

部署級(jí)設(shè)計(jì)元素指明軟件功能和子系統(tǒng)將如何在支持軟件的物理計(jì)算環(huán)境內(nèi)分布。例如,SafeHome產(chǎn)品元素被配置在3種主要的計(jì)算環(huán)境內(nèi)運(yùn)行——基于住宅的PC、SafeHome控制面板和位于CPI公司的服務(wù)器(提供基于因特網(wǎng)的系統(tǒng)訪(fǎng)問(wèn))。

在設(shè)計(jì)過(guò)程中,開(kāi)發(fā)的UML部署圖及隨后的精化如圖4-4所示。圖中顯示了3種計(jì)算環(huán)境(實(shí)際上,還可能包括傳感器、攝像頭和其他的環(huán)境)。圖中標(biāo)識(shí)出了每個(gè)計(jì)算元素中還有子系統(tǒng)(功能)。例如,個(gè)人計(jì)算機(jī)中有完成安全、監(jiān)視、住宅管理和通信功能的子系統(tǒng)。此外,還設(shè)計(jì)了一個(gè)外部訪(fǎng)問(wèn)子系統(tǒng)以管理外界資源對(duì)SafeHome系統(tǒng)的訪(fǎng)問(wèn)。每個(gè)子系統(tǒng)需要進(jìn)行細(xì)化,用以說(shuō)明該子系統(tǒng)所實(shí)現(xiàn)的構(gòu)件。

圖4-5所示的圖使用了描述符形式,這意味著部署圖顯示了計(jì)算環(huán)境,但并沒(méi)有明確地說(shuō)明配置細(xì)節(jié)。例如,“個(gè)人計(jì)算機(jī)”并沒(méi)有進(jìn)一步地明確它是一臺(tái)MacPC還是一臺(tái)WindowsPC、SUN工作站或Linux系統(tǒng)。在后面的階段或構(gòu)建開(kāi)始時(shí),需要用實(shí)例形式重新為部署圖提供這些細(xì)節(jié),明確每個(gè)實(shí)例的部署(專(zhuān)用的稱(chēng)為硬件配置)。

978-7-111-52634-6-Chapter04-4.jpg

圖4-4 UML構(gòu)件圖

978-7-111-52634-6-Chapter04-5.jpg

圖4-5 UML部署圖

主站蜘蛛池模板: 建湖县| 深州市| 新平| 东阿县| 瑞昌市| 平舆县| 华安县| 徐水县| 奎屯市| 来凤县| 凤阳县| 镇沅| 德昌县| 蓬莱市| 永靖县| 平顶山市| 崇信县| 襄樊市| 和林格尔县| 大埔区| 韶关市| 顺义区| 祥云县| 开原市| 焦作市| 黑河市| 垦利县| 都江堰市| 紫云| 武义县| 南漳县| 屏边| 芒康县| 古交市| 凤城市| 沂水县| 石首市| 会理县| 囊谦县| 达拉特旗| 陆丰市|