版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rè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)用問題面對(duì)的主體都是物理的或客觀世界中的應(yīng)用問題面對(duì)的主體都是物理的或概念的概念的實(shí)體實(shí)體。n從這些實(shí)體出發(fā),分析實(shí)體的從這些實(shí)體出發(fā),分析實(shí)體的作用作用、責(zé)任責(zé)任以及它以及它們之間們之間協(xié)作協(xié)作,從而找出問題的解,是很自然的。,從而找出問題的解,是很自然的。n面向?qū)ο蠹夹g(shù)就是適合用這種方式分析和解決問面向?qū)ο蠹夹g(shù)就
2、是適合用這種方式分析和解決問題的方法。它的基石就是題的方法。它的基石就是問題領(lǐng)域中識(shí)別出來的問題領(lǐng)域中識(shí)別出來的各種對(duì)象各種對(duì)象。依賴這些對(duì)象提供的服務(wù)和對(duì)象之間。依賴這些對(duì)象提供的服務(wù)和對(duì)象之間相互的協(xié)同(關(guān)系),實(shí)現(xiàn)期望的功能。相互的協(xié)同(關(guān)系),實(shí)現(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ū)ο?= 對(duì)象對(duì)象 + 分類分類 + 繼承繼承 + 消息通信消息通信n采用這四個(gè)概念開發(fā)的軟件系統(tǒng)就是面向?qū)ο蟮牟捎眠@四個(gè)概念開發(fā)的軟件系統(tǒng)就是面向?qū)ο蟮能浖到y(tǒng)。軟件系統(tǒng)。n一個(gè)面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是一個(gè)面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對(duì)象對(duì)象,計(jì)算,計(jì)算是通過新的是通過新的對(duì)象的建立對(duì)象的建立和和對(duì)象之間的通信對(duì)象之間的通信來執(zhí)行來執(zhí)行的。的。軟件工程軟件工程4 4面向?qū)ο蠓缎偷奶攸c(diǎn)面向?qū)ο蠓缎偷奶攸c(diǎn)n面向?qū)ο笙到y(tǒng)中的對(duì)象是面向?qū)ο笙到y(tǒng)中的對(duì)象是數(shù)據(jù)抽象數(shù)據(jù)抽象與與過程抽象過程抽象的綜合體。的綜合體。n所謂所謂過程抽象過程抽象是指是指當(dāng)使用某個(gè)過程時(shí),無需關(guān)
4、當(dāng)使用某個(gè)過程時(shí),無需關(guān)心過程內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),只要知道如何調(diào)用該心過程內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),只要知道如何調(diào)用該過程以及該過程完成什么功能即可過程以及該過程完成什么功能即可。n所謂所謂數(shù)據(jù)抽象數(shù)據(jù)抽象是是指使用結(jié)構(gòu)或記錄等方式把某指使用結(jié)構(gòu)或記錄等方式把某個(gè)實(shí)體的數(shù)據(jù)集中起來,使得使用者能夠以個(gè)實(shí)體的數(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)分別保存在各個(gè)對(duì)象的數(shù)分別保存在各個(gè)對(duì)象的數(shù)據(jù)存儲(chǔ)中,而不是保存在一些全局變量中。據(jù)存儲(chǔ)中,而不是保
5、存在一些全局變量中。n系統(tǒng)解決問題的系統(tǒng)解決問題的控制流控制流包含在各個(gè)對(duì)象中的操包含在各個(gè)對(duì)象中的操作內(nèi)。并通過作內(nèi)。并通過消息傳遞消息傳遞,控制流從一個(gè)對(duì)象轉(zhuǎn),控制流從一個(gè)對(duì)象轉(zhuǎn)移到另一個(gè)對(duì)象。移到另一個(gè)對(duì)象。n算法被分布到各種實(shí)體中。通過執(zhí)行消息傳遞算法被分布到各種實(shí)體中。通過執(zhí)行消息傳遞和對(duì)象中的操作實(shí)現(xiàn)算法的功能。和對(duì)象中的操作實(shí)現(xiàn)算法的功能。軟件工程軟件工程6 6面向?qū)ο蟮奶攸c(diǎn)面向?qū)ο蟮奶攸c(diǎn)n抽象性:對(duì)象包含數(shù)據(jù)抽象和行為抽象;抽象性:對(duì)象包含數(shù)據(jù)抽象和行為抽象;n封裝性:信息隱蔽(使用與實(shí)現(xiàn)分開);封裝性:信息隱蔽(使用與實(shí)現(xiàn)分開);n共享性:共享性:同一個(gè)類中所有對(duì)象共享相同的
6、數(shù)據(jù)結(jié)構(gòu)同一個(gè)類中所有對(duì)象共享相同的數(shù)據(jù)結(jié)構(gòu)和行為;和行為;同一應(yīng)用中的對(duì)象通過繼承關(guān)系,共享共同一應(yīng)用中的對(duì)象通過繼承關(guān)系,共享共同的數(shù)據(jù)結(jié)構(gòu)和行為;同的數(shù)據(jù)結(jié)構(gòu)和行為;不同應(yīng)用中的對(duì)象通過復(fù)用,共享數(shù)據(jù)結(jié)不同應(yīng)用中的對(duì)象通過復(fù)用,共享數(shù)據(jù)結(jié)構(gòu)和行為。構(gòu)和行為。軟件工程軟件工程7 7對(duì)象(對(duì)象(object) 對(duì)象是系統(tǒng)中描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)對(duì)象是系統(tǒng)中描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)的一個(gè)基本單元,由一組屬性值和一組對(duì)屬性進(jìn)的一個(gè)基本單元,由一組屬性值和一組對(duì)屬性進(jìn)行操作的服務(wù)組成。行操作的服務(wù)組成。 對(duì)象對(duì)象 = = 對(duì)象名對(duì)象名+ +數(shù)據(jù)數(shù)據(jù)( (屬性屬性)+)+操作操作( (
7、行為行為) ) 屬性值一般只能通過執(zhí)行對(duì)象的操作來改變。屬性值一般只能通過執(zhí)行對(duì)象的操作來改變。 操作(方法或服務(wù))描述了對(duì)象執(zhí)行的功能,若操作(方法或服務(wù))描述了對(duì)象執(zhí)行的功能,若通過消息傳遞,還可以為其他對(duì)象使用。通過消息傳遞,還可以為其他對(duì)象使用。 對(duì)象可以是對(duì)象可以是外部實(shí)體外部實(shí)體、信息結(jié)構(gòu)信息結(jié)構(gòu)、事件事件、角色角色、組織結(jié)構(gòu)組織結(jié)構(gòu)、地點(diǎn)或位置地點(diǎn)或位置、操作規(guī)程操作規(guī)程等。等。軟件工程軟件工程8 8計(jì)算機(jī)窗口中的三個(gè)多邊形對(duì)象計(jì)算機(jī)窗口中的三個(gè)多邊形對(duì)象(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表示多邊形的三個(gè)對(duì)象表示多邊形的三個(gè)對(duì)象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ù)(操作)的對(duì)象歸在一起就形成了的對(duì)象歸在一起就形成了類類。 類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。合法操作。 屬于某一個(gè)類的各個(gè)對(duì)象都是該類的實(shí)例屬于某一個(gè)類的各個(gè)對(duì)象都是該類的實(shí)例(instance),它們都可使用類中的操作。,它們都可使用類中的操作。 類定義了各個(gè)實(shí)例所共有的數(shù)據(jù)結(jié)構(gòu),使用類類定義了各個(gè)實(shí)例所共有的數(shù)據(jù)結(jié)構(gòu),使用類的構(gòu)造函數(shù),可以在創(chuàng)建該類的實(shí)例時(shí)初始化的構(gòu)造函數(shù),可以在創(chuàng)建該類的實(shí)例時(shí)初始化這個(gè)實(shí)例的狀態(tài)。這個(gè)實(shí)例的狀態(tài)。軟件工程軟件工程11
10、 11由兩個(gè)四邊形對(duì)象導(dǎo)出一個(gè)類由兩個(gè)四邊形對(duì)象導(dǎo)出一個(gè)類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)消息是一個(gè)對(duì)象向另一個(gè)對(duì)象傳
11、遞的信息。有消息是一個(gè)對(duì)象向另一個(gè)對(duì)象傳遞的信息。有四類消息:發(fā)送對(duì)象四類消息:發(fā)送對(duì)象請(qǐng)求接收對(duì)象提供服務(wù)請(qǐng)求接收對(duì)象提供服務(wù)、發(fā)送對(duì)象發(fā)送對(duì)象激活接收對(duì)象激活接收對(duì)象、發(fā)送對(duì)象、發(fā)送對(duì)象詢問接收對(duì)詢問接收對(duì)象象、發(fā)送對(duì)象、發(fā)送對(duì)象僅傳送信息給接收對(duì)象僅傳送信息給接收對(duì)象。消息的使用類似于函數(shù)調(diào)用,消息中指定了某消息的使用類似于函數(shù)調(diào)用,消息中指定了某一個(gè)實(shí)例,一個(gè)操作名和一個(gè)參數(shù)表(可能是一個(gè)實(shí)例,一個(gè)操作名和一個(gè)參數(shù)表(可能是空的),如空的),如quadrilateral1. move(15, 20) 。接收消息的實(shí)例執(zhí)行消息中指定的操作,并將接收消息的實(shí)例執(zhí)行消息中指定的操作,并將形式
12、參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。軟件工程軟件工程1313繼承(繼承(inheritanceinheritance) 如果某幾個(gè)類之間具有共性的東西如果某幾個(gè)類之間具有共性的東西 ( (屬性和行屬性和行為為) ),抽取出來放在一個(gè)泛化類中,將各個(gè)類的,抽取出來放在一個(gè)泛化類中,將各個(gè)類的特有的東西放在特化類中分別描述,則可建立特有的東西放在特化類中分別描述,則可建立起特化類對(duì)泛化類的繼承。起特化類對(duì)泛化類的繼承。 繼承是使用已有的類定義做為基礎(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怎樣建立一個(gè)好的繼承層次怎樣建立一個(gè)好的繼承層次 類可以從父類繼承,父類又可以從它的父類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結(jié)構(gòu)。類繼承,形成多層次的繼承結(jié)構(gòu)。 當(dāng)增加一個(gè)新類時(shí),不一定在最低層,可當(dāng)增加一個(gè)新類
14、時(shí),不一定在最低層,可能需要插在中間層,這樣可能需要調(diào)整原能需要插在中間層,這樣可能需要調(diào)整原來的層次結(jié)構(gòu)。來的層次結(jié)構(gòu)。軟件工程軟件工程1515建立一個(gè)新類建立一個(gè)新類起重車起重車。它的。它的底底盤盤、發(fā)動(dòng)機(jī)發(fā)動(dòng)機(jī)、輪胎輪胎、驅(qū)動(dòng)裝置驅(qū)動(dòng)裝置等都在已有類等都在已有類汽車汽車中。關(guān)系如中。關(guān)系如右圖所示。新類是已有類的特右圖所示。新類是已有類的特殊情形。這時(shí)直接讓殊情形。這時(shí)直接讓起重車起重車類類作為作為汽車汽車類的子類即可。類的子類即可。起重車起重車類類汽車類汽車類汽車汽車載重車載重車大轎車大轎車救火車救火車起重車起重車軟件工程軟件工程1616增加一個(gè)新類增加一個(gè)新類拖拉機(jī)拖拉機(jī)。它的。它的
15、底盤底盤、發(fā)動(dòng)機(jī)發(fā)動(dòng)機(jī)等與等與汽車汽車不同,但不同,但驅(qū)動(dòng)裝置驅(qū)動(dòng)裝置、輪胎輪胎等與等與汽車汽車相同。相同。調(diào)整繼承結(jié)構(gòu)。建立一個(gè)新的一般的調(diào)整繼承結(jié)構(gòu)。建立一個(gè)新的一般的車輛類車輛類,把把拖拉機(jī)拖拉機(jī)與與汽車類汽車類的共性放到的共性放到車輛類車輛類中,中,拖拉拖拉機(jī)機(jī)與與汽車類汽車類都成為都成為車輛類車輛類的子類。的子類。車輛車輛是抽象類,相關(guān)操作到子類是抽象類,相關(guān)操作到子類汽車汽車找找汽車汽車拖拉機(jī)拖拉機(jī)車輛車輛汽車汽車拖拉機(jī)拖拉機(jī)軟件工程軟件工程1717另一種情形是在已有類的基礎(chǔ)上加入新類,另一種情形是在已有類的基礎(chǔ)上加入新類,使得新類成為已有類的泛化類。使得新類成為已有類的泛化類。例
16、如,已經(jīng)存在例如,已經(jīng)存在三角形類三角形類,四邊形類四邊形類,想加,想加入一個(gè)入一個(gè)多邊形類多邊形類,并使之成為,并使之成為三角形三角形和和四邊四邊形類形類的泛化類。的泛化類。三角形類三角形類四邊形類四邊形類多多邊邊形形類類六邊形六邊形多邊形多邊形四邊形四邊形三角形三角形軟件工程軟件工程1818前三個(gè)情況主要是通過查找(應(yīng)用領(lǐng)域)類庫,前三個(gè)情況主要是通過查找(應(yīng)用領(lǐng)域)類庫,找到可以找到可以原封不動(dòng)地繼承的類原封不動(dòng)地繼承的類或可以或可以通過調(diào)整通過調(diào)整繼承層次結(jié)構(gòu)繼承的類繼承層次結(jié)構(gòu)繼承的類。但如果在已有的繼承。但如果在已有的繼承層次中找不到可以繼承的已有類,就從新開始層次中找不到可以繼承
17、的已有類,就從新開始完全獨(dú)立地建立一個(gè)類。完全獨(dú)立地建立一個(gè)類。n如果一個(gè)類需要用到多個(gè)現(xiàn)有類的特征,可以如果一個(gè)類需要用到多個(gè)現(xiàn)有類的特征,可以從多個(gè)類中繼承,稱為從多個(gè)類中繼承,稱為多繼承多繼承。n例如例如退休教師退休教師是繼承是繼承退休者退休者和和教師教師這兩個(gè)類的這兩個(gè)類的某些特征或行為而得到的一個(gè)新類。某些特征或行為而得到的一個(gè)新類。多繼承多繼承軟件工程軟件工程1919多態(tài)性和動(dòng)態(tài)綁定多態(tài)性和動(dòng)態(tài)綁定n對(duì)象互相通信,即一個(gè)對(duì)象發(fā)消息給另一個(gè)對(duì)對(duì)象互相通信,即一個(gè)對(duì)象發(fā)消息給另一個(gè)對(duì)象,執(zhí)行某些行為或又發(fā)消息給另外的對(duì)象,象,執(zhí)行某些行為或又發(fā)消息給另外的對(duì)象,從而執(zhí)行系統(tǒng)的功能。從而
18、執(zhí)行系統(tǒng)的功能。退休者退休者教師教師退休教師退休教師軟件工程軟件工程2020多態(tài)性多態(tài)性指同名的函數(shù)或操作可在不同類型的指同名的函數(shù)或操作可在不同類型的對(duì)象中有各自相應(yīng)的實(shí)現(xiàn)。例如對(duì)象中有各自相應(yīng)的實(shí)現(xiàn)。例如v 整數(shù)整數(shù)“+”:整數(shù)加法:整數(shù)加法v 浮點(diǎn)數(shù)浮點(diǎn)數(shù)“+”:浮點(diǎn)數(shù)加法:浮點(diǎn)數(shù)加法v 字符串字符串“+”:字符串連接:字符串連接v 點(diǎn)點(diǎn)“+”:兩個(gè)點(diǎn)的坐標(biāo)位置分別疊加:兩個(gè)點(diǎn)的坐標(biāo)位置分別疊加具有多態(tài)的函數(shù)或操作在運(yùn)行時(shí)才根據(jù)實(shí)際具有多態(tài)的函數(shù)或操作在運(yùn)行時(shí)才根據(jù)實(shí)際的對(duì)象類型,執(zhí)行相應(yīng)實(shí)現(xiàn)程序的連接,此的對(duì)象類型,執(zhí)行相應(yīng)實(shí)現(xiàn)程序的連接,此即動(dòng)態(tài)綁定。即動(dòng)態(tài)綁定。軟件工程軟件工程21
19、21n例如,想要在屏幕上畫一系列多邊形,例如,想要在屏幕上畫一系列多邊形,多態(tài)多態(tài)性性允許發(fā)送消息允許發(fā)送消息draw,根據(jù)消息接收對(duì)象的,根據(jù)消息接收對(duì)象的類型不同,畫出不同的多邊形。類型不同,畫出不同的多邊形。ndraw針對(duì)的是一系列的類型(類族)而不僅針對(duì)的是一系列的類型(類族)而不僅僅是一個(gè)類型。僅是一個(gè)類型。n多態(tài)性的實(shí)現(xiàn)有多態(tài)性的實(shí)現(xiàn)有 2 種:種: 利用利用繼承繼承關(guān)系,把所有數(shù)據(jù)類型當(dāng)作一個(gè)關(guān)系,把所有數(shù)據(jù)類型當(dāng)作一個(gè)抽象數(shù)據(jù)類型的子類型。抽象數(shù)據(jù)類型的子類型。軟件工程軟件工程2222 利用利用模板模板機(jī)制,把所有可能的數(shù)據(jù)類型用機(jī)制,把所有可能的數(shù)據(jù)類型用一個(gè)參數(shù)化的數(shù)據(jù)類型
20、來代替。一個(gè)參數(shù)化的數(shù)據(jù)類型來代替。n動(dòng)態(tài)綁定保證在程序執(zhí)行時(shí)實(shí)施與對(duì)象動(dòng)態(tài)綁定保證在程序執(zhí)行時(shí)實(shí)施與對(duì)象 P 連連接的操作。如果接的操作。如果 P 是是矩形類矩形類的實(shí)例,則執(zhí)行的實(shí)例,則執(zhí)行與與矩形矩形連接的操作,如果連接的操作,如果 P 是是三角形類三角形類的實(shí)的實(shí)例,則執(zhí)行與例,則執(zhí)行與三角形三角形連接的操作。連接的操作。n動(dòng)態(tài)綁定把函數(shù)調(diào)用與目標(biāo)代碼塊的連接延動(dòng)態(tài)綁定把函數(shù)調(diào)用與目標(biāo)代碼塊的連接延遲到運(yùn)行時(shí)進(jìn)行。這樣,只有發(fā)送消息時(shí)才遲到運(yùn)行時(shí)進(jìn)行。這樣,只有發(fā)送消息時(shí)才與接收消息實(shí)例的一個(gè)操作綁定。與接收消息實(shí)例的一個(gè)操作綁定。軟件工程軟件工程23234.2 Rational4.2
21、 Rational統(tǒng)一開發(fā)過程統(tǒng)一開發(fā)過程最佳軟件開發(fā)實(shí)踐最佳軟件開發(fā)實(shí)踐 為了以一種更好的、迭代的、可預(yù)測的方式開為了以一種更好的、迭代的、可預(yù)測的方式開發(fā)軟件產(chǎn)品,總結(jié)了軟件開發(fā)的最佳實(shí)踐:發(fā)軟件產(chǎn)品,總結(jié)了軟件開發(fā)的最佳實(shí)踐:迭代式軟件開發(fā);迭代式軟件開發(fā);需求管理;需求管理;基于構(gòu)件的軟件體系結(jié)構(gòu);基于構(gòu)件的軟件體系結(jié)構(gòu);建立軟件可視化模型;建立軟件可視化模型;不斷驗(yàn)證軟件質(zhì)量;不斷驗(yàn)證軟件質(zhì)量;控制變更。控制變更。軟件工程軟件工程2424Rational統(tǒng)一開發(fā)過程統(tǒng)一開發(fā)過程 軟件開發(fā)過程的作用是:軟件開發(fā)過程的作用是:成為開發(fā)組活動(dòng)順序的向?qū)?。成為開發(fā)組活動(dòng)順序的向?qū)АT敿?xì)說明需
22、要開發(fā)哪些制品,何時(shí)開發(fā)。詳細(xì)說明需要開發(fā)哪些制品,何時(shí)開發(fā)。指導(dǎo)每一個(gè)成員及整個(gè)開發(fā)組的工作。指導(dǎo)每一個(gè)成員及整個(gè)開發(fā)組的工作。提供監(jiān)控和度量項(xiàng)目產(chǎn)品和活動(dòng)所依據(jù)的提供監(jiān)控和度量項(xiàng)目產(chǎn)品和活動(dòng)所依據(jù)的準(zhǔn)則。準(zhǔn)則。如果沒有一個(gè)良好定義的過程,開發(fā)組將各行如果沒有一個(gè)良好定義的過程,開發(fā)組將各行其是,開發(fā)成功與否完全依賴個(gè)別優(yōu)秀的人才,其是,開發(fā)成功與否完全依賴個(gè)別優(yōu)秀的人才,這不是能夠長久的。這不是能夠長久的。軟件工程軟件工程2525nRational統(tǒng)一開發(fā)過程(統(tǒng)一開發(fā)過程(RUP, Rational Unify Process)描述了如何在軟件開發(fā)組織中嚴(yán)格分)描述了如何在軟件開發(fā)組織中
23、嚴(yán)格分配任務(wù)和職責(zé)的方法。配任務(wù)和職責(zé)的方法。nRUP 是一個(gè)過程產(chǎn)品,是一個(gè)過程產(chǎn)品,軟件過程也是軟件。軟件過程也是軟件。nRUP 采用二維的過程結(jié)構(gòu):采用二維的過程結(jié)構(gòu):橫軸表明過程的生存周期,它反映了過程被橫軸表明過程的生存周期,它反映了過程被激活時(shí)的動(dòng)態(tài)情況,用周期、階段、迭代和激活時(shí)的動(dòng)態(tài)情況,用周期、階段、迭代和里程碑表示。里程碑表示。縱軸表明過程的靜態(tài)狀況,通過過程構(gòu)件、縱軸表明過程的靜態(tài)狀況,通過過程構(gòu)件、活動(dòng)、工作流、制品和工作人員描述過程?;顒?dòng)、工作流、制品和工作人員描述過程。軟件工程軟件工程2626初始初始細(xì)化細(xì)化構(gòu)造構(gòu)造移交移交階階 段段初始化初始化細(xì)化細(xì)化#1細(xì)化細(xì)化
24、#2構(gòu)造構(gòu)造#1 構(gòu)造構(gòu)造#2 構(gòu)造構(gòu)造#3 移交移交#1移交移交#2迭代迭代 工作流工作流業(yè)務(wù)建模業(yè)務(wù)建模需求需求 分析與設(shè)計(jì)分析與設(shè)計(jì)實(shí)現(xiàn)實(shí)現(xiàn)測試測試實(shí)施實(shí)施配置和變更管理配置和變更管理項(xiàng)目管理項(xiàng)目管理環(huán)境環(huán)境沿時(shí)間軸的組織結(jié)構(gòu)沿時(shí)間軸的組織結(jié)構(gòu)沿內(nèi)容軸的組織沿內(nèi)容軸的組織軟件工程軟件工程2727過程的靜態(tài)描述:過程模型過程的靜態(tài)描述:過程模型 過程模型中的主要模型元素有過程模型中的主要模型元素有 4 種:種:v工作人員:誰做(工作人員:誰做(Who)v活動(dòng):怎么做(活動(dòng):怎么做(How)v制品:做什么(制品:做什么(what)v工作流:何時(shí)做(工作流:何時(shí)做(when) 過程的中心概念是
25、工作人員,工作人員不是過程的中心概念是工作人員,工作人員不是指某一個(gè)人,而是指完成工作的角色。工作指某一個(gè)人,而是指完成工作的角色。工作人員定義人們應(yīng)履行的行為和職責(zé)。人員定義人們應(yīng)履行的行為和職責(zé)。軟件工程軟件工程2828 活動(dòng)定義了工作人員所執(zhí)行的工作。有活動(dòng)定義了工作人員所執(zhí)行的工作。有 3 類類步驟:步驟:v 思考步驟思考步驟v 執(zhí)行步驟執(zhí)行步驟v 評(píng)審步驟評(píng)審步驟 制品是過程生產(chǎn)、修改或使用的一些信息。制品是過程生產(chǎn)、修改或使用的一些信息。RUP 的制品分為的制品分為 5 個(gè)信息集。個(gè)信息集。 管理集管理集:計(jì)劃制品、操作制品:計(jì)劃制品、操作制品 需求集需求集:構(gòu)想文檔、項(xiàng)目相關(guān)人員
26、需求、:構(gòu)想文檔、項(xiàng)目相關(guān)人員需求、用例模型和業(yè)務(wù)模型用例模型和業(yè)務(wù)模型軟件工程軟件工程2929v 設(shè)計(jì)集設(shè)計(jì)集:設(shè)計(jì)模型、軟件體系結(jié)構(gòu)描述、:設(shè)計(jì)模型、軟件體系結(jié)構(gòu)描述、測試模型測試模型v 實(shí)現(xiàn)集實(shí)現(xiàn)集:源代碼和可執(zhí)行程序、相關(guān)數(shù):源代碼和可執(zhí)行程序、相關(guān)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)文檔據(jù)結(jié)構(gòu)和數(shù)據(jù)文檔v 實(shí)施集實(shí)施集:安裝資料、用戶文檔、培訓(xùn)材:安裝資料、用戶文檔、培訓(xùn)材料料v 工作流用來描述生成結(jié)果的活動(dòng)序列,用工作流用來描述生成結(jié)果的活動(dòng)序列,用以描述工作人員之間的交互。在以描述工作人員之間的交互。在 RUP 中中共有共有 9 個(gè)核心過程工作流,包括個(gè)核心過程工作流,包括 6 個(gè)核心個(gè)核心工程工作流
27、和工程工作流和 3 個(gè)核心支持工作流。個(gè)核心支持工作流。軟件工程軟件工程3030v 業(yè)務(wù)建模工作流業(yè)務(wù)建模工作流:描述業(yè)務(wù)過程的本質(zhì)和:描述業(yè)務(wù)過程的本質(zhì)和執(zhí)行情形。執(zhí)行情形。v 需求工作流需求工作流:定義系統(tǒng)構(gòu)想,使用用例模:定義系統(tǒng)構(gòu)想,使用用例模型和補(bǔ)充規(guī)格說明定義系統(tǒng)軟件需求,管型和補(bǔ)充規(guī)格說明定義系統(tǒng)軟件需求,管理系統(tǒng)范圍和需求變更。理系統(tǒng)范圍和需求變更。v 分析和設(shè)計(jì)工作流分析和設(shè)計(jì)工作流:研究實(shí)現(xiàn)環(huán)境和系統(tǒng):研究實(shí)現(xiàn)環(huán)境和系統(tǒng)構(gòu)件的效用,定義軟件的組織結(jié)構(gòu),把需構(gòu)件的效用,定義軟件的組織結(jié)構(gòu),把需求獲取結(jié)果轉(zhuǎn)化為實(shí)現(xiàn)規(guī)格。求獲取結(jié)果轉(zhuǎn)化為實(shí)現(xiàn)規(guī)格。v 實(shí)現(xiàn)工作流實(shí)現(xiàn)工作流: 建立
28、代碼的分層結(jié)構(gòu),實(shí)現(xiàn)建立代碼的分層結(jié)構(gòu),實(shí)現(xiàn)類和對(duì)象,進(jìn)行單元測試和系統(tǒng)集成。類和對(duì)象,進(jìn)行單元測試和系統(tǒng)集成。軟件工程軟件工程3131v 測試工作流測試工作流:根據(jù)事先定義的度量和準(zhǔn)根據(jù)事先定義的度量和準(zhǔn)則檢查產(chǎn)品,確認(rèn)產(chǎn)品是否滿足或者超則檢查產(chǎn)品,確認(rèn)產(chǎn)品是否滿足或者超出事先定義并被一致接受的需求。出事先定義并被一致接受的需求。v 實(shí)施工作流實(shí)施工作流:在實(shí)際使用環(huán)境中測試軟在實(shí)際使用環(huán)境中測試軟件、包裝要交付的軟件、發(fā)布軟件產(chǎn)品、件、包裝要交付的軟件、發(fā)布軟件產(chǎn)品、培訓(xùn)最終用戶及銷售人員。培訓(xùn)最終用戶及銷售人員。n核心支持工作流有核心支持工作流有 項(xiàng)目管理工作流項(xiàng)目管理工作流 配置和變更
29、管理工作流配置和變更管理工作流 環(huán)境環(huán)境工作流工作流軟件工程軟件工程3232過程的動(dòng)態(tài)描述:迭代開發(fā)過程的動(dòng)態(tài)描述:迭代開發(fā) 將一個(gè)大項(xiàng)目分解為可連續(xù)應(yīng)用瀑布模型將一個(gè)大項(xiàng)目分解為可連續(xù)應(yīng)用瀑布模型的幾個(gè)小部分。在對(duì)一部分進(jìn)行分析、設(shè)的幾個(gè)小部分。在對(duì)一部分進(jìn)行分析、設(shè)計(jì)、實(shí)現(xiàn)并確認(rèn)后,再對(duì)下一部分進(jìn)行分計(jì)、實(shí)現(xiàn)并確認(rèn)后,再對(duì)下一部分進(jìn)行分析、設(shè)計(jì)、實(shí)現(xiàn)和確認(rèn)。以此進(jìn)行下去,析、設(shè)計(jì)、實(shí)現(xiàn)和確認(rèn)。以此進(jìn)行下去,直到整個(gè)項(xiàng)目完成。在直到整個(gè)項(xiàng)目完成。在 RUP 中,迭代過程中,迭代過程分為幾個(gè)階段。分為幾個(gè)階段。初始初始細(xì)化細(xì)化構(gòu)造構(gòu)造移交移交生存周期生存周期構(gòu)架里程碑構(gòu)架里程碑生存周期生存周期
30、目標(biāo)里程碑目標(biāo)里程碑最初運(yùn)行最初運(yùn)行能力里程碑能力里程碑產(chǎn)品發(fā)布產(chǎn)品發(fā)布里程碑里程碑時(shí)間時(shí)間軟件工程軟件工程3333初始階段初始階段:確定最終產(chǎn)品的構(gòu)想及其用例,:確定最終產(chǎn)品的構(gòu)想及其用例,定義項(xiàng)目范圍。定義項(xiàng)目范圍。細(xì)化階段細(xì)化階段:計(jì)劃需完成活動(dòng)和資源,詳細(xì)說:計(jì)劃需完成活動(dòng)和資源,詳細(xì)說明產(chǎn)品特性并設(shè)計(jì)軟件體系結(jié)構(gòu)。明產(chǎn)品特性并設(shè)計(jì)軟件體系結(jié)構(gòu)。構(gòu)造階段構(gòu)造階段:構(gòu)造整個(gè)產(chǎn)品,逐步完善軟件體:構(gòu)造整個(gè)產(chǎn)品,逐步完善軟件體系結(jié)構(gòu)和計(jì)劃,直到產(chǎn)品(完整的構(gòu)想)已系結(jié)構(gòu)和計(jì)劃,直到產(chǎn)品(完整的構(gòu)想)已完全準(zhǔn)備好交付給用戶。完全準(zhǔn)備好交付給用戶。移交階段移交階段:移交產(chǎn)品給用戶,包括制造,交:
31、移交產(chǎn)品給用戶,包括制造,交付,培訓(xùn),支持及維護(hù)產(chǎn)品。付,培訓(xùn),支持及維護(hù)產(chǎn)品。軟件工程軟件工程3434n這這 4 個(gè)階段構(gòu)成開發(fā)周期,周期結(jié)束時(shí)產(chǎn)生個(gè)階段構(gòu)成開發(fā)周期,周期結(jié)束時(shí)產(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)品,這一時(shí)期即為軟件的進(jìn)化周期。一時(shí)期即為軟件的進(jìn)化周期。 I E C T I E C T I E C T V1V2V3初始開發(fā)周期初始開發(fā)周期進(jìn)化周期進(jìn)化周期軟件工程軟件工程3535Rational統(tǒng)一過程的特點(diǎn):統(tǒng)一過程的特點(diǎn):
32、v用例驅(qū)動(dòng)的、以體系結(jié)構(gòu)(架構(gòu))為中心用例驅(qū)動(dòng)的、以體系結(jié)構(gòu)(架構(gòu))為中心的、迭代和增量的過程。的、迭代和增量的過程。v用例建模技術(shù)可以用為大多數(shù)項(xiàng)目相關(guān)人用例建模技術(shù)可以用為大多數(shù)項(xiàng)目相關(guān)人員理解的形式來表述問題。員理解的形式來表述問題。 參與者(參與者(Actor) 用例(用例(Use Case) 場景場景(scenario) 事件流(事件流(event flow)Actoruse case軟件工程軟件工程3636n用例和參與者的事例用例和參與者的事例 銀行儲(chǔ)戶通過自動(dòng)取款機(jī)(自動(dòng)柜員機(jī))提款,銀行儲(chǔ)戶通過自動(dòng)取款機(jī)(自動(dòng)柜員機(jī))提款,轉(zhuǎn)賬或檢查賬戶余額。用一組用例表達(dá)如下:轉(zhuǎn)賬或檢查賬戶
33、余額。用一組用例表達(dá)如下:轉(zhuǎn)賬轉(zhuǎn)賬提款提款檢察賬戶余額檢察賬戶余額儲(chǔ)戶儲(chǔ)戶軟件工程軟件工程3737n用例模型用例模型 將整個(gè)系統(tǒng)或子系統(tǒng)的所有用例,以及將整個(gè)系統(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ū)動(dòng)的過程用例驅(qū)動(dòng)的過程 “用例
34、驅(qū)動(dòng)用例驅(qū)動(dòng)” 指開發(fā)過程是基于用例,從指開發(fā)過程是基于用例,從一個(gè)工作流向下一個(gè)工作流,逐步前進(jìn)的。一個(gè)工作流向下一個(gè)工作流,逐步前進(jìn)的。 開發(fā)初期,人們使用用例獲取用戶需求,開發(fā)初期,人們使用用例獲取用戶需求,建立用例模型,描述系統(tǒng)的全部功能。建立用例模型,描述系統(tǒng)的全部功能。 基于用例模型,人們創(chuàng)建一系列實(shí)現(xiàn)這些基于用例模型,人們創(chuàng)建一系列實(shí)現(xiàn)這些用例的分析模型、設(shè)計(jì)模型和實(shí)現(xiàn)模型。用例的分析模型、設(shè)計(jì)模型和實(shí)現(xiàn)模型。 測試人員測試實(shí)現(xiàn)確保系統(tǒng)正確實(shí)現(xiàn)了用測試人員測試實(shí)現(xiàn)確保系統(tǒng)正確實(shí)現(xiàn)了用例。例。軟件工程軟件工程3939n以體系結(jié)構(gòu)為中心的過程以體系結(jié)構(gòu)為中心的過程 用例的選擇不是孤立
35、的,它與軟件的體系結(jié)用例的選擇不是孤立的,它與軟件的體系結(jié)構(gòu)是密切相關(guān)的。構(gòu)是密切相關(guān)的。 軟件體系結(jié)構(gòu)的作用與一個(gè)建筑的體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的作用與一個(gè)建筑的體系結(jié)構(gòu)類似。對(duì)于一個(gè)建筑,可以從框架結(jié)構(gòu)、供類似。對(duì)于一個(gè)建筑,可以從框架結(jié)構(gòu)、供熱、上下水、供電、天然氣、其他服務(wù)管線熱、上下水、供電、天然氣、其他服務(wù)管線等不同角度來考察它。使得施工人員在施工等不同角度來考察它。使得施工人員在施工前就能全面了解這個(gè)建筑。前就能全面了解這個(gè)建筑。 軟件的體系結(jié)構(gòu)也從不同角度描述了即將構(gòu)軟件的體系結(jié)構(gòu)也從不同角度描述了即將構(gòu)造的系統(tǒng),包括系統(tǒng)的造的系統(tǒng),包括系統(tǒng)的靜態(tài)特征靜態(tài)特征和和動(dòng)態(tài)特征動(dòng)態(tài)特征。
36、軟件工程軟件工程4040 每一種產(chǎn)品都有功能和表現(xiàn)形式兩個(gè)方面。每一種產(chǎn)品都有功能和表現(xiàn)形式兩個(gè)方面。用例就是功能用例就是功能,體系結(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)必須在迭代中并行演進(jìn)用例和體系結(jié)構(gòu)必須在迭代中并行演進(jìn)。 為了找到可以演進(jìn)的體系結(jié)構(gòu),設(shè)計(jì)師必須為了找到可以演進(jìn)的體系結(jié)構(gòu),設(shè)計(jì)師必須從全面了解系統(tǒng)的主要功能(即主要用例)從全面了解系統(tǒng)的主要功能(即主要用例)入手。入手。軟件工程軟件工程41414.3 4.3
37、統(tǒng)一建模語言統(tǒng)一建模語言UMLUMLnUML 是是Unified Modeling Language的縮寫。的縮寫。 它它是一種標(biāo)準(zhǔn)的語言,以直觀的表述、定義、構(gòu)造是一種標(biāo)準(zhǔn)的語言,以直觀的表述、定義、構(gòu)造和文檔化軟件為主的系統(tǒng)的工作制品。和文檔化軟件為主的系統(tǒng)的工作制品。nUML聚集了來自下列建模的精髓:聚集了來自下列建模的精髓: 數(shù)據(jù)建模(實(shí)體關(guān)系圖數(shù)據(jù)建模(實(shí)體關(guān)系圖ERD) 業(yè)務(wù)建模業(yè)務(wù)建模 (工作流)(工作流) 對(duì)象建模對(duì)象建模 構(gòu)件建模構(gòu)件建模n它可用于軟件生命周期各個(gè)過程,并適用于各種它可用于軟件生命周期各個(gè)過程,并適用于各種不同的實(shí)現(xiàn)技術(shù)。不同的實(shí)現(xiàn)技術(shù)。軟件工程軟件工程424
38、2UMLUML的特點(diǎn)的特點(diǎn)n統(tǒng)一標(biāo)準(zhǔn)統(tǒng)一標(biāo)準(zhǔn) 融合了當(dāng)前一些流行的面向?qū)ο箝_發(fā)方法融合了當(dāng)前一些流行的面向?qū)ο箝_發(fā)方法的主要概念和技術(shù),成為一種面向?qū)ο蟮牡闹饕拍詈图夹g(shù),成為一種面向?qū)ο蟮臉?biāo)準(zhǔn)化的統(tǒng)一建模語言。標(biāo)準(zhǔn)化的統(tǒng)一建模語言。 提供了標(biāo)準(zhǔn)的面向?qū)ο蟮哪P驮氐亩x提供了標(biāo)準(zhǔn)的面向?qū)ο蟮哪P驮氐亩x和表示法,有標(biāo)準(zhǔn)的語言工具可用。和表示法,有標(biāo)準(zhǔn)的語言工具可用。 已成為工業(yè)標(biāo)準(zhǔn)化組織已成為工業(yè)標(biāo)準(zhǔn)化組織OMG的正式標(biāo)準(zhǔn)。的正式標(biāo)準(zhǔn)。n面向?qū)ο竺嫦驅(qū)ο?支持面向?qū)ο蟮闹饕拍?,提供了一批基支持面向?qū)ο蟮闹饕拍睿峁┝艘慌镜哪P驮氐谋硎緢D形和方法。本的模型元素的表示圖形和方法。軟件
39、工程軟件工程4343n可視化,表示能力強(qiáng)大可視化,表示能力強(qiáng)大 一種圖形化語言,系統(tǒng)的邏輯模型和實(shí)現(xiàn)一種圖形化語言,系統(tǒng)的邏輯模型和實(shí)現(xiàn)模型都能用模型都能用UML的模型圖形清晰地表示。的模型圖形清晰地表示。 可以處理與軟件的說明和文檔有關(guān)的問題??梢蕴幚砼c軟件的說明和文檔有關(guān)的問題。 提供了語言的擴(kuò)展機(jī)制,用戶可以根據(jù)需提供了語言的擴(kuò)展機(jī)制,用戶可以根據(jù)需要增加定義自己的衍型(要增加定義自己的衍型(StereoType)、標(biāo))、標(biāo)記值和約束等。記值和約束等。 可用于各種復(fù)雜類型的軟件系統(tǒng)的建模??捎糜诟鞣N復(fù)雜類型的軟件系統(tǒng)的建模。n獨(dú)立于過程獨(dú)立于過程 系統(tǒng)建模語言,獨(dú)立于開發(fā)過程。系統(tǒng)建模語
40、言,獨(dú)立于開發(fā)過程。軟件工程軟件工程4444n容易掌握使用容易掌握使用 概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。清晰,容易掌握使用。 著重學(xué)習(xí)三個(gè)方面的主要內(nèi)容:著重學(xué)習(xí)三個(gè)方面的主要內(nèi)容: (1) UML的基本模型元素的基本模型元素 (2) 組織模型元素的規(guī)則組織模型元素的規(guī)則 (3) UML語言的公共機(jī)制語言的公共機(jī)制n與程序設(shè)計(jì)語言的關(guān)系與程序設(shè)計(jì)語言的關(guān)系 用用Java,C+ 等編程語言可實(shí)現(xiàn)一個(gè)系統(tǒng)。等編程語言可實(shí)現(xiàn)一個(gè)系統(tǒng)。 一些一些CASE工具可以根據(jù)工具可以根據(jù) UML所建立的系統(tǒng)所建立的系統(tǒng)模型來產(chǎn)生模型來產(chǎn)生Java、
41、C+ 等代碼框架。等代碼框架。軟件工程軟件工程4545UMLUML的定義的定義nUML定義有兩個(gè)組成部分:語義和表示法。定義有兩個(gè)組成部分:語義和表示法。n語義語義用自然語言描述,用自然語言描述,表示法表示法定義了定義了UML的可的可視化標(biāo)準(zhǔn)表示符號(hào),這決定了視化標(biāo)準(zhǔn)表示符號(hào),這決定了UML是一種可視是一種可視化的建模語言?;慕UZ言。n在語義上,模型是元模型的實(shí)例。在語義上,模型是元模型的實(shí)例。UML定義給定義給出了語法結(jié)構(gòu)的精確定義。出了語法結(jié)構(gòu)的精確定義。n使用使用UML時(shí),要從不同的角度觀察系統(tǒng),為此時(shí),要從不同的角度觀察系統(tǒng),為此定義了概念定義了概念“視圖視圖”。視圖是對(duì)系統(tǒng)的模型
42、在某。視圖是對(duì)系統(tǒng)的模型在某方面的投影,注重于系統(tǒng)的某個(gè)方面。方面的投影,注重于系統(tǒng)的某個(gè)方面。軟件工程軟件工程4646UMLUML的構(gòu)成的構(gòu)成nUML的三個(gè)主要組成元素的三個(gè)主要組成元素基本構(gòu)造塊基本構(gòu)造塊(basic building blocks )組織構(gòu)造塊的組織構(gòu)造塊的規(guī)則規(guī)則(rules)運(yùn)用于整個(gè)運(yùn)用于整個(gè)UML的的公共機(jī)制公共機(jī)制(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è)類或構(gòu)件的描述了一個(gè)類或構(gòu)件的服務(wù)(操作)集。服務(wù)(操作)集。ISpelling 類名類名屬性屬性操作操作open( )close( )move( )display( )originsizeWindow操作操作屬性屬性類名類名軟件工程軟件工程4848Collaboration(協(xié)作)(協(xié)作) 合作完成某個(gè)特定任務(wù)的一組類及其關(guān)聯(lián)的合作完成某個(gè)特定任務(wù)的一組類及其關(guān)聯(lián)的集合,用于對(duì)用例的實(shí)現(xiàn)建模。集合,用于對(duì)用例的實(shí)現(xiàn)建模。Use Case(用例)(用例) 表示系統(tǒng)想要實(shí)現(xiàn)的行為,不關(guān)心這些行為表示系統(tǒng)想要實(shí)現(xiàn)的行為,不關(guān)心這些行為
44、是怎樣實(shí)現(xiàn)的。是怎樣實(shí)現(xiàn)的。Place OrderOrderManagement用例用例協(xié)作協(xié)作實(shí)現(xiàn)實(shí)現(xiàn)實(shí)現(xiàn)實(shí)現(xiàn)協(xié)作協(xié)作用例用例軟件工程軟件工程4949Active Class(主動(dòng)類)(主動(dòng)類) 與一般類相同,但它至少擁有一個(gè)進(jìn)程或與一般類相同,但它至少擁有一個(gè)進(jìn)程或線程,故能夠啟動(dòng)控制活動(dòng)。線程,故能夠啟動(dòng)控制活動(dòng)。Component(構(gòu)件)(構(gòu)件) 系統(tǒng)中物理的、可替系統(tǒng)中物理的、可替代的部件。代的部件。Orderform.java suspend()flush()EventManager軟件工程軟件工程5050Node(節(jié)點(diǎn))(節(jié)點(diǎn)) 系統(tǒng)在運(yùn)行時(shí)存在的物理元素。系統(tǒng)在運(yùn)行時(shí)存在的物理
45、元素。數(shù)據(jù)庫數(shù)據(jù)庫服務(wù)器服務(wù)器應(yīng)用應(yīng)用服務(wù)器服務(wù)器課程課程管理管理成績成績管理管理軟件工程軟件工程5151UMLUML事物事物 行為事物行為事物Interaction(交互)(交互)n交互由在特定的上下文環(huán)境中共同完成一定任交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對(duì)象之間傳遞的消息組成。務(wù)的一組對(duì)象之間傳遞的消息組成。n交互涉及的元素包括消息、動(dòng)作序列和鏈。交互涉及的元素包括消息、動(dòng)作序列和鏈。p:Person:CompanyAssign(development)消息消息有名對(duì)象有名對(duì)象匿名對(duì)象匿名對(duì)象有名對(duì)象有名對(duì)象匿名對(duì)象匿名對(duì)象消息消息軟件工程軟件工程5252State Mach
46、ine(狀態(tài)機(jī))(狀態(tài)機(jī)) 狀態(tài)機(jī)描述了一個(gè)對(duì)象或一個(gè)交互在生存狀態(tài)機(jī)描述了一個(gè)對(duì)象或一個(gè)交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列。 狀態(tài)機(jī)涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件狀態(tài)機(jī)涉及的元素包括狀態(tài)、轉(zhuǎn)換、事件活動(dòng)等。活動(dòng)等。initializingcommandidleKeypressFinishedExit軟件工程軟件工程5353UMLUML事物事物 分組事物分組事物package(包)(包) 包是把元素組織成組的機(jī)制,結(jié)構(gòu)事物、行包是把元素組織成組的機(jī)制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進(jìn)包內(nèi)。為事物甚至其他分組事物都可以放進(jìn)包內(nèi)。 包不象構(gòu)件(僅在
47、運(yùn)行時(shí)存在),它純粹是包不象構(gòu)件(僅在運(yùn)行時(shí)存在),它純粹是概念上的(即它僅在開發(fā)時(shí)存在)。概念上的(即它僅在開發(fā)時(shí)存在)。用戶接口用戶接口包包業(yè)務(wù)對(duì)象業(yè)務(wù)對(duì)象包包應(yīng)用包應(yīng)用包軟件工程軟件工程5454UMLUML事物事物 注釋事物注釋事物Note(注釋)(注釋) 依附于一個(gè)元素或一組元素之上,對(duì)其進(jìn)依附于一個(gè)元素或一組元素之上,對(duì)其進(jìn)行約束或解釋的簡單符號(hào)。行約束或解釋的簡單符號(hào)。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) 泛化泛化 實(shí)現(xiàn)實(shí)現(xiàn) n關(guān)系特征:關(guān)系特征: 這四種關(guān)系是這四種關(guān)系是UML模型中可以包含的基本模型中可以包含的基本關(guān)系。關(guān)系。 它們也有變體。例如,依賴的變體有細(xì)化、它們也有變體。例如,依賴的變體有細(xì)化、跟蹤、包含和延伸。跟蹤、包含和延伸。軟件工程軟件工程5656依賴(依賴(Dependency) 兩個(gè)事物之間的語義關(guān)系,其中目標(biāo)事物發(fā)兩個(gè)事物之間的語義關(guān)系,其中目標(biāo)事物發(fā)生變化會(huì)影響源事物的語義。生變化會(huì)影響源事物的語義。 圖中虛線箭頭從圖中虛線箭頭從源源事物指向事物指向目標(biāo)目標(biāo)
49、事物,表示事物,表示源事物依賴于目標(biāo)事物。源事物依賴于目標(biāo)事物。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator軟件工程軟件工程5757n兩個(gè)類之間的依賴關(guān)系可以是:兩個(gè)類之間的依賴關(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)類的實(shí)例實(shí)例;n如果在順序圖中的兩個(gè)對(duì)象存在消息的傳送,如果在順序圖中的兩個(gè)對(duì)象存在消息的傳送,而且它們之間沒有結(jié)構(gòu)方面的連接,可以在類而且它
50、們之間沒有結(jié)構(gòu)方面的連接,可以在類圖上用依賴關(guān)系建模。圖上用依賴關(guān)系建模。n依賴的變體包含特定的語義,表明類之間的關(guān)依賴的變體包含特定的語義,表明類之間的關(guān)系、包之間的關(guān)系、用例之間的關(guān)系、對(duì)象之系、包之間的關(guān)系、用例之間的關(guān)系、對(duì)象之間的關(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.兩個(gè)類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表兩個(gè)類或?qū)ο笕绻嬖趯?dǎo)出依賴,則表明源類(如年齡)可以從目標(biāo)類(如出生年明源類(如年齡)可以從目標(biāo)類(如出生年月)通過計(jì)算導(dǎo)出。月)通過計(jì)算導(dǎo)出。IteratorBinaryTreeAgeBirthDay軟件工程軟件工程5959v 細(xì)化依賴細(xì)化依賴 在類圖中表示同一模型的不同詳細(xì)程度的規(guī)在類圖中表示同一模型的不同詳細(xì)程度的規(guī)格說明,源類比目標(biāo)類更為詳細(xì)。格說明,源類比目標(biāo)類更為詳細(xì)。v 實(shí)例化依賴實(shí)例化依賴 若要強(qiáng)調(diào)一個(gè)類的對(duì)象是由另一個(gè)類的對(duì)象若要強(qiáng)調(diào)一個(gè)類的對(duì)象是由另一個(gè)類的對(duì)象創(chuàng)建的,可用實(shí)例化依賴。它表明源類創(chuàng)建創(chuàng)建的,可用實(shí)例化依賴。它表明源類創(chuàng)
52、建了目標(biāo)類的一個(gè)實(shí)例。了目標(biāo)類的一個(gè)實(shí)例。Chessboardfrom optimizedchessboardfrom simpleArrayStack軟件工程軟件工程6060v 使用依賴使用依賴 不加任何修飾的依賴即為使用依賴。也可用不加任何修飾的依賴即為使用依賴。也可用修飾修飾強(qiáng)調(diào)源類的語義依賴于目標(biāo)類強(qiáng)調(diào)源類的語義依賴于目標(biāo)類的具有共有可見性的構(gòu)成的語義。的具有共有可見性的構(gòu)成的語義。v 綁定(綁定(Binding)依賴)依賴v這種依賴關(guān)系中的目標(biāo)類是模板類,源這種依賴關(guān)系中的目標(biāo)類是模板類,源類是從模板實(shí)例化的類。類是從模板實(shí)例化的類。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)包里的元素,但各個(gè)包有自己獨(dú)立的命名空間,這意味著屬但各個(gè)包有自己獨(dú)立的命名空間,這意味著屬于不同包的兩個(gè)元素可以重名。導(dǎo)入依賴可以于不同包的兩個(gè)元素可以重名。導(dǎo)入依賴可以使目標(biāo)包內(nèi)的公共可見元素進(jìn)入源包的命名空使目標(biāo)包內(nèi)的公共可見元素進(jìn)入源包的命名空間。間。sourcetargetsourcetarget軟件工程軟件
54、工程6262n用例之間的依賴關(guān)系用例之間的依賴關(guān)系可以是:可以是:包含依賴包含依賴 它表明源用例顯式地包含目標(biāo)用例作為它表明源用例顯式地包含目標(biāo)用例作為其行為的一部分。此時(shí)將源用例稱為其行為的一部分。此時(shí)將源用例稱為基用例基用例,目標(biāo)用例稱為目標(biāo)用例稱為內(nèi)含用例內(nèi)含用例。如果兩個(gè)用例之間具有包含依賴關(guān)系,如果兩個(gè)用例之間具有包含依賴關(guān)系,則表明基用例的動(dòng)作序列中有特定的步驟把內(nèi)則表明基用例的動(dòng)作序列中有特定的步驟把內(nèi)含用例的動(dòng)作序列包含進(jìn)來。含用例的動(dòng)作序列包含進(jìn)來。a.擴(kuò)展依賴擴(kuò)展依賴 base use caseinclusion use case軟件工程軟件工程6363它表明源用例擴(kuò)展了目
55、標(biāo)用例的行為。此時(shí),它表明源用例擴(kuò)展了目標(biāo)用例的行為。此時(shí),源用例稱為源用例稱為基用例基用例,目標(biāo)用例稱為,目標(biāo)用例稱為擴(kuò)展用例擴(kuò)展用例。擴(kuò)展用例在特定條件下為基用例提供附加的動(dòng)擴(kuò)展用例在特定條件下為基用例提供附加的動(dòng)態(tài)行為。例如,在人機(jī)交互過程中出現(xiàn)差錯(cuò)時(shí)態(tài)行為。例如,在人機(jī)交互過程中出現(xiàn)差錯(cuò)時(shí)進(jìn)行的異常處理即為擴(kuò)展動(dòng)作。進(jìn)行的異常處理即為擴(kuò)展動(dòng)作。擴(kuò)展依賴與包含依賴的區(qū)別在于,如果僅將擴(kuò)擴(kuò)展依賴與包含依賴的區(qū)別在于,如果僅將擴(kuò)展從基用例地動(dòng)作序列中去除,基用例仍然是展從基用例地動(dòng)作序列中去除,基用例仍然是語義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)語義完備的,即它的執(zhí)行仍將產(chǎn)生有意義的結(jié)果。而
56、包含依賴則不然。果。而包含依賴則不然。base use caseextension use case軟件工程軟件工程6464n對(duì)象之間的依賴關(guān)系對(duì)象之間的依賴關(guān)系可以是:可以是:v 轉(zhuǎn)換依賴轉(zhuǎn)換依賴 v當(dāng)需要在交互圖上表示對(duì)象狀態(tài)的轉(zhuǎn)換當(dāng)需要在交互圖上表示對(duì)象狀態(tài)的轉(zhuǎn)換時(shí)可以用轉(zhuǎn)換依賴。主要強(qiáng)調(diào)由于消息而導(dǎo)致時(shí)可以用轉(zhuǎn)換依賴。主要強(qiáng)調(diào)由于消息而導(dǎo)致對(duì)象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標(biāo)對(duì)象和對(duì)象狀態(tài)的改變。轉(zhuǎn)換依賴連接的目標(biāo)對(duì)象和源對(duì)象是同一個(gè)對(duì)象。源對(duì)象是同一個(gè)對(duì)象。v 調(diào)用依賴調(diào)用依賴 v當(dāng)需要在交互圖或?qū)ο髨D上顯式強(qiáng)調(diào)對(duì)當(dāng)需要在交互圖或?qū)ο髨D上顯式強(qiáng)調(diào)對(duì)象之間或操作之間的調(diào)用關(guān)系時(shí)要用調(diào)用依
57、賴。象之間或操作之間的調(diào)用關(guān)系時(shí)要用調(diào)用依賴。它表明源對(duì)象引用了目標(biāo)對(duì)象的操作,或源操它表明源對(duì)象引用了目標(biāo)對(duì)象的操作,或源操作引用了目標(biāo)操作。作引用了目標(biāo)操作。a.復(fù)制依賴復(fù)制依賴 軟件工程軟件工程6565為了在交互圖或活動(dòng)圖上描述對(duì)象復(fù)制的動(dòng)作為了在交互圖或活動(dòng)圖上描述對(duì)象復(fù)制的動(dòng)作可以采用復(fù)制依賴。它連接兩個(gè)對(duì)象,目標(biāo)對(duì)可以采用復(fù)制依賴。它連接兩個(gè)對(duì)象,目標(biāo)對(duì)象是源對(duì)象的完全相同而又獨(dú)立的副本。象是源對(duì)象的完全相同而又獨(dú)立的副本。v 發(fā)送依賴發(fā)送依賴 它連接一個(gè)對(duì)象(在源端)和一個(gè)消息(在目它連接一個(gè)對(duì)象(在源端)和一個(gè)消息(在目標(biāo)端),表明源對(duì)象在交互過程中發(fā)送了一個(gè)標(biāo)端),表明源對(duì)象
58、在交互過程中發(fā)送了一個(gè)消息,可以用在狀態(tài)機(jī)的描述中。消息,可以用在狀態(tài)機(jī)的描述中。它針對(duì)內(nèi)嵌有狀態(tài)機(jī)的對(duì)象,可用來描述如何它針對(duì)內(nèi)嵌有狀態(tài)機(jī)的對(duì)象,可用來描述如何通過發(fā)送信號(hào)以產(chǎn)生某種事件的動(dòng)作。通過發(fā)送信號(hào)以產(chǎn)生某種事件的動(dòng)作。n建模元素與模型之間的依賴關(guān)系建模元素與模型之間的依賴關(guān)系是:是:v 回溯依賴回溯依賴 d.它連接兩個(gè)模型元素,表明目標(biāo)是源的歷它連接兩個(gè)模型元素,表明目標(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、述一組鏈,這些鏈?zhǔn)穷愔g或類與接口之間的連接。通些鏈?zhǔn)穷愔g或類與接口之間的連接。通過這種連接,一個(gè)對(duì)象可以訪問另一個(gè)對(duì)過這種連接,一個(gè)對(duì)象可以訪問另一個(gè)對(duì)象的屬性或調(diào)用另一個(gè)對(duì)象的操作。象的屬性或調(diào)用另一個(gè)對(duì)象的操作。 關(guān)聯(lián)是雙向的,其中的角色代表一個(gè)類的關(guān)聯(lián)是雙向的,其中的角色代表一個(gè)類的對(duì)象在另一個(gè)類中的存在。對(duì)象在另一個(gè)類中的存在。 聚合(聚合(aggregation)是一種特殊類型的關(guān)是一種特殊類型的關(guān)聯(lián),它描述了整體和部分間的結(jié)構(gòu)關(guān)系。聯(lián),它描述了整體和部分間的結(jié)構(gòu)關(guān)系。employeremployee0.1*軟件工程軟件工程6767 聚合關(guān)系在整體端有一個(gè)菱形作為標(biāo)記。聚合關(guān)系在
60、整體端有一個(gè)菱形作為標(biāo)記。 復(fù)合聚合(復(fù)合聚合(composite aggregate) 是一種特是一種特殊的聚合關(guān)系,它表明整體對(duì)象與部分對(duì)象殊的聚合關(guān)系,它表明整體對(duì)象與部分對(duì)象具有相同的生存周期。具有相同的生存周期。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)一般默認(rèn)關(guān)聯(lián)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版吊裝作業(yè)委托協(xié)議書3篇
- 二零二五版智能大廈租賃管理服務(wù)合同3篇
- 2025年度大型論壇籌備與執(zhí)行合同范本4篇
- 基于深度強(qiáng)化學(xué)習(xí)的綜合能源系統(tǒng)低碳經(jīng)濟(jì)調(diào)度研究
- 鋪軌施工方案
- 2025財(cái)政資金借款合同
- 南方丘陵區(qū)泡桐人工中齡林生長對(duì)變量施肥的響應(yīng)
- 橡膠籃球場施工方案
- Unit 4 History and Traditions Listening and Talking 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第二冊(cè)
- 二零二五年度幕墻工程施工進(jìn)度與質(zhì)量保證合同4篇
- 2025年度杭州市固廢處理與資源化利用合同3篇
- 2024年安徽省公務(wù)員錄用考試《行測》真題及答案解析
- 部編版二年級(jí)下冊(cè)《道德與法治》教案及反思(更新)
- 充電樁項(xiàng)目運(yùn)營方案
- 退休人員出國探親申請(qǐng)書
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 孕婦學(xué)校品管圈課件
- 《愿望的實(shí)現(xiàn)》交流ppt課件2
評(píng)論
0/150
提交評(píng)論