第六章 面向?qū)ο蠓治鯻第1頁
第六章 面向?qū)ο蠓治鯻第2頁
第六章 面向?qū)ο蠓治鯻第3頁
第六章 面向?qū)ο蠓治鯻第4頁
第六章 面向?qū)ο蠓治鯻第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第六章第六章 面向?qū)ο蟮牡男枨蠓治雒嫦驅(qū)ο蟮牡男枨蠓治?.1 面向?qū)ο蟮母拍钆c思想面向?qū)ο蟮母拍钆c思想6.2 UML概述概述 6.3 基于基于UML的需求分析的需求分析 6.4 基于基于UML的軟件開發(fā)過程的軟件開發(fā)過程引入面向?qū)ο蟮募夹g(shù)背景結(jié)構(gòu)化方法的缺點l 面向結(jié)構(gòu)化的分析方法的本質(zhì)是功能分解,這種方法的缺點是:穩(wěn)定性差、可修改性以及可重用性都較差。這是由于:l 1)該方法是圍繞著實現(xiàn)處理功能來構(gòu)造系統(tǒng)的,而用戶需求的變化大部分是針對功能的,所以一旦用戶的需求發(fā)生變化,那么系統(tǒng)的功能勢必就要發(fā)生變化,即系統(tǒng)的穩(wěn)定性差;l 2)先有系統(tǒng)的邊界,即劃定了系統(tǒng)實現(xiàn)的范圍,再依據(jù)它劃分系統(tǒng)的功能以

2、及分解得到系統(tǒng)的各個子功能,完成系統(tǒng)后,就難以再擴充系統(tǒng)的邊界了;l 3)把處理分解成子處理的過程沒有固定的模式和指導(dǎo),每個人對問題的理解也不相同,那么劃分系統(tǒng)就是隨意的,從而從來都難以重用已有的軟件模塊。而面向?qū)ο蟮乃枷肭∏】梢葬槍σ陨蠁栴},使得問題得以解決。 面向?qū)ο蟮男枨蠓治龅姆椒ǖ暮诵氖抢妹嫦驅(qū)ο蟮母拍蠲嫦驅(qū)ο蟮男枨蠓治龅姆椒ǖ暮诵氖抢妹嫦驅(qū)ο蟮母拍詈头椒檐浖男枨蠓治鼋ㄔ炷P汀K嫦驅(qū)ο箫L(fēng)格的圖和方法為軟件的需求分析建造模型。它包含面向?qū)ο箫L(fēng)格的圖形語言機制和用于指導(dǎo)需求分析的面向?qū)ο蠓椒▽W(xué)。面向?qū)ο笮握Z言機制和用于指導(dǎo)需求分析的面向?qū)ο蠓椒▽W(xué)。面向?qū)ο蟪绦蛟O(shè)計和方法已經(jīng)發(fā)

3、展成為一種成熟的、有效的軟件開發(fā)方程序設(shè)計和方法已經(jīng)發(fā)展成為一種成熟的、有效的軟件開發(fā)方法。相比之下,面向?qū)ο蟮姆治龇椒ǖ某霈F(xiàn)和發(fā)展都比較落法。相比之下,面向?qū)ο蟮姆治龇椒ǖ某霈F(xiàn)和發(fā)展都比較落后。但是,在目前,面向?qū)ο蟮男枨蠓治鲆驯卉浖こ探绻J(rèn)后。但是,在目前,面向?qū)ο蟮男枨蠓治鲆驯卉浖こ探绻J(rèn)為是具有發(fā)展?jié)摿Φ闹匾男枨蠓治龇椒?,其?yōu)越性正在越來為是具有發(fā)展?jié)摿Φ闹匾男枨蠓治龇椒?,其?yōu)越性正在越來越多的軟件開發(fā)實踐中得到證實。越多的軟件開發(fā)實踐中得到證實。 UML統(tǒng)一了統(tǒng)一了 面向?qū)ο蠼5幕靖拍?、術(shù)語和表示方面向?qū)ο蠼5幕靖拍?、術(shù)語和表示方法,不僅為面向?qū)ο蟮能浖_發(fā)過程提供了

4、豐富的表達(dá)手段,法,不僅為面向?qū)ο蟮能浖_發(fā)過程提供了豐富的表達(dá)手段,而且也為軟件開發(fā)人員提供了相互交流、分享經(jīng)驗的共同語而且也為軟件開發(fā)人員提供了相互交流、分享經(jīng)驗的共同語言。言。 本章首先介紹面向?qū)ο蟮闹饕拍詈退枷氡菊率紫冉榻B面向?qū)ο蟮闹饕拍詈退枷?以以“家庭保安系家庭保安系統(tǒng)統(tǒng)”為實例,介紹與需求分析相關(guān)部分為實例,介紹與需求分析相關(guān)部分UML 語言機制以及基語言機制以及基于于UML的面向?qū)ο蟮男枨蠓椒ê瓦^程。的面向?qū)ο蟮男枨蠓椒ê瓦^程。引入面向?qū)ο蟮募夹g(shù)背景 6.1 面向?qū)ο蟮母拍钆c思想面向?qū)ο蟮母拍钆c思想l 面向?qū)ο蠓椒▽W(xué)的出發(fā)點和基本原則,是盡可能模擬人類習(xí)慣面向?qū)ο蠓椒▽W(xué)的出

5、發(fā)點和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使軟件開發(fā)的方法與過程盡可能接近人類認(rèn)識世的思維方式,使軟件開發(fā)的方法與過程盡可能接近人類認(rèn)識世界解決問題的方法與過程。界解決問題的方法與過程。l 客觀世界的問題都是由客觀世界中的實體以及實體間的關(guān)系構(gòu)客觀世界的問題都是由客觀世界中的實體以及實體間的關(guān)系構(gòu)成的。我們把客觀世界中的實體抽象為問題域中的對象。成的。我們把客觀世界中的實體抽象為問題域中的對象。l 本質(zhì)上講,為應(yīng)用問題尋求軟件解,是借助于計算機語言對其本質(zhì)上講,為應(yīng)用問題尋求軟件解,是借助于計算機語言對其提供的實體實施某些動作,以動作的結(jié)果給出問題的解。例如,提供的實體實施某些動作,以動

6、作的結(jié)果給出問題的解。例如,l 匯編語言和過程式程序設(shè)計語言。匯編語言提供的實體是寄存匯編語言和過程式程序設(shè)計語言。匯編語言提供的實體是寄存器、存儲單元;器、存儲單元;l 過程式程序設(shè)計語言提供的實體是變元、數(shù)組、紀(jì)錄和文件等。過程式程序設(shè)計語言提供的實體是變元、數(shù)組、紀(jì)錄和文件等。這些實體構(gòu)成解空間中的對象。通常,問題中的實體對象的行這些實體構(gòu)成解空間中的對象。通常,問題中的實體對象的行為是豐富多彩的,而軟件解空間中對象的行為卻是單調(diào)的。為是豐富多彩的,而軟件解空間中對象的行為卻是單調(diào)的。l 例如,存儲器單元只能進(jìn)行存和取操作,對于文例如,存儲器單元只能進(jìn)行存和取操作,對于文件,只能進(jìn)行讀、

7、寫和定位操作等。顯然,從上件,只能進(jìn)行讀、寫和定位操作等。顯然,從上述的分析和描述,兩個空間存在著明顯的述的分析和描述,兩個空間存在著明顯的“語義語義斷層斷層”。l 面向?qū)ο蟮男枨蠓治龇椒ㄍㄟ^對象、對象間消息面向?qū)ο蟮男枨蠓治龇椒ㄍㄟ^對象、對象間消息傳遞等語言機制,讓分析人員在解空間中直接模傳遞等語言機制,讓分析人員在解空間中直接模擬問題空間中的對象以及其行為,從而削弱了語擬問題空間中的對象以及其行為,從而削弱了語義斷層,為需求建?;顒犹峁┝酥庇^、自然的語義斷層,為需求建?;顒犹峁┝酥庇^、自然的語言支持和方法學(xué)指導(dǎo)。言支持和方法學(xué)指導(dǎo)。l 具體地講,為了解空間中逼真的模擬現(xiàn)實問題空具體地講,為

8、了解空間中逼真的模擬現(xiàn)實問題空間并與人類思維習(xí)慣相一致,面向?qū)ο蠓椒▽W(xué)包間并與人類思維習(xí)慣相一致,面向?qū)ο蠓椒▽W(xué)包含了以下核心概念:含了以下核心概念: 1.概念概念 (1)對象對象 對象是現(xiàn)實世界中個體或事物的抽象表示,是其對象是現(xiàn)實世界中個體或事物的抽象表示,是其屬性和相關(guān)操作的封裝。屬性表示對象的性質(zhì),屬性屬性和相關(guān)操作的封裝。屬性表示對象的性質(zhì),屬性值規(guī)定了對象所有可能的狀態(tài)。對象的操作是指該對值規(guī)定了對象所有可能的狀態(tài)。對象的操作是指該對象可以展現(xiàn)的外部服務(wù)。例如,飛機可以視為對象,象可以展現(xiàn)的外部服務(wù)。例如,飛機可以視為對象,它有飛行的速度、有顏色、載重量等,該對象可以施它有飛行的速

9、度、有顏色、載重量等,該對象可以施行起飛、降落等操作。行起飛、降落等操作。 簡言之簡言之,客觀世界中的實體客觀世界中的實體狀態(tài)(靜態(tài)屬性狀態(tài)(靜態(tài)屬性 Attributes)操作(動態(tài)行為操作(動態(tài)行為 Mehtods)(2)類類類是某些對象的共同特征(屬性和操作)的表示類是某些對象的共同特征(屬性和操作)的表示,相同屬相同屬性和行為的對象的抽象。性和行為的對象的抽象。l 實例是特定類所描述的一個具體對象實例是特定類所描述的一個具體對象.對象是類的實例。對象是類的實例。例如,飛行器類可以包括位置、速度、加速和顏色等屬性,例如,飛行器類可以包括位置、速度、加速和顏色等屬性,以及起飛和降落等操作。

10、以及起飛和降落等操作。(3)繼承繼承 類之間的繼承關(guān)系是現(xiàn)實世界中遺傳關(guān)系的直接模類之間的繼承關(guān)系是現(xiàn)實世界中遺傳關(guān)系的直接模擬,它表示類之間的內(nèi)在關(guān)系以及對其屬性和操作擬,它表示類之間的內(nèi)在關(guān)系以及對其屬性和操作的共享,即子類可以沿用父類(被繼承類)的某些的共享,即子類可以沿用父類(被繼承類)的某些特征。子類直接繼承父類的數(shù)據(jù)和操作特征。子類直接繼承父類的數(shù)據(jù)和操作,當(dāng)然,子類當(dāng)然,子類也可以具有自己獨特的屬性和操作也可以具有自己獨特的屬性和操作。 繼承的傳遞性,單繼承、多重繼承繼承的傳遞性,單繼承、多重繼承(4)聚集聚集除繼承關(guān)系外,現(xiàn)實世界中還普遍存在著部分除繼承關(guān)系外,現(xiàn)實世界中還普遍

11、存在著部分-整體整體關(guān)系。這種關(guān)系在面向?qū)ο蠓椒▽W(xué)中表示為類之間的聚集關(guān)系。這種關(guān)系在面向?qū)ο蠓椒▽W(xué)中表示為類之間的聚集關(guān)系。在聚集關(guān)系下,部分類的對象是整體類對象的一個關(guān)系。在聚集關(guān)系下,部分類的對象是整體類對象的一個組成部分組成部分。(5)消息消息對象間的交互手段對象間的交互手段,消息傳遞是對象與其外部世界相互消息傳遞是對象與其外部世界相互關(guān)聯(lián)的唯一途徑。關(guān)聯(lián)的唯一途徑。對象可以向其它對象發(fā)送消息以請求服對象可以向其它對象發(fā)送消息以請求服務(wù),也可以響應(yīng)其它對象發(fā)送來的消息,完成自身固有的務(wù),也可以響應(yīng)其它對象發(fā)送來的消息,完成自身固有的某些操作,從而服務(wù)于其它對象。某些操作,從而服務(wù)于其它

12、對象。由于對象的操作主要用由于對象的操作主要用來響應(yīng)外部消息并為其它對象提供服務(wù),所以它們也被稱來響應(yīng)外部消息并為其它對象提供服務(wù),所以它們也被稱為為“外部服務(wù)外部服務(wù)”。面向?qū)ο竺嫦驅(qū)ο?對象對象+類類+繼承繼承+聚集聚集+消息消息2 2 思想思想l面向?qū)ο蠓治龇椒ㄊ沟密浖こ處熌軌蛲嫦驅(qū)ο蠓治龇椒ㄊ沟密浖こ處熌軌蛲ㄟ^對象、屬性和操作(作為主要的建模成過對象、屬性和操作(作為主要的建模成分)的表示來對問題建模。尤其是對象的分)的表示來對問題建模。尤其是對象的合作來完成功能域的建模。合作來完成功能域的建模。l 建立分析模型5個基本原則:(1 1)建模信息域;建模信息域;(2 2)建模功能域

13、,描述模塊功能;)建模功能域,描述模塊功能;(3 3)表示模型行為;表示模型行為;(4 4)分解模型以顯示更多細(xì)節(jié);分解模型以顯示更多細(xì)節(jié);(5 5)早期模型表示問題的本質(zhì),而后期早期模型表示問題的本質(zhì),而后期 模型提供實現(xiàn)細(xì)節(jié)。模型提供實現(xiàn)細(xì)節(jié)。傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^過程過程1 1過程過程2 2過程過程3 3數(shù)據(jù)實體數(shù)據(jù)實體屬于該對象屬于該對象的數(shù)據(jù)的數(shù)據(jù)對象對象處理數(shù)據(jù)的方法處理數(shù)據(jù)的方法結(jié)構(gòu)化方法和面向?qū)ο蠓椒ǖ膮^(qū)別l結(jié)構(gòu)化方法的本質(zhì)是功能分解,自頂而下,逐步分解。l面向?qū)ο蠓椒ǖ谋举|(zhì)是功能聚合,自低而上,逐步組裝。6.由由Rumbaugh 、 Booc

14、h 、 Jacobson 提出的提出的Unify Modeing Language簡稱簡稱UML流行的幾種面向?qū)ο蠓椒餍械膸追N面向?qū)ο蠓椒?.Booch方法方法4.Coad-Yourdon方法方法3.OMT(Object Modeling Technology)方法方法2.Jacobson 方法(簡稱方法(簡稱OOSE)創(chuàng)建創(chuàng)建UML的最初想法之一是要結(jié)束面向?qū)ο箢I(lǐng)域中的的最初想法之一是要結(jié)束面向?qū)ο箢I(lǐng)域中的“方法之方法之戰(zhàn)戰(zhàn)”。面向?qū)ο蠹夹g(shù)最初是由編程語言。面向?qū)ο蠹夹g(shù)最初是由編程語言Simula產(chǎn)生的,但是產(chǎn)生的,但是直到直到20世紀(jì)世紀(jì)80年代末年代末C+和和Smalltalk這些編程

15、語言出現(xiàn)之后,這些編程語言出現(xiàn)之后,面向?qū)ο蠹夹g(shù)才開始流行。當(dāng)面向?qū)ο缶幊碳夹g(shù)取得成功后,面向?qū)ο蠹夹g(shù)才開始流行。當(dāng)面向?qū)ο缶幊碳夹g(shù)取得成功后,對支持軟件開發(fā)的方法的需要就接踵而來。對支持軟件開發(fā)的方法的需要就接踵而來。20世紀(jì)世紀(jì)90年代初年代初期流行的面向?qū)ο蠓椒ㄓ幸韵聨追N。期流行的面向?qū)ο蠓椒ㄓ幸韵聨追N。 UML主要以主要以 Booch方法、方法、 OMT方法、方法、 OOSE方法為方法為基礎(chǔ),同時也吸收了其他面向?qū)ο蠼7椒ǖ膬?yōu)點,形成了基礎(chǔ),同時也吸收了其他面向?qū)ο蠼7椒ǖ膬?yōu)點,形成了一種概念清晰、表達(dá)能力豐富、使用范圍廣泛的面向?qū)ο蟮囊环N概念清晰、表達(dá)能力豐富、使用范圍廣泛的面向

16、對象的標(biāo)準(zhǔn)建模語言標(biāo)準(zhǔn)建模語言,是一種基于面向?qū)ο蟮目梢暬UZ言。它是一種基于面向?qū)ο蟮目梢暬UZ言。它提供了豐富的用圖形符號表示的模型語言,這些標(biāo)準(zhǔn)的圖形提供了豐富的用圖形符號表示的模型語言,這些標(biāo)準(zhǔn)的圖形符號隱含了符號隱含了UML的語法,而由這些圖形符號組成的各種模的語法,而由這些圖形符號組成的各種模型,則給出了型,則給出了UML的語義。它的簡單、一致、通用的定義,的語義。它的簡單、一致、通用的定義,使得開發(fā)者能在語義上取得一致,消除了因人而異的表達(dá)方使得開發(fā)者能在語義上取得一致,消除了因人而異的表達(dá)方法所造成的影響。法所造成的影響。 其廣泛性表現(xiàn)為:其廣泛性表現(xiàn)為:(1)在不同系統(tǒng)中

17、的應(yīng)用)在不同系統(tǒng)中的應(yīng)用;(2)在軟件開發(fā)不同階段的應(yīng)用)在軟件開發(fā)不同階段的應(yīng)用.6.2 UML概述概述(1)在不同系統(tǒng)中的應(yīng)用)在不同系統(tǒng)中的應(yīng)用l 信息系統(tǒng):信息系統(tǒng)為用戶提供存儲、檢索、變換和表現(xiàn)信息系統(tǒng):信息系統(tǒng)為用戶提供存儲、檢索、變換和表現(xiàn)信息等功能。該系統(tǒng)處理那些具有復(fù)雜關(guān)系的大量數(shù)據(jù),信息等功能。該系統(tǒng)處理那些具有復(fù)雜關(guān)系的大量數(shù)據(jù),這些數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫或?qū)ο髷?shù)據(jù)庫中。這些數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫或?qū)ο髷?shù)據(jù)庫中。l 技術(shù)系統(tǒng):技術(shù)系統(tǒng)處理和控制技術(shù)裝備,比如電信、技術(shù)系統(tǒng):技術(shù)系統(tǒng)處理和控制技術(shù)裝備,比如電信、軍事系統(tǒng)或工業(yè)處理系統(tǒng)。它們必須處理裝備的特定接口,軍事系統(tǒng)或工

18、業(yè)處理系統(tǒng)。它們必須處理裝備的特定接口,并且擁有的標(biāo)準(zhǔn)軟件也比信息系統(tǒng)少。技術(shù)系統(tǒng)通常是實并且擁有的標(biāo)準(zhǔn)軟件也比信息系統(tǒng)少。技術(shù)系統(tǒng)通常是實時系統(tǒng)。時系統(tǒng)。l 嵌入式實時系統(tǒng):這種類型的系統(tǒng)在嵌入到其他裝備(如嵌入式實時系統(tǒng):這種類型的系統(tǒng)在嵌入到其他裝備(如移動電話、汽車、家用電器等)中的簡單硬件上運行。這移動電話、汽車、家用電器等)中的簡單硬件上運行。這是通過低級編程(需要實時性支持)實現(xiàn)的。這些系統(tǒng)通是通過低級編程(需要實時性支持)實現(xiàn)的。這些系統(tǒng)通常缺少像顯示器、硬盤等之類的設(shè)備。常缺少像顯示器、硬盤等之類的設(shè)備。l 分布式系統(tǒng):分布式系統(tǒng)指軟件分布于多臺機器上,數(shù)據(jù)分布式系統(tǒng):分布式

19、系統(tǒng)指軟件分布于多臺機器上,數(shù)據(jù)可以很容易地從一臺機器傳送到另一臺的系統(tǒng)。它們需要可以很容易地從一臺機器傳送到另一臺的系統(tǒng)。它們需要同步通信機制以確保數(shù)據(jù)的完整性,并且通常是基于面向同步通信機制以確保數(shù)據(jù)的完整性,并且通常是基于面向?qū)ο髾C制建立的,如對象機制建立的,如CORBA、COM/DCOM或或Java Beans/RMI。l 系統(tǒng)軟件:系統(tǒng)軟件定義其他軟件所使用的技術(shù)基礎(chǔ),如系統(tǒng)軟件:系統(tǒng)軟件定義其他軟件所使用的技術(shù)基礎(chǔ),如操作系統(tǒng)、數(shù)據(jù)庫以及對硬件執(zhí)行低級操作的用戶接口,操作系統(tǒng)、數(shù)據(jù)庫以及對硬件執(zhí)行低級操作的用戶接口,同時,系統(tǒng)軟件還為其他軟件提供通用接口。同時,系統(tǒng)軟件還為其他軟件

20、提供通用接口。l 業(yè)務(wù)系統(tǒng):業(yè)務(wù)系統(tǒng)描述業(yè)務(wù)的目標(biāo)、資源(人、計算機業(yè)務(wù)系統(tǒng):業(yè)務(wù)系統(tǒng)描述業(yè)務(wù)的目標(biāo)、資源(人、計算機等)、規(guī)則(法律、業(yè)務(wù)戰(zhàn)略、政策等),以及實際任務(wù)。等)、規(guī)則(法律、業(yè)務(wù)戰(zhàn)略、政策等),以及實際任務(wù)。 有一點需要強調(diào),大多數(shù)系統(tǒng)并不能純粹地劃歸為以有一點需要強調(diào),大多數(shù)系統(tǒng)并不能純粹地劃歸為以上這些分類中的某一種,而是屬于多種系統(tǒng)類型或多種類上這些分類中的某一種,而是屬于多種系統(tǒng)類型或多種類型的組合。例如,現(xiàn)今的許多信息系統(tǒng)都具有分布式和實型的組合。例如,現(xiàn)今的許多信息系統(tǒng)都具有分布式和實時要求。時要求。UML具有為所有這些類型的系統(tǒng)建模的能力。具有為所有這些類型的系統(tǒng)建

21、模的能力。(2)在軟件開發(fā)不同階段的應(yīng)用)在軟件開發(fā)不同階段的應(yīng)用.需求分析、分析、設(shè)計、編碼和測試階段需求分析、分析、設(shè)計、編碼和測試階段 6.2.1 UML的語言機制的語言機制l 1. UML的模型元素的模型元素lUML定義了兩類模型元素兩類模型元素。一類模型一類模型元素用于表示模型中的某個概念某個概念,如類、對象、構(gòu)件、用例、結(jié)點(node)、接口(Interface)、包(Packag)和注釋(Note)等;另一類用另一類用于表示模型元素之間相互連接的關(guān)系相互連接的關(guān)系,其中主要有:關(guān)聯(lián)(Association)、泛化(Generalization)、依賴(Dependency)和聚集

22、(Aggregation)等。這兩類模型元素均可以用圖形符號來表示。補充 一些常見的模型元素一些常見的模型元素類(Class)、對象(Object)、狀態(tài)(State)、用例(Use Case)、結(jié)點(Node)、接口(Interface)、包(Package)、注釋(Note)、構(gòu)件(Component)補充 一些關(guān)系的例子一些關(guān)系的例子以下是幾種主要關(guān)聯(lián)關(guān)系的含義:以下是幾種主要關(guān)聯(lián)關(guān)系的含義: 關(guān)聯(lián):連接模型元素及連接實例;關(guān)聯(lián):連接模型元素及連接實例; 泛化:表示一般與特殊關(guān)系,即泛化:表示一般與特殊關(guān)系,即“一般一般”是是“特殊特殊”元素的泛化,元素的泛化,“特殊特殊”元素是元素是“

23、一般一般”元素的特化元素的特化(Specialization); 依賴:表示一個元素以某種方式依賴于另一個元素;依賴:表示一個元素以某種方式依賴于另一個元素; 聚集(合):表示整體與部分的關(guān)系,即聚集(合):表示整體與部分的關(guān)系,即“部分部分”元元素是素是“整體整體”元素的一部分。元素的一部分。 UML通過圖形化的表示機制從多個側(cè)面對系統(tǒng)的分析通過圖形化的表示機制從多個側(cè)面對系統(tǒng)的分析和設(shè)計模型進(jìn)行刻畫。它共定義和設(shè)計模型進(jìn)行刻畫。它共定義10種視圖,并將其分為如種視圖,并將其分為如下四類:下四類:l 1)用例圖)用例圖: 從外部用戶角度描述系統(tǒng)的功能,并指出系統(tǒng)從外部用戶角度描述系統(tǒng)的功能,

24、并指出系統(tǒng)功能的執(zhí)行者。用例圖(功能的執(zhí)行者。用例圖(Use-case Diagram)顯示多個)顯示多個外部參與者以及他們與系統(tǒng)提供的用例之間的連接,如下外部參與者以及他們與系統(tǒng)提供的用例之間的連接,如下頁圖頁圖1所示。所示。 一個用例是對系統(tǒng)提供的某個功能(該系統(tǒng)的一個特一個用例是對系統(tǒng)提供的某個功能(該系統(tǒng)的一個特定用法)的描述。雖然實際的用例通常用普通文本來描述,定用法)的描述。雖然實際的用例通常用普通文本來描述,并且此文本被當(dāng)做該用例符號的一個文檔特性,但是也可并且此文本被當(dāng)做該用例符號的一個文檔特性,但是也可以利用一個活動圖來描述用例。用例僅僅描述系統(tǒng)參與者以利用一個活動圖來描述用

25、例。用例僅僅描述系統(tǒng)參與者從外部觀察系統(tǒng)得到的那些功能(作為用戶觀察系統(tǒng)的系從外部觀察系統(tǒng)得到的那些功能(作為用戶觀察系統(tǒng)的系統(tǒng)行為),并不描述這些功能在系統(tǒng)內(nèi)部是如何實現(xiàn)的。統(tǒng)行為),并不描述這些功能在系統(tǒng)內(nèi)部是如何實現(xiàn)的。也就是說,用例定義系統(tǒng)的功能需求。也就是說,用例定義系統(tǒng)的功能需求。2. UML視圖視圖用例圖形元素用例圖形元素 系統(tǒng)名稱系統(tǒng) 用例 角色(執(zhí)行者) 關(guān)聯(lián)用例名圖圖1 1 一個保險業(yè)務(wù)的用例圖一個保險業(yè)務(wù)的用例圖簽定一份簽定一份保險單保險單客戶客戶保險銷保險銷售人員售人員銷售統(tǒng)計銷售統(tǒng)計客戶統(tǒng)計客戶統(tǒng)計2)靜態(tài)圖)靜態(tài)圖: 包括類圖、對象圖和包圖。包括類圖、對象圖和包圖。

26、l 類圖(類圖(Class Diagram) 用來顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu),如下圖用來顯示系統(tǒng)中各個類的靜態(tài)結(jié)構(gòu),如下圖2所示。類所示。類代表系統(tǒng)內(nèi)處理的事物。這些類可以以多種方式相互連接代表系統(tǒng)內(nèi)處理的事物。這些類可以以多種方式相互連接在一起:關(guān)聯(lián)(類互相連接)、依賴(一個類依賴在一起:關(guān)聯(lián)(類互相連接)、依賴(一個類依賴/使用使用另一個類)、特殊化(一個類是另一個類的特化)或者聚另一個類)、特殊化(一個類是另一個類的特化)或者聚合(多個類組合為一個單元)。所有的這些關(guān)系連同每個合(多個類組合為一個單元)。所有的這些關(guān)系連同每個類的內(nèi)部結(jié)構(gòu)都在類圖中顯示。其中,一個類的內(nèi)部結(jié)構(gòu)類的內(nèi)部結(jié)構(gòu)

27、都在類圖中顯示。其中,一個類的內(nèi)部結(jié)構(gòu)是用該類的屬性和操作表示的。因為類圖所描述的結(jié)構(gòu)在是用該類的屬性和操作表示的。因為類圖所描述的結(jié)構(gòu)在系統(tǒng)生命周期的任何一處都是有效的,所以通常認(rèn)為類圖系統(tǒng)生命周期的任何一處都是有效的,所以通常認(rèn)為類圖是靜態(tài)的。是靜態(tài)的。 一個系統(tǒng)一般都有多個類圖一個系統(tǒng)一般都有多個類圖并不是所有的類都放在并不是所有的類都放在一個類圖中一個類圖中并且一個類可以參與到多個類圖中。并且一個類可以參與到多個類圖中。 對象圖對象圖 l 對象圖(對象圖(Object Diagram)是類圖的一個變體,)是類圖的一個變體,它使用的符號與類圖幾乎一樣。對象圖和類圖之它使用的符號與類圖幾乎

28、一樣。對象圖和類圖之間的區(qū)別是:對象圖用于顯示類的多個對象實例,間的區(qū)別是:對象圖用于顯示類的多個對象實例,而不是實際的類。于是,對象圖就是類圖的一個而不是實際的類。于是,對象圖就是類圖的一個例子,顯示系統(tǒng)執(zhí)行時的一個可能的快照例子,顯示系統(tǒng)執(zhí)行時的一個可能的快照在在某一時間點上系統(tǒng)可能呈現(xiàn)的樣子。雖然對象圖某一時間點上系統(tǒng)可能呈現(xiàn)的樣子。雖然對象圖使用與類圖相同的符號,但是有兩處例外:用帶使用與類圖相同的符號,但是有兩處例外:用帶下劃線的對象名稱來表示對象和顯示一個關(guān)系中下劃線的對象名稱來表示對象和顯示一個關(guān)系中的所有實例,如下頁圖的所有實例,如下頁圖3所示。所示。圖圖3 顯示類的類圖和顯示

29、類的實例的對象圖顯示類的類圖和顯示類的實例的對象圖 3)行為圖)行為圖行為圖行為圖: 包括交互圖、狀態(tài)圖和活動圖。包括交互圖、狀態(tài)圖和活動圖。它們從不同側(cè)面刻畫系統(tǒng)的動態(tài)行為。它們從不同側(cè)面刻畫系統(tǒng)的動態(tài)行為。交互圖描述對象之間的消息傳遞,它又可以交互圖描述對象之間的消息傳遞,它又可以分為順序圖與合作圖。分為順序圖與合作圖。l包圖包圖描述系統(tǒng)的分解結(jié)構(gòu),是描述系統(tǒng)的分解結(jié)構(gòu),是UML對類進(jìn)行分組的對類進(jìn)行分組的 一種一種機制??梢詮哪撤N視角將具有比較密切的關(guān)聯(lián)的一些類劃機制??梢詮哪撤N視角將具有比較密切的關(guān)聯(lián)的一些類劃分為一個包,分屬于不同包的兩個類之間的關(guān)聯(lián)比較松散。分為一個包,分屬于不同包

30、的兩個類之間的關(guān)聯(lián)比較松散。 順序圖 l 順序圖(順序圖(Sequence Diagram)顯示多個對象之)顯示多個對象之間的動態(tài)協(xié)作,如圖間的動態(tài)協(xié)作,如圖4所示。順序圖重點是顯示所示。順序圖重點是顯示對象之間發(fā)送的消息的時間順序。它也顯示對象對象之間發(fā)送的消息的時間順序。它也顯示對象之間的交互,就是在系統(tǒng)執(zhí)行時,某個指定時間之間的交互,就是在系統(tǒng)執(zhí)行時,某個指定時間點將發(fā)生的事情。順序圖由多個用垂直線顯示的點將發(fā)生的事情。順序圖由多個用垂直線顯示的對象組成,圖中時間從上到下推移,并且順序圖對象組成,圖中時間從上到下推移,并且順序圖顯示對象之間隨著時間的推移而交換的消息或函顯示對象之間隨著時

31、間的推移而交換的消息或函數(shù)。消息是用帶消息箭頭的直線表示的,并且它數(shù)。消息是用帶消息箭頭的直線表示的,并且它位于垂直對象線之間。時間說明以及其他注釋放位于垂直對象線之間。時間說明以及其他注釋放到一個腳本中,并將其放置在順序圖的頁邊空白到一個腳本中,并將其放置在順序圖的頁邊空白處。處。 圖圖4打印服務(wù)器的順序圖打印服務(wù)器的順序圖協(xié)作圖(合作圖)協(xié)作圖(合作圖) l 協(xié)作圖(協(xié)作圖(Collaboration Diagram)像順序圖一樣顯示)像順序圖一樣顯示動態(tài)協(xié)作。為了顯示一個協(xié)作,通常需要在順序圖和動態(tài)協(xié)作。為了顯示一個協(xié)作,通常需要在順序圖和協(xié)作圖之間做選擇。除了顯示消息的交換(稱之為交協(xié)

32、作圖之間做選擇。除了顯示消息的交換(稱之為交互)以外,協(xié)作圖也顯示對象以及它們之間的關(guān)系互)以外,協(xié)作圖也顯示對象以及它們之間的關(guān)系(有時指上下文)。通常,選擇順序圖還是協(xié)作圖的(有時指上下文)。通常,選擇順序圖還是協(xié)作圖的決定條件是:如果時間或順序是需要重點強調(diào)的方面,決定條件是:如果時間或順序是需要重點強調(diào)的方面,那么選擇順序圖;如果上下文是需要重點強調(diào)的方面,那么選擇順序圖;如果上下文是需要重點強調(diào)的方面,那么選擇協(xié)作圖。順序圖和協(xié)作圖都用于顯示對象之那么選擇協(xié)作圖。順序圖和協(xié)作圖都用于顯示對象之間的交互。協(xié)作圖也可以包括活動對象,這些活動對間的交互。協(xié)作圖也可以包括活動對象,這些活動對

33、象可以與其他活動對象并發(fā)地執(zhí)行,如圖象可以與其他活動對象并發(fā)地執(zhí)行,如圖5所示。所示。 圖圖5打印服務(wù)器的協(xié)作圖打印服務(wù)器的協(xié)作圖狀態(tài)圖狀態(tài)圖l 一般來說,狀態(tài)圖(一般來說,狀態(tài)圖(State Diagram)是對類的描述的補)是對類的描述的補充。它用于顯示類的對象可能具備的所有狀態(tài),以及那些充。它用于顯示類的對象可能具備的所有狀態(tài),以及那些引起狀態(tài)改變的事件,如下圖引起狀態(tài)改變的事件,如下圖6所示。對象的一個事件可所示。對象的一個事件可以是另一個對象向其發(fā)送的消息,例如到了某個指定的時以是另一個對象向其發(fā)送的消息,例如到了某個指定的時刻,或者已經(jīng)滿足了某條件。狀態(tài)的變化稱之為轉(zhuǎn)換刻,或者已經(jīng)

34、滿足了某條件。狀態(tài)的變化稱之為轉(zhuǎn)換(Transition)。一個轉(zhuǎn)換也可以有一個與之相連的動作,)。一個轉(zhuǎn)換也可以有一個與之相連的動作,后者用以指定完成該狀態(tài)轉(zhuǎn)換應(yīng)該執(zhí)行的操作。后者用以指定完成該狀態(tài)轉(zhuǎn)換應(yīng)該執(zhí)行的操作。l 在實際建模時,并不需要為所有的類都繪制狀態(tài)圖,僅對在實際建模時,并不需要為所有的類都繪制狀態(tài)圖,僅對那些具有多個明確狀態(tài)的類,并且類的這些不同狀態(tài)會影那些具有多個明確狀態(tài)的類,并且類的這些不同狀態(tài)會影響和改變類的行為時才繪制類的狀態(tài)圖。另外,也可以為響和改變類的行為時才繪制類的狀態(tài)圖。另外,也可以為系統(tǒng)繪制整體狀態(tài)圖。系統(tǒng)繪制整體狀態(tài)圖。 圖圖6電梯系統(tǒng)的狀態(tài)圖電梯系統(tǒng)的狀

35、態(tài)圖 活動圖活動圖l 活動圖(活動圖(Activity Diagram)用于顯示一系列順序的活動,)用于顯示一系列順序的活動,如圖如圖7所示。盡管活動圖也可以用于描述像用例或交互這所示。盡管活動圖也可以用于描述像用例或交互這類的活動流程,但是一般來說,它主要還是用于描述在一類的活動流程,但是一般來說,它主要還是用于描述在一個操作內(nèi)執(zhí)行的那些活動。活動圖由多個動作狀態(tài)組成,個操作內(nèi)執(zhí)行的那些活動?;顒訄D由多個動作狀態(tài)組成,后者包含將被執(zhí)行的活動(即一個動作)的規(guī)格說明。當(dāng)后者包含將被執(zhí)行的活動(即一個動作)的規(guī)格說明。當(dāng)動作完成后,動作狀態(tài)將會改變,轉(zhuǎn)換為一個新的狀態(tài)動作完成后,動作狀態(tài)將會改變

36、,轉(zhuǎn)換為一個新的狀態(tài)(在狀態(tài)圖內(nèi),狀態(tài)在進(jìn)行轉(zhuǎn)換之前需要標(biāo)明顯式的事(在狀態(tài)圖內(nèi),狀態(tài)在進(jìn)行轉(zhuǎn)換之前需要標(biāo)明顯式的事件)。于是,控制就在這些互相連接的動作狀態(tài)之間流動。件)。于是,控制就在這些互相連接的動作狀態(tài)之間流動。同時,在活動圖中也可以顯示決策和條件,以及動作狀態(tài)同時,在活動圖中也可以顯示決策和條件,以及動作狀態(tài)的并發(fā)執(zhí)行。另外,活動圖也可以包含那些被發(fā)送或接收的并發(fā)執(zhí)行。另外,活動圖也可以包含那些被發(fā)送或接收的消息的規(guī)格說明,這些消息是被執(zhí)行動作的一部分。的消息的規(guī)格說明,這些消息是被執(zhí)行動作的一部分。 圖圖7打印服務(wù)器的活動圖打印服務(wù)器的活動圖4)實現(xiàn))實現(xiàn)圖圖: 包括構(gòu)件圖與部署圖

37、,它們描包括構(gòu)件圖與部署圖,它們描述軟件實現(xiàn)系統(tǒng)的組成和分布狀況。述軟件實現(xiàn)系統(tǒng)的組成和分布狀況。 l 組件圖(構(gòu)件圖)組件圖(構(gòu)件圖) 組件圖描述軟件實現(xiàn)系統(tǒng)中各組成部件以及它們之間組件圖描述軟件實現(xiàn)系統(tǒng)中各組成部件以及它們之間的依賴關(guān)系,是用代碼組件來顯示代碼物理結(jié)構(gòu)的。其中,的依賴關(guān)系,是用代碼組件來顯示代碼物理結(jié)構(gòu)的。其中,組件可以是源代碼組件(如一個資源描述文件)、二進(jìn)制組件可以是源代碼組件(如一個資源描述文件)、二進(jìn)制組件或一個可執(zhí)行的組件。因為一個組件包含它所實現(xiàn)的組件或一個可執(zhí)行的組件。因為一個組件包含它所實現(xiàn)的一個或多個邏輯類的相關(guān)信息,于是就創(chuàng)建了一個從邏輯一個或多個邏輯類

38、的相關(guān)信息,于是就創(chuàng)建了一個從邏輯視圖到組件視圖的映射。根據(jù)組件圖中顯示的那些組件之視圖到組件視圖的映射。根據(jù)組件圖中顯示的那些組件之間的依賴關(guān)系,可以很容易地分析出其中某個組件的變化間的依賴關(guān)系,可以很容易地分析出其中某個組件的變化將會對其他組件產(chǎn)生什么樣的影響。另外,組件也可以用將會對其他組件產(chǎn)生什么樣的影響。另外,組件也可以用它們輸出的任意的接口來表示,例如它們輸出的任意的接口來表示,例如OLE/COM接口;并接口;并且它們可以被聚集在包內(nèi)。一般來說,組件圖用于實際的且它們可以被聚集在包內(nèi)。一般來說,組件圖用于實際的編程工作中,如圖編程工作中,如圖8所示。所示。 圖圖8顯示代碼組件之間依

39、賴關(guān)系的組件圖顯示代碼組件之間依賴關(guān)系的組件圖 部署圖部署圖 l 部署圖(部署圖(Deployment Diagram)用于顯示系統(tǒng)中的硬件)用于顯示系統(tǒng)中的硬件和軟件的物理結(jié)構(gòu)。這些部署圖可以顯示實際的計算機和和軟件的物理結(jié)構(gòu)。這些部署圖可以顯示實際的計算機和設(shè)備(節(jié)點),同時還有它們之間的必要連接,也可以顯設(shè)備(節(jié)點),同時還有它們之間的必要連接,也可以顯示這些連接的類型。在圖中顯示的那些節(jié)點內(nèi),已經(jīng)分配示這些連接的類型。在圖中顯示的那些節(jié)點內(nèi),已經(jīng)分配了可執(zhí)行的組件和對象,以顯示這些軟件單元分別在哪個了可執(zhí)行的組件和對象,以顯示這些軟件單元分別在哪個節(jié)點上運行。另外,部署圖也可以顯示組件

40、之間的依賴關(guān)節(jié)點上運行。另外,部署圖也可以顯示組件之間的依賴關(guān)系。系。l 部署圖描述系統(tǒng)的實際物理結(jié)構(gòu)??梢园l(fā)現(xiàn),這與用例視部署圖描述系統(tǒng)的實際物理結(jié)構(gòu)。可以發(fā)現(xiàn),這與用例視圖的功能描述完全不同。但是,對一個明確定義的模型來圖的功能描述完全不同。但是,對一個明確定義的模型來說,可以實現(xiàn)從頭到尾的完整導(dǎo)航:從物理結(jié)構(gòu)中的一個說,可以實現(xiàn)從頭到尾的完整導(dǎo)航:從物理結(jié)構(gòu)中的一個節(jié)點導(dǎo)航到分配給該節(jié)點的組件,再到該組件實現(xiàn)的類,節(jié)點導(dǎo)航到分配給該節(jié)點的組件,再到該組件實現(xiàn)的類,接著到該類的對象參與的交互,最終到達(dá)用例。系統(tǒng)的不接著到該類的對象參與的交互,最終到達(dá)用例。系統(tǒng)的不同視圖在總體上給系統(tǒng)一個一

41、致的描述,如圖同視圖在總體上給系統(tǒng)一個一致的描述,如圖9所示。所示。 圖圖9系統(tǒng)物理結(jié)構(gòu)的部署圖系統(tǒng)物理結(jié)構(gòu)的部署圖圖圖10和構(gòu)件圖的例子 注解注解l 無論一種建模語言有多么廣博,無論一種建模語言有多么廣博,也不能對所有的信息都用該語言也不能對所有的信息都用該語言來定義。為了能夠為一個模型添來定義。為了能夠為一個模型添加那些不能用建模語言來表示的加那些不能用建模語言來表示的信息,信息,UML為用戶提供注解為用戶提供注解(Note)功能。注解可以放置在)功能。注解可以放置在任何圖的任意位置上,并且可以任何圖的任意位置上,并且可以包含任意類型的信息。它的信息包含任意類型的信息。它的信息類型是不被類

42、型是不被UML解釋的一個字符解釋的一個字符串。一般來說,在串。一般來說,在UML圖中用一圖中用一條虛線將注解連接到它為之解釋條虛線將注解連接到它為之解釋的或細(xì)化的元素上,如圖的或細(xì)化的元素上,如圖11所示。所示。補充補充一個注解包含了任意的附加信息補充圖補充圖103.例題例題l例題(見例題(見P147-150)l本章的后續(xù)章節(jié)將結(jié)合需求分析過程更具本章的后續(xù)章節(jié)將結(jié)合需求分析過程更具體的介紹體的介紹UML的用例圖、包圖、類圖和活的用例圖、包圖、類圖和活動圖,第十章將結(jié)合軟件設(shè)計過程詳細(xì)介動圖,第十章將結(jié)合軟件設(shè)計過程詳細(xì)介紹順序圖、協(xié)作圖、狀態(tài)圖和活動圖。紹順序圖、協(xié)作圖、狀態(tài)圖和活動圖。6.

43、2.2基于基于UML的軟件開發(fā)過程的軟件開發(fā)過程 雖然雖然UML是獨立于軟件開發(fā)過程的,即是獨立于軟件開發(fā)過程的,即UML能在幾乎任何能在幾乎任何一種軟件開發(fā)過程中使用,但是熟悉一種有代表性的面向?qū)σ环N軟件開發(fā)過程中使用,但是熟悉一種有代表性的面向?qū)ο蟮能浖_發(fā)過程,并知悉象的軟件開發(fā)過程,并知悉UML各語言要素在過程中不同階各語言要素在過程中不同階段的應(yīng)用,有利于理解段的應(yīng)用,有利于理解UML。圖圖6.6是是UML建模過程的一個建模過程的一個高層視圖。這是一個迭代遞增的開發(fā)過程,稱為統(tǒng)一軟件開高層視圖。這是一個迭代遞增的開發(fā)過程,稱為統(tǒng)一軟件開發(fā)過程(發(fā)過程(RUP,Rational Uni

44、fied Process),RUP是一套軟是一套軟件工程方法,使用件工程方法,使用UML來制訂軟件系統(tǒng)的所有藍(lán)圖,來進(jìn)行來制訂軟件系統(tǒng)的所有藍(lán)圖,來進(jìn)行思考和溝通。使用此方法,不是在項目結(jié)束時一次性提交軟思考和溝通。使用此方法,不是在項目結(jié)束時一次性提交軟件,而是分塊逐次開發(fā)和提交。件,而是分塊逐次開發(fā)和提交。圖圖6.6表示一種迭代的漸進(jìn)式軟件開發(fā)過程:表示一種迭代的漸進(jìn)式軟件開發(fā)過程:初啟階段細(xì)化階段構(gòu)造階段移交階段圖圖6.6 開發(fā)過程簡圖開發(fā)過程簡圖軟件開發(fā)工具:軟件開發(fā)工具: Rational Rose1. 初啟初啟在初啟(初始)階段,軟件項目的發(fā)起人確定項目的主要目標(biāo)和范圍,在初啟(初

45、始)階段,軟件項目的發(fā)起人確定項目的主要目標(biāo)和范圍,并進(jìn)行初步的可行性分析和經(jīng)濟(jì)效益分析。并進(jìn)行初步的可行性分析和經(jīng)濟(jì)效益分析。初始階段首要的任務(wù)就是使項目相關(guān)人員對項目生命周期的目標(biāo)取得一初始階段首要的任務(wù)就是使項目相關(guān)人員對項目生命周期的目標(biāo)取得一致。特別是確定系統(tǒng)的核心功能、最主要的風(fēng)險、架構(gòu)雛形、整個項致。特別是確定系統(tǒng)的核心功能、最主要的風(fēng)險、架構(gòu)雛形、整個項目的初略估計。目的初略估計。該階段的主要目標(biāo)如下:該階段的主要目標(biāo)如下:(1)確定系統(tǒng)向每個主要用戶提供的基本功能是什么?)確定系統(tǒng)向每個主要用戶提供的基本功能是什么?( 2 )確定項目的軟件范圍和邊界條件,包括驗收標(biāo)準(zhǔn)及產(chǎn)品中

46、應(yīng)包括)確定項目的軟件范圍和邊界條件,包括驗收標(biāo)準(zhǔn)及產(chǎn)品中應(yīng)包括什么和不應(yīng)包括什么的清晰理解,系統(tǒng)與其他系統(tǒng)的接口。什么和不應(yīng)包括什么的清晰理解,系統(tǒng)與其他系統(tǒng)的接口。(3)確定系統(tǒng)的架構(gòu)看起來是什么樣子?)確定系統(tǒng)的架構(gòu)看起來是什么樣子?(4)識別出那些影響系統(tǒng)建造能力的重大風(fēng)險,并且判定是否可以找)識別出那些影響系統(tǒng)建造能力的重大風(fēng)險,并且判定是否可以找到方法緩解這些風(fēng)險。在初始階段,只考慮那些對系統(tǒng)的成功開發(fā)有到方法緩解這些風(fēng)險。在初始階段,只考慮那些對系統(tǒng)的成功開發(fā)有威脅的風(fēng)險。威脅的風(fēng)險。(5)估計整個項目的成本及大致的進(jìn)度。)估計整個項目的成本及大致的進(jìn)度。架構(gòu):系統(tǒng)的框架性結(jié)構(gòu)。

47、架構(gòu):系統(tǒng)的框架性結(jié)構(gòu)。2. 細(xì)化細(xì)化細(xì)化階段的開始標(biāo)志著項目的正式確定。軟件項目組在此細(xì)化階段的開始標(biāo)志著項目的正式確定。軟件項目組在此階段需要完成以下工作:階段需要完成以下工作:(1)初步的需求分析初步的需求分析。 UML語言利用用例來捕獲客戶的需求。通過用例模語言利用用例來捕獲客戶的需求。通過用例模型,就可以使那些對系統(tǒng)感興趣的外部參與者與他們要求型,就可以使那些對系統(tǒng)感興趣的外部參與者與他們要求系統(tǒng)具備的功能(即用例)一起被建模。外部參與者和用系統(tǒng)具備的功能(即用例)一起被建模。外部參與者和用例之間是通過關(guān)系建模的,并且相互之間存在通信關(guān)聯(lián),例之間是通過關(guān)系建模的,并且相互之間存在通信

48、關(guān)聯(lián),或者被分解為更具體的層次結(jié)構(gòu)。參與者和用例是由或者被分解為更具體的層次結(jié)構(gòu)。參與者和用例是由UML的用例圖描述的。每一個用例都是用文本進(jìn)行描述的,它的用例圖描述的。每一個用例都是用文本進(jìn)行描述的,它確定了客戶的需求,即在不考慮功能如何實現(xiàn)的情況下,確定了客戶的需求,即在不考慮功能如何實現(xiàn)的情況下,客戶所企盼的系統(tǒng)功能客戶所企盼的系統(tǒng)功能。(2)初步的高層設(shè)計初步的高層設(shè)計。如果目標(biāo)軟件系統(tǒng)的規(guī)模比較龐。如果目標(biāo)軟件系統(tǒng)的規(guī)模比較龐大,那么經(jīng)初步需求分析獲得的用例和類將會非常多。此大,那么經(jīng)初步需求分析獲得的用例和類將會非常多。此時可以考慮利用時可以考慮利用UML的包圖刻畫這些包及其間的關(guān)

49、系。的包圖刻畫這些包及其間的關(guān)系。(3)部分的詳細(xì)設(shè)計部分的詳細(xì)設(shè)計。對于系統(tǒng)中某些重要的。對于系統(tǒng)中某些重要的或者風(fēng)險比較高的用例,可以采用交互圖進(jìn)或者風(fēng)險比較高的用例,可以采用交互圖進(jìn)一步探討其內(nèi)部實現(xiàn)過程。同樣,對于系統(tǒng)一步探討其內(nèi)部實現(xiàn)過程。同樣,對于系統(tǒng)中的關(guān)鍵類,也可以詳細(xì)研究其屬性和操作,中的關(guān)鍵類,也可以詳細(xì)研究其屬性和操作,并在并在UML類圖中加以表現(xiàn)類圖中加以表現(xiàn)(4)部分的原型構(gòu)造部分的原型構(gòu)造。在很多情形下針對一些。在很多情形下針對一些復(fù)雜的用例構(gòu)造可實際運行的原型是降低技復(fù)雜的用例構(gòu)造可實際運行的原型是降低技術(shù)風(fēng)險、讓用戶幫助軟件項目組確認(rèn)用戶需術(shù)風(fēng)險、讓用戶幫助軟件

50、項目組確認(rèn)用戶需求的最有效的方法。為了構(gòu)造原型需要針對求的最有效的方法。為了構(gòu)造原型需要針對用例生成詳盡的交互圖,對所有相關(guān)類給出用例生成詳盡的交互圖,對所有相關(guān)類給出明確的屬性和操作定義。明確的屬性和操作定義。 綜上所述,在細(xì)化階段可能需要使用的綜上所述,在細(xì)化階段可能需要使用的UML語言機制包括:描述用戶需求的用例及用例圖、語言機制包括:描述用戶需求的用例及用例圖、表示領(lǐng)域概念模型的類圖、表示業(yè)務(wù)流程處理的表示領(lǐng)域概念模型的類圖、表示業(yè)務(wù)流程處理的活動圖、表示系統(tǒng)高層結(jié)構(gòu)的包圖和表示用例內(nèi)活動圖、表示系統(tǒng)高層結(jié)構(gòu)的包圖和表示用例內(nèi)部實現(xiàn)過程的交互圖等部實現(xiàn)過程的交互圖等。 細(xì)化階段的結(jié)束條

51、件:所有主要的用戶需求細(xì)化階段的結(jié)束條件:所有主要的用戶需求已通過用例和用例圖得以描述;所有重要的風(fēng)險已通過用例和用例圖得以描述;所有重要的風(fēng)險已被標(biāo)識,并對風(fēng)險應(yīng)對措施了如指掌;能夠比已被標(biāo)識,并對風(fēng)險應(yīng)對措施了如指掌;能夠比較精確地估算實現(xiàn)每一用例的時間較精確地估算實現(xiàn)每一用例的時間。3 . 構(gòu)造構(gòu)造 在構(gòu)造階段,開發(fā)人員通過一系列的迭代完成對在構(gòu)造階段,開發(fā)人員通過一系列的迭代完成對所有用例的軟件實現(xiàn)工作,在每次迭代中實現(xiàn)一部所有用例的軟件實現(xiàn)工作,在每次迭代中實現(xiàn)一部分用例。分用例。(1)指定迭代計劃指定迭代計劃 在實際開始構(gòu)造軟件系統(tǒng)之前,有必要預(yù)先指定在實際開始構(gòu)造軟件系統(tǒng)之前,有

52、必要預(yù)先指定迭代計劃。計劃的指定需遵循如下兩項原則迭代計劃。計劃的指定需遵循如下兩項原則:用戶認(rèn)為業(yè)務(wù)價值較大的用例應(yīng)優(yōu)先安排用戶認(rèn)為業(yè)務(wù)價值較大的用例應(yīng)優(yōu)先安排。開發(fā)人員評估后認(rèn)為開發(fā)風(fēng)險較高的用例應(yīng)該優(yōu)先安排開發(fā)人員評估后認(rèn)為開發(fā)風(fēng)險較高的用例應(yīng)該優(yōu)先安排。 在迭代計劃中,要確定迭代次數(shù)、每次迭代所需在迭代計劃中,要確定迭代次數(shù)、每次迭代所需時間以及每次迭代中應(yīng)完成(或部分完成)的用例。時間以及每次迭代中應(yīng)完成(或部分完成)的用例。 (2)每次迭代過程由針對用例的分析、設(shè))每次迭代過程由針對用例的分析、設(shè)計、編碼、測試和集成計、編碼、測試和集成5個子階段構(gòu)成。個子階段構(gòu)成。l分析階段分析階

53、段 分析階段關(guān)注的是出現(xiàn)在問題域中的主要抽象分析階段關(guān)注的是出現(xiàn)在問題域中的主要抽象(類和對象)和機制。被建模的類以及類之間的關(guān)(類和對象)和機制。被建模的類以及類之間的關(guān)系在系在UML的類圖中被明確指定和描述。為了實現(xiàn)用的類圖中被明確指定和描述。為了實現(xiàn)用例,各類之間需要相互協(xié)作。這種協(xié)作是由例,各類之間需要相互協(xié)作。這種協(xié)作是由UML中中的動態(tài)模型描述的。在分析階段,只有在問題域的動態(tài)模型描述的。在分析階段,只有在問題域(現(xiàn)實世界的概念)中的類才被建模,這里的類并(現(xiàn)實世界的概念)中的類才被建模,這里的類并不是那些在軟件系統(tǒng)中定義了細(xì)節(jié)和解決方案的技不是那些在軟件系統(tǒng)中定義了細(xì)節(jié)和解決方案

54、的技術(shù)類。此階段的類有用戶界面類、數(shù)據(jù)庫類、通信術(shù)類。此階段的類有用戶界面類、數(shù)據(jù)庫類、通信類和并發(fā)類等。類和并發(fā)類等。 在設(shè)計階段,分析階段的結(jié)果被擴展為一個技在設(shè)計階段,分析階段的結(jié)果被擴展為一個技術(shù)解決方案。新類被加入進(jìn)來,以提供以下一些術(shù)解決方案。新類被加入進(jìn)來,以提供以下一些技術(shù)基礎(chǔ)結(jié)構(gòu):用戶界面、處理對象存儲的數(shù)據(jù)技術(shù)基礎(chǔ)結(jié)構(gòu):用戶界面、處理對象存儲的數(shù)據(jù)庫、與其他系統(tǒng)的通信、與系統(tǒng)中各種設(shè)備的接庫、與其他系統(tǒng)的通信、與系統(tǒng)中各種設(shè)備的接口等。在分析階段獲得的問題域中的類被口等。在分析階段獲得的問題域中的類被“嵌入嵌入”到此技術(shù)基礎(chǔ)結(jié)構(gòu)中,這樣就能夠同時改變問題到此技術(shù)基礎(chǔ)結(jié)構(gòu)中,

55、這樣就能夠同時改變問題域和基礎(chǔ)結(jié)構(gòu)。設(shè)計階段將為隨后的構(gòu)建階段產(chǎn)域和基礎(chǔ)結(jié)構(gòu)。設(shè)計階段將為隨后的構(gòu)建階段產(chǎn)生詳細(xì)的規(guī)格說明。生詳細(xì)的規(guī)格說明。l設(shè)計階段設(shè)計階段 在編碼階段(或者稱之為構(gòu)建階段),設(shè)計階在編碼階段(或者稱之為構(gòu)建階段),設(shè)計階段的類被轉(zhuǎn)換為使用面向?qū)ο缶幊陶Z言編制(不推段的類被轉(zhuǎn)換為使用面向?qū)ο缶幊陶Z言編制(不推薦使用過程語言)的實際代碼。這一任務(wù)可能比較薦使用過程語言)的實際代碼。這一任務(wù)可能比較困難,也可能比較容易,主要取決于所使用的編程困難,也可能比較容易,主要取決于所使用的編程語言本身的能力。用語言本身的能力。用UML創(chuàng)建分析模型和設(shè)計模創(chuàng)建分析模型和設(shè)計模型時,最好避

56、免試圖將模型轉(zhuǎn)換為代碼。在開發(fā)的型時,最好避免試圖將模型轉(zhuǎn)換為代碼。在開發(fā)的早期階段,模型是幫助理解和搭建系統(tǒng)結(jié)構(gòu)的一種早期階段,模型是幫助理解和搭建系統(tǒng)結(jié)構(gòu)的一種手段。這樣,如果在早期階段就考慮代碼,勢必達(dá)手段。這樣,如果在早期階段就考慮代碼,勢必達(dá)不到預(yù)期的目標(biāo),即創(chuàng)建簡單的和正確的模型。所不到預(yù)期的目標(biāo),即創(chuàng)建簡單的和正確的模型。所以,編碼是一個單獨的階段,也就是只有到了編碼以,編碼是一個單獨的階段,也就是只有到了編碼階段,模型才被轉(zhuǎn)換為代碼。階段,模型才被轉(zhuǎn)換為代碼。l編碼階段編碼階段 通常,一個系統(tǒng)需要經(jīng)過單元測試、集成測試、通常,一個系統(tǒng)需要經(jīng)過單元測試、集成測試、系統(tǒng)測試和接受性

57、測試。單元測試是對單個類或一系統(tǒng)測試和接受性測試。單元測試是對單個類或一組類的測試,一般情況下由編程者自己完成。集成組類的測試,一般情況下由編程者自己完成。集成測試是集成組件和類,以校驗它們是否是像指定的測試是集成組件和類,以校驗它們是否是像指定的那樣進(jìn)行合作。系統(tǒng)測試將系統(tǒng)看做一個那樣進(jìn)行合作。系統(tǒng)測試將系統(tǒng)看做一個“黑盒黑盒子子”,檢驗系統(tǒng)是否具有最終用戶所期望的功能。,檢驗系統(tǒng)是否具有最終用戶所期望的功能。接受性測試與系統(tǒng)測試相似,它是由客戶實施的,接受性測試與系統(tǒng)測試相似,它是由客戶實施的,以驗證系統(tǒng)是否滿足客戶的需求。以驗證系統(tǒng)是否滿足客戶的需求。 不同的測試團(tuán)隊使用不同的不同的測試

58、團(tuán)隊使用不同的UML圖作為他們工圖作為他們工作的基礎(chǔ):單元測試團(tuán)隊使用類圖和類規(guī)格說明;作的基礎(chǔ):單元測試團(tuán)隊使用類圖和類規(guī)格說明;集成測試團(tuán)隊一般使用組件圖和協(xié)作圖;系統(tǒng)測試集成測試團(tuán)隊一般使用組件圖和協(xié)作圖;系統(tǒng)測試團(tuán)隊則利用用例圖檢驗最初在這些圖中定義的系統(tǒng)團(tuán)隊則利用用例圖檢驗最初在這些圖中定義的系統(tǒng)行為。行為。 l測試與集成階段測試與集成階段構(gòu)造過程構(gòu)造過程(3)使用交互圖設(shè)計用例的實現(xiàn)方法,修改)使用交互圖設(shè)計用例的實現(xiàn)方法,修改或精化在細(xì)化階段繪制的類圖,增加必需或精化在細(xì)化階段繪制的類圖,增加必需的類、類的屬性或方法。的類、類的屬性或方法。(4)用狀態(tài)圖表示類的對象的行為。)用狀

59、態(tài)圖表示類的對象的行為。(5)用活動圖表示復(fù)雜的算法過程和有多個)用活動圖表示復(fù)雜的算法過程和有多個對象參與的業(yè)務(wù)處理過程。對象參與的業(yè)務(wù)處理過程。(6)對細(xì)化階段繪制的包圖進(jìn)行修改或精化。)對細(xì)化階段繪制的包圖進(jìn)行修改或精化。綜上所述,在構(gòu)造階段可能需要使用的綜上所述,在構(gòu)造階段可能需要使用的UML語言機制包語言機制包括:括:(1)用例及用例圖用例及用例圖。它們是開發(fā)人員在構(gòu)造階段進(jìn)行。它們是開發(fā)人員在構(gòu)造階段進(jìn)行分析和設(shè)計的基礎(chǔ)。分析和設(shè)計的基礎(chǔ)。(2)類圖類圖。在領(lǐng)域概念模型的基礎(chǔ)上引進(jìn)為軟件所必。在領(lǐng)域概念模型的基礎(chǔ)上引進(jìn)為軟件所必須的類、屬性和方法。須的類、屬性和方法。(3)交互圖交

60、互圖。表示針對用例設(shè)計的軟件實現(xiàn)方法。表示針對用例設(shè)計的軟件實現(xiàn)方法。(4)狀態(tài)圖狀態(tài)圖。表示類的對象的狀態(tài)。表示類的對象的狀態(tài)-事件事件-響應(yīng)行為。響應(yīng)行為。(5)活動圖活動圖。表示復(fù)雜的算法過程,尤其是過程中并。表示復(fù)雜的算法過程,尤其是過程中并發(fā)和同步。發(fā)和同步。(6)包圖包圖。表示目標(biāo)軟件系統(tǒng)的頂層結(jié)構(gòu)。表示目標(biāo)軟件系統(tǒng)的頂層結(jié)構(gòu)。(7)構(gòu)件圖構(gòu)件圖。(8)部署圖部署圖。兩者描述軟件實現(xiàn)系統(tǒng)的組成和分布狀。兩者描述軟件實現(xiàn)系統(tǒng)的組成和分布狀況。況。4. 移交移交 在移交階段開發(fā)人員將構(gòu)造階段獲得的軟件系在移交階段開發(fā)人員將構(gòu)造階段獲得的軟件系統(tǒng)在用戶實際工作環(huán)境(或接近實際的模擬環(huán)境)

溫馨提示

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

評論

0/150

提交評論