清華大學(xué)殷仁昆教授講授《軟件工程》講義-04_第1頁
清華大學(xué)殷仁昆教授講授《軟件工程》講義-04_第2頁
清華大學(xué)殷仁昆教授講授《軟件工程》講義-04_第3頁
清華大學(xué)殷仁昆教授講授《軟件工程》講義-04_第4頁
清華大學(xué)殷仁昆教授講授《軟件工程》講義-04_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程軟件工程1 1軟件工程軟件工程第四章第四章 面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)4.1 4.1 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.2 Rational4.2 Rational統(tǒng)一開發(fā)過程統(tǒng)一開發(fā)過程4.3 UML4.3 UML統(tǒng)一建模語言統(tǒng)一建模語言軟件工程軟件工程2 2n客觀世界中的應(yīng)用問題面對的主體都是物理的或客觀世界中的應(yīng)用問題面對的主體都是物理的或概念的概念的實體實體。n從這些實體出發(fā),分析實體的從這些實體出發(fā),分析實體的作用作用、責(zé)任責(zé)任以及它以及它們之間們之間協(xié)作協(xié)作,從而找出問題的解,是很自然的。,從而找出問題的解,是很自然的。n面向?qū)ο蠹夹g(shù)就是適合用這種方式分析和解決問面向?qū)ο蠹夹g(shù)就

2、是適合用這種方式分析和解決問題的方法。它的基石就是題的方法。它的基石就是問題領(lǐng)域中識別出來的問題領(lǐng)域中識別出來的各種對象各種對象。依賴這些對象提供的服務(wù)和對象之間。依賴這些對象提供的服務(wù)和對象之間相互的協(xié)同(關(guān)系),實現(xiàn)期望的功能。相互的協(xié)同(關(guān)系),實現(xiàn)期望的功能。n面向?qū)ο蠹夹g(shù)能夠在解決方案中直接模擬問題領(lǐng)面向?qū)ο蠹夹g(shù)能夠在解決方案中直接模擬問題領(lǐng)域,并與人類的思維習(xí)慣相一致。域,并與人類的思維習(xí)慣相一致。4.1 4.1 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍钴浖こ誊浖こ? 3什么是面向?qū)ο笫裁词敲嫦驅(qū)ο髇Peter Coad 和和 Edward Yourdon 提出面向?qū)ο蠓教岢雒嫦驅(qū)ο蠓椒ǖ?/p>

3、概念:法的概念: 面向?qū)ο竺嫦驅(qū)ο?= 對象對象 + 分類分類 + 繼承繼承 + 消息通信消息通信n采用這四個概念開發(fā)的軟件系統(tǒng)就是面向?qū)ο蟮牟捎眠@四個概念開發(fā)的軟件系統(tǒng)就是面向?qū)ο蟮能浖到y(tǒng)。軟件系統(tǒng)。n一個面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是一個面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對象對象,計算,計算是通過新的是通過新的對象的建立對象的建立和和對象之間的通信對象之間的通信來執(zhí)行來執(zhí)行的。的。軟件工程軟件工程4 4面向?qū)ο蠓缎偷奶攸c面向?qū)ο蠓缎偷奶攸cn面向?qū)ο笙到y(tǒng)中的對象是面向?qū)ο笙到y(tǒng)中的對象是數(shù)據(jù)抽象數(shù)據(jù)抽象與與過程抽象過程抽象的綜合體。的綜合體。n所謂所謂過程抽象過程抽象是指是指當(dāng)使用某個過程時,無需關(guān)

4、當(dāng)使用某個過程時,無需關(guān)心過程內(nèi)部的實現(xiàn)細節(jié),只要知道如何調(diào)用該心過程內(nèi)部的實現(xiàn)細節(jié),只要知道如何調(diào)用該過程以及該過程完成什么功能即可過程以及該過程完成什么功能即可。n所謂所謂數(shù)據(jù)抽象數(shù)據(jù)抽象是是指使用結(jié)構(gòu)或記錄等方式把某指使用結(jié)構(gòu)或記錄等方式把某個實體的數(shù)據(jù)集中起來,使得使用者能夠以個實體的數(shù)據(jù)集中起來,使得使用者能夠以單單元為單位元為單位使用數(shù)據(jù)使用數(shù)據(jù)。n面向?qū)ο蠓缎驮跀?shù)據(jù)抽象中組織過程抽象。面向?qū)ο蠓缎驮跀?shù)據(jù)抽象中組織過程抽象。軟件工程軟件工程5 5n面向?qū)ο笙到y(tǒng)的面向?qū)ο笙到y(tǒng)的狀態(tài)狀態(tài)分別保存在各個對象的數(shù)分別保存在各個對象的數(shù)據(jù)存儲中,而不是保存在一些全局變量中。據(jù)存儲中,而不是保

5、存在一些全局變量中。n系統(tǒng)解決問題的系統(tǒng)解決問題的控制流控制流包含在各個對象中的操包含在各個對象中的操作內(nèi)。并通過作內(nèi)。并通過消息傳遞消息傳遞,控制流從一個對象轉(zhuǎn),控制流從一個對象轉(zhuǎn)移到另一個對象。移到另一個對象。n算法被分布到各種實體中。通過執(zhí)行消息傳遞算法被分布到各種實體中。通過執(zhí)行消息傳遞和對象中的操作實現(xiàn)算法的功能。和對象中的操作實現(xiàn)算法的功能。軟件工程軟件工程6 6面向?qū)ο蟮奶攸c面向?qū)ο蟮奶攸cn抽象性:對象包含數(shù)據(jù)抽象和行為抽象;抽象性:對象包含數(shù)據(jù)抽象和行為抽象;n封裝性:信息隱蔽(使用與實現(xiàn)分開);封裝性:信息隱蔽(使用與實現(xiàn)分開);n共享性:共享性:同一個類中所有對象共享相同的

6、數(shù)據(jù)結(jié)構(gòu)同一個類中所有對象共享相同的數(shù)據(jù)結(jié)構(gòu)和行為;和行為;同一應(yīng)用中的對象通過繼承關(guān)系,共享共同一應(yīng)用中的對象通過繼承關(guān)系,共享共同的數(shù)據(jù)結(jié)構(gòu)和行為;同的數(shù)據(jù)結(jié)構(gòu)和行為;不同應(yīng)用中的對象通過復(fù)用,共享數(shù)據(jù)結(jié)不同應(yīng)用中的對象通過復(fù)用,共享數(shù)據(jù)結(jié)構(gòu)和行為。構(gòu)和行為。軟件工程軟件工程7 7對象(對象(object) 對象是系統(tǒng)中描述客觀事物的實體,是構(gòu)成系統(tǒng)對象是系統(tǒng)中描述客觀事物的實體,是構(gòu)成系統(tǒng)的一個基本單元,由一組屬性值和一組對屬性進的一個基本單元,由一組屬性值和一組對屬性進行操作的服務(wù)組成。行操作的服務(wù)組成。 對象對象 = = 對象名對象名+ +數(shù)據(jù)數(shù)據(jù)( (屬性屬性)+)+操作操作( (

7、行為行為) ) 屬性值一般只能通過執(zhí)行對象的操作來改變。屬性值一般只能通過執(zhí)行對象的操作來改變。 操作(方法或服務(wù))描述了對象執(zhí)行的功能,若操作(方法或服務(wù))描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其他對象使用。通過消息傳遞,還可以為其他對象使用。 對象可以是對象可以是外部實體外部實體、信息結(jié)構(gòu)信息結(jié)構(gòu)、事件事件、角色角色、組織結(jié)構(gòu)組織結(jié)構(gòu)、地點或位置地點或位置、操作規(guī)程操作規(guī)程等。等。軟件工程軟件工程8 8計算機窗口中的三個多邊形對象計算機窗口中的三個多邊形對象(50, 60)(50, 85)(35, 60)(35, 85)(50, 45)(60, 35)(56, 10)(46, 37

8、)(10, 50)(20, 20)(23, 30)軟件工程軟件工程9 9表示多邊形的三個對象表示多邊形的三個對象drawmove( x, y)contains?(aPoint)(10, 50)(20, 20)(23, 30)triangledrawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2軟件工程軟件工程1010類(類(classcla

9、ss) 把具有相同屬性(數(shù)據(jù)結(jié)構(gòu))和服務(wù)(操作)把具有相同屬性(數(shù)據(jù)結(jié)構(gòu))和服務(wù)(操作)的對象歸在一起就形成了的對象歸在一起就形成了類類。 類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。合法操作。 屬于某一個類的各個對象都是該類的實例屬于某一個類的各個對象都是該類的實例(instance),它們都可使用類中的操作。,它們都可使用類中的操作。 類定義了各個實例所共有的數(shù)據(jù)結(jié)構(gòu),使用類類定義了各個實例所共有的數(shù)據(jù)結(jié)構(gòu),使用類的構(gòu)造函數(shù),可以在創(chuàng)建該類的實例時初始化的構(gòu)造函數(shù),可以在創(chuàng)建該類的實例時初始化這個實例的狀態(tài)。這個實例的狀態(tài)。軟件工程軟件工程11

10、 11由兩個四邊形對象導(dǎo)出一個類由兩個四邊形對象導(dǎo)出一個類drawmove( x, y)contains?(aPoint)(46, 37)(50, 45)(60, 35)(56, 10)quadrilateral1drawmove( x, y)contains?(aPoint)(35, 60)(35, 85)(50, 85)(50, 60)quadrilateral2drawmove( x, y)contains?(aPoint)point1point2point3point4quadrilateral軟件工程軟件工程1212消息消息(messagemessage)消息是一個對象向另一個對象傳

11、遞的信息。有消息是一個對象向另一個對象傳遞的信息。有四類消息:發(fā)送對象四類消息:發(fā)送對象請求接收對象提供服務(wù)請求接收對象提供服務(wù)、發(fā)送對象發(fā)送對象激活接收對象激活接收對象、發(fā)送對象、發(fā)送對象詢問接收對詢問接收對象象、發(fā)送對象、發(fā)送對象僅傳送信息給接收對象僅傳送信息給接收對象。消息的使用類似于函數(shù)調(diào)用,消息中指定了某消息的使用類似于函數(shù)調(diào)用,消息中指定了某一個實例,一個操作名和一個參數(shù)表(可能是一個實例,一個操作名和一個參數(shù)表(可能是空的),如空的),如quadrilateral1. move(15, 20) 。接收消息的實例執(zhí)行消息中指定的操作,并將接收消息的實例執(zhí)行消息中指定的操作,并將形式

12、參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。軟件工程軟件工程1313繼承(繼承(inheritanceinheritance) 如果某幾個類之間具有共性的東西如果某幾個類之間具有共性的東西 ( (屬性和行屬性和行為為) ),抽取出來放在一個泛化類中,將各個類的,抽取出來放在一個泛化類中,將各個類的特有的東西放在特化類中分別描述,則可建立特有的東西放在特化類中分別描述,則可建立起特化類對泛化類的繼承。起特化類對泛化類的繼承。 繼承是使用已有的類定義做為基礎(chǔ)建立新類的繼承是使用已有的類定義做為基礎(chǔ)建立新類的定義技術(shù)。定義技術(shù)。 已有的類可當(dāng)做泛化類(父類)來引用,則新已有的

13、類可當(dāng)做泛化類(父類)來引用,則新類相應(yīng)地可當(dāng)做特化類(子類)來引用。類相應(yīng)地可當(dāng)做特化類(子類)來引用。軟件工程軟件工程1414n建立繼承結(jié)構(gòu)的好處:建立繼承結(jié)構(gòu)的好處: 易編程、易理解易編程、易理解 代碼短代碼短, , 結(jié)構(gòu)清晰結(jié)構(gòu)清晰 易修改易修改 共同部分只要在一處修改即可共同部分只要在一處修改即可 易增加新類易增加新類 只須描述不同部分只須描述不同部分n怎樣建立一個好的繼承層次怎樣建立一個好的繼承層次 類可以從父類繼承,父類又可以從它的父類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結(jié)構(gòu)。類繼承,形成多層次的繼承結(jié)構(gòu)。 當(dāng)增加一個新類時,不一定在最低層,可當(dāng)增加一個新類

14、時,不一定在最低層,可能需要插在中間層,這樣可能需要調(diào)整原能需要插在中間層,這樣可能需要調(diào)整原來的層次結(jié)構(gòu)。來的層次結(jié)構(gòu)。軟件工程軟件工程1515建立一個新類建立一個新類起重車起重車。它的。它的底底盤盤、發(fā)動機發(fā)動機、輪胎輪胎、驅(qū)動裝置驅(qū)動裝置等都在已有類等都在已有類汽車汽車中。關(guān)系如中。關(guān)系如右圖所示。新類是已有類的特右圖所示。新類是已有類的特殊情形。這時直接讓殊情形。這時直接讓起重車起重車類類作為作為汽車汽車類的子類即可。類的子類即可。起重車起重車類類汽車類汽車類汽車汽車載重車載重車大轎車大轎車救火車救火車起重車起重車軟件工程軟件工程1616增加一個新類增加一個新類拖拉機拖拉機。它的。它的

15、底盤底盤、發(fā)動機發(fā)動機等與等與汽車汽車不同,但不同,但驅(qū)動裝置驅(qū)動裝置、輪胎輪胎等與等與汽車汽車相同。相同。調(diào)整繼承結(jié)構(gòu)。建立一個新的一般的調(diào)整繼承結(jié)構(gòu)。建立一個新的一般的車輛類車輛類,把把拖拉機拖拉機與與汽車類汽車類的共性放到的共性放到車輛類車輛類中,中,拖拉拖拉機機與與汽車類汽車類都成為都成為車輛類車輛類的子類。的子類。車輛車輛是抽象類,相關(guān)操作到子類是抽象類,相關(guān)操作到子類汽車汽車找找汽車汽車拖拉機拖拉機車輛車輛汽車汽車拖拉機拖拉機軟件工程軟件工程1717另一種情形是在已有類的基礎(chǔ)上加入新類,另一種情形是在已有類的基礎(chǔ)上加入新類,使得新類成為已有類的泛化類。使得新類成為已有類的泛化類。例

16、如,已經(jīng)存在例如,已經(jīng)存在三角形類三角形類,四邊形類四邊形類,想加,想加入一個入一個多邊形類多邊形類,并使之成為,并使之成為三角形三角形和和四邊四邊形類形類的泛化類。的泛化類。三角形類三角形類四邊形類四邊形類多多邊邊形形類類六邊形六邊形多邊形多邊形四邊形四邊形三角形三角形軟件工程軟件工程1818前三個情況主要是通過查找(應(yīng)用領(lǐng)域)類庫,前三個情況主要是通過查找(應(yīng)用領(lǐng)域)類庫,找到可以找到可以原封不動地繼承的類原封不動地繼承的類或可以或可以通過調(diào)整通過調(diào)整繼承層次結(jié)構(gòu)繼承的類繼承層次結(jié)構(gòu)繼承的類。但如果在已有的繼承。但如果在已有的繼承層次中找不到可以繼承的已有類,就從新開始層次中找不到可以繼承

17、的已有類,就從新開始完全獨立地建立一個類。完全獨立地建立一個類。n如果一個類需要用到多個現(xiàn)有類的特征,可以如果一個類需要用到多個現(xiàn)有類的特征,可以從多個類中繼承,稱為從多個類中繼承,稱為多繼承多繼承。n例如例如退休教師退休教師是繼承是繼承退休者退休者和和教師教師這兩個類的這兩個類的某些特征或行為而得到的一個新類。某些特征或行為而得到的一個新類。多繼承多繼承軟件工程軟件工程1919多態(tài)性和動態(tài)綁定多態(tài)性和動態(tài)綁定n對象互相通信,即一個對象發(fā)消息給另一個對對象互相通信,即一個對象發(fā)消息給另一個對象,執(zhí)行某些行為或又發(fā)消息給另外的對象,象,執(zhí)行某些行為或又發(fā)消息給另外的對象,從而執(zhí)行系統(tǒng)的功能。從而

18、執(zhí)行系統(tǒng)的功能。退休者退休者教師教師退休教師退休教師軟件工程軟件工程2020多態(tài)性多態(tài)性指同名的函數(shù)或操作可在不同類型的指同名的函數(shù)或操作可在不同類型的對象中有各自相應(yīng)的實現(xiàn)。例如對象中有各自相應(yīng)的實現(xiàn)。例如v 整數(shù)整數(shù)“+”:整數(shù)加法:整數(shù)加法v 浮點數(shù)浮點數(shù)“+”:浮點數(shù)加法:浮點數(shù)加法v 字符串字符串“+”:字符串連接:字符串連接v 點點“+”:兩個點的坐標(biāo)位置分別疊加:兩個點的坐標(biāo)位置分別疊加具有多態(tài)的函數(shù)或操作在運行時才根據(jù)實際具有多態(tài)的函數(shù)或操作在運行時才根據(jù)實際的對象類型,執(zhí)行相應(yīng)實現(xiàn)程序的連接,此的對象類型,執(zhí)行相應(yīng)實現(xiàn)程序的連接,此即動態(tài)綁定。即動態(tài)綁定。軟件工程軟件工程21

19、21n例如,想要在屏幕上畫一系列多邊形,例如,想要在屏幕上畫一系列多邊形,多態(tài)多態(tài)性性允許發(fā)送消息允許發(fā)送消息draw,根據(jù)消息接收對象的,根據(jù)消息接收對象的類型不同,畫出不同的多邊形。類型不同,畫出不同的多邊形。ndraw針對的是一系列的類型(類族)而不僅針對的是一系列的類型(類族)而不僅僅是一個類型。僅是一個類型。n多態(tài)性的實現(xiàn)有多態(tài)性的實現(xiàn)有 2 種:種: 利用利用繼承繼承關(guān)系,把所有數(shù)據(jù)類型當(dāng)作一個關(guān)系,把所有數(shù)據(jù)類型當(dāng)作一個抽象數(shù)據(jù)類型的子類型。抽象數(shù)據(jù)類型的子類型。軟件工程軟件工程2222 利用利用模板模板機制,把所有可能的數(shù)據(jù)類型用機制,把所有可能的數(shù)據(jù)類型用一個參數(shù)化的數(shù)據(jù)類型

20、來代替。一個參數(shù)化的數(shù)據(jù)類型來代替。n動態(tài)綁定保證在程序執(zhí)行時實施與對象動態(tài)綁定保證在程序執(zhí)行時實施與對象 P 連連接的操作。如果接的操作。如果 P 是是矩形類矩形類的實例,則執(zhí)行的實例,則執(zhí)行與與矩形矩形連接的操作,如果連接的操作,如果 P 是是三角形類三角形類的實的實例,則執(zhí)行與例,則執(zhí)行與三角形三角形連接的操作。連接的操作。n動態(tài)綁定把函數(shù)調(diào)用與目標(biāo)代碼塊的連接延動態(tài)綁定把函數(shù)調(diào)用與目標(biāo)代碼塊的連接延遲到運行時進行。這樣,只有發(fā)送消息時才遲到運行時進行。這樣,只有發(fā)送消息時才與接收消息實例的一個操作綁定。與接收消息實例的一個操作綁定。軟件工程軟件工程23234.2 Rational4.2

21、 Rational統(tǒng)一開發(fā)過程統(tǒng)一開發(fā)過程最佳軟件開發(fā)實踐最佳軟件開發(fā)實踐 為了以一種更好的、迭代的、可預(yù)測的方式開為了以一種更好的、迭代的、可預(yù)測的方式開發(fā)軟件產(chǎn)品,總結(jié)了軟件開發(fā)的最佳實踐:發(fā)軟件產(chǎn)品,總結(jié)了軟件開發(fā)的最佳實踐:迭代式軟件開發(fā);迭代式軟件開發(fā);需求管理;需求管理;基于構(gòu)件的軟件體系結(jié)構(gòu);基于構(gòu)件的軟件體系結(jié)構(gòu);建立軟件可視化模型;建立軟件可視化模型;不斷驗證軟件質(zhì)量;不斷驗證軟件質(zhì)量;控制變更。控制變更。軟件工程軟件工程2424Rational統(tǒng)一開發(fā)過程統(tǒng)一開發(fā)過程 軟件開發(fā)過程的作用是:軟件開發(fā)過程的作用是:成為開發(fā)組活動順序的向?qū)?。成為開發(fā)組活動順序的向?qū)АT敿氄f明需

22、要開發(fā)哪些制品,何時開發(fā)。詳細說明需要開發(fā)哪些制品,何時開發(fā)。指導(dǎo)每一個成員及整個開發(fā)組的工作。指導(dǎo)每一個成員及整個開發(fā)組的工作。提供監(jiān)控和度量項目產(chǎn)品和活動所依據(jù)的提供監(jiān)控和度量項目產(chǎn)品和活動所依據(jù)的準則。準則。如果沒有一個良好定義的過程,開發(fā)組將各行如果沒有一個良好定義的過程,開發(fā)組將各行其是,開發(fā)成功與否完全依賴個別優(yōu)秀的人才,其是,開發(fā)成功與否完全依賴個別優(yōu)秀的人才,這不是能夠長久的。這不是能夠長久的。軟件工程軟件工程2525nRational統(tǒng)一開發(fā)過程(統(tǒng)一開發(fā)過程(RUP, Rational Unify Process)描述了如何在軟件開發(fā)組織中嚴格分)描述了如何在軟件開發(fā)組織中

23、嚴格分配任務(wù)和職責(zé)的方法。配任務(wù)和職責(zé)的方法。nRUP 是一個過程產(chǎn)品,是一個過程產(chǎn)品,軟件過程也是軟件。軟件過程也是軟件。nRUP 采用二維的過程結(jié)構(gòu):采用二維的過程結(jié)構(gòu):橫軸表明過程的生存周期,它反映了過程被橫軸表明過程的生存周期,它反映了過程被激活時的動態(tài)情況,用周期、階段、迭代和激活時的動態(tài)情況,用周期、階段、迭代和里程碑表示。里程碑表示??v軸表明過程的靜態(tài)狀況,通過過程構(gòu)件、縱軸表明過程的靜態(tài)狀況,通過過程構(gòu)件、活動、工作流、制品和工作人員描述過程?;顒?、工作流、制品和工作人員描述過程。軟件工程軟件工程2626初始初始細化細化構(gòu)造構(gòu)造移交移交階階 段段初始化初始化細化細化#1細化細化

24、#2構(gòu)造構(gòu)造#1 構(gòu)造構(gòu)造#2 構(gòu)造構(gòu)造#3 移交移交#1移交移交#2迭代迭代 工作流工作流業(yè)務(wù)建模業(yè)務(wù)建模需求需求 分析與設(shè)計分析與設(shè)計實現(xiàn)實現(xiàn)測試測試實施實施配置和變更管理配置和變更管理項目管理項目管理環(huán)境環(huán)境沿時間軸的組織結(jié)構(gòu)沿時間軸的組織結(jié)構(gòu)沿內(nèi)容軸的組織沿內(nèi)容軸的組織軟件工程軟件工程2727過程的靜態(tài)描述:過程模型過程的靜態(tài)描述:過程模型 過程模型中的主要模型元素有過程模型中的主要模型元素有 4 種:種:v工作人員:誰做(工作人員:誰做(Who)v活動:怎么做(活動:怎么做(How)v制品:做什么(制品:做什么(what)v工作流:何時做(工作流:何時做(when) 過程的中心概念是

25、工作人員,工作人員不是過程的中心概念是工作人員,工作人員不是指某一個人,而是指完成工作的角色。工作指某一個人,而是指完成工作的角色。工作人員定義人們應(yīng)履行的行為和職責(zé)。人員定義人們應(yīng)履行的行為和職責(zé)。軟件工程軟件工程2828 活動定義了工作人員所執(zhí)行的工作。有活動定義了工作人員所執(zhí)行的工作。有 3 類類步驟:步驟:v 思考步驟思考步驟v 執(zhí)行步驟執(zhí)行步驟v 評審步驟評審步驟 制品是過程生產(chǎn)、修改或使用的一些信息。制品是過程生產(chǎn)、修改或使用的一些信息。RUP 的制品分為的制品分為 5 個信息集。個信息集。 管理集管理集:計劃制品、操作制品:計劃制品、操作制品 需求集需求集:構(gòu)想文檔、項目相關(guān)人員

26、需求、:構(gòu)想文檔、項目相關(guān)人員需求、用例模型和業(yè)務(wù)模型用例模型和業(yè)務(wù)模型軟件工程軟件工程2929v 設(shè)計集設(shè)計集:設(shè)計模型、軟件體系結(jié)構(gòu)描述、:設(shè)計模型、軟件體系結(jié)構(gòu)描述、測試模型測試模型v 實現(xiàn)集實現(xiàn)集:源代碼和可執(zhí)行程序、相關(guān)數(shù):源代碼和可執(zhí)行程序、相關(guān)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)文檔據(jù)結(jié)構(gòu)和數(shù)據(jù)文檔v 實施集實施集:安裝資料、用戶文檔、培訓(xùn)材:安裝資料、用戶文檔、培訓(xùn)材料料v 工作流用來描述生成結(jié)果的活動序列,用工作流用來描述生成結(jié)果的活動序列,用以描述工作人員之間的交互。在以描述工作人員之間的交互。在 RUP 中中共有共有 9 個核心過程工作流,包括個核心過程工作流,包括 6 個核心個核心工程工作流

27、和工程工作流和 3 個核心支持工作流。個核心支持工作流。軟件工程軟件工程3030v 業(yè)務(wù)建模工作流業(yè)務(wù)建模工作流:描述業(yè)務(wù)過程的本質(zhì)和:描述業(yè)務(wù)過程的本質(zhì)和執(zhí)行情形。執(zhí)行情形。v 需求工作流需求工作流:定義系統(tǒng)構(gòu)想,使用用例模:定義系統(tǒng)構(gòu)想,使用用例模型和補充規(guī)格說明定義系統(tǒng)軟件需求,管型和補充規(guī)格說明定義系統(tǒng)軟件需求,管理系統(tǒng)范圍和需求變更。理系統(tǒng)范圍和需求變更。v 分析和設(shè)計工作流分析和設(shè)計工作流:研究實現(xiàn)環(huán)境和系統(tǒng):研究實現(xiàn)環(huán)境和系統(tǒng)構(gòu)件的效用,定義軟件的組織結(jié)構(gòu),把需構(gòu)件的效用,定義軟件的組織結(jié)構(gòu),把需求獲取結(jié)果轉(zhuǎn)化為實現(xiàn)規(guī)格。求獲取結(jié)果轉(zhuǎn)化為實現(xiàn)規(guī)格。v 實現(xiàn)工作流實現(xiàn)工作流: 建立

28、代碼的分層結(jié)構(gòu),實現(xiàn)建立代碼的分層結(jié)構(gòu),實現(xiàn)類和對象,進行單元測試和系統(tǒng)集成。類和對象,進行單元測試和系統(tǒng)集成。軟件工程軟件工程3131v 測試工作流測試工作流:根據(jù)事先定義的度量和準根據(jù)事先定義的度量和準則檢查產(chǎn)品,確認產(chǎn)品是否滿足或者超則檢查產(chǎn)品,確認產(chǎn)品是否滿足或者超出事先定義并被一致接受的需求。出事先定義并被一致接受的需求。v 實施工作流實施工作流:在實際使用環(huán)境中測試軟在實際使用環(huán)境中測試軟件、包裝要交付的軟件、發(fā)布軟件產(chǎn)品、件、包裝要交付的軟件、發(fā)布軟件產(chǎn)品、培訓(xùn)最終用戶及銷售人員。培訓(xùn)最終用戶及銷售人員。n核心支持工作流有核心支持工作流有 項目管理工作流項目管理工作流 配置和變更

29、管理工作流配置和變更管理工作流 環(huán)境環(huán)境工作流工作流軟件工程軟件工程3232過程的動態(tài)描述:迭代開發(fā)過程的動態(tài)描述:迭代開發(fā) 將一個大項目分解為可連續(xù)應(yīng)用瀑布模型將一個大項目分解為可連續(xù)應(yīng)用瀑布模型的幾個小部分。在對一部分進行分析、設(shè)的幾個小部分。在對一部分進行分析、設(shè)計、實現(xiàn)并確認后,再對下一部分進行分計、實現(xiàn)并確認后,再對下一部分進行分析、設(shè)計、實現(xiàn)和確認。以此進行下去,析、設(shè)計、實現(xiàn)和確認。以此進行下去,直到整個項目完成。在直到整個項目完成。在 RUP 中,迭代過程中,迭代過程分為幾個階段。分為幾個階段。初始初始細化細化構(gòu)造構(gòu)造移交移交生存周期生存周期構(gòu)架里程碑構(gòu)架里程碑生存周期生存周期

30、目標(biāo)里程碑目標(biāo)里程碑最初運行最初運行能力里程碑能力里程碑產(chǎn)品發(fā)布產(chǎn)品發(fā)布里程碑里程碑時間時間軟件工程軟件工程3333初始階段初始階段:確定最終產(chǎn)品的構(gòu)想及其用例,:確定最終產(chǎn)品的構(gòu)想及其用例,定義項目范圍。定義項目范圍。細化階段細化階段:計劃需完成活動和資源,詳細說:計劃需完成活動和資源,詳細說明產(chǎn)品特性并設(shè)計軟件體系結(jié)構(gòu)。明產(chǎn)品特性并設(shè)計軟件體系結(jié)構(gòu)。構(gòu)造階段構(gòu)造階段:構(gòu)造整個產(chǎn)品,逐步完善軟件體:構(gòu)造整個產(chǎn)品,逐步完善軟件體系結(jié)構(gòu)和計劃,直到產(chǎn)品(完整的構(gòu)想)已系結(jié)構(gòu)和計劃,直到產(chǎn)品(完整的構(gòu)想)已完全準備好交付給用戶。完全準備好交付給用戶。移交階段移交階段:移交產(chǎn)品給用戶,包括制造,交:

31、移交產(chǎn)品給用戶,包括制造,交付,培訓(xùn),支持及維護產(chǎn)品。付,培訓(xùn),支持及維護產(chǎn)品。軟件工程軟件工程3434n這這 4 個階段構(gòu)成開發(fā)周期,周期結(jié)束時產(chǎn)生個階段構(gòu)成開發(fā)周期,周期結(jié)束時產(chǎn)生一代新的軟件產(chǎn)品。一代新的軟件產(chǎn)品。n軟件產(chǎn)品產(chǎn)生于初始開發(fā)周期,隨著重復(fù)執(zhí)軟件產(chǎn)品產(chǎn)生于初始開發(fā)周期,隨著重復(fù)執(zhí)行同樣的過程,軟件發(fā)展到下一代產(chǎn)品,這行同樣的過程,軟件發(fā)展到下一代產(chǎn)品,這一時期即為軟件的進化周期。一時期即為軟件的進化周期。 I E C T I E C T I E C T V1V2V3初始開發(fā)周期初始開發(fā)周期進化周期進化周期軟件工程軟件工程3535Rational統(tǒng)一過程的特點:統(tǒng)一過程的特點:

32、v用例驅(qū)動的、以體系結(jié)構(gòu)(架構(gòu))為中心用例驅(qū)動的、以體系結(jié)構(gòu)(架構(gòu))為中心的、迭代和增量的過程。的、迭代和增量的過程。v用例建模技術(shù)可以用為大多數(shù)項目相關(guān)人用例建模技術(shù)可以用為大多數(shù)項目相關(guān)人員理解的形式來表述問題。員理解的形式來表述問題。 參與者(參與者(Actor) 用例(用例(Use Case) 場景場景(scenario) 事件流(事件流(event flow)Actoruse case軟件工程軟件工程3636n用例和參與者的事例用例和參與者的事例 銀行儲戶通過自動取款機(自動柜員機)提款,銀行儲戶通過自動取款機(自動柜員機)提款,轉(zhuǎn)賬或檢查賬戶余額。用一組用例表達如下:轉(zhuǎn)賬或檢查賬戶

33、余額。用一組用例表達如下:轉(zhuǎn)賬轉(zhuǎn)賬提款提款檢察賬戶余額檢察賬戶余額儲戶儲戶軟件工程軟件工程3737n用例模型用例模型 將整個系統(tǒng)或子系統(tǒng)的所有用例,以及將整個系統(tǒng)或子系統(tǒng)的所有用例,以及與之交互的參與者集合起來構(gòu)成系統(tǒng)的與之交互的參與者集合起來構(gòu)成系統(tǒng)的用例模型。用例模型。 用例模型給出系統(tǒng)預(yù)期功能模型和系統(tǒng)用例模型給出系統(tǒng)預(yù)期功能模型和系統(tǒng)上下文環(huán)境模型,它成為開發(fā)人員和用上下文環(huán)境模型,它成為開發(fā)人員和用戶之間的契約。戶之間的契約。 用例模型的目的是確保系統(tǒng)能處理所有用例模型的目的是確保系統(tǒng)能處理所有的功能性需求。的功能性需求。軟件工程軟件工程3838n用例驅(qū)動的過程用例驅(qū)動的過程 “用例

34、驅(qū)動用例驅(qū)動” 指開發(fā)過程是基于用例,從指開發(fā)過程是基于用例,從一個工作流向下一個工作流,逐步前進的。一個工作流向下一個工作流,逐步前進的。 開發(fā)初期,人們使用用例獲取用戶需求,開發(fā)初期,人們使用用例獲取用戶需求,建立用例模型,描述系統(tǒng)的全部功能。建立用例模型,描述系統(tǒng)的全部功能。 基于用例模型,人們創(chuàng)建一系列實現(xiàn)這些基于用例模型,人們創(chuàng)建一系列實現(xiàn)這些用例的分析模型、設(shè)計模型和實現(xiàn)模型。用例的分析模型、設(shè)計模型和實現(xiàn)模型。 測試人員測試實現(xiàn)確保系統(tǒng)正確實現(xiàn)了用測試人員測試實現(xiàn)確保系統(tǒng)正確實現(xiàn)了用例。例。軟件工程軟件工程3939n以體系結(jié)構(gòu)為中心的過程以體系結(jié)構(gòu)為中心的過程 用例的選擇不是孤立

35、的,它與軟件的體系結(jié)用例的選擇不是孤立的,它與軟件的體系結(jié)構(gòu)是密切相關(guān)的。構(gòu)是密切相關(guān)的。 軟件體系結(jié)構(gòu)的作用與一個建筑的體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用與一個建筑的體系結(jié)構(gòu)類似。對于一個建筑,可以從框架結(jié)構(gòu)、供類似。對于一個建筑,可以從框架結(jié)構(gòu)、供熱、上下水、供電、天然氣、其他服務(wù)管線熱、上下水、供電、天然氣、其他服務(wù)管線等不同角度來考察它。使得施工人員在施工等不同角度來考察它。使得施工人員在施工前就能全面了解這個建筑。前就能全面了解這個建筑。 軟件的體系結(jié)構(gòu)也從不同角度描述了即將構(gòu)軟件的體系結(jié)構(gòu)也從不同角度描述了即將構(gòu)造的系統(tǒng),包括系統(tǒng)的造的系統(tǒng),包括系統(tǒng)的靜態(tài)特征靜態(tài)特征和和動態(tài)特征動態(tài)特征。

36、軟件工程軟件工程4040 每一種產(chǎn)品都有功能和表現(xiàn)形式兩個方面。每一種產(chǎn)品都有功能和表現(xiàn)形式兩個方面。用例就是功能用例就是功能,體系結(jié)構(gòu)就是表現(xiàn)形式體系結(jié)構(gòu)就是表現(xiàn)形式。 在開發(fā)過程中,必須兼顧功能和表現(xiàn)形式,在開發(fā)過程中,必須兼顧功能和表現(xiàn)形式,做出適當(dāng)權(quán)衡,才能得到好的產(chǎn)品。因此,做出適當(dāng)權(quán)衡,才能得到好的產(chǎn)品。因此,用例和體系結(jié)構(gòu)必須在迭代中并行演進用例和體系結(jié)構(gòu)必須在迭代中并行演進。 為了找到可以演進的體系結(jié)構(gòu),設(shè)計師必須為了找到可以演進的體系結(jié)構(gòu),設(shè)計師必須從全面了解系統(tǒng)的主要功能(即主要用例)從全面了解系統(tǒng)的主要功能(即主要用例)入手。入手。軟件工程軟件工程41414.3 4.3

37、統(tǒng)一建模語言統(tǒng)一建模語言UMLUMLnUML 是是Unified Modeling Language的縮寫。的縮寫。 它它是一種標(biāo)準的語言,以直觀的表述、定義、構(gòu)造是一種標(biāo)準的語言,以直觀的表述、定義、構(gòu)造和文檔化軟件為主的系統(tǒng)的工作制品。和文檔化軟件為主的系統(tǒng)的工作制品。nUML聚集了來自下列建模的精髓:聚集了來自下列建模的精髓: 數(shù)據(jù)建模(實體關(guān)系圖數(shù)據(jù)建模(實體關(guān)系圖ERD) 業(yè)務(wù)建模業(yè)務(wù)建模 (工作流)(工作流) 對象建模對象建模 構(gòu)件建模構(gòu)件建模n它可用于軟件生命周期各個過程,并適用于各種它可用于軟件生命周期各個過程,并適用于各種不同的實現(xiàn)技術(shù)。不同的實現(xiàn)技術(shù)。軟件工程軟件工程424

38、2UMLUML的特點的特點n統(tǒng)一標(biāo)準統(tǒng)一標(biāo)準 融合了當(dāng)前一些流行的面向?qū)ο箝_發(fā)方法融合了當(dāng)前一些流行的面向?qū)ο箝_發(fā)方法的主要概念和技術(shù),成為一種面向?qū)ο蟮牡闹饕拍詈图夹g(shù),成為一種面向?qū)ο蟮臉?biāo)準化的統(tǒng)一建模語言。標(biāo)準化的統(tǒng)一建模語言。 提供了標(biāo)準的面向?qū)ο蟮哪P驮氐亩x提供了標(biāo)準的面向?qū)ο蟮哪P驮氐亩x和表示法,有標(biāo)準的語言工具可用。和表示法,有標(biāo)準的語言工具可用。 已成為工業(yè)標(biāo)準化組織已成為工業(yè)標(biāo)準化組織OMG的正式標(biāo)準。的正式標(biāo)準。n面向?qū)ο竺嫦驅(qū)ο?支持面向?qū)ο蟮闹饕拍?,提供了一批基支持面向?qū)ο蟮闹饕拍?,提供了一批基本的模型元素的表示圖形和方法。本的模型元素的表示圖形和方法。軟件

39、工程軟件工程4343n可視化,表示能力強大可視化,表示能力強大 一種圖形化語言,系統(tǒng)的邏輯模型和實現(xiàn)一種圖形化語言,系統(tǒng)的邏輯模型和實現(xiàn)模型都能用模型都能用UML的模型圖形清晰地表示。的模型圖形清晰地表示。 可以處理與軟件的說明和文檔有關(guān)的問題??梢蕴幚砼c軟件的說明和文檔有關(guān)的問題。 提供了語言的擴展機制,用戶可以根據(jù)需提供了語言的擴展機制,用戶可以根據(jù)需要增加定義自己的衍型(要增加定義自己的衍型(StereoType)、標(biāo))、標(biāo)記值和約束等。記值和約束等。 可用于各種復(fù)雜類型的軟件系統(tǒng)的建模??捎糜诟鞣N復(fù)雜類型的軟件系統(tǒng)的建模。n獨立于過程獨立于過程 系統(tǒng)建模語言,獨立于開發(fā)過程。系統(tǒng)建模語

40、言,獨立于開發(fā)過程。軟件工程軟件工程4444n容易掌握使用容易掌握使用 概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。清晰,容易掌握使用。 著重學(xué)習(xí)三個方面的主要內(nèi)容:著重學(xué)習(xí)三個方面的主要內(nèi)容: (1) UML的基本模型元素的基本模型元素 (2) 組織模型元素的規(guī)則組織模型元素的規(guī)則 (3) UML語言的公共機制語言的公共機制n與程序設(shè)計語言的關(guān)系與程序設(shè)計語言的關(guān)系 用用Java,C+ 等編程語言可實現(xiàn)一個系統(tǒng)。等編程語言可實現(xiàn)一個系統(tǒng)。 一些一些CASE工具可以根據(jù)工具可以根據(jù) UML所建立的系統(tǒng)所建立的系統(tǒng)模型來產(chǎn)生模型來產(chǎn)生Java、

41、C+ 等代碼框架。等代碼框架。軟件工程軟件工程4545UMLUML的定義的定義nUML定義有兩個組成部分:語義和表示法。定義有兩個組成部分:語義和表示法。n語義語義用自然語言描述,用自然語言描述,表示法表示法定義了定義了UML的可的可視化標(biāo)準表示符號,這決定了視化標(biāo)準表示符號,這決定了UML是一種可視是一種可視化的建模語言?;慕UZ言。n在語義上,模型是元模型的實例。在語義上,模型是元模型的實例。UML定義給定義給出了語法結(jié)構(gòu)的精確定義。出了語法結(jié)構(gòu)的精確定義。n使用使用UML時,要從不同的角度觀察系統(tǒng),為此時,要從不同的角度觀察系統(tǒng),為此定義了概念定義了概念“視圖視圖”。視圖是對系統(tǒng)的模型

42、在某。視圖是對系統(tǒng)的模型在某方面的投影,注重于系統(tǒng)的某個方面。方面的投影,注重于系統(tǒng)的某個方面。軟件工程軟件工程4646UMLUML的構(gòu)成的構(gòu)成nUML的三個主要組成元素的三個主要組成元素基本構(gòu)造塊基本構(gòu)造塊(basic building blocks )組織構(gòu)造塊的組織構(gòu)造塊的規(guī)則規(guī)則(rules)運用于整個運用于整個UML的的公共機制公共機制(common mechanisms)nUML包括三種基本構(gòu)造塊包括三種基本構(gòu)造塊:事物(事物(things)關(guān)系(關(guān)系(relationships)1) 圖(圖(diagrams)軟件工程軟件工程4747UML UML 事物事物 結(jié)構(gòu)事物結(jié)構(gòu)事物Cl

43、ass(類)(類)Interface(接口)(接口) 描述了一個類或構(gòu)件的描述了一個類或構(gòu)件的服務(wù)(操作)集。服務(wù)(操作)集。ISpelling 類名類名屬性屬性操作操作open( )close( )move( )display( )originsizeWindow操作操作屬性屬性類名類名軟件工程軟件工程4848Collaboration(協(xié)作)(協(xié)作) 合作完成某個特定任務(wù)的一組類及其關(guān)聯(lián)的合作完成某個特定任務(wù)的一組類及其關(guān)聯(lián)的集合,用于對用例的實現(xiàn)建模。集合,用于對用例的實現(xiàn)建模。Use Case(用例)(用例) 表示系統(tǒng)想要實現(xiàn)的行為,不關(guān)心這些行為表示系統(tǒng)想要實現(xiàn)的行為,不關(guān)心這些行為

44、是怎樣實現(xiàn)的。是怎樣實現(xiàn)的。Place OrderOrderManagement用例用例協(xié)作協(xié)作實現(xiàn)實現(xiàn)實現(xiàn)實現(xiàn)協(xié)作協(xié)作用例用例軟件工程軟件工程4949Active Class(主動類)(主動類) 與一般類相同,但它至少擁有一個進程或與一般類相同,但它至少擁有一個進程或線程,故能夠啟動控制活動。線程,故能夠啟動控制活動。Component(構(gòu)件)(構(gòu)件) 系統(tǒng)中物理的、可替系統(tǒng)中物理的、可替代的部件。代的部件。Orderform.java suspend()flush()EventManager軟件工程軟件工程5050Node(節(jié)點)(節(jié)點) 系統(tǒng)在運行時存在的物理元素。系統(tǒng)在運行時存在的物理

45、元素。數(shù)據(jù)庫數(shù)據(jù)庫服務(wù)器服務(wù)器應(yīng)用應(yīng)用服務(wù)器服務(wù)器課程課程管理管理成績成績管理管理軟件工程軟件工程5151UMLUML事物事物 行為事物行為事物Interaction(交互)(交互)n交互由在特定的上下文環(huán)境中共同完成一定任交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對象之間傳遞的消息組成。務(wù)的一組對象之間傳遞的消息組成。n交互涉及的元素包括消息、動作序列和鏈。交互涉及的元素包括消息、動作序列和鏈。p:Person:CompanyAssign(development)消息消息有名對象有名對象匿名對象匿名對象有名對象有名對象匿名對象匿名對象消息消息軟件工程軟件工程5252State Mach

46、ine(狀態(tài)機)(狀態(tài)機) 狀態(tài)機描述了一個對象或一個交互在生存狀態(tài)機描述了一個對象或一個交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。 狀態(tài)機涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件狀態(tài)機涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件活動等?;顒拥?。initializingcommandidleKeypressFinishedExit軟件工程軟件工程5353UMLUML事物事物 分組事物分組事物package(包)(包) 包是把元素組織成組的機制,結(jié)構(gòu)事物、行包是把元素組織成組的機制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進包內(nèi)。為事物甚至其他分組事物都可以放進包內(nèi)。 包不象構(gòu)件(僅在

47、運行時存在),它純粹是包不象構(gòu)件(僅在運行時存在),它純粹是概念上的(即它僅在開發(fā)時存在)。概念上的(即它僅在開發(fā)時存在)。用戶接口用戶接口包包業(yè)務(wù)對象業(yè)務(wù)對象包包應(yīng)用包應(yīng)用包軟件工程軟件工程5454UMLUML事物事物 注釋事物注釋事物Note(注釋)(注釋) 依附于一個元素或一組元素之上,對其進依附于一個元素或一組元素之上,對其進行約束或解釋的簡單符號。行約束或解釋的簡單符號。CashAccountpresentValue()See policy8-5-96.doc for details about these algorithms.軟件工程軟件工程5555UML Relationshi

48、psUML Relationships(關(guān)系)(關(guān)系)nUML中有中有 4 種關(guān)系:種關(guān)系: 依賴依賴 關(guān)聯(lián)關(guān)聯(lián) 泛化泛化 實現(xiàn)實現(xiàn) n關(guān)系特征:關(guān)系特征: 這四種關(guān)系是這四種關(guān)系是UML模型中可以包含的基本模型中可以包含的基本關(guān)系。關(guān)系。 它們也有變體。例如,依賴的變體有細化、它們也有變體。例如,依賴的變體有細化、跟蹤、包含和延伸。跟蹤、包含和延伸。軟件工程軟件工程5656依賴(依賴(Dependency) 兩個事物之間的語義關(guān)系,其中目標(biāo)事物發(fā)兩個事物之間的語義關(guān)系,其中目標(biāo)事物發(fā)生變化會影響源事物的語義。生變化會影響源事物的語義。 圖中虛線箭頭從圖中虛線箭頭從源源事物指向事物指向目標(biāo)目標(biāo)

49、事物,表示事物,表示源事物依賴于目標(biāo)事物。源事物依賴于目標(biāo)事物。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator軟件工程軟件工程5757n兩個類之間的依賴關(guān)系可以是:兩個類之間的依賴關(guān)系可以是: 源類源類訪問訪問定義在目標(biāo)類內(nèi)部的數(shù)據(jù)值;定義在目標(biāo)類內(nèi)部的數(shù)據(jù)值; 源類的操作源類的操作調(diào)用調(diào)用了定義在目標(biāo)類的操作;了定義在目標(biāo)類的操作; 源類的返回類或參數(shù)是目標(biāo)類的源類的返回類或參數(shù)是目標(biāo)類的實例實例;n如果在順序圖中的兩個對象存在消息的傳送,如果在順序圖中的兩個對象存在消息的傳送,而且它們之間沒有結(jié)構(gòu)方面的連接,可以在類而且它

50、們之間沒有結(jié)構(gòu)方面的連接,可以在類圖上用依賴關(guān)系建模。圖上用依賴關(guān)系建模。n依賴的變體包含特定的語義,表明類之間的關(guān)依賴的變體包含特定的語義,表明類之間的關(guān)系、包之間的關(guān)系、用例之間的關(guān)系、對象之系、包之間的關(guān)系、用例之間的關(guān)系、對象之間的關(guān)系、建模元素與模型之間的關(guān)系等。間的關(guān)系、建模元素與模型之間的關(guān)系等。軟件工程軟件工程5858n類之間的依賴關(guān)系類之間的依賴關(guān)系可以是:可以是:v 友元依賴友元依賴 v目標(biāo)類(如二叉樹)視源類(如迭代器)目標(biāo)類(如二叉樹)視源類(如迭代器)為友元,允許源類訪問目標(biāo)類的所有私有屬為友元,允許源類訪問目標(biāo)類的所有私有屬性和操作。性和操作。v 導(dǎo)出依賴導(dǎo)出依賴

51、a.兩個類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表兩個類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表明源類(如年齡)可以從目標(biāo)類(如出生年明源類(如年齡)可以從目標(biāo)類(如出生年月)通過計算導(dǎo)出。月)通過計算導(dǎo)出。IteratorBinaryTreeAgeBirthDay軟件工程軟件工程5959v 細化依賴細化依賴 在類圖中表示同一模型的不同詳細程度的規(guī)在類圖中表示同一模型的不同詳細程度的規(guī)格說明,源類比目標(biāo)類更為詳細。格說明,源類比目標(biāo)類更為詳細。v 實例化依賴實例化依賴 若要強調(diào)一個類的對象是由另一個類的對象若要強調(diào)一個類的對象是由另一個類的對象創(chuàng)建的,可用實例化依賴。它表明源類創(chuàng)建創(chuàng)建的,可用實例化依賴。它表明源類創(chuàng)

52、建了目標(biāo)類的一個實例。了目標(biāo)類的一個實例。Chessboardfrom optimizedchessboardfrom simpleArrayStack軟件工程軟件工程6060v 使用依賴使用依賴 不加任何修飾的依賴即為使用依賴。也可用不加任何修飾的依賴即為使用依賴。也可用修飾修飾強調(diào)源類的語義依賴于目標(biāo)類強調(diào)源類的語義依賴于目標(biāo)類的具有共有可見性的構(gòu)成的語義。的具有共有可見性的構(gòu)成的語義。v 綁定(綁定(Binding)依賴)依賴v這種依賴關(guān)系中的目標(biāo)類是模板類,源這種依賴關(guān)系中的目標(biāo)類是模板類,源類是從模板實例化的類。類是從模板實例化的類。Binary SearchTreeBinary T

53、ree Stack Stack軟件工程軟件工程6161n包之間的依賴關(guān)系包之間的依賴關(guān)系可以是:可以是:訪問依賴訪問依賴 它表明源包被賦予了可訪問目標(biāo)包的權(quán)它表明源包被賦予了可訪問目標(biāo)包的權(quán)限。限。導(dǎo)入依賴導(dǎo)入依賴 a.它表明了源包可以訪問目標(biāo)包里的元素,它表明了源包可以訪問目標(biāo)包里的元素,但各個包有自己獨立的命名空間,這意味著屬但各個包有自己獨立的命名空間,這意味著屬于不同包的兩個元素可以重名。導(dǎo)入依賴可以于不同包的兩個元素可以重名。導(dǎo)入依賴可以使目標(biāo)包內(nèi)的公共可見元素進入源包的命名空使目標(biāo)包內(nèi)的公共可見元素進入源包的命名空間。間。sourcetargetsourcetarget軟件工程軟件

54、工程6262n用例之間的依賴關(guān)系用例之間的依賴關(guān)系可以是:可以是:包含依賴包含依賴 它表明源用例顯式地包含目標(biāo)用例作為它表明源用例顯式地包含目標(biāo)用例作為其行為的一部分。此時將源用例稱為其行為的一部分。此時將源用例稱為基用例基用例,目標(biāo)用例稱為目標(biāo)用例稱為內(nèi)含用例內(nèi)含用例。如果兩個用例之間具有包含依賴關(guān)系,如果兩個用例之間具有包含依賴關(guān)系,則表明基用例的動作序列中有特定的步驟把內(nèi)則表明基用例的動作序列中有特定的步驟把內(nèi)含用例的動作序列包含進來。含用例的動作序列包含進來。a.擴展依賴擴展依賴 base use caseinclusion use case軟件工程軟件工程6363它表明源用例擴展了目

55、標(biāo)用例的行為。此時,它表明源用例擴展了目標(biāo)用例的行為。此時,源用例稱為源用例稱為基用例基用例,目標(biāo)用例稱為,目標(biāo)用例稱為擴展用例擴展用例。擴展用例在特定條件下為基用例提供附加的動擴展用例在特定條件下為基用例提供附加的動態(tài)行為。例如,在人機交互過程中出現(xiàn)差錯時態(tài)行為。例如,在人機交互過程中出現(xiàn)差錯時進行的異常處理即為擴展動作。進行的異常處理即為擴展動作。擴展依賴與包含依賴的區(qū)別在于,如果僅將擴擴展依賴與包含依賴的區(qū)別在于,如果僅將擴展從基用例地動作序列中去除,基用例仍然是展從基用例地動作序列中去除,基用例仍然是語義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)語義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)果。而

56、包含依賴則不然。果。而包含依賴則不然。base use caseextension use case軟件工程軟件工程6464n對象之間的依賴關(guān)系對象之間的依賴關(guān)系可以是:可以是:v 轉(zhuǎn)換依賴轉(zhuǎn)換依賴 v當(dāng)需要在交互圖上表示對象狀態(tài)的轉(zhuǎn)換當(dāng)需要在交互圖上表示對象狀態(tài)的轉(zhuǎn)換時可以用轉(zhuǎn)換依賴。主要強調(diào)由于消息而導(dǎo)致時可以用轉(zhuǎn)換依賴。主要強調(diào)由于消息而導(dǎo)致對象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標(biāo)對象和對象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標(biāo)對象和源對象是同一個對象。源對象是同一個對象。v 調(diào)用依賴調(diào)用依賴 v當(dāng)需要在交互圖或?qū)ο髨D上顯式強調(diào)對當(dāng)需要在交互圖或?qū)ο髨D上顯式強調(diào)對象之間或操作之間的調(diào)用關(guān)系時要用調(diào)用依

57、賴。象之間或操作之間的調(diào)用關(guān)系時要用調(diào)用依賴。它表明源對象引用了目標(biāo)對象的操作,或源操它表明源對象引用了目標(biāo)對象的操作,或源操作引用了目標(biāo)操作。作引用了目標(biāo)操作。a.復(fù)制依賴復(fù)制依賴 軟件工程軟件工程6565為了在交互圖或活動圖上描述對象復(fù)制的動作為了在交互圖或活動圖上描述對象復(fù)制的動作可以采用復(fù)制依賴。它連接兩個對象,目標(biāo)對可以采用復(fù)制依賴。它連接兩個對象,目標(biāo)對象是源對象的完全相同而又獨立的副本。象是源對象的完全相同而又獨立的副本。v 發(fā)送依賴發(fā)送依賴 它連接一個對象(在源端)和一個消息(在目它連接一個對象(在源端)和一個消息(在目標(biāo)端),表明源對象在交互過程中發(fā)送了一個標(biāo)端),表明源對象

58、在交互過程中發(fā)送了一個消息,可以用在狀態(tài)機的描述中。消息,可以用在狀態(tài)機的描述中。它針對內(nèi)嵌有狀態(tài)機的對象,可用來描述如何它針對內(nèi)嵌有狀態(tài)機的對象,可用來描述如何通過發(fā)送信號以產(chǎn)生某種事件的動作。通過發(fā)送信號以產(chǎn)生某種事件的動作。n建模元素與模型之間的依賴關(guān)系建模元素與模型之間的依賴關(guān)系是:是:v 回溯依賴回溯依賴 d.它連接兩個模型元素,表明目標(biāo)是源的歷它連接兩個模型元素,表明目標(biāo)是源的歷史上的前驅(qū)。如交互和協(xié)作就是從用例導(dǎo)出的。史上的前驅(qū)。如交互和協(xié)作就是從用例導(dǎo)出的。軟件工程軟件工程6666關(guān)聯(lián)(關(guān)聯(lián)(Association) 關(guān)聯(lián)關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述一組鏈,這是一種結(jié)構(gòu)關(guān)系,它描

59、述一組鏈,這些鏈是類之間或類與接口之間的連接。通些鏈是類之間或類與接口之間的連接。通過這種連接,一個對象可以訪問另一個對過這種連接,一個對象可以訪問另一個對象的屬性或調(diào)用另一個對象的操作。象的屬性或調(diào)用另一個對象的操作。 關(guān)聯(lián)是雙向的,其中的角色代表一個類的關(guān)聯(lián)是雙向的,其中的角色代表一個類的對象在另一個類中的存在。對象在另一個類中的存在。 聚合(聚合(aggregation)是一種特殊類型的關(guān)是一種特殊類型的關(guān)聯(lián),它描述了整體和部分間的結(jié)構(gòu)關(guān)系。聯(lián),它描述了整體和部分間的結(jié)構(gòu)關(guān)系。employeremployee0.1*軟件工程軟件工程6767 聚合關(guān)系在整體端有一個菱形作為標(biāo)記。聚合關(guān)系在

60、整體端有一個菱形作為標(biāo)記。 復(fù)合聚合(復(fù)合聚合(composite aggregate) 是一種特是一種特殊的聚合關(guān)系,它表明整體對象與部分對象殊的聚合關(guān)系,它表明整體對象與部分對象具有相同的生存周期。具有相同的生存周期。3)角色的重復(fù)度(角色的重復(fù)度(Multiplicity)復(fù)合聚合復(fù)合聚合, ,雙向?qū)Ш诫p向?qū)Ш?.*0.10.*整體整體 類名類名部分部分 類名類名2部分部分 類名類名1聚合聚合, ,單向?qū)Ш絾蜗驅(qū)Ш?.1軟件工程軟件工程6868表明角色在關(guān)聯(lián)關(guān)系中出現(xiàn)的次數(shù)。如表明角色在關(guān)聯(lián)關(guān)系中出現(xiàn)的次數(shù)。如1,0.1,1.*,*等。等。 導(dǎo)航(導(dǎo)航(navigation)一般默認關(guān)聯(liá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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論