第二部分軟件需求分析與建模面向?qū)ο蠓治?與“對(duì)象”有關(guān)的共198張)_第1頁(yè)
第二部分軟件需求分析與建模面向?qū)ο蠓治?與“對(duì)象”有關(guān)的共198張)_第2頁(yè)
第二部分軟件需求分析與建模面向?qū)ο蠓治?與“對(duì)象”有關(guān)的共198張)_第3頁(yè)
第二部分軟件需求分析與建模面向?qū)ο蠓治?與“對(duì)象”有關(guān)的共198張)_第4頁(yè)
第二部分軟件需求分析與建模面向?qū)ο蠓治?與“對(duì)象”有關(guān)的共198張)_第5頁(yè)
已閱讀5頁(yè),還剩173頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二部分軟件需求分析與建模面向?qū)ο蠓治龅谝豁?yè),共198頁(yè)。實(shí)驗(yàn)1:軟件工程CASE工具—什么是軟件工程環(huán)境?—CASE工具的作用?—主流的代表性CASE工具?—軟件工程各階段工具需求?要求:理解實(shí)驗(yàn)內(nèi)容與方法、提交實(shí)驗(yàn)報(bào)告習(xí)題3、4、61.6實(shí)驗(yàn)要求及習(xí)題第二頁(yè),共198頁(yè)。1.現(xiàn)代軟件工程(國(guó)家示范性軟件學(xué)院系列教材)

張家浩/東南大學(xué)機(jī)械工業(yè)出版社2.軟件工程—理論與實(shí)踐

許家珆曾翎彭德中編著高等教育出版社3.軟件工程-實(shí)踐者的研究方法(美)RogerS.Pressman著鄭人杰等譯機(jī)械工業(yè)出版社

4.SoftwareEngineering,6thEdition

Sommerville.I.(影印版)機(jī)械工業(yè)出版社主要參考書:第三頁(yè),共198頁(yè)??偰夸?/p>

第1章軟件工程學(xué)概述(2學(xué)時(shí)) 第2章軟件過程(2學(xué)時(shí)) 第3章軟件過程模型(4學(xué)時(shí)) 第4章案例研究(2學(xué)時(shí)) 第5章軟件需求分析過程(4學(xué)時(shí)) 第6章結(jié)構(gòu)化分析建模(4學(xué)時(shí)) 第7章面向?qū)ο蠓治觯?學(xué)時(shí))第8章軟件設(shè)計(jì)(4學(xué)時(shí)) 第9章結(jié)構(gòu)化設(shè)計(jì)方法(4學(xué)時(shí))

第四頁(yè),共198頁(yè)。總目錄

第10章面向?qū)ο笤O(shè)計(jì)(4學(xué)時(shí)) 第11章軟件實(shí)現(xiàn)(2學(xué)時(shí)) 第12章軟件測(cè)試(4學(xué)時(shí)) 第13章軟件維護(hù)(2學(xué)時(shí))第14章軟件項(xiàng)目管理(2學(xué)時(shí)) 第15章軟件項(xiàng)目估算(1學(xué)時(shí)) 第16章軟件項(xiàng)目計(jì)劃與管理(1學(xué)時(shí))第五頁(yè),共198頁(yè)。第7章面向?qū)ο蠓治?.1面向?qū)ο蠼?.2用例建模7.3建立領(lǐng)域模型7.4行為建模7.5案例分析7.6實(shí)驗(yàn)要求及習(xí)題第六頁(yè),共198頁(yè)。引言:傳統(tǒng)軟件開發(fā)方法的局限性傳統(tǒng)的軟件工具、軟件技術(shù)和抽象層次越來(lái)越難以適應(yīng)大規(guī)模復(fù)雜軟件系統(tǒng)的開發(fā)特點(diǎn)。軟件能力問題已經(jīng)成為制約軟件發(fā)展的因素。軟件工程自70年代以來(lái),有力的推動(dòng)了軟件能力的解決。自頂向下的分析與設(shè)計(jì)的方法、軟件項(xiàng)目的工程化管理、軟件工具和開發(fā)環(huán)境、軟件質(zhì)量保證等都對(duì)軟件的發(fā)展起了非常重要的作用。傳統(tǒng)的軟件開發(fā)方法在當(dāng)時(shí)的軟件工程中起了主導(dǎo)作用,隨著系統(tǒng)復(fù)雜性、多變性增強(qiáng),傳統(tǒng)方法的缺陷就顯露了出來(lái):(1)面向過程為主。系統(tǒng)圍繞著由計(jì)算機(jī)來(lái)實(shí)現(xiàn)功能的復(fù)雜過程而建立,在分析和解決問題時(shí)與人們對(duì)現(xiàn)實(shí)世界的認(rèn)識(shí)有一定差距。第七頁(yè),共198頁(yè)。(2)軟件結(jié)構(gòu)穩(wěn)定性差。需求分析階段重點(diǎn)是功能模型,難以徹底明確全部需求。設(shè)計(jì)階段的軟件體系結(jié)構(gòu)是基于系統(tǒng)功能建立的。每個(gè)模塊完成一個(gè)基本功能,多個(gè)模塊的組合完成一個(gè)整體功能。一個(gè)模塊的變動(dòng)可能會(huì)影響到多個(gè)模塊。用戶的需求大多針對(duì)功能,功能的變化會(huì)引起體系結(jié)構(gòu)的變化,不利于系統(tǒng)的維護(hù)。

(3)軟件開發(fā)的抽象力度小。解決問題的類型一般用于“輸入-處理-輸出”為核心的數(shù)據(jù)處理系統(tǒng),不適應(yīng)于復(fù)雜的實(shí)時(shí)、交互、事件驅(qū)動(dòng)、分布式等新型應(yīng)用的系統(tǒng)開發(fā)。(4)軟件重用未能得到很好的解決。傳統(tǒng)的方法一般從“零”開始開發(fā)軟件,數(shù)據(jù)與操作作為相互分離的實(shí)體來(lái)考慮,使軟件的可復(fù)用性差。重用的實(shí)施僅僅是公用模塊的調(diào)用。面向?qū)ο蟮姆庋b性、繼承性、多態(tài)性等特性支持軟件重用且重用的粒度大。軟件的重用導(dǎo)致更快地、高質(zhì)量地開發(fā)軟件,為軟件工業(yè)化生產(chǎn)奠定基礎(chǔ)。第八頁(yè),共198頁(yè)。9傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實(shí)體屬于該對(duì)象的數(shù)據(jù)對(duì)象處理數(shù)據(jù)的方法消息對(duì)象把數(shù)據(jù)和處理數(shù)據(jù)的方法封狀成一個(gè)單元消息第九頁(yè),共198頁(yè)。傳統(tǒng)方法與面向?qū)ο蠓椒ǖ谋容^面向?qū)ο蠓椒ㄏ到y(tǒng)是交互對(duì)象的集合對(duì)象與人或其它對(duì)象交互對(duì)象發(fā)送與響應(yīng)消息傳統(tǒng)方法系統(tǒng)是過程的集合過程與數(shù)據(jù)實(shí)體交互過程接受輸入并產(chǎn)生輸出第十頁(yè),共198頁(yè)。1.與人類習(xí)慣的思維方法一致傳統(tǒng)的程序設(shè)計(jì)技術(shù)是面向過程的設(shè)計(jì)方法,這種方法以算法為核心,把數(shù)據(jù)和過程作為相互獨(dú)立的部分。用這種方法所設(shè)計(jì)出來(lái)的軟件系統(tǒng)其解空間與問題空間并不一致,令人感到難于理解。面向?qū)ο蟮能浖_發(fā)過程圍繞著建立問題域的對(duì)象模型來(lái)進(jìn)行:對(duì)問題領(lǐng)域進(jìn)行自然的分解,確定需要使用的對(duì)象和類,建立適當(dāng)?shù)念惖燃?jí),在對(duì)象之間傳遞消息實(shí)現(xiàn)必要的聯(lián)系。面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)第十一頁(yè),共198頁(yè)。2.穩(wěn)定性好傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來(lái)的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所要完成的功能,當(dāng)功能需求發(fā)生變化時(shí)將引起軟件結(jié)構(gòu)的整體修改。面向?qū)ο蠓椒ㄓ脤?duì)象模擬問題領(lǐng)域中的實(shí)體,以對(duì)象間的聯(lián)系刻畫實(shí)體間的聯(lián)系。由于現(xiàn)實(shí)世界中的實(shí)體是相對(duì)穩(wěn)定的,因此,以對(duì)象為中心構(gòu)造的軟件系統(tǒng)也是比較穩(wěn)定的。

第十二頁(yè),共198頁(yè)。3.可重用性好用已有的零部件裝配新的產(chǎn)品,是典型的重用技術(shù),例如,用標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)作為“預(yù)制件”來(lái)建造新的軟件系統(tǒng)。

重用是提高生產(chǎn)率的最主要的方法。傳統(tǒng)的軟件重用技術(shù)是利用標(biāo)準(zhǔn)函數(shù)庫(kù),實(shí)際的庫(kù)函數(shù)往往僅提供最基本、最常用的功能。面向?qū)ο蠓椒ㄋ褂玫膶?duì)象中,數(shù)據(jù)和操作是作為平等伙伴出現(xiàn)的,故對(duì)象具有很強(qiáng)的自含性。對(duì)象固有的封裝性和信息隱藏機(jī)制,使得對(duì)象的內(nèi)部實(shí)現(xiàn)與外界隔離,具有較強(qiáng)的獨(dú)立性。

對(duì)象是比較理想的模塊和可重用的軟件成分。第十三頁(yè),共198頁(yè)。面向?qū)ο蟮能浖夹g(shù)在利用可重用的軟件成分構(gòu)造新的軟件系統(tǒng)時(shí),有很大的靈活性。

有兩種方法可以重復(fù)使用一個(gè)對(duì)象類:(1)創(chuàng)建該類的實(shí)例,從而直接使用它;(2)從它派生出一個(gè)滿足當(dāng)前需要的新類。繼承性機(jī)制使得子類不僅可以重用其父類的數(shù)據(jù)結(jié)構(gòu)和程序代碼,而且可以在父類代碼的基礎(chǔ)上方便地修改和擴(kuò)充,這種修改并不影響對(duì)原有類的使用。由于可以像使用集成電路(IC)構(gòu)造計(jì)算機(jī)硬件那樣,比較方便地重用對(duì)象類來(lái)構(gòu)造軟件系統(tǒng),因此,有人把對(duì)象類稱為“軟件IC”。第十四頁(yè),共198頁(yè)。4.較易開發(fā)大型軟件產(chǎn)品在開發(fā)大型軟件產(chǎn)品時(shí),組織開發(fā)人員的方法不恰當(dāng)往往是出現(xiàn)問題的主要原因。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時(shí),構(gòu)成軟件系統(tǒng)的每個(gè)對(duì)象就像一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能和用途,可以把一個(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品來(lái)處理。

對(duì)于大型軟件產(chǎn)品來(lái)說,面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型。第十五頁(yè),共198頁(yè)。5.可維護(hù)性好由于下述因素的存在,使得用面向?qū)ο蠓椒ㄋ_發(fā)的軟件可維護(hù)性好:(1)面向?qū)ο蟮能浖Y(jié)構(gòu)穩(wěn)定性比較好;(2)面向?qū)ο蟮能浖容^容易修改;(3)面向?qū)ο蟮能浖容^容易理解;(4)易于測(cè)試和調(diào)試。

第十六頁(yè),共198頁(yè)。面向?qū)ο蠓治鲆彩且⒏鞣N各樣的基于對(duì)象的模型,這些模型用于理解領(lǐng)域問題面向?qū)ο蟮淖畲筇攸c(diǎn)是面向用例(用例是指在不展現(xiàn)一個(gè)系統(tǒng)或子系統(tǒng)內(nèi)部結(jié)構(gòu)的情況下,對(duì)系統(tǒng)或子系統(tǒng)的某個(gè)連貫的功能單元的定義和描述),用例貫穿整個(gè)開發(fā)過程,再引入類模型和動(dòng)態(tài)行為模型。在用例的描述中引入了外部角色的概念。面向?qū)ο蠓治觯∣OA,Object-OrientedAnalysis)是一種半形式化的規(guī)格說明技術(shù)目前,最流行的技術(shù)是OMT和Booch開發(fā)技術(shù)第十七頁(yè),共198頁(yè)。面向?qū)ο蠓椒ǖ拇硇猿晒校海?)B.Henderson-sellers和提出的面向?qū)ο筌浖嫫趪娙P图懊嫦驅(qū)ο蟮南到y(tǒng)開發(fā)方法(2)提出的面向?qū)ο蟮拈_發(fā)方法(3)和提出的OOA和OOD法(4)J.Rumbaugh等人提出的對(duì)象建模技術(shù)(OMT)(5)Jacobson提出的面向?qū)ο蟮能浖こ?OOSE)(6)G.boochJ.RumboughJacobson等人在Booch方法、OMT和OOSE的基礎(chǔ)上推出了統(tǒng)一建模語(yǔ)言UML第十八頁(yè),共198頁(yè)。面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式也就是使描述問題的問題域與實(shí)現(xiàn)解法的解空間(求解域)在結(jié)構(gòu)上盡可能一致面向?qū)ο竽P蛯?duì)象模型:定義了“做什么”的實(shí)體動(dòng)態(tài)模型:規(guī)定在何種狀態(tài)下,接受什么事件的觸發(fā)而“做什么”功能模型:指明了系統(tǒng)應(yīng)該“做什么”7.1面向?qū)ο蠼5谑彭?yè),共198頁(yè)。概括地說,面向?qū)ο蠓椒ň哂邢率?個(gè)要點(diǎn):(1)認(rèn)為客觀世界是由各種對(duì)象組成的,任何事物都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)象以某種方式組合而成。(2)把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類,class),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。(3)按照子類(派生類)與父類(基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類等級(jí))。(4)對(duì)象彼此之間僅能通過傳遞消息互相聯(lián)系。

第二十頁(yè),共198頁(yè)。1.類(class)人類習(xí)慣于把有相似特征的事物歸為一類,分類是人類認(rèn)識(shí)客觀世界的基本方法。類(Class)是具有相同屬性和服務(wù)的一組對(duì)象的集合,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。類代表一個(gè)抽象的數(shù)據(jù)類型,對(duì)象是在客觀世界中實(shí)際存在的類的實(shí)例。類體現(xiàn)了人們認(rèn)識(shí)事物的基本思維方法:分類面向?qū)ο蠡靖拍畹诙豁?yè),共198頁(yè)。對(duì)象vs類對(duì)象是一個(gè)存在于時(shí)間和空間中的具體實(shí)體,而類僅代表一個(gè)抽象,抽象出對(duì)象的“本質(zhì)”。類是共享一個(gè)公用結(jié)構(gòu)和一個(gè)公共行為對(duì)象集合類是靜態(tài)的,對(duì)象是動(dòng)態(tài)的;類是一般化,對(duì)象是個(gè)性化;類是定義,對(duì)象是實(shí)例;類是抽象、對(duì)象是具體第二十二頁(yè),共198頁(yè)。2.實(shí)例(instance)實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對(duì)象。當(dāng)使用“對(duì)象”這個(gè)術(shù)語(yǔ)時(shí),既可以指一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象。當(dāng)使用“實(shí)例”這個(gè)術(shù)語(yǔ)時(shí),必然是指一個(gè)具體的對(duì)象。類是靜態(tài)的,類的存在、語(yǔ)義和關(guān)系在程序執(zhí)行前就已經(jīng)定義好了。對(duì)象是動(dòng)態(tài)的,對(duì)象在程序執(zhí)行時(shí)可以被創(chuàng)建和刪除。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間。第二十三頁(yè),共198頁(yè)。判斷下列各項(xiàng)是類還是類的實(shí)例?1.我的小汽車2.人員3.王曉明4.交通工具5.教授6.計(jì)算機(jī)系7.中國(guó)工人8.清華大學(xué)學(xué)生9.國(guó)10.噴氣式戰(zhàn)機(jī)1.實(shí)例2.類3.實(shí)例4.類5.類6.實(shí)例7.類8.類9.實(shí)例10.類第二十四頁(yè),共198頁(yè)。3.消息(message)消息(Message)是對(duì)象發(fā)出的服務(wù)請(qǐng)求,一般包含提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和應(yīng)答信息等。一個(gè)對(duì)象向另一個(gè)對(duì)象發(fā)出消息請(qǐng)求某項(xiàng)服務(wù),接收消息的對(duì)象響應(yīng)該消息,激發(fā)所要求的服務(wù)操作,并將操作結(jié)果返回給請(qǐng)求服務(wù)的對(duì)象。4.方法(method)方法就是對(duì)象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。方法描述了對(duì)象執(zhí)行操作的算法,響應(yīng)消息的方法。第二十五頁(yè),共198頁(yè)。5.屬性(attribute)屬性就是類中所定義的數(shù)據(jù),它是對(duì)客觀世界實(shí)體所具有的性質(zhì)的抽象。類的每個(gè)實(shí)例都有自己特有的屬性值。6.封裝(encapsulation)所謂封裝是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱藏對(duì)象的內(nèi)部細(xì)節(jié)。可見性是指對(duì)象的屬性和服務(wù)允許對(duì)象外部存取和引用的程度。第二十六頁(yè),共198頁(yè)。對(duì)象具有封裝性的條件如下:(1)有一個(gè)清晰的邊界。所有私有數(shù)據(jù)和實(shí)現(xiàn)操作的代碼都被封裝在這個(gè)邊界內(nèi)。(2)有確定的接口。這些接口就是對(duì)象可以接受的消息。(3)受保護(hù)的內(nèi)部實(shí)現(xiàn)。實(shí)現(xiàn)對(duì)象功能的細(xì)節(jié)不能在定義該對(duì)象的類的范圍外訪問。封裝也就是信息隱藏,通過封裝對(duì)外界隱藏了對(duì)象的實(shí)現(xiàn)細(xì)節(jié)。7.繼承(inheritance)繼承是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。面向?qū)ο筌浖夹g(shù)的許多強(qiáng)有力的功能和突出的優(yōu)點(diǎn),都來(lái)源于把類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類等級(jí))。第二十七頁(yè),共198頁(yè)。實(shí)現(xiàn)繼承機(jī)制的原理第二十八頁(yè),共198頁(yè)。繼承的作用

–簡(jiǎn)化了人們對(duì)現(xiàn)實(shí)世界的認(rèn)識(shí)和描述;

–對(duì)于軟件復(fù)用是十分有益的。繼承的類型

–單繼承:子類只從一個(gè)父類繼承;

–多繼承:子類從多個(gè)父類繼承。第二十九頁(yè),共198頁(yè)。多態(tài)性機(jī)制為軟件的結(jié)構(gòu)設(shè)計(jì)提供了靈活性,減少了信息冗余,明顯提高了軟件的可復(fù)用性和可擴(kuò)充性。8.多態(tài)性(polymorphism)多態(tài)性的意思是“有許多形態(tài)”。多態(tài)性是指子類對(duì)象可以像父類對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類對(duì)象也可以發(fā)送給子類對(duì)象。在類等級(jí)的不同層次中可以共享一個(gè)行為的名字,然而不同層次中的每個(gè)類卻各自按自己的需要來(lái)實(shí)現(xiàn)這個(gè)行為。當(dāng)對(duì)象接收到發(fā)送給它的消息時(shí),根據(jù)該對(duì)象所屬于的類動(dòng)態(tài)選用在該類中定義的實(shí)現(xiàn)算法。第三十頁(yè),共198頁(yè)。9.重載(overloading)有兩種重載:函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。

運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)然,當(dāng)參數(shù)特征不同或被操作數(shù)的類型不同時(shí),實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語(yǔ)義是不相同的。重載進(jìn)一步提高了面向?qū)ο笙到y(tǒng)的靈活性和可讀性。第三十一頁(yè),共198頁(yè)。面向?qū)ο蠓治鲆彩且⒏鞣N各樣的基于對(duì)象的模型,這些模型用于理解領(lǐng)域問題面向?qū)ο蟮淖畲筇攸c(diǎn)是面向用例(用例是指在不展現(xiàn)一個(gè)系統(tǒng)或子系統(tǒng)內(nèi)部結(jié)構(gòu)的情況下,對(duì)系統(tǒng)或子系統(tǒng)的某個(gè)連貫的功能單元的定義和描述),用例貫穿整個(gè)開發(fā)過程,再引入類模型和動(dòng)態(tài)行為模型。在用例的描述中引入了外部角色的概念。面向?qū)ο蠓治觯∣OA,Object-OrientedAnalysis)是一種半形式化的規(guī)格說明技術(shù)目前,最流行的技術(shù)是OMT和Booch開發(fā)技術(shù)面向?qū)ο蠓治觯∣OA)第三十二頁(yè),共198頁(yè)。幾種面向?qū)ο蠓椒?/p>

20世紀(jì)80年代以來(lái),出現(xiàn)了幾十種面向?qū)ο筌浖_發(fā)方法。每一種都有自己的符號(hào)體系和開發(fā)過程,都支持以下基本活動(dòng):

?標(biāo)識(shí)類及對(duì)象?描述類及對(duì)象之間的關(guān)系?定義類的屬性和操作

第三十三頁(yè),共198頁(yè)。

1、Booch方法

Booch是面向?qū)ο蠓椒ㄗ钤绲奶岢稣咧?,提出了面向?qū)ο筌浖こ痰母拍睢L岢隽恕拔㈤_發(fā)過程”和“宏開發(fā)過程”的思想。該方法提出建立以下模型:

類圖、對(duì)象圖、狀態(tài)轉(zhuǎn)移圖、時(shí)序圖、模塊圖、進(jìn)程圖。第三十四頁(yè),共198頁(yè)。2、Coad/Yourdon方法著名的OOA/OOD方法,也是最早的面向?qū)ο蟮姆治雠c設(shè)計(jì)方法之一。簡(jiǎn)單、易學(xué)。

OOA階段的任務(wù):

?標(biāo)識(shí)類及對(duì)象?定義結(jié)構(gòu)(一般-特殊結(jié)構(gòu)、整體-部分結(jié)構(gòu))

?劃分主題?定義屬性及對(duì)象間的實(shí)例連接

?定義服務(wù)及對(duì)象間的消息連接上述任務(wù)迭代進(jìn)行,產(chǎn)生5個(gè)層次的問題域模型(主題層、類及對(duì)象層、結(jié)構(gòu)層、屬性層、服務(wù)層)

OOD階段的活動(dòng):

?問題域部分

?人機(jī)交互部分

?任務(wù)管理部分

?數(shù)據(jù)管理部分第三十五頁(yè),共198頁(yè)。

3、OMT方法

Rumbaugh等人提出的對(duì)象建模技術(shù)(ObjectModelTechnology,OMT),該方法強(qiáng)調(diào)了三種模型,并將軟件開發(fā)過程劃分為以下幾個(gè)階段:?建立對(duì)象模型產(chǎn)品:對(duì)象模型=對(duì)象圖+數(shù)據(jù)字典?建立動(dòng)態(tài)模型

產(chǎn)品:動(dòng)態(tài)模型=狀態(tài)圖+事件跟蹤圖

?建立功能模型產(chǎn)品:功能模型=數(shù)據(jù)流圖+約束第三十六頁(yè),共198頁(yè)。

4、Jacobson方法也稱OOSE方法。最大特點(diǎn)是強(qiáng)調(diào)使用實(shí)例(Use-Case),每一個(gè)用例就是一個(gè)使用系統(tǒng)的方式,用例的執(zhí)行將引發(fā)執(zhí)行一系列與行為相關(guān)的事務(wù)。該方法將用例貫穿于整個(gè)開發(fā)階段,并在用例描述中引入了角色或參與者(Actor)的概念。角色指使用系統(tǒng)的人以及與系統(tǒng)相互作用的軟硬件環(huán)境。該方法還將對(duì)象區(qū)分為實(shí)體對(duì)象(業(yè)務(wù)對(duì)象)、接口對(duì)象(界面對(duì)象)和控制對(duì)象。需求分析階段活動(dòng):定義潛在的角色、識(shí)別問題域中的對(duì)象和關(guān)系、基于需求規(guī)格說明和角色的需要描述用例。設(shè)計(jì)階段的活動(dòng):從用例的描述中發(fā)現(xiàn)與設(shè)計(jì)有關(guān)的對(duì)象,并描述其屬性、行為和關(guān)聯(lián)。同時(shí)把所有用例的行為分派給每個(gè)對(duì)象。第三十七頁(yè),共198頁(yè)。面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則,是盡可能模擬人類習(xí)慣的思維方式也就是使描述問題的問題域與實(shí)現(xiàn)解法的解空間(求解域)在結(jié)構(gòu)上盡可能一致面向?qū)ο竽P蛯?duì)象模型:定義了“做什么”的實(shí)體動(dòng)態(tài)模型:規(guī)定在何種狀態(tài)下,接受什么事件的觸發(fā)而“做什么”功能模型:指明了系統(tǒng)應(yīng)該“做什么”7.1面向?qū)ο蠼5谌隧?yè),共198頁(yè)。

對(duì)象模型對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的

“數(shù)據(jù)”性質(zhì)。它是對(duì)模擬客觀世界實(shí)體的對(duì)象以及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。為了建立對(duì)象模型,需要定義一組圖形符號(hào),并且規(guī)定一組組織這些符號(hào)以表示特定語(yǔ)義的規(guī)則。需要用適當(dāng)?shù)慕UZ(yǔ)言來(lái)表達(dá)模型,建模語(yǔ)言由記號(hào)和使用記號(hào)的規(guī)則組成。第三十九頁(yè),共198頁(yè)。動(dòng)態(tài)模型動(dòng)態(tài)模型表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列。一旦建立起對(duì)象模型,就需要考察對(duì)象的動(dòng)態(tài)行為。所有對(duì)象都具有自己的生命周期。對(duì)一個(gè)對(duì)象來(lái)說,生命周期由許多階段組成,在每個(gè)特定階段中,都有適合該對(duì)象的一組運(yùn)行規(guī)律和行為規(guī)則,用以規(guī)范該對(duì)象的行為。第四十頁(yè),共198頁(yè)。

功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),它指明了系統(tǒng)應(yīng)該“做什么”,因此更直接地反映了用戶對(duì)目標(biāo)系統(tǒng)的需求。通常,功能模型由一組數(shù)據(jù)流圖組成。在面向?qū)ο蠓椒▽W(xué)中,數(shù)據(jù)流圖遠(yuǎn)不如在結(jié)構(gòu)分析、設(shè)計(jì)方法中那樣重要。第四十一頁(yè),共198頁(yè)。

回顧20世紀(jì)晚期--準(zhǔn)確地說是1997年,OMG組織(ObjectManagementGroup對(duì)象管理組織)發(fā)布了統(tǒng)一建模語(yǔ)言(UnifiedModelingLanguage,UML)。UML的目標(biāo)之一就是為開發(fā)團(tuán)隊(duì)提供標(biāo)準(zhǔn)通用的設(shè)計(jì)語(yǔ)言來(lái)開發(fā)和構(gòu)建計(jì)算機(jī)應(yīng)用。UML提出了一套IT專業(yè)人員期待多年的統(tǒng)一的標(biāo)準(zhǔn)建模符號(hào)。通過使用UML,這些人員能夠閱讀和交流系統(tǒng)架構(gòu)和設(shè)計(jì)規(guī)劃--就像建筑工人多年來(lái)所使用的建筑設(shè)計(jì)圖一樣。統(tǒng)一建模語(yǔ)言第四十二頁(yè),共198頁(yè)。產(chǎn)生的背景

UML的主要?jiǎng)?chuàng)始人是JimRumbaugh、IvarJacobson和GradyBooch,他們最初都有自己的建模方法(OMT、OOSE和Booch),彼此之間存在著競(jìng)爭(zhēng)。最終,他們聯(lián)合起來(lái)創(chuàng)造了一種開放的標(biāo)準(zhǔn)。(聽起來(lái)是不是很熟悉?這個(gè)現(xiàn)象類似J2EE、SOAP和Linux的誕生。)UML成為"標(biāo)準(zhǔn)"建模語(yǔ)言的原因之一在于,它與程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)。(IBMRational的UML建模工具被廣泛應(yīng)用于J2EE和.NET開發(fā)。)而且,UML符號(hào)集只是一種語(yǔ)言而不是一種方法學(xué)。這點(diǎn)很重要,因?yàn)檎Z(yǔ)言與方法學(xué)不同,它可以在不做任何更改的情況下很容易地適應(yīng)任何公司的業(yè)務(wù)運(yùn)作方式。第四十三頁(yè),共198頁(yè)。產(chǎn)生的背景

既然UML不是一種方法學(xué),它就不需要任何正式的工作產(chǎn)品(即IBMRationalUnifiedProcess?術(shù)語(yǔ)中所定義的"工件")。而且它還提供了多種類型的模型描述圖(diagram),當(dāng)在某種給定的方法學(xué)中使用這些圖時(shí),它使得開發(fā)中的應(yīng)用程序的更易理解。UML的內(nèi)涵遠(yuǎn)不只是這些模型描述圖,但是對(duì)于入門來(lái)說,這些圖對(duì)這門語(yǔ)言及其用法背后的基本原理提供了很好的介紹。通過把標(biāo)準(zhǔn)的UML圖放進(jìn)您的工作產(chǎn)品中,精通UML的人員就更加容易加入您的項(xiàng)目并迅速進(jìn)入角色。最常用的UML圖包括:用例圖、類圖、序列圖、狀態(tài)圖、活動(dòng)圖、組件圖和部署圖。第四十四頁(yè),共198頁(yè)。統(tǒng)一建模語(yǔ)言UML(UnifiedModelingLanguage)是軟件界第一個(gè)統(tǒng)一的建模語(yǔ)言,該方法結(jié)合了Booch,OMT和OOSE方法的優(yōu)點(diǎn),統(tǒng)一了符號(hào)體系,并從其它的方法和工程實(shí)踐中吸收了許多經(jīng)過實(shí)際檢驗(yàn)的概念和技術(shù)。它已成為國(guó)際軟件界廣泛承認(rèn)的標(biāo)準(zhǔn)。它是一種基于面向?qū)ο蟮目梢暬耐ㄓ?General)建模語(yǔ)言。

UML應(yīng)用領(lǐng)域很廣泛,可用于軟件開發(fā)建模的各個(gè)階段。

UML的標(biāo)準(zhǔn)化定義、可視化描述、可擴(kuò)展性機(jī)制顯示了其強(qiáng)大生命力。

統(tǒng)一建模語(yǔ)言第四十五頁(yè),共198頁(yè)。第四十六頁(yè),共198頁(yè)。九十年代中,面向?qū)ο蠓椒ㄒ呀?jīng)成為軟件分析和設(shè)計(jì)方法的主流。1994年10月JimRumbaugh和GradyBooch共同合作把他們的OMT和Booch方法統(tǒng)一起來(lái),到1995年成為“統(tǒng)一方法”版本。隨后,IvarJacobson加入,并采用他的用例(UserCase)思想,到1996年,成為“統(tǒng)一建模語(yǔ)言”版本。1997年1月,UML版本被提交給OMG組織,作為軟件建模語(yǔ)言標(biāo)準(zhǔn)的候選。1997年11月7日被正式采納作為業(yè)界標(biāo)準(zhǔn)。第四十七頁(yè),共198頁(yè)。第四十八頁(yè),共198頁(yè)。UML的模型元素:一類模型元素用于表示模型中的某個(gè)概念,如類、對(duì)象、用例、結(jié)點(diǎn)、構(gòu)件、包、接口等;另一類模型元素用于表示模型元素之間相互連接的關(guān)系,主要有關(guān)聯(lián)、泛化(表示一般與特殊的關(guān)系)、依賴、聚集(表示整體與部分的關(guān)系)等。聚集依賴泛化關(guān)聯(lián)狀態(tài)對(duì)象屬性操作類屬性操作角色用例結(jié)點(diǎn)構(gòu)件包接口注解第四十九頁(yè),共198頁(yè)。UML模型結(jié)構(gòu)四個(gè)抽象層次:元元模型:定義了描述元模型的語(yǔ)言元模型:定義了元類、元屬性、元操作等一些概念模型:定義了描述信息領(lǐng)域的語(yǔ)言用戶模型:模型的實(shí)例,用于表達(dá)一個(gè)模型的特定情況用戶模型模型元模型元元模型事物n

相關(guān)1..n鏈接對(duì)象n

相關(guān)1..n關(guān)聯(lián)類n實(shí)例1n實(shí)例1..n第五十頁(yè),共198頁(yè)。UML模型視圖UML主要是用來(lái)描述模型的。它可以從不同視角為系統(tǒng)建模,形成不同的視圖(View)每個(gè)視圖是系統(tǒng)完整描述中的一個(gè)抽象,代表該系統(tǒng)一個(gè)特定的方面;每個(gè)視圖又由一組圖(Diagram)構(gòu)成,圖包含了強(qiáng)調(diào)系統(tǒng)某一方面的信息兩類圖:靜態(tài)圖:包括用例圖、類圖、對(duì)象圖、構(gòu)件圖和部署圖動(dòng)態(tài)圖:包括狀態(tài)圖、時(shí)序圖、協(xié)作圖和活動(dòng)圖第五十一頁(yè),共198頁(yè)。UML的五種視圖:用例視圖:從用戶角度表達(dá)系統(tǒng)功能,使用用例圖和活動(dòng)圖結(jié)構(gòu)視圖:主要使用類圖和對(duì)象圖描述系統(tǒng)靜態(tài)結(jié)構(gòu),用狀態(tài)圖、順序圖、協(xié)作圖和活動(dòng)圖描述對(duì)象間實(shí)現(xiàn)給定功能時(shí)的動(dòng)態(tài)協(xié)作關(guān)系行為視圖:展示系統(tǒng)動(dòng)態(tài)行為及其并發(fā)性,用狀態(tài)圖、順序圖、協(xié)作圖、活動(dòng)圖、組件圖和部署圖描述實(shí)現(xiàn)視圖:展示系統(tǒng)實(shí)現(xiàn)的結(jié)構(gòu)和行為特征,用組件圖描述部署視圖:展示系統(tǒng)的實(shí)現(xiàn)環(huán)境和構(gòu)件是如何在物理結(jié)構(gòu)中部署的,用部署圖描述第五十二頁(yè),共198頁(yè)。第五十三頁(yè),共198頁(yè)。對(duì)象模型對(duì)象模型可以看成是數(shù)據(jù)流和語(yǔ)義數(shù)據(jù)模型的結(jié)合對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化系統(tǒng)的“數(shù)據(jù)”性質(zhì)它是對(duì)模擬客觀世界實(shí)體的對(duì)象,以及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)對(duì)象模型是一個(gè)類(包括其屬性和行為)、對(duì)象(類的實(shí)例)、類和(或)對(duì)象之間關(guān)系的定義集類名是一類對(duì)象的抽象命名,其命名是否恰當(dāng)對(duì)系統(tǒng)的可理解性影響相當(dāng)大,常用名詞短語(yǔ)對(duì)象模型還必須表示類/對(duì)象之間的結(jié)構(gòu)關(guān)系。類/對(duì)象之間的關(guān)系一般可概括為關(guān)聯(lián)、歸納(泛化)、組合(聚集)三類。第五十四頁(yè),共198頁(yè)。對(duì)象模型為建立動(dòng)態(tài)模型和功能模型,提供了實(shí)質(zhì)性的框架。使用UML提供的類圖來(lái)建立對(duì)象模型。在UML中術(shù)語(yǔ)“類”的實(shí)際含義是,“一個(gè)類及屬于該類的對(duì)象”。

類圖用來(lái)描述系統(tǒng)中類和類之間的關(guān)系,是系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖中還描述了類的屬性、操作、以及對(duì)模型中各種成分的約束。類圖包含有類、關(guān)聯(lián)和關(guān)系等模型元素。第五十五頁(yè),共198頁(yè)。類圖描述類及類與類之間的靜態(tài)關(guān)系。類圖是一種靜態(tài)模型,它是創(chuàng)建其他UML圖的基礎(chǔ)。一個(gè)系統(tǒng)可以由多張類圖來(lái)描述,一個(gè)類也可以出現(xiàn)在幾張類圖中。類圖的基本符號(hào)表示類的圖1.定義類UML中類的圖形符號(hào)為長(zhǎng)方形,用兩條橫線把長(zhǎng)方形分成上、中、下3個(gè)區(qū)域(下面兩個(gè)區(qū)域可省略),3個(gè)區(qū)域分別放類的名字、屬性和服務(wù)。第五十六頁(yè),共198頁(yè)。類名是一類對(duì)象的名字。為類命名時(shí)應(yīng)該遵守的幾條準(zhǔn)則:(1)使用標(biāo)準(zhǔn)術(shù)語(yǔ)。應(yīng)該使用在應(yīng)用領(lǐng)域中人們習(xí)慣的標(biāo)準(zhǔn)術(shù)語(yǔ)作為類名,不要隨意創(chuàng)造名字。例如,“交通信號(hào)燈”比“信號(hào)單元”這個(gè)名字好,“傳送帶”比“零件傳送設(shè)備”好。(2)使用具有確切含義的名詞。盡量使用能表示類的含義的日常用語(yǔ)作名字,不要使用空洞的或含義模糊的詞作名字。例如,“庫(kù)房”比“房屋”或“存物場(chǎng)所”更確切。(3)必要時(shí)用名詞短語(yǔ)作名字。為使名字的含義更準(zhǔn)確,必要時(shí)用形容詞加名詞或其他形式的名詞短語(yǔ)作名字。例如,“最小的領(lǐng)土單元”、“儲(chǔ)藏室”、“公司員工”等都是比較恰當(dāng)?shù)拿?4)名字要準(zhǔn)確而簡(jiǎn)要。第五十七頁(yè),共198頁(yè)。2.定義屬性

UML描述屬性的語(yǔ)法格式如下:可見性屬性名:類型名=初值{性質(zhì)串}屬性的可見性有3種:Public(+):公有的,對(duì)于一個(gè)給定的類,任何一個(gè)帶有可見性的外部類都可以使用該特征;Protected(#):受保護(hù)的,類的任何子類都可以使用該特征;Private(–):私有的,只有類本身可以使用該特征。如果未聲明可見性,則該屬性的可見性尚未定義。注意,沒有默認(rèn)的可見性。類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型第五十八頁(yè),共198頁(yè)。在創(chuàng)建類的實(shí)例時(shí)應(yīng)給其屬性賦值。類型名和初值之間用等號(hào)(=)隔開。用花括號(hào)括起來(lái)的性質(zhì)串明確地列出該屬性所有可能的取值。枚舉類型的屬性往往用性質(zhì)串列出可以選用的枚舉值,不同枚舉值之間用逗號(hào)分隔?!鞍l(fā)貨單”類的屬性“管理員”,在UML類圖中像下面那樣描述:-管理員:String=“未定”類的屬性中還可以有一種能被該類所有對(duì)象共享的屬性,稱為類的作用域?qū)傩裕卜Q為類變量。C++語(yǔ)言中的靜態(tài)數(shù)據(jù)成員就是這樣的屬性。類變量在類圖中表示為帶下劃線的屬性發(fā)貨單類的類變量“貨單數(shù)”,用來(lái)統(tǒng)計(jì)發(fā)貨單的總數(shù),在該類所有對(duì)象中這個(gè)屬性的值都是一樣的:-貨單數(shù):Integer第五十九頁(yè),共198頁(yè)。3.定義服務(wù)服務(wù)也就是操作,UML描述操作的語(yǔ)法格式如下:可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}操作可見性的定義方法與屬性相同。參數(shù)表是用逗號(hào)分隔的形式參數(shù)的序列。描述一個(gè)參數(shù)的語(yǔ)法如下:參數(shù)名:類型名=默認(rèn)值第六十頁(yè),共198頁(yè)。第六十一頁(yè),共198頁(yè)。

請(qǐng)理解:

(1)類的屬性中還可以有一種能被該類所有對(duì)象共享的屬性,稱為類的作用域?qū)傩?,也稱為類變量。(2)類變量在類圖中表示為帶下劃線的屬性。例如:發(fā)貨單類的類變量“貨單數(shù)”,用來(lái)統(tǒng)計(jì)發(fā)貨單的總數(shù),在該類所有對(duì)象中這個(gè)屬性的值都是一樣的:-貨單數(shù):Integer(3)與屬性類似,在類中也可定義類作用域操作,在類圖中表示為帶下劃線的操作。(4)這種操作只能存取本類的類作用域?qū)傩?。第六十二?yè),共198頁(yè)。抽象類(

abstract)–抽象類是不能直接產(chǎn)生實(shí)例的類–在UML中,將類名寫成斜體字來(lái)表示抽象類,也可以使用構(gòu)造型<<abstract>>?接口(Interface)–接口描述了一個(gè)類或構(gòu)件的服務(wù)(操作)集。–接口描述了一個(gè)元素的外部可見行為。第六十三頁(yè),共198頁(yè)。抽象類抽象類是指那些不具有任何對(duì)象的類,其作用是為其他的類描述它們的公共屬性和行為。(例如Vehicle)通常,抽象類具有一組抽象操作。一個(gè)擁有至少一個(gè)抽象操作的類必定是一個(gè)抽象類。UML采用斜體表示抽象元素的名稱;如果不用斜體字,也可使用{abstract}約束來(lái)表示。第六十四頁(yè),共198頁(yè)。第六十五頁(yè),共198頁(yè)。類圖由類及類與類之間的關(guān)系組成。類與類之間通常有關(guān)聯(lián)、聚集、泛化(繼承)、依賴和細(xì)化等4種關(guān)系。1.關(guān)聯(lián)

關(guān)聯(lián)表示兩個(gè)類的對(duì)象之間存在某種語(yǔ)義上的聯(lián)系。例如,作家使用計(jì)算機(jī),作家和計(jì)算機(jī)之間存在某種語(yǔ)義連接,在類圖中應(yīng)該在作家類和計(jì)算機(jī)類之間建立關(guān)聯(lián)關(guān)系。表示關(guān)系的符號(hào)第六十六頁(yè),共198頁(yè)。普通關(guān)聯(lián)示例第六十七頁(yè),共198頁(yè)。(1)普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號(hào)是連接兩個(gè)類之間的直線。通常,關(guān)聯(lián)是雙向的,可在一個(gè)方向上為關(guān)聯(lián)起一個(gè)名字,在另一個(gè)方向上起另一個(gè)名字(也可不起名字)。為避免混淆,在名字前面(或后面)加一個(gè)表示關(guān)聯(lián)方向的黑三角。第六十八頁(yè),共198頁(yè)。

在表示關(guān)聯(lián)的直線兩端可以寫上重?cái)?shù)(multiplicity),它表示該類有多少個(gè)對(duì)象與對(duì)方的一個(gè)對(duì)象連接。

重?cái)?shù)的表示方法通常有:0..1 表示0到1個(gè)對(duì)象0..*或* 表示0到多個(gè)對(duì)象1+或1..* 表示1到多個(gè)對(duì)象1..15 表示1到15個(gè)對(duì)象3 表示3個(gè)對(duì)象如果圖中未明確標(biāo)出關(guān)聯(lián)的重?cái)?shù),則默認(rèn)重?cái)?shù)是1。第六十九頁(yè),共198頁(yè)。公司董事會(huì)辦公室分配員工0..1*人員董事會(huì)成員0,3..8*董事會(huì)同時(shí)省略關(guān)聯(lián)名和角色名,默認(rèn)關(guān)聯(lián)名是has(有),省略重?cái)?shù)默認(rèn)1..1。每一個(gè)員工可能沒有或者只有一個(gè)辦公室每一個(gè)董事會(huì)沒有或者有3~8個(gè)董事會(huì)成員(有角色名,可以省略關(guān)聯(lián)名)第七十頁(yè),共198頁(yè)。在一些情況下關(guān)聯(lián)可能需要記錄一些信息,但這些信息不能放在任何一個(gè)類中,可引入一個(gè)關(guān)聯(lián)類記錄這些信息。如下圖:學(xué)生*選修*課程學(xué)生**課程選修成績(jī)學(xué)生*選修*成績(jī)課程一個(gè)多對(duì)多關(guān)聯(lián)?!俺煽?jī)”屬性不能放在任何一方(每個(gè)學(xué)生只有一個(gè)成績(jī)或每門課程只有一個(gè)成績(jī))創(chuàng)建一個(gè)關(guān)聯(lián)類來(lái)保存成績(jī)與帶有關(guān)聯(lián)類的多對(duì)多關(guān)聯(lián)等價(jià)的兩個(gè)一對(duì)多關(guān)聯(lián)的圖第七十一頁(yè),共198頁(yè)。例如:某公司有許多部門,部門名惟一地確定一個(gè)部門,每個(gè)部門生產(chǎn)多種產(chǎn)品,每種產(chǎn)品僅由一個(gè)部門生產(chǎn)。公司的員工分為經(jīng)理和工人兩類,每個(gè)工人可參加多個(gè)工程項(xiàng)目,每個(gè)項(xiàng)目需要多名工人,每位經(jīng)理可以主持多個(gè)項(xiàng)目,每個(gè)項(xiàng)目?jī)H有一人主持,同時(shí)一個(gè)經(jīng)理至少管理一個(gè)部門。畫出表示上述信息結(jié)構(gòu)的靜態(tài)模型第七十二頁(yè),共198頁(yè)。(2)關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會(huì)涉及到參與此關(guān)聯(lián)的對(duì)象所扮演的角色(即起的作用),在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。右圖是一個(gè)遞歸關(guān)聯(lián)(即一個(gè)類與它本身有關(guān)聯(lián)關(guān)系)。一個(gè)人與另一個(gè)人結(jié)婚,必然一個(gè)人扮演丈夫的角色,另一個(gè)人扮演妻子的角色。第七十三頁(yè),共198頁(yè)。(3)限定關(guān)聯(lián)

限定關(guān)聯(lián)通常用在一對(duì)多或多對(duì)多的關(guān)聯(lián)關(guān)系中,可以把模型中的重?cái)?shù)從一對(duì)多變成一對(duì)一,或從多對(duì)多簡(jiǎn)化成多對(duì)一。在類圖中把限定詞放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(nèi)。例如,某操作系統(tǒng)中一個(gè)目錄下有許多文件,一個(gè)文件僅屬于一個(gè)目錄,在一個(gè)目錄內(nèi)文件名確定了惟一一個(gè)文件。利用限定詞“文件名”表示了目錄與文件之間的關(guān)系。

用限定詞把一對(duì)多關(guān)系簡(jiǎn)化成了一對(duì)一關(guān)系。第七十四頁(yè),共198頁(yè)。(4)關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息,可以引入一個(gè)關(guān)聯(lián)類來(lái)記錄這些信息。關(guān)聯(lián)中的每個(gè)連接與關(guān)聯(lián)類的一個(gè)對(duì)象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。第七十五頁(yè),共198頁(yè)。在一些情況下關(guān)聯(lián)可能需要記錄一些信息,但這些信息不能放在任何一個(gè)類中,可引入一個(gè)關(guān)聯(lián)類記錄這些信息。如下圖:學(xué)生*選修*課程學(xué)生**課程選修成績(jī)學(xué)生*選修*成績(jī)課程一個(gè)多對(duì)多關(guān)聯(lián)?!俺煽?jī)”屬性不能放在任何一方(每個(gè)學(xué)生只有一個(gè)成績(jī)或每門課程只有一個(gè)成績(jī))創(chuàng)建一個(gè)關(guān)聯(lián)類來(lái)保存成績(jī)與帶有關(guān)聯(lián)類的多對(duì)多關(guān)聯(lián)等價(jià)的兩個(gè)一對(duì)多關(guān)聯(lián)的圖第七十六頁(yè),共198頁(yè)。連接有4個(gè)存儲(chǔ)著控制器和按鈕的請(qǐng)求服務(wù)信息

例如,右圖是一個(gè)電梯系統(tǒng)的類模型,隊(duì)列就是電梯控制器類與電梯類的關(guān)聯(lián)關(guān)系上的關(guān)聯(lián)類。從圖中可以看出,一個(gè)電梯控制器控制著4臺(tái)電梯,這樣,控制器和電梯之間的實(shí)際連接就有4個(gè),每個(gè)連接都對(duì)應(yīng)一個(gè)隊(duì)列(對(duì)象),每個(gè)隊(duì)列(對(duì)象)存儲(chǔ)著來(lái)自控制器和電梯內(nèi)部按鈕的請(qǐng)求服務(wù)信息。電梯控制器通過讀取隊(duì)列信息,選擇一個(gè)合適的電梯為乘客服務(wù)。關(guān)聯(lián)類示例第七十七頁(yè),共198頁(yè)。2.聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。

是表示“整體-部分”的特殊關(guān)聯(lián)聚集表示類之間的關(guān)系是整體與部分的關(guān)系。在陳述需求時(shí)使用的“包含”、“組成”、“分為……部分”等字句,往往意味著存在聚集關(guān)系。

整體類部分類項(xiàng)目人員1*類的聚合第七十八頁(yè),共198頁(yè)。(1)共享聚集如果在聚集關(guān)系中處于部分方的對(duì)象可同時(shí)參與多個(gè)處于整體方對(duì)象的構(gòu)成,則該聚集稱為共享聚集。例如,一個(gè)課題組包含許多成員,每個(gè)成員又可以是另一個(gè)課題組的成員,則課題組和成員之間是共享聚集關(guān)系。一般聚集和共享聚集的圖示符號(hào),都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個(gè)空心菱形。第七十九頁(yè),共198頁(yè)。(2)組合聚集組合(composition)是一種強(qiáng)類型的聚合,整體類和部分類共存亡,如果整體類被撤銷,部分類也不存在。部分類的存在只是為整體類服務(wù)。

組成關(guān)系用實(shí)心菱形表示。

例如,在屏幕上打開一個(gè)窗口,它就由文本框、列表框、按鈕和菜單組成,一旦關(guān)閉了窗口,各個(gè)組成部分也同時(shí)消失,窗口和它的組成部分之間存在著組合聚集關(guān)系。第八十頁(yè),共198頁(yè)。3.泛化

由一個(gè)超類和幾個(gè)直接子類構(gòu)成的結(jié)構(gòu)通常稱為泛化。類的這種關(guān)系也稱為一般-特殊關(guān)系或繼承關(guān)系,將現(xiàn)實(shí)世界實(shí)體的共同特性抽象為一般類,通過增加獨(dú)有的特性而成為各種特殊類。如圖所示:一般類特殊類人員教師學(xué)生

UML中的泛化關(guān)系就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。在UML中,用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。

泛化針對(duì)類型而不針對(duì)實(shí)例,一個(gè)類可以繼承另一個(gè)類,但一個(gè)對(duì)象不能繼承另一個(gè)對(duì)象。第八十一頁(yè),共198頁(yè)。(1)普通泛化沒有具體對(duì)象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時(shí),在類名下方附加一個(gè)標(biāo)記值{abstract}

。第八十二頁(yè),共198頁(yè)。右圖下方的兩個(gè)折角矩形是模型元素“筆記”的符號(hào),其中的文字是注釋,分別說明兩個(gè)子類的操作drive的功能。第八十三頁(yè),共198頁(yè)。

抽象類通常都具有抽象操作。抽象操作僅用來(lái)指定該類的所有子類應(yīng)具有哪些行為。抽象操作的圖示方法與抽象類相似,在操作標(biāo)記后面跟隨一個(gè)性質(zhì)串{abstract}。與抽象類相反的類是具體類,具體類有自己的對(duì)象,并且該類的操作都有具體的實(shí)現(xiàn)方法。下面給出一個(gè)比較復(fù)雜的類圖示例,這個(gè)例子綜合應(yīng)用了前面講過的許多概念和圖示符號(hào)。第八十四頁(yè),共198頁(yè)。復(fù)雜類圖示例第八十五頁(yè),共198頁(yè)。(2)受限泛化可以給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化關(guān)系的使用方法或擴(kuò)充方法,這樣的泛化關(guān)系稱為受限泛化。預(yù)定義的約束有4種:多重、不相交、完全和不完全。這些約束都是語(yǔ)義約束。請(qǐng)理解:a.多重繼承,用{多重}約束;b.不相交繼承,默認(rèn)的繼承;c.完全繼承,用{完全}約束;d.不完全繼承,默認(rèn)關(guān)系。第八十六頁(yè),共198頁(yè)。4.依賴和細(xì)化(1)依賴關(guān)系依賴關(guān)系描述兩個(gè)模型元素(類、用例等)之間的語(yǔ)義連接關(guān)系:其中一個(gè)模型元素是獨(dú)立的,另一個(gè)模型元素不是獨(dú)立的,它依賴于獨(dú)立的模型元素,如果獨(dú)立的模型元素改變了,將影響依賴于它的模型元素。在UML的類圖中,用帶箭頭的虛線連接有依賴關(guān)系的兩個(gè)類,箭頭指向獨(dú)立的類。在虛線上可以帶一個(gè)版類標(biāo)簽,具體說明依賴的種類。表示一個(gè)友元依賴關(guān)系,該關(guān)系使得B類的操作可以使用A類中私有的或保護(hù)的成員。第八十七頁(yè),共198頁(yè)。

依賴的形式可能是多樣的,針對(duì)不同的依賴的形式,依賴關(guān)系有不同的變體(varieties):

<1>抽象(abstraction):從一個(gè)對(duì)象中提取一些特性,并用類方法表示。

<2>綁定(binding):為模板參數(shù)指定值,以定義一個(gè)新的模板元素。

<3>組合(combination):對(duì)不同類或包進(jìn)行性質(zhì)相似融合。

<4>許可(permission):允許另一個(gè)對(duì)象對(duì)本對(duì)象的訪問。

<5>使用(usage):聲明使用一個(gè)模型元素需要用到已存在的另一個(gè)模型元素,這樣才能正確實(shí)現(xiàn)使用者的功能(包括調(diào)用、實(shí)例化、參數(shù)、發(fā)送)。

<6>跟蹤(trace):聲明不同模型中元素的之間的存在一些連接。

<7>訪問或連接(access):允許一個(gè)包訪問另一個(gè)包的內(nèi)容。

<8>調(diào)用(call):聲明一個(gè)類調(diào)用其他類的操作的方法。

<9>導(dǎo)出(derive):聲明一個(gè)實(shí)例可從另一個(gè)實(shí)例導(dǎo)出。

<10>友元(friend):允許一個(gè)元素訪問另一個(gè)元素,不管被訪問的元素是否具有可見性。

<11>引入(import):允許一個(gè)包訪問另一個(gè)包的內(nèi)容并被訪問組成部分增加別名。

<12>實(shí)例(instantiation):關(guān)于一個(gè)類的方法創(chuàng)建了另一個(gè)類的實(shí)例聲明。

<13>參數(shù)(parameter):一個(gè)操作和它參數(shù)之間的關(guān)系。

<14>實(shí)現(xiàn)(realize):說明和其實(shí)之間的關(guān)系。

<15>精化(refine):聲明具有兩個(gè)不同語(yǔ)義層次上的元素之間的映射。

<16>發(fā)送(send):信號(hào)發(fā)送者和信號(hào)接收者之間的關(guān)系。第八十八頁(yè),共198頁(yè)。(2)細(xì)化關(guān)系當(dāng)對(duì)同一個(gè)事物在不同抽象層次上描述時(shí),這些描述之間具有細(xì)化關(guān)系。假設(shè)兩個(gè)模型元素A和B描述同一個(gè)事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。細(xì)化的圖示符號(hào)為由元素B指向元素A的、一端為空心三角形的虛線。細(xì)化用來(lái)協(xié)調(diào)不同階段模型之間的關(guān)系,表示各個(gè)開發(fā)階段不同抽象層次的模型之間的相關(guān)性,常常用于跟蹤模型的演變。第八十九頁(yè),共198頁(yè)。第九十頁(yè),共198頁(yè)。對(duì)象圖的使用相當(dāng)有限,主要用于表達(dá)數(shù)據(jù)結(jié)構(gòu)的示例,以及了解系統(tǒng)在某個(gè)特定時(shí)刻的具體靜態(tài)結(jié)構(gòu)。補(bǔ)充內(nèi)容第九十一頁(yè),共198頁(yè)。第九十二頁(yè),共198頁(yè)。第九十三頁(yè),共198頁(yè)。動(dòng)態(tài)模型動(dòng)態(tài)模型表示瞬間的、行為化的系統(tǒng)“控制”性質(zhì),它規(guī)定了對(duì)象模型中對(duì)象的合法變化序列。對(duì)象運(yùn)行周期中的階段就是對(duì)象的狀態(tài)。對(duì)象狀態(tài)是對(duì)對(duì)象屬性的一種抽象。對(duì)象之間相互觸發(fā)/作用的行為(稱為事件),引起了一系列的狀態(tài)變化。事件是某個(gè)特定時(shí)刻所發(fā)生的一個(gè)系統(tǒng)行為,它是對(duì)引起對(duì)象從一種狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的現(xiàn)實(shí)世界事件的抽象。對(duì)象對(duì)事件的響應(yīng),取決于接受該觸發(fā)的對(duì)象當(dāng)時(shí)所處的狀態(tài),其響應(yīng)包括改變自己的狀態(tài),或者是形成一個(gè)新的觸發(fā)行為(事件)。動(dòng)態(tài)模型描繪了對(duì)象的狀態(tài),觸發(fā)狀態(tài)轉(zhuǎn)換的事件,以及對(duì)象行為(對(duì)事件的響應(yīng))。第九十四頁(yè),共198頁(yè)。請(qǐng)理解:

(1)一個(gè)觸發(fā)行為稱作一個(gè)事件。(2)狀態(tài)有持續(xù)性,它占用一段時(shí)間間隔。(3)狀態(tài)與事件密不可分,一個(gè)事件分開兩個(gè)狀態(tài),一個(gè)狀態(tài)隔開兩個(gè)事件。(4)事件表示時(shí)刻,狀態(tài)代表時(shí)間間隔。第九十五頁(yè),共198頁(yè)。通常,用UML提供的狀態(tài)圖來(lái)描繪對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為(對(duì)事件的響應(yīng))。每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來(lái)描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來(lái),從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。也就是說,動(dòng)態(tài)模型是基于事件共享而互相關(guān)聯(lián)的一組狀態(tài)圖(StatechartDiagram)的集合。第九十六頁(yè),共198頁(yè)。狀態(tài)圖用于表現(xiàn)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的控制流。由表示狀態(tài)的節(jié)點(diǎn)和表示狀態(tài)之間轉(zhuǎn)換的帶箭頭的直線組成。UML狀態(tài)圖的元素有:狀態(tài)轉(zhuǎn)移事件

第九十七頁(yè),共198頁(yè)。狀態(tài)是指在對(duì)象生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件的一個(gè)條件和狀況,用圓角矩形表示。例如:打印機(jī)printer在工作時(shí)可能有6種狀態(tài):“就緒”(Ready),“打印”(Print),“缺紙”(Lackpaper),“忙”(Busy),“暫?!保≒ause)和“停止”(Stop)。這里具體的打印機(jī)在UML中就表示為對(duì)象,而它工作時(shí)可能出現(xiàn)的狀態(tài)則是狀態(tài)圖中的狀態(tài)。第九十八頁(yè),共198頁(yè)。狀態(tài)的組成部分1.名稱(name)是可以把該狀態(tài)和其他狀態(tài)區(qū)分開的字符串;狀態(tài)也可能是匿名的,即沒有名稱。2.進(jìn)入/退出動(dòng)作(entry/exitaction)分別指進(jìn)入和退出這個(gè)狀態(tài)時(shí)所執(zhí)行的動(dòng)作。3.內(nèi)部轉(zhuǎn)換(internaltransition)不會(huì)導(dǎo)致狀態(tài)改變的轉(zhuǎn)換。4.子狀態(tài)(substate)主要是在狀態(tài)的嵌套結(jié)構(gòu)中,包括不相交(順序活動(dòng))或并發(fā)(并發(fā)活動(dòng))子狀態(tài)。5.延遲事件(deferredevent)是指在該狀態(tài)下暫不處理,但將推遲到該對(duì)象的另一個(gè)狀態(tài)下排隊(duì)處理的事件列表。第九十九頁(yè),共198頁(yè)。轉(zhuǎn)換(轉(zhuǎn)移)轉(zhuǎn)換是兩個(gè)狀態(tài)間的一種關(guān)系,表示對(duì)象將在當(dāng)前狀態(tài)中執(zhí)行動(dòng)作,并在某個(gè)特定事件發(fā)生或某個(gè)特定的條件滿足時(shí)進(jìn)入后繼狀態(tài)。在轉(zhuǎn)換激活之前,稱對(duì)象處于源狀態(tài);激活后,就稱對(duì)象處于目標(biāo)狀態(tài)。第一百頁(yè),共198頁(yè)。轉(zhuǎn)換的組成部分源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài)觸發(fā)事件:用來(lái)為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、信號(hào)、時(shí)間四類事件監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、

動(dòng)作:轉(zhuǎn)換激活時(shí)的操作

第一百零一頁(yè),共198頁(yè)。狀態(tài)轉(zhuǎn)換的類型第一百零二頁(yè),共198頁(yè)。與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過其監(jiān)護(hù)條件不同。如果對(duì)象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處于off狀態(tài);如果[有水]則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動(dòng)作。

而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開了”就執(zhí)行turnOff,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了

第一百零三頁(yè),共198頁(yè)。POS機(jī)的一個(gè)簡(jiǎn)單的狀態(tài)圖UML狀態(tài)圖元素有:狀態(tài):指對(duì)象在事件發(fā)生之間某時(shí)刻所處的情形,用圓角矩形表示。轉(zhuǎn)移:指兩個(gè)狀態(tài)之間的關(guān)系,它表明當(dāng)某事件發(fā)生時(shí),對(duì)象從先前狀態(tài)轉(zhuǎn)換到后來(lái)的狀態(tài),用帶有標(biāo)記事件的箭頭表示。事件:某個(gè)事情的發(fā)生。“處理銷售”用例的狀態(tài)圖第一百零四頁(yè),共198頁(yè)。ATM機(jī)的狀態(tài)圖第一百零五頁(yè),共198頁(yè)。ATM機(jī)的狀態(tài)圖思考:短信系統(tǒng)的狀態(tài)圖第一百零六頁(yè),共198頁(yè)。第一百零七頁(yè),共198頁(yè)。第一百零八頁(yè),共198頁(yè)。第一百零九頁(yè),共198頁(yè)。第一百一十頁(yè),共198頁(yè)。功能模型功能模型表示變化的系統(tǒng)的“功能”性質(zhì),指明了系統(tǒng)應(yīng)該“做什么”。它更直接地反映了用戶對(duì)目標(biāo)系統(tǒng)的需求。面向?qū)ο笫且杂美?qū)動(dòng)的。用例站在用戶的角度描述用戶的交互過程,有助于軟件開發(fā)人員更深入地理解問題域,改進(jìn)和完善分析和設(shè)計(jì)。對(duì)象模型、動(dòng)態(tài)模型和功能模型相輔相承,使得對(duì)系統(tǒng)的需求分析和設(shè)計(jì)描述更加直觀、全面。對(duì)象模型是最基本、最重要的,它為其他兩種模型奠定了基礎(chǔ)。第一百一十一頁(yè),共198頁(yè)。7.2用例建模需求捕獲的目標(biāo):發(fā)現(xiàn)真正的需求以適用于用戶、客戶和開發(fā)人員的方式表示用例建模技術(shù),用于描述系統(tǒng)的功能需求。在宏觀上給出模型的總體輪廓。通過對(duì)典型用例的分析,使開發(fā)者能夠有效地了解用戶的需求。系統(tǒng)用戶表示為一個(gè)參與者(actor)參與者在與用例進(jìn)行交互時(shí)使用系統(tǒng)用例向參與者提供某些有價(jià)值結(jié)果而執(zhí)行一些動(dòng)作序列使用UML分析建模,將從開發(fā)用例圖、活動(dòng)圖和泳道圖形式的場(chǎng)景開始第一百一十二頁(yè),共198頁(yè)。

Robustness分析技術(shù)IvarJacobson曾提出了一種健壯性分析(俗稱魯棒分析)技術(shù)。魯棒分析是在用例模型的基礎(chǔ)上所做的進(jìn)一步分析,幫助對(duì)用例模型的正確性、完善性進(jìn)行檢查,并從中發(fā)現(xiàn)一些新的對(duì)象及類,以及相關(guān)的責(zé)任,從而對(duì)分析模型的完善提供了支持。

第一百一十三頁(yè),共198頁(yè)。魯棒分析過程:(1)分析用例描述中的事件流尋找邊界對(duì)象。一般以參與者為線索,在什么地方發(fā)請(qǐng)求,以什么方式發(fā)情求,…。細(xì)節(jié)部分可在用戶界面設(shè)計(jì)中考慮。(2)找出相關(guān)的實(shí)體對(duì)象。實(shí)體對(duì)象一般對(duì)應(yīng)于問題域中的概念類。(3)分析用例描述,針對(duì)事件、責(zé)任、主要的業(yè)務(wù)邏輯設(shè)置控制對(duì)象。

第一百一十四頁(yè),共198頁(yè)。訪談業(yè)務(wù)所屬人獲取高層的功能性需求

訪談項(xiàng)目干系人獲得所有的功能性和非功能性需求

通過SRS文檔確定項(xiàng)目約束和風(fēng)險(xiǎn)

通過SRS文檔中的功能性需求創(chuàng)建數(shù)據(jù)字典

通過SRS文檔創(chuàng)建初始用例圖

業(yè)務(wù)所屬者腦海中的模型項(xiàng)目干系人腦海中的模型愿景文檔SRS初始第一百一十五頁(yè),共198頁(yè)。精化用例分析用例場(chǎng)景發(fā)現(xiàn)更多的細(xì)節(jié)在分析的基礎(chǔ)上精華用例圖用活動(dòng)圖驗(yàn)證用例用CRC分析法確定關(guān)鍵抽象表述域模型中關(guān)鍵抽象之間的關(guān)系使用從用例場(chǎng)景中得的對(duì)象圖來(lái)驗(yàn)證域模型SRS用例表格第一百一十六頁(yè),共198頁(yè)。open()close()edit()save()edit()CleanDirty使用魯棒性分析為用例創(chuàng)建一個(gè)設(shè)計(jì)模型通過合并設(shè)計(jì)和架構(gòu)模型來(lái)創(chuàng)建解決方案模型精化域模型來(lái)滿足解決方案模型應(yīng)用設(shè)計(jì)模式到域模型和解決方案模型中使用狀態(tài)圖確定并建立復(fù)雜對(duì)象狀態(tài)的模型ServerClientTCP用例表魯棒分析第一百一十七頁(yè),共198頁(yè)。解決方案可依據(jù)架構(gòu)師的設(shè)計(jì),進(jìn)行最終的解決方案設(shè)計(jì);通常可套用開源框架或公司內(nèi)部平臺(tái)框架。第一百一十八頁(yè),共198頁(yè)。用例模型(Usecasemodel)

用例模型描述外部執(zhí)行者(Actor)所理解的系統(tǒng)功能。即待開發(fā)系統(tǒng)的功能需求。它驅(qū)動(dòng)了需求分析之后各階段的開發(fā)工作,還被用于驗(yàn)證和檢測(cè)所開發(fā)的系統(tǒng),影響了UML的各個(gè)模型。用例模型由若干個(gè)用例圖構(gòu)成,用例圖中主要描述執(zhí)行者和用例之間的關(guān)系。在UML中,構(gòu)成用例圖的主要元素是用例和執(zhí)行者及其它們之間的聯(lián)系。創(chuàng)建用例模型的工作包括:定義系統(tǒng)、確定執(zhí)行者和用例、描述用例、定義用例間的關(guān)系、確認(rèn)模型。第一百一十九頁(yè),共198頁(yè)。

如何建立用例模型

建立系統(tǒng)用例模型的過程就是對(duì)系統(tǒng)進(jìn)行功能需求分析的過程。定義系統(tǒng)確定執(zhí)行者和用例描述執(zhí)行者和用例關(guān)系確認(rèn)模型●確定系統(tǒng)范圍;●分析系統(tǒng)功能。

●執(zhí)行者通常是使用系統(tǒng)功能的外部用戶或系統(tǒng)?!裼美且粋€(gè)子系統(tǒng)或系統(tǒng)的一個(gè)獨(dú)立、完整功能。各模型元素之間有:關(guān)聯(lián)、使用、擴(kuò)展及泛化等關(guān)系。確認(rèn)用例模型與用戶需求的一致性,通常由用戶與開發(fā)者共同完成。第一百二十頁(yè),共198頁(yè)。編寫用例用例著眼于為用戶增加價(jià)值,提供了一種捕獲功能需求的系統(tǒng)且直觀的方法,可驅(qū)動(dòng)整個(gè)開發(fā)過程。用例從某個(gè)特定參與者的角度用簡(jiǎn)單易懂的語(yǔ)言說明一個(gè)特定的使用場(chǎng)景。要開始開發(fā)用例,應(yīng)列出特定參與者執(zhí)行的功能或者活動(dòng)。用例模型幫助客戶、用戶和開發(fā)人員在如何使用系統(tǒng)方面達(dá)成共識(shí)。用例圖描述部分用例模型,顯示帶有聯(lián)系的用例和參與者的集合第一百二十一頁(yè),共198頁(yè)。一幅用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。1.系統(tǒng)系統(tǒng)被看作是一個(gè)提供用例的黑盒子。代表系統(tǒng)的方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。代表外部實(shí)體的行為者置于方框外。用例圖第一百二十二頁(yè),共198頁(yè)。自動(dòng)售貨機(jī)系統(tǒng)用例圖第一百二十三頁(yè),共198頁(yè)。2.用例一個(gè)用例是可以被行為者感受到的、系統(tǒng)的一個(gè)完整的功能。在UML中把用例定義成系統(tǒng)完成的一系列動(dòng)作,動(dòng)作的結(jié)果能被特定的行為者察覺到。這些動(dòng)作除了完成系統(tǒng)內(nèi)部的計(jì)算與工作外,還包括與一些行為者的通信。

用例具有下述特征:(1)用例代表某些用戶可見的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo);(2)用例總是被行為者啟動(dòng)的,并向行為者提供可識(shí)別的值;(3)用例必須是完整的。第一百二十四頁(yè),共198頁(yè)。如何確定用例:1、與系統(tǒng)實(shí)現(xiàn)有關(guān)的主要問題是什么?2、系統(tǒng)需要哪些輸入/輸出?這些輸入/輸出從何而來(lái)?到哪里去?3、執(zhí)行者需要系統(tǒng)提供哪些功能?4、執(zhí)行者是否需要對(duì)系統(tǒng)中的信息進(jìn)行讀、創(chuàng)建、修改、刪除或存儲(chǔ)?第一百二十五頁(yè),共198頁(yè)。注意,用例是一個(gè)類,它代表一類功能而不是使用該功能的某個(gè)具體實(shí)例。

用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法,通常把用例的實(shí)例稱為腳本。腳本是系統(tǒng)的一次具體執(zhí)行過程。例如,在自動(dòng)售貨機(jī)系統(tǒng)中,張三投入硬幣購(gòu)買礦泉水,系統(tǒng)收到錢后把礦泉水送出來(lái),上述過程就是一個(gè)腳本。又如:李四投幣買可樂,但是可樂已賣完了,于是系統(tǒng)給出提示信息并把錢退還給李四,這個(gè)過程是另一個(gè)腳本。第一百二十六頁(yè),共198頁(yè)。3.行為者(參與者)行為者是指與系統(tǒng)交互的人或其他系統(tǒng),它代表外部實(shí)體。參與者既可以是使用該系統(tǒng)的用戶,也可以是與系統(tǒng)交互的其他外部系統(tǒng)、硬件設(shè)備或組織機(jī)構(gòu)。

行為者代表一種角色,而不是某個(gè)具體的人或物。事實(shí)上,一個(gè)具體的人可以充當(dāng)多種不同角色。第一百二十七頁(yè),共198頁(yè)。如何確定執(zhí)行者:1、誰(shuí)使用系統(tǒng)的主要功能(主執(zhí)行者)?2、誰(shuí)需要從系統(tǒng)獲得對(duì)日常工作的支持和服務(wù)?3、需要誰(shuí)維護(hù)管理系統(tǒng)的日常運(yùn)行(副執(zhí)行者)?4、系統(tǒng)需要控制哪些硬件設(shè)備?5、系統(tǒng)需要與其它哪些系統(tǒng)交互?6、誰(shuí)需要使用系統(tǒng)產(chǎn)生的結(jié)果(值)?第一百二十八頁(yè),共198頁(yè)。在用例圖中用直線連接行為者和用例,表示兩者之間交換信息,稱為通信聯(lián)系。行為者觸發(fā)(激活)用例,并與用例交換信息。單個(gè)行為者可與多個(gè)用例聯(lián)系;反之,一個(gè)用例也可與多個(gè)行為者聯(lián)系。

實(shí)踐表明,行為者對(duì)確定用例是非常有用的。面對(duì)一個(gè)大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困難,可以先列出行為者清單,再針對(duì)每個(gè)行為者列出它的用例。這樣做可以比較容易地建立起用例模型。第一百二十九頁(yè),共198頁(yè)。4.用例之間的關(guān)系UML用例之間主要有擴(kuò)展和使用兩種關(guān)系,它們是泛化關(guān)系的兩種不同形式。(1)擴(kuò)展關(guān)系向一個(gè)用例中添加一些動(dòng)作后構(gòu)成了另一個(gè)用例,這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系。后者繼承前者的一些行為,通常把后者稱為擴(kuò)展用例。如:自動(dòng)售貨機(jī)系統(tǒng)。把提供售罐裝飲料的常規(guī)動(dòng)作放在“售貨”用例中,而把售散裝飲料的非常規(guī)動(dòng)作放置于“售散裝飲料”用例中。

這兩個(gè)用例之間的關(guān)系就是擴(kuò)展關(guān)系。第一百三十頁(yè),共198頁(yè)。含擴(kuò)展和使用關(guān)系的用例圖第一百三十一頁(yè),共198頁(yè)。(2)使用關(guān)系當(dāng)一個(gè)用例使用另一個(gè)用例時(shí),這兩個(gè)用例之間就構(gòu)成了使用關(guān)系。如果在若干個(gè)用例中有某些相同的動(dòng)作,則可以把這些相同的動(dòng)作提取出來(lái)單獨(dú)構(gòu)成一個(gè)用例(稱為抽象用例)。當(dāng)某個(gè)用例使用該抽象用例時(shí),就好像這個(gè)用例包含了抽象用例中的所有動(dòng)作。結(jié)論:(1)在描述一般行為的變化時(shí)采用擴(kuò)展關(guān)系;(2)在兩個(gè)或多個(gè)用例中出現(xiàn)重復(fù)描述又想避免這種重復(fù)時(shí),可以采用使用關(guān)系。第一百三十二頁(yè),共198頁(yè)。一個(gè)用例模型由若干幅用例圖組成。

創(chuàng)建用例模型的工作包括:定義系統(tǒng),尋找行為者和用例,描述用例,定義用例之間的關(guān)系,確認(rèn)模型。其中,尋找行為者和用例是關(guān)鍵。1.尋找行為者

a.誰(shuí)將使用系統(tǒng)的主要功能(主行為者)?b.誰(shuí)需要借助系統(tǒng)的支持來(lái)完成日常工作?c.誰(shuí)來(lái)維護(hù)和管理系統(tǒng)(副行為者)?d.系統(tǒng)控制哪些硬件設(shè)備?e.系統(tǒng)需要與哪些其他系統(tǒng)交互?f.哪些人或系統(tǒng)對(duì)本系統(tǒng)產(chǎn)生的結(jié)果感興趣?第一百三十三頁(yè),共198頁(yè)。2.尋找用例一旦找到了行為者,就可以通過請(qǐng)每個(gè)行為者回答下述問題來(lái)獲取用例:a.行為者需要系統(tǒng)提供哪些功能?行為者自身需要做什么?b.行為者是否需要讀取、創(chuàng)建、刪除、修改或存儲(chǔ)系統(tǒng)中的某類信息?c.系統(tǒng)中發(fā)生的事件需要通知行為者嗎?d.行為者需要通知系統(tǒng)某些事情嗎?e.從功能觀點(diǎn)看,這些事件能做什么?f.行為者的日常工作是否因?yàn)橄到y(tǒng)的新功能而被簡(jiǎn)化或提高了效率?第一百三十四頁(yè),共198頁(yè)。還有一些不是針對(duì)具體行為者而是針對(duì)整個(gè)系統(tǒng)的問題,也能幫助建模者發(fā)現(xiàn)用例。例如:g.系統(tǒng)需要哪些輸入輸出?輸入來(lái)自何處?輸出到哪里去?h.當(dāng)前使用的系統(tǒng)(可能是人工系統(tǒng))存在的主要問題是什么?

注意,最后這兩個(gè)問題并不意味著沒有行為者也可以有用例,只是在獲取用例時(shí)還不知道行為者是誰(shuí)。

事實(shí)上,一個(gè)用例必須至少與一個(gè)行為者相關(guān)聯(lián)。第一百三十五頁(yè),共198頁(yè)。POS機(jī)系統(tǒng)部分用例圖用例圖包括:參與者、用例、關(guān)聯(lián)和邊界四個(gè)要素。參與者:用小人形表示用例:用橢圓表示關(guān)聯(lián):用直線表示說明參與者驅(qū)動(dòng)某個(gè)用例邊界:用矩形框表示,說明系統(tǒng)關(guān)注點(diǎn)第一百三十六頁(yè),共198頁(yè)。開發(fā)用例用例使用非正式的描述性風(fēng)格編寫,也可以使用某個(gè)結(jié)構(gòu)化的格式編寫,有些格式更強(qiáng)調(diào)描述的直觀性。用例不同部分說明用例名稱以動(dòng)詞開始描述用例名稱范圍要設(shè)計(jì)的系統(tǒng)級(jí)別“用戶目標(biāo)”或者是“子功能”主要參與者調(diào)用系統(tǒng),使之交付服務(wù)渋眾及其關(guān)注點(diǎn)關(guān)注該用例的人,及其需要前置條件開始前必須為真的條件成功保證成功完成必須滿足的條件主成功場(chǎng)景典型的、無(wú)條件的、理想方式的成功場(chǎng)景擴(kuò)展成功或失敗的替代場(chǎng)景特殊需求相關(guān)的非功能性需求技術(shù)和數(shù)據(jù)變?cè)夭煌腎/O方法和數(shù)據(jù)格式發(fā)生頻率影響對(duì)實(shí)現(xiàn)的調(diào)查、測(cè)試和時(shí)間安排雜項(xiàng)未決問題等用例場(chǎng)景詳細(xì)描述的模板第一百三十七頁(yè),共198頁(yè)。POS機(jī)系統(tǒng)中“處理銷售”的場(chǎng)景用例名稱:處理銷售范圍:POS機(jī)應(yīng)用級(jí)別:用戶目標(biāo)主要參與者:收銀員涉眾及其關(guān)注點(diǎn):收銀員:希望能夠準(zhǔn)確、快速地輸入,而且沒有支付錯(cuò)誤,因?yàn)槿绻偈肇浛?,將從其薪水眾扣除。售貨員:希望自動(dòng)更新銷售提成顧客:希望以最小代價(jià)完成購(gòu)買活動(dòng)并得到快速服務(wù)。希望便捷、清晰地看到所輸入的商品項(xiàng)目和價(jià)格。希望得到購(gòu)買憑證,以便退貨。公司:希望準(zhǔn)確地記錄交易,滿足顧客要求。希望確保記錄了支付授權(quán)服務(wù)的支付票據(jù)。希望有一定的容錯(cuò)性,即便在某些服務(wù)器構(gòu)件不可用時(shí)(如遠(yuǎn)程信用卡驗(yàn)證),也能夠完成銷售。希望能夠自動(dòng)、快速地更新帳戶和庫(kù)存信息。經(jīng)理:希望能夠快速執(zhí)行超控操作,并易于更正收銀員的不當(dāng)操作。前置條件:收銀員必須經(jīng)過確認(rèn)和認(rèn)證。成功保證(或后置條件):存儲(chǔ)銷售信息,更新帳戶和庫(kù)存信息,記錄提成,生成票據(jù),記錄支付授權(quán)的批準(zhǔn)。第一百三十八頁(yè),共198頁(yè)。主成功場(chǎng)景1.顧客攜帶所購(gòu)商品或服務(wù)到收銀臺(tái)通過POS機(jī)付款。2.收銀員開始一次新的銷售交易。3.收銀員輸入商品條碼。4.系統(tǒng)逐步記錄出售的商品,并顯示該商品的描述、價(jià)格和累計(jì)額。價(jià)格通過一組價(jià)格規(guī)則來(lái)計(jì)算。收銀員重復(fù)3~~4步,直到輸入結(jié)束。5.系統(tǒng)顯示總額和計(jì)算折扣。6.收銀員告知顧客總額,并請(qǐng)顧客付款。7.顧客付款,系統(tǒng)處理支付。8.系統(tǒng)記錄完整的銷售信息,并將銷售和支付信息發(fā)送到外部的賬務(wù)系統(tǒng)(進(jìn)行賬務(wù)處理和提成)和庫(kù)存系統(tǒng)(更新庫(kù)存)。9.系統(tǒng)打印票據(jù)。10.顧客攜帶商品和票據(jù)離開。第一百三十九頁(yè),共198頁(yè)。開發(fā)活動(dòng)圖UML活動(dòng)圖通過提供特定的場(chǎng)景內(nèi)交流的圖形化表示來(lái)補(bǔ)充用例,它用于展現(xiàn)參與行為的類所進(jìn)行的各種活動(dòng)的順序關(guān)系.活動(dòng)圖符號(hào):兩端為半圓形的矩形表示一個(gè)特定的系統(tǒng)功能箭頭表示通過系統(tǒng)的流判定菱形表示判定分支水平線、分叉點(diǎn)和連接表示并發(fā)活動(dòng)對(duì)象節(jié)點(diǎn)表示活動(dòng)對(duì)象活動(dòng)圖通常能夠既表示控制流又表示數(shù)據(jù)流UML活動(dòng)圖代替?zhèn)鹘y(tǒng)的數(shù)據(jù)流圖(DataFlowDiagram)表示法第一百四十頁(yè),共198頁(yè)?!疤幚礓N售”用例中的

UML活動(dòng)圖活動(dòng)圖既可表示控制流又表示數(shù)據(jù)流,可替代傳統(tǒng)的DFD表示法。第一百四十一頁(yè),共198頁(yè)。活動(dòng)圖與狀態(tài)圖的區(qū)別:活動(dòng)圖著重表現(xiàn)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流,是內(nèi)部處理驅(qū)動(dòng)的流程。狀態(tài)圖著重描述從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的流程,主要有外部事件的參與。第一百四十二頁(yè),共198頁(yè)。例:圖書館管理系統(tǒng)的活動(dòng)圖1.借閱者的活動(dòng)圖2.圖書管理員的活動(dòng)圖3.系統(tǒng)管理員的活動(dòng)圖第一百四十三頁(yè),共198頁(yè)。1.借閱者的活動(dòng)圖第一百四十四頁(yè),共198頁(yè)。2.圖書管理員的活動(dòng)圖第一百四十五頁(yè),共198頁(yè)。3.系統(tǒng)管理員的活動(dòng)圖系統(tǒng)管理員維護(hù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論