




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章面向?qū)ο蠓治龇椒嫦驅(qū)ο蟮母拍钆c開發(fā)方法統(tǒng)一建模語言UML概述面向?qū)ο蠓治鯱ML建模工具RationalRose第4章面向?qū)ο蠓治龇椒嫦驅(qū)ο蟮母拍钆c開發(fā)方法4.1面向?qū)ο蟮母拍钆c開發(fā)方法現(xiàn)實(shí)世界就是由各種對象組成的,如建筑物、人、汽車、動(dòng)物、植物等。復(fù)雜的對象可以由簡單的對象組成。在研究對象時(shí)主要考慮對象的屬性和行為,有些不同的對象會呈現(xiàn)相同或相似的屬性和行為,如轎車、卡車、面包車。通常將屬性及行為相同或相似的對象歸為一類。類可以看成是對象的抽象,代表了此類對象所具有的共有屬性和行為。4.1面向?qū)ο蟮母拍钆c開發(fā)方法現(xiàn)實(shí)世界就是由各種對象組成4.1面向?qū)ο蟮母拍钆c開發(fā)方法Coad和Yourdon給出了“面向?qū)ο蟆钡囊粋€(gè)定義:
面向?qū)ο螅綄ο螅悾^承+消息通信如果一個(gè)系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則可認(rèn)為這個(gè)系統(tǒng)是面向?qū)ο蟮摹?/p>
4.1面向?qū)ο蟮母拍钆c開發(fā)方法Coad和Yourdon給出了
面向?qū)ο蠹夹g(shù)的發(fā)展歷史
初始階段1960’s:挪威奧斯陸大學(xué)和挪威計(jì)算中心共同研制了Simula語言1980’s:Xerox研究中心推出了Smalltalk語言和環(huán)境
面向?qū)ο蠹夹g(shù)的發(fā)展歷史
初始階段
面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù))
發(fā)展階段1980’s:理論基礎(chǔ),許多OO編程語言(如C++,Objective-C等)面向?qū)ο缶幊陶Z言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志
面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù))
發(fā)展階段
面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù))
成熟階段1990’s:面向?qū)ο蠓治龊驮O(shè)計(jì)方法(Booch,OMT,OOSE等),Java語言面向?qū)ο蟮姆治龊驮O(shè)計(jì)技術(shù)逐漸走向?qū)嵱茫罱K形成了從分析、設(shè)計(jì)到編程、測試與維護(hù)一整套的軟件工程體系
面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮木幊堂嫦驅(qū)ο蟮臏y試面向?qū)ο蟮能浖S護(hù)
面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù))
成熟階段面向?qū)ο竺嫦驅(qū)ο髥栴}域測試編程計(jì)算機(jī)編程語言自然語言需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)分析與設(shè)計(jì)的鴻溝分析與設(shè)計(jì)概念及表示法的不一致軟件工程學(xué)的作用——結(jié)構(gòu)化的軟件工程方法問題域測試編程計(jì)算機(jī)編程語言自然語言需求總體詳細(xì)分析與設(shè)計(jì)的問題域OOA計(jì)算機(jī)自然語言面向?qū)ο蟮木幊陶Z言O(shè)ODOOPOOT軟件工程學(xué)的作用——面向?qū)ο蟮能浖こ谭椒▎栴}域OOA計(jì)算機(jī)自然語言面向?qū)ο蟮腛ODOOPOOT軟件工一切都是對象
例題:編寫一個(gè)開發(fā)票程序,需要對發(fā)票的名細(xì)欄進(jìn)行計(jì)算。編號名稱規(guī)格單位數(shù)量單價(jià)金額合計(jì)非面向?qū)ο笏悸罚?定義數(shù)據(jù)結(jié)構(gòu) 定義函數(shù)面向?qū)ο笏悸罚簩ο笠唤M屬性操作:發(fā)票總計(jì)
……一切都是對象編號名稱規(guī)格單位數(shù)量單價(jià)金額合計(jì)非面向?qū)ο笏悸罚嚎陀^世界對象對象對象對象對象對象對象對象對象對象對象名屬性…操作…類類類類分類類繼承類類對象聚合抽象客觀事物及其間的聯(lián)系關(guān)聯(lián)用況圖類圖順序圖狀態(tài)圖活動(dòng)圖構(gòu)件圖OO模型對象對象對象對象對象對象對象對象計(jì)算機(jī)內(nèi)的對象編程構(gòu)成封裝運(yùn)行分析設(shè)計(jì)………………客觀世界對象對象對象對象對象對象對象對象對象對象對象名類類類對象對象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。例如,Student對象的數(shù)據(jù)可能有姓名、性別、出生日期、家庭住址、電話號碼等,其操作可能是對這些數(shù)據(jù)值的賦值及更改。對象對象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映了系統(tǒng)為之保對象對象與后面講的類具有幾乎完全相同的表示形式,主要差別是對象的名字下面要加一條下劃線。對象名有下列三種表示格式:(1)第一種格式是對象名在前,類名在后,中間用冒號連接。形如:
對象名:類名(2)第二種格式形如:
:類名這種格式用于尚未給對象命名的情況,注意,類名前的冒號不能省略。(3)第三種格式形如:
對象名對象對象與后面講的類具有幾乎完全相同的表示形式,主要差別是對對象對象有兩個(gè)層次的概念:(1)現(xiàn)實(shí)生活中對象指的是客觀世界的實(shí)體??梢允强梢姷挠行螌ο?,如人、學(xué)生、汽車、房屋等;也可以是抽象的邏輯對象,如銀行帳號,生日。(2)程序中對象就是一組變量和相關(guān)方法的集合,其中變量表明對象的狀態(tài),方法表明對象所具有的行為。對象對象有兩個(gè)層次的概念:對象可以將程序中的對象分為5類:物理對象,角色,事件,交互,規(guī)格說明。
物理對象(PhysicalObjects)──物理對象是最易識別的對象,通常可以在問題領(lǐng)域的描述中找到,它們的屬性可以標(biāo)識和測量。例如,大學(xué)課程注冊系統(tǒng)中的學(xué)生對象;一個(gè)網(wǎng)絡(luò)管理系統(tǒng)中各種網(wǎng)絡(luò)物理資源對象(如開關(guān)、CPU和打印機(jī))都是物理對象。對象可以將程序中的對象分為5類:物理對象,角色,事件,交互,對象(2)角色(Roles)──一個(gè)實(shí)體的角色也可以抽象成一個(gè)單獨(dú)的對象。角色對象的操作是由角色提供的技能。例如,一個(gè)面向?qū)ο笙到y(tǒng)中通常有“管理器”對象,它履行協(xié)調(diào)系統(tǒng)資源的角色。一個(gè)窗口系統(tǒng)中通常有“窗口管理器”對象,它扮演協(xié)調(diào)鼠標(biāo)器按鈕和其他窗口操作的角色。特別地,一個(gè)實(shí)際的物理對象可能同時(shí)承擔(dān)幾個(gè)角色。例如,一個(gè)退休教師同時(shí)扮演退休者和教師的角色。對象(2)角色(Roles)──一個(gè)實(shí)體的角色也可以抽象對象(3)事件(Events)──一個(gè)事件是某種活動(dòng)的一次“出現(xiàn)”。例如“鼠標(biāo)”事件。一個(gè)事件對象通常是一個(gè)數(shù)據(jù)實(shí)體,它管理“出現(xiàn)”的重要信息。事件對象的操作主要用于對數(shù)據(jù)的存取。如“鼠標(biāo)”事件對象有諸如光標(biāo)坐標(biāo)、左右鍵、單擊,雙擊等信息。對象(3)事件(Events)──一個(gè)事件是某種活動(dòng)的一對象(4)交互(Interactions)──交互表示了在兩個(gè)對象之間的關(guān)系,這種類型的對象類似于在數(shù)據(jù)庫設(shè)計(jì)時(shí)所涉及的“關(guān)系”實(shí)體。當(dāng)實(shí)體之間是多對多的關(guān)系時(shí),利用交互對象可將其簡化為兩個(gè)一對多的關(guān)系。例如,在大學(xué)課程注冊系統(tǒng)中,學(xué)生和課程之間的關(guān)系是多對多的關(guān)系,可設(shè)置一個(gè)“選課”交互對象來簡化它們之間的關(guān)系。對象(4)交互(Interactions)──交互表示了類與封裝類??梢詫F(xiàn)實(shí)生活中的對象經(jīng)過抽象,映射為程序中的對象。對象在程序中是通過一種抽象數(shù)據(jù)類型來描述的,這種抽象數(shù)據(jù)類型稱為類(Class)。為了讓計(jì)算機(jī)創(chuàng)建對象,必須先提供對象的定義,也就是先定義對象所屬的類。例如,可以將學(xué)生對象所屬的類定義為Student。類的圖形表示如圖所示。類與封裝類??梢詫F(xiàn)實(shí)生活中的對象經(jīng)過抽象,映射為程序中的對類與封裝封裝。面向?qū)ο蟮姆庋b特性與其抽象特性密切相關(guān)。封裝是一種信息隱蔽技術(shù),就是利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起。用戶只能看到對象的封裝界面信息,對象的內(nèi)部細(xì)節(jié)對用戶是隱蔽的。封裝的定義是:(1)清楚的邊界,所有對象的內(nèi)部信息被限定在這個(gè)邊界內(nèi);(2)接口,即對象向外界提供的方法,外界可以通過這些方法與對象進(jìn)行交互;(3)受保護(hù)的內(nèi)部實(shí)現(xiàn),即軟件對象功能的實(shí)現(xiàn)細(xì)節(jié),實(shí)現(xiàn)細(xì)節(jié)不能從類外訪問。類與封裝封裝。面向?qū)ο蟮姆庋b特性與其抽象特性密切相關(guān)。封裝是繼承繼承。繼承是一種聯(lián)結(jié)類的層次模型,為類的重用提供了方便,它提供了明確表述不同類之間共性的方法。我們將公共類稱為超類(superclass)、父類(fatherclass)、祖先(ancestor)或基類(baseclass),而從其繼承的類稱為子類(subclasses)、后代(deslendane)或?qū)С鲱悾╠erivedclass)。繼承繼承。繼承是一種聯(lián)結(jié)類的層次模型,為類的重用提供了方便,多態(tài)根據(jù)為請求提供服務(wù)的對象不同可以得到不同的行為,這種現(xiàn)象稱為多態(tài)。在運(yùn)行時(shí)對類進(jìn)行實(shí)例化,并調(diào)用與實(shí)例化對象相應(yīng)的方法,稱為動(dòng)態(tài)綁定、后期綁定或運(yùn)行時(shí)綁定。相應(yīng)地,如果方法的調(diào)用是在編譯時(shí)確定的,則稱為是靜態(tài)綁定、前期綁定或編譯時(shí)綁定。
通過在子類中覆蓋父類的方法實(shí)現(xiàn)多態(tài)。多態(tài)根據(jù)為請求提供服務(wù)的對象不同可以得到不同的行為,這種現(xiàn)象消息通信消息是一個(gè)對象與另一個(gè)對象的通信單元,是要求某個(gè)對象執(zhí)行類中定義的某個(gè)操作的規(guī)格說明。發(fā)送給一個(gè)對象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對象。一個(gè)對象接收到消息,則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。消息通信消息是一個(gè)對象與另一個(gè)對象的通信單元,是要求某個(gè)對象面向?qū)ο蟮拈_發(fā)方法面向?qū)ο筌浖_發(fā)方法的特征方法的唯一性
即方法是對軟件開發(fā)過程所有階段進(jìn)行綜合考慮而得到的。從生存期的一個(gè)階段到下一個(gè)階段的高度連續(xù)性
即生存期后一階段的成果只是在前一階段成果的補(bǔ)充和修改。把面向?qū)ο蠓治?OOA)、面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)集成到生存期的相應(yīng)階段。面向?qū)ο蟮拈_發(fā)方法面向?qū)ο筌浖_發(fā)方法的特征面向?qū)ο蟮拈_發(fā)方法Rumbaugh方法
Rumbaugh和他的同事提出的對象模型化技術(shù)(OMT)用于分析、系統(tǒng)設(shè)計(jì)和對象級設(shè)計(jì)。分析活動(dòng)建立三個(gè)模型:對象模型(描述對象、類、層次和關(guān)系);動(dòng)態(tài)模型(描述對象和系統(tǒng)的行為);功能模型(類似于高層的DFD,描述穿越系統(tǒng)的信息流)。面向?qū)ο蟮拈_發(fā)方法Rumbaugh方法
Rumbaugh面向?qū)ο蟮拈_發(fā)方法Coad和Yourdon方法
Coad和Yourdon方法常常被認(rèn)為是最容易學(xué)習(xí)的OOA方法。建模符號相當(dāng)簡單,其OOA過程如下:(1)使用“要找什么”準(zhǔn)則標(biāo)識對象;(2)定義對象之間的一般化/特殊化結(jié)構(gòu)(又稱為分類結(jié)構(gòu));(3)定義對象之間的整體/部分結(jié)構(gòu)(又稱為組合結(jié)構(gòu));(4)標(biāo)識主題;(5)定義對象的屬性及對象之間的實(shí)例連接;(6)定義服務(wù)及對象之間的消息連接。面向?qū)ο蟮拈_發(fā)方法Coad和Yourdon方法
Coad和面向?qū)ο蟮拈_發(fā)方法Booch方法
包含“微開發(fā)過程”和“宏開發(fā)過程”兩個(gè)過程。OOA宏觀開發(fā)過程如下:標(biāo)識類和對象;標(biāo)識類和對象的語義;標(biāo)識類和對象間的關(guān)系;進(jìn)行一系列精化;實(shí)現(xiàn)類和對象。面向?qū)ο蟮拈_發(fā)方法Booch方法面向?qū)ο蟮拈_發(fā)方法Jacobson方法也稱為OOSE(面向?qū)ο筌浖こ?,其特點(diǎn)是特別強(qiáng)調(diào)使用用例——用以描述用戶和產(chǎn)品或系統(tǒng)間如何交互的場景。過程如下:標(biāo)識系統(tǒng)的用戶和他們的整體責(zé)任構(gòu)造需求模型構(gòu)造分析模型
面向?qū)ο蟮拈_發(fā)方法Jacobson方法4.2統(tǒng)一建模語言UML概述面向?qū)ο蟮慕UZ言很多,目前使用最廣泛的是統(tǒng)一建模語言(UML,UnifiedModelingLanguage);它將Booch、Rumbaugh和Jacobson等各自獨(dú)立的OOA和OOD方法中最優(yōu)秀的特色組合成一個(gè)統(tǒng)一的方法。4.2統(tǒng)一建模語言UML概述面向?qū)ο蟮慕UZ言很多,目前使4.2.1UML的產(chǎn)生和發(fā)展UML(UnifiedModelingLanguage)的概念于1996年由面向?qū)ο蠓椒I(lǐng)域的三位著名專家GradyBooch,JamesRumbaugh和IvarJacobson提出的。1996年6月和10月分別發(fā)布了UML0.9,UML0.91。1997年1月,UML1.0被提交給對象管理組織OMG。1997年9月,提交UML1.1,1997年11月被OMG采納作為基于面向?qū)ο蠹夹g(shù)的標(biāo)準(zhǔn)建模語言。1998、2000、2001、2003、2005年分別發(fā)布了UML1.2、UML1.3、UML1.4、UML1.5、UML2.0。2007年發(fā)布了UML2.1.1,UML2.1.2。2009年發(fā)布了UML2.24.2.1UML的產(chǎn)生和發(fā)展UML(UnifiedUML的產(chǎn)生和發(fā)展UML的產(chǎn)生和發(fā)展UML的特點(diǎn)(1)統(tǒng)一標(biāo)準(zhǔn)
UML不僅統(tǒng)一了Booch、OMT和OOSE等方法中的基本概念,還吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域中其他流派的長處,其中也包括非OO方法的影響。已經(jīng)成為OMG的標(biāo)準(zhǔn)。(2)面向?qū)ο?/p>
UML支持面向?qū)ο蠹夹g(shù)的主要概念,它提供了一批基本的表示模型元素的圖形和方法,能簡潔明了地表達(dá)面向?qū)ο蟮母鞣N概念和模型元素。UML的特點(diǎn)(1)統(tǒng)一標(biāo)準(zhǔn)UML的特點(diǎn)(3)可視化,表達(dá)能力強(qiáng)大UML是一種圖形化語言,用UML的模型圖形能清晰地表示系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型。UML還提供了語言的擴(kuò)展機(jī)制,用戶可以根據(jù)需要增加定義自己的構(gòu)造型、標(biāo)記值和約束等。(4)獨(dú)立于過程
UML是系統(tǒng)建模的語言,不依賴特定的開發(fā)過程。UML的特點(diǎn)(3)可視化,表達(dá)能力強(qiáng)大UML的特點(diǎn)(5)容易掌握使用
UML概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。(6)與編程語言的關(guān)系
支持UML的一些CASE工具(如Rose)可以根據(jù)UML所建立的系統(tǒng)模型自動(dòng)產(chǎn)生Java、C++等代碼框架。UML的特點(diǎn)(5)容易掌握使用4.2.2UML的基本模型UML符號為開發(fā)者或開發(fā)工具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標(biāo)準(zhǔn)。這些圖形符號和文字所表達(dá)的是應(yīng)用級的模型,在語義上它是UML元模型的實(shí)例。UML模型由事物、關(guān)系和圖組成4.2.2UML的基本模型UML符號為開發(fā)者或開發(fā)工具使用4.2.2UML的基本模型4.2.2UML的基本模型4.2.3UML的事物事物是對模型中最具代表性成分的抽象,在UML中,可以分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。4.2.3UML的事物事物是對模型中最具代表性成分的抽象,結(jié)構(gòu)事物結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來描述概念的或物理的元素,包括類、主動(dòng)類、接口、對象、用例、參與者、協(xié)作、構(gòu)件和節(jié)點(diǎn)等。(1)類(class)──類用帶有類名、屬性和操作的矩形框來表示。結(jié)構(gòu)事物結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來描述概念的或結(jié)構(gòu)事物(2)主動(dòng)類(activeclass)──主動(dòng)類的實(shí)例應(yīng)具有一個(gè)或多個(gè)進(jìn)程或線程,能夠啟動(dòng)控制活動(dòng)。結(jié)構(gòu)事物(2)主動(dòng)類(activeclass)──主動(dòng)類(3)接口(interface)──描述了一個(gè)類或構(gòu)件的一組外部可用的服務(wù)(操作)集。接口定義的是一組操作的描述,而不是操作的實(shí)現(xiàn)。一般將接口畫成從實(shí)現(xiàn)它的類或構(gòu)件引出的圓圈,接口體現(xiàn)了使用與實(shí)現(xiàn)分離的原則。(3)接口(interface)──描述了一個(gè)類或構(gòu)件的一結(jié)構(gòu)事物(4)對象(object)──對象是類的實(shí)例,其名字下邊加下劃線,對象的屬性值需明確給出。(5)用例(usecase)──也稱用況,用于表示系統(tǒng)想要實(shí)現(xiàn)的行為,即描述一組動(dòng)作序列(即場景)。而系統(tǒng)執(zhí)行這組動(dòng)作后將產(chǎn)生一個(gè)對特定參與者有價(jià)值的結(jié)果。結(jié)構(gòu)事物(4)對象(object)──對象是類的實(shí)例,其名結(jié)構(gòu)事物(6)參與者(actor)──也稱角色,是指與系統(tǒng)有信息交互關(guān)系的人、軟件系統(tǒng)或硬件設(shè)備,在圖形上用簡化的小木頭人表示。(7)協(xié)作(collaboration)──用例僅描述要實(shí)現(xiàn)的行為,不描述這些行為的實(shí)現(xiàn)。這種實(shí)現(xiàn)用協(xié)作描述。協(xié)作定義交互,描述一組角色實(shí)體和其他實(shí)體如何通過協(xié)同工作來完成一個(gè)功能或行為。類可以參與幾個(gè)協(xié)作。結(jié)構(gòu)事物(6)參與者(actor)──也稱角色,是指與系統(tǒng)結(jié)構(gòu)事物(8)構(gòu)件(component)──也稱組件,是系統(tǒng)中物理的、可替代的部件。它通常是描述一些邏輯元素的物理包。(9)節(jié)點(diǎn)(node)──是在運(yùn)行時(shí)存在的物理元素。它代表一種可計(jì)算的資源,通常具有一定的記憶能力和處理能力。結(jié)構(gòu)事物(8)構(gòu)件(component)──也稱組件,是系行為事物行為事物是UML模型的動(dòng)態(tài)部分,包括兩類:(1)交互(interaction)──交互由在特定的上下文環(huán)境中共同完成一定任務(wù)的一組對象之間傳遞的消息組成。如圖所示。交互涉及的元素包括消息、動(dòng)作序列(由一個(gè)消息所引起的行為)和鏈(對象間的連接)。對象之間的交互行為事物行為事物是UML模型的動(dòng)態(tài)部分,包括兩類:對象之間的行為事物(2)狀態(tài)機(jī)(statemachine)──描述了一個(gè)對象或一個(gè)交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,單個(gè)類或者一組類之間協(xié)作的行為都可以用狀態(tài)機(jī)來描述。狀態(tài)機(jī)涉及到狀態(tài)、變遷和活動(dòng),其中狀態(tài)用圓角矩形來表示。
行為事物(2)狀態(tài)機(jī)(statemachine)──描述分組事物分組事物是UML模型的組織部分。它的作用是為了降低模型復(fù)雜性。UML中的分組事物是包(package)。包是把模型元素組織成組的機(jī)制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進(jìn)包內(nèi)。分組事物分組事物是UML模型的組織部分。它的作用是為了降低模注釋事物注釋事物是UML模型的解釋部分,它們用來描述和標(biāo)注模型的任何元素。通??梢杂米⑨屝揎棊в屑s束或者解釋的圖。注釋事物注釋事物是UML模型的解釋部分,它們用來描述和標(biāo)注模4.2.4UML的關(guān)系4.2.4UML的關(guān)系依賴關(guān)系依賴(Dependency)是兩個(gè)事物之間的語義關(guān)系,其中一個(gè)事物發(fā)生變化會影響到另一個(gè)事物的語義,它用一個(gè)虛線箭頭表示。虛線箭頭的方向從源事物指向目標(biāo)事物,表示源事物依賴于目標(biāo)事物。依賴關(guān)系依賴(Dependency)是兩個(gè)事物之間的語義關(guān)系依賴關(guān)系依賴關(guān)系依賴關(guān)系依賴關(guān)系關(guān)聯(lián)關(guān)系關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它描述了兩個(gè)或多個(gè)類的實(shí)例之間的連接關(guān)系,是一種特殊的依賴。關(guān)聯(lián)分為普通關(guān)聯(lián)、限定關(guān)聯(lián)、關(guān)聯(lián)類,以及聚合與復(fù)合。關(guān)聯(lián)關(guān)系關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它描述關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)又分為二元關(guān)聯(lián)和多元關(guān)聯(lián)。二元關(guān)聯(lián)描述兩個(gè)類之間的關(guān)聯(lián),用兩個(gè)類之間的一條直線來表示,直線上可寫上關(guān)聯(lián)名。
關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要類與類之關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)多重性(multiplicity):多重性表明在一個(gè)關(guān)聯(lián)的兩端連接的類實(shí)例個(gè)數(shù)的對應(yīng)關(guān)系,即一端的類的多少個(gè)實(shí)例對象可以與另一端的類的一個(gè)實(shí)例相關(guān)。如果圖中沒有明確標(biāo)出關(guān)聯(lián)的多重性,則默認(rèn)的多重性為1。關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)多重性(multiplicity):多重關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)角色:關(guān)聯(lián)端點(diǎn)上還可以附加角色名,表示類的實(shí)例在這個(gè)關(guān)聯(lián)中扮演的角色。UML還允許一個(gè)類與它自身關(guān)聯(lián)。
關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)角色:關(guān)聯(lián)端點(diǎn)上還可以附加角色名,表示類關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)多元關(guān)聯(lián):多元關(guān)聯(lián)是指3個(gè)或3個(gè)以上類之間的關(guān)聯(lián)。多元關(guān)聯(lián)由一個(gè)菱形,以及由菱形引出的通向各個(gè)相關(guān)類的直線組成,關(guān)聯(lián)名可標(biāo)在菱形的旁邊,在關(guān)聯(lián)的端點(diǎn)也可以標(biāo)上多重性等信息。關(guān)聯(lián)關(guān)系——普通關(guān)聯(lián)多元關(guān)聯(lián):多元關(guān)聯(lián)是指3個(gè)或3個(gè)以上類之關(guān)聯(lián)關(guān)系——限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的多重性從一對多變成一對一,或?qū)⒍鄬Χ嗪喕啥鄬σ?。在類圖中把限定詞(qualifier)放在關(guān)聯(lián)關(guān)系末端的一個(gè)小方框內(nèi)。
關(guān)聯(lián)關(guān)系——限定關(guān)聯(lián)限定關(guān)聯(lián)通常用在一對多或多對多的關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系——關(guān)聯(lián)類在關(guān)聯(lián)關(guān)系比較簡單的情況下,關(guān)聯(lián)關(guān)系的語義用關(guān)聯(lián)關(guān)系的名字來概括。但在某些情況下,需要對關(guān)聯(lián)關(guān)系的語義做詳細(xì)的定義、存儲和訪問,為此可以建立關(guān)聯(lián)類(associationclass),用來描述關(guān)聯(lián)的屬性。關(guān)聯(lián)中的每個(gè)鏈與關(guān)聯(lián)類的一個(gè)實(shí)例相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。
關(guān)聯(lián)關(guān)系——關(guān)聯(lián)類在關(guān)聯(lián)關(guān)系比較簡單的情況下,關(guān)聯(lián)關(guān)系的語義關(guān)聯(lián)關(guān)系——聚合聚合(Aggregation)也稱為聚集,是一種特殊的關(guān)聯(lián)。它描述了整體和部分之間的結(jié)構(gòu)關(guān)系。兩種特殊的聚合關(guān)系:共享聚合(sharedaggregation)和復(fù)合聚合(compositionaggregation)。如果在聚合關(guān)系中處于部分方的實(shí)例可同時(shí)參與多個(gè)處于整體方實(shí)例的構(gòu)成,則該聚合稱為共享聚合。關(guān)聯(lián)關(guān)系——聚合聚合(Aggregation)也稱為聚集,是關(guān)聯(lián)關(guān)系——聚合如果部分類完全隸屬于整體類,部分類需要與整體類共存,一旦整體類不存在了,則部分類也會隨之消失,或失去存在價(jià)值,則這種聚合稱為復(fù)合聚合。關(guān)聯(lián)關(guān)系——聚合如果部分類完全隸屬于整體類,部分類需要與整體關(guān)聯(lián)關(guān)系——導(dǎo)航導(dǎo)航(navigability)是關(guān)聯(lián)關(guān)系的一種特性,它通過在關(guān)聯(lián)的一個(gè)端點(diǎn)上加箭頭來表示導(dǎo)航的方向。關(guān)聯(lián)關(guān)系——導(dǎo)航導(dǎo)航(navigability)是關(guān)聯(lián)關(guān)系的泛化關(guān)系泛化(generalization)關(guān)系就是一般類和特殊類之間的繼承關(guān)系。在UML中,一般類亦稱泛化類,特殊類亦稱特化類。泛化針對類型而不針對實(shí)例,因?yàn)橐粋€(gè)類可以繼承另一個(gè)類,但一個(gè)對象不能繼承另一個(gè)對象。泛化可進(jìn)一步劃分成普通泛化和受限泛化兩類。泛化關(guān)系泛化(generalization)關(guān)系就是一般類和泛化關(guān)系——普通泛化普通泛化與前面講過的繼承基本相同。但在泛化關(guān)系中常遇到抽象類。一般稱沒有具體對象的類為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。泛化關(guān)系——普通泛化普通泛化與前面講過的繼承基本相同。但在泛泛化關(guān)系——普通泛化普通泛化可以分為多重繼承和單繼承。多重繼承是指一個(gè)子類可同時(shí)繼承多個(gè)上層父類。泛化關(guān)系——普通泛化普通泛化可以分為多重繼承和單繼承。多重繼泛化關(guān)系——受限泛化受限泛化關(guān)系是指泛化具有約束條件。一般有4種約束:交疊(overlapping)、不相交(disjoint)、完全(complete)和不完全(incomplate)。泛化關(guān)系——受限泛化受限泛化關(guān)系是指泛化具有約束條件。實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)(implement)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語義關(guān)系,通常在以下兩種情況出現(xiàn)實(shí)現(xiàn)關(guān)系:(1)接口和實(shí)現(xiàn)它們的類或構(gòu)件之間;(2)用例和實(shí)現(xiàn)它們的協(xié)作之間。實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)(implement)是泛化關(guān)系和依賴關(guān)系的結(jié)合4.2.4UML的圖功能靜態(tài)結(jié)構(gòu)動(dòng)態(tài)行為物理架構(gòu)4.2.4UML的圖功能靜態(tài)結(jié)構(gòu)動(dòng)物理架構(gòu)UML圖用況圖:需求獲取,測試依據(jù)功能類圖:類以及類之間的相互關(guān)系結(jié)構(gòu)對象圖:對象以及對象之間的相互關(guān)系構(gòu)件圖:構(gòu)件及其相互依賴關(guān)系部署圖:構(gòu)件在各節(jié)點(diǎn)上的部署時(shí)序圖:強(qiáng)調(diào)時(shí)間順序的交互圖行為協(xié)作圖:強(qiáng)調(diào)對象協(xié)作的交互圖狀態(tài)圖:類所經(jīng)歷的各種狀態(tài)活動(dòng)圖:對工作流程建模
67UML圖用況圖:需求獲取,測試依據(jù)用況圖:參與者參與者(Actor)參與者是與系統(tǒng)交互的外部實(shí)體。參與者既可以是使用該系統(tǒng)的用戶,也可以是與系統(tǒng)交互的其他外部系統(tǒng)、硬件設(shè)備或組織機(jī)構(gòu)。
68用況圖:參與者參與者(Actor)68用況圖:參與者參與者的泛化關(guān)系參與者之間可以存在泛化的關(guān)系,類似的參與者可以利用泛化關(guān)系組成一般與特殊的層次結(jié)構(gòu)。
69用況圖:參與者參與者的泛化關(guān)系69用況圖:用況用況(UseCase)用況是從用戶角度描述系統(tǒng)的行為,它將系統(tǒng)的一個(gè)功能描述成一系列事件,這些事件最終對參與者產(chǎn)生有價(jià)值的可觀測結(jié)果。用況可以促進(jìn)與用戶溝通,理解正確的需求,同時(shí)也可以用來劃分系統(tǒng)與外部實(shí)體的界限。用況之間的關(guān)系包含關(guān)系(include)擴(kuò)展關(guān)系(extend)泛化關(guān)系(generalization)
70用況圖:用況用況(UseCase)70用況圖:用況包含關(guān)系(include)包含關(guān)系是指一個(gè)基本用例的行為包含了另一個(gè)用例的行為包含關(guān)系是對用例之間的共性部分進(jìn)行建模UML符號
71用況圖:用況包含關(guān)系(include)71用況圖:用況擴(kuò)展關(guān)系(extend)在用例執(zhí)行過程中,可能會出現(xiàn)異常行為,也可能會在不同的流程分支中選擇執(zhí)行,這時(shí)可以將異常行為或可選分支抽象成一個(gè)單獨(dú)的擴(kuò)展用例,它與主用例之間形成擴(kuò)展關(guān)系。UML符號
72用況圖:用況擴(kuò)展關(guān)系(extend)72用況圖:用況泛化關(guān)系(generalization)用例之間的泛化關(guān)系是描述用例之間一般與特殊關(guān)系的,不同的子用例代表了父用例的不同實(shí)現(xiàn)方法。UML符號
73用況圖:用況泛化關(guān)系(generalization)73用況圖:用況三種關(guān)系的比較包含關(guān)系如果需要重復(fù)處理兩個(gè)或多個(gè)用例時(shí),可以考慮使用包含關(guān)系,實(shí)現(xiàn)一個(gè)基本用例對另一個(gè)用例的引用。被包含的用例從不獨(dú)立存在,僅作為基本用例的一部分出現(xiàn)。擴(kuò)展關(guān)系當(dāng)描述正常行為的變型,而且希望采用更多的控制方式時(shí),可以在基本用例中設(shè)置擴(kuò)展點(diǎn),使用擴(kuò)展關(guān)系。在擴(kuò)展關(guān)系中,基本用例可以獨(dú)立存在,當(dāng)它執(zhí)行時(shí)擴(kuò)展用例可以執(zhí)行也可以不執(zhí)行。泛化關(guān)系當(dāng)處理正常行為的變型,而且只是偶爾描述時(shí),可以考慮只用泛化關(guān)系。
74用況圖:用況三種關(guān)系的比較74用況圖:用況描述用況描述用況采用自然語言來描述參與者與系統(tǒng)進(jìn)行交互時(shí)雙方的行為,而不追求形式化的語言表達(dá)。用況描述的主要內(nèi)容用況的目的用況如何被啟動(dòng)參與者與用況之間的事件流:基本流、可選流前置條件后置條件擴(kuò)展點(diǎn)
75用況圖:用況描述用況描述75用況圖:用況描述說明應(yīng)該只描寫“可觀測的”結(jié)果應(yīng)該使用主動(dòng)語句句子的主語應(yīng)該是參與者或者系統(tǒng)參與者……系統(tǒng)……參與者……系統(tǒng)……不要涉及系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié)不要涉及界面的細(xì)節(jié)
76用況圖:用況描述說明76用況圖:用況描述下面的用例描述有問題嗎?舉例1:1.系統(tǒng)顯示輸入用戶名和密碼的界面。2.會員輸入用戶名和密碼,點(diǎn)擊“確定”。3.如果用戶名和密碼正確,系統(tǒng)根據(jù)用戶名從數(shù)據(jù)庫的“會員”表中查詢該會員信息,系統(tǒng)顯示會員定制界面。4.如果用戶名不存在,……舉例2:系統(tǒng)從用戶獲得用戶名和密碼。用戶名和密碼被驗(yàn)證。
77用況圖:用況描述下面的用例描述有問題嗎?77UML圖:類圖類圖(ClassDiagram)類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),表示系統(tǒng)中的類、類與類之間的關(guān)系以及類的屬性和操作。在不同的開發(fā)階段,類圖具有不同的抽象層次需求階段:概念層類圖描述應(yīng)用領(lǐng)域中的概念,這些概念和類有很自然的聯(lián)系,但兩者并沒有直接的映射關(guān)系。設(shè)計(jì)階段:說明層類圖描述軟件的接口部分,而不是軟件的實(shí)現(xiàn)部分。實(shí)現(xiàn)階段:實(shí)現(xiàn)層類圖才真正考慮類的實(shí)現(xiàn)問題,揭示軟件實(shí)現(xiàn)的細(xì)節(jié)。
78UML圖:類圖類圖(ClassDiagram)78UML圖:類圖
79UML圖:類圖79UML圖:對象圖對象圖(ObjectDiagram)對象圖表示一組對象和它們之間的聯(lián)系,它是一個(gè)系統(tǒng)的詳細(xì)狀態(tài)在某一時(shí)刻的快照。說明對象圖實(shí)質(zhì)上是類圖的實(shí)例。對象圖常用于表示復(fù)雜的類圖的一個(gè)實(shí)例。對象圖的使用相當(dāng)有限,主要用于表達(dá)數(shù)據(jù)結(jié)構(gòu)的示例,以及了解系統(tǒng)在某個(gè)特定時(shí)刻的具體情況。
80UML圖:對象圖對象圖(ObjectDiagram)8UML圖:對象圖
81UML圖:對象圖81UML圖:時(shí)序圖時(shí)序圖(SequenceDiagram)時(shí)序圖描述了一組交互對象間的交互方式,它表示完成某項(xiàng)行為的對象和這些對象之間傳遞消息的時(shí)間順序。一般情況下,我們使用時(shí)序圖描述一個(gè)用況的事件流,標(biāo)識參與這個(gè)用況的對象,并以服務(wù)的形式將用況的行為分配到對象上。時(shí)序圖的組成對象(參與者實(shí)例也是對象)生命線:表示對象存在的時(shí)間控制焦點(diǎn):表示對象執(zhí)行一個(gè)所經(jīng)歷的時(shí)間段消息:表示對象之間的通信82UML圖:時(shí)序圖時(shí)序圖(SequenceDiagram)UML圖:時(shí)序圖
83UML圖:時(shí)序圖83UML圖:時(shí)序圖
84UML圖:時(shí)序圖84UML圖:協(xié)作圖協(xié)作圖(CollaborationDiagram)協(xié)作圖反映收發(fā)消息的對象的結(jié)構(gòu)組織,用于描述系統(tǒng)的行為是如何由系統(tǒng)的成分協(xié)作實(shí)現(xiàn)的。時(shí)序圖和協(xié)作圖是同構(gòu)的,即兩者之間可以相互轉(zhuǎn)換。
85UML圖:協(xié)作圖協(xié)作圖(CollaborationDiaUML圖:協(xié)作圖
86UML圖:協(xié)作圖86UML圖:狀態(tài)圖狀態(tài)圖(StatechartDiagram)狀態(tài)圖是由狀態(tài)機(jī)擴(kuò)展而來的,用來描述對象所經(jīng)過的對外部事件做出相應(yīng)的狀態(tài)序列。狀態(tài)圖側(cè)重于描述某個(gè)對象在其生命周期中的動(dòng)態(tài)行為,包括對象在各個(gè)不同的狀態(tài)間的跳轉(zhuǎn)以及觸發(fā)這些跳轉(zhuǎn)的外部事件,即從狀態(tài)到狀態(tài)的控制流。
87UML圖:狀態(tài)圖狀態(tài)圖(StatechartDiagramUML圖:狀態(tài)圖狀態(tài)(State)狀態(tài)是指在對象生命期中的一個(gè)條件或狀況,對象在此期間將滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件。在狀態(tài)圖中定義的狀態(tài)有:初態(tài)、終態(tài)、中間狀態(tài)、組合狀態(tài)、歷史狀態(tài)等。一個(gè)狀態(tài)圖只能有一個(gè)初態(tài),而終態(tài)可以有多個(gè)。事件(Event)事件是對一個(gè)在時(shí)間和空間上占有一定位置的有意義事情的規(guī)格說明,在狀態(tài)機(jī)的語境中,事件應(yīng)觸發(fā)一個(gè)狀態(tài)轉(zhuǎn)換。
88UML圖:狀態(tài)圖狀態(tài)(State)88UML圖:狀態(tài)圖轉(zhuǎn)換(Transition)轉(zhuǎn)換表示兩個(gè)狀態(tài)之間的關(guān)系,它指明對象在第一個(gè)狀態(tài)中執(zhí)行一定的動(dòng)作,并當(dāng)特定事件發(fā)生或特定條件滿足時(shí)進(jìn)入第二個(gè)狀態(tài)。活動(dòng)(Activity)活動(dòng)是狀態(tài)機(jī)中進(jìn)行的非原子執(zhí)行單元。動(dòng)作(Action)動(dòng)作是由引起模型狀態(tài)改變或值的返回的可執(zhí)行原子計(jì)算所組成的。
89UML圖:狀態(tài)圖轉(zhuǎn)換(Transition)89UML圖:狀態(tài)圖
90UML圖:狀態(tài)圖90UML圖:活動(dòng)圖活動(dòng)圖(ActivityDiagram)活動(dòng)圖反映系統(tǒng)中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程,強(qiáng)調(diào)對象間的控制流程?;顒?dòng)圖的組成活動(dòng)(Activity)轉(zhuǎn)移(Transition)泳道(Swimlane)分支(Branch)分叉和匯合(ForkandJoin)對象流(ObjectStream)
91UML圖:活動(dòng)圖活動(dòng)圖(ActivityDiagram)UML圖:活動(dòng)圖
92UML圖:活動(dòng)圖92UML圖:狀態(tài)圖與活動(dòng)圖比較活動(dòng)圖和狀態(tài)圖描述的重點(diǎn)不同活動(dòng)圖描述的是從活動(dòng)到活動(dòng)的控制流,而狀態(tài)圖描述的是對象的狀態(tài)及狀態(tài)之間的轉(zhuǎn)移?;顒?dòng)圖和狀態(tài)圖使用的場合不同對于以下幾種情況可以使用活動(dòng)圖分析用例理解涉及多個(gè)用況的工作流處理多線程應(yīng)用對于下面的情況要使用狀態(tài)圖顯示一個(gè)對象在其生命周期內(nèi)的行為說明:如果要顯示多個(gè)對象之間的交互,可用時(shí)序圖或協(xié)作圖
93UML圖:狀態(tài)圖與活動(dòng)圖比較活動(dòng)圖和狀態(tài)圖描述的重點(diǎn)不同UML圖:構(gòu)件圖構(gòu)件圖(ComponentDiagram)構(gòu)件圖描述組件以及它們之間的關(guān)系,用于表示系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖
94UML圖:構(gòu)件圖構(gòu)件圖(ComponentDiagramUML圖:部署圖部署圖(DeploymentDiagram)部署圖反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運(yùn)行時(shí)的處理節(jié)點(diǎn)以及節(jié)點(diǎn)中組件的配置。
95UML圖:部署圖部署圖(DeploymentDiagra對象約束語言(OCL)對象約束語言對象約束語言(OCL,ObjectConstraintLanguage)是一種形式語言,用于表示施加于模型元素上的約束。
96對象約束語言(OCL)對象約束語言96UML工具RationalRose/MicrosoftVisio/office/visio/教育在線可下載
97UML工具RationalRose974.3面向?qū)ο蠓治鰠⒖紩?、《面向?qū)ο蠓治雠c設(shè)計(jì)》麻志毅機(jī)械工業(yè)出版社2、《UML基礎(chǔ)、案例與應(yīng)用》JosephSchmuller人民郵電出版社4.3面向?qū)ο蠓治鰠⒖紩簩δP椭械乃性剡M(jìn)行詳細(xì)說明。一幅交互圖表現(xiàn)完成某一項(xiàng)特定功能的一組對象之間的詳細(xì)交互;一輻狀態(tài)圖描述了一個(gè)對象的狀態(tài)變遷;活動(dòng)圖描述了一個(gè)服務(wù)的流程或業(yè)務(wù)流程。關(guān)系層特征層對象層基本模型(類圖)需求模型用況圖輔助模型交互圖活動(dòng)圖狀態(tài)圖包圖……模型規(guī)約OOA模型捕獲與描述用戶的要求給出所有與問題域和系統(tǒng)責(zé)任有關(guān)的對象,用對象類表示定義每個(gè)對象類的屬性與服務(wù)通過已定義的關(guān)系描述對象類之間的關(guān)系對關(guān)系密切的元素打包,幫助理解系統(tǒng)模型。對模型中的所有元素進(jìn)行詳細(xì)說明。一幅交互圖表現(xiàn)完成某一項(xiàng)特定OOA過程定義用況*(輔助模型,可選)用用況對用戶需求進(jìn)行規(guī)范化描述。建立詳細(xì)說明對模型中的成分進(jìn)行規(guī)范的定義和文字說明??梢约羞M(jìn)行,也可分散在各個(gè)活動(dòng)中。建立交互圖、狀態(tài)圖和活動(dòng)圖等(輔助模型,可選)原型開發(fā)(可選)結(jié)合其他活動(dòng)反復(fù)進(jìn)行建立類圖(基本模型)*發(fā)現(xiàn)對象、定義對象類*識別對象的內(nèi)部特征*識別對象的外部關(guān)系OOA過程定義用況*(輔助模型,可選)建立詳細(xì)說明建立交互圖4.3.1需求模型-用況圖問題的提出:在系統(tǒng)尚未存在時(shí),如何描繪用戶需要一個(gè)什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求?考慮問題的思路:把系統(tǒng)看作一個(gè)黑箱,看它對外部的客觀世界發(fā)揮什么作用,描述它外部可見的行為。系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限的接口與外部交互系統(tǒng)邊界以外是與系統(tǒng)進(jìn)行交互的參與者把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求4.3.1需求模型-用況圖系統(tǒng)是由一條邊界包圍起來的未知空間用況圖系統(tǒng)邊界參與者用況用況的關(guān)系包含擴(kuò)展泛化用況圖
102用況圖系統(tǒng)邊界102系統(tǒng)邊界系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。參與者(人員)參與者(設(shè)備)參與者(外系統(tǒng))參與者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、外系統(tǒng)系統(tǒng)邊界系統(tǒng)邊界系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種現(xiàn)實(shí)世界中的事物與系統(tǒng)的關(guān)系包括如下幾種情況:■某些事物位于系統(tǒng)邊界內(nèi),作為系統(tǒng)成分?!瞿承┦挛镂挥谙到y(tǒng)邊界外,作為參與者?!瞿承┦挛锟赡芗扔幸粋€(gè)對象作為其抽象描述,而本身(作為現(xiàn)實(shí)世界中的事物)又是在系統(tǒng)邊界以外與系統(tǒng)進(jìn)行交互的參與者?!瞿承┦挛锛词箤儆趩栴}域,也與系統(tǒng)責(zé)任沒有什么關(guān)系。認(rèn)識清楚上述事物之間的關(guān)系,也就劃分出了系統(tǒng)邊界?,F(xiàn)實(shí)世界中的事物與系統(tǒng)的關(guān)系包括如下幾種情況:認(rèn)識清楚上述事參與者
簡言之,參與者是在系統(tǒng)之外的與系統(tǒng)進(jìn)行交互的任何事物。1、概念與表示法一個(gè)參與者定義了用況的使用者在與這些用況交互時(shí)所扮演的一組功能高內(nèi)聚的角色。
參與者是與系統(tǒng)交互的任何事務(wù)。收款檢查售貨員參與者簡言之,參與者是在系統(tǒng)之外的與系統(tǒng)進(jìn)行交互的任何參與者可以向系統(tǒng)發(fā)出請求參與者回復(fù)系統(tǒng)的響應(yīng)參與者和系統(tǒng)之間可能存在著復(fù)雜的對話所有的參與者與系統(tǒng)間的請求/響應(yīng)確定了系統(tǒng)邊界一個(gè)參與者的一個(gè)實(shí)例,要以一種特定的方式與系統(tǒng)進(jìn)行交互。
參與者可以向系統(tǒng)發(fā)出請求參與者和系統(tǒng)之間可能存在著復(fù)雜的對話如果一組參與者具有共同的性質(zhì),可以把這些性質(zhì)抽取出來放在另一個(gè)參與者中,它們再從中繼承,把這種關(guān)系稱為參與者之間的泛化關(guān)系。
A從參與者A到參與者B之間的泛化關(guān)系是指,A的實(shí)例除了擁有自己的與系統(tǒng)的交互外,還擁有B的實(shí)例與系統(tǒng)進(jìn)行的交互。如果一組參與者具有共同的性質(zhì),可以把這些性質(zhì)抽取出來■
用戶從直接使用系統(tǒng)的人員中發(fā)現(xiàn)參與者。這里強(qiáng)調(diào)的是直接使用,而不是間接的。特定的人,在系統(tǒng)中可扮演不同的角色。
———例如,添加數(shù)據(jù)、統(tǒng)計(jì)某項(xiàng)數(shù)據(jù)及產(chǎn)生匯總表的那個(gè)人就扮演了三種不同的角色,反映為三種不同的參與者。
——例如,用戶角色的類別可為:目標(biāo)終端用戶、管理員、經(jīng)理或顧客。2、識別參與者■
用戶2、識別參與者■
設(shè)備識別所有與系統(tǒng)交互的設(shè)備。
這樣的設(shè)備與系統(tǒng)相連,向系統(tǒng)提供外界信息,或在系統(tǒng)的控制下運(yùn)行。如外部傳感器(輸入信息)和受控馬達(dá)(輸出信息)。通常,不包括監(jiān)視器、鍵盤、鼠標(biāo)和其它的標(biāo)準(zhǔn)的用戶接口類型設(shè)備?!?/p>
外部系統(tǒng)所有與系統(tǒng)交互的外部應(yīng)用系統(tǒng)都是參與者。從系統(tǒng)邊界的角度,應(yīng)該把與軟件系統(tǒng)一起運(yùn)行以完成特定任務(wù)的應(yīng)用系統(tǒng),看作是外部的應(yīng)用。相對于當(dāng)前在正在開發(fā)的系統(tǒng)而言,外部應(yīng)用系統(tǒng)可以是其他子系統(tǒng)、上級系統(tǒng)、下級系統(tǒng)或任何與它進(jìn)行協(xié)作的系統(tǒng),但對它的開發(fā)并不是當(dāng)前系統(tǒng)的開發(fā)小組的責(zé)任。外系統(tǒng)當(dāng)前開發(fā)的系統(tǒng)■
設(shè)備■
外部系統(tǒng)外系統(tǒng)當(dāng)前開發(fā)的系統(tǒng)超市銷售管理系統(tǒng)收款員供貨員上級系統(tǒng)參與者:收款員、供貨員、導(dǎo)購員、經(jīng)理、保安、顧客收款機(jī)?超市銷售管理系統(tǒng)收款員供貨員上級系統(tǒng)參與者:收款員、供貨員、
用況是對參與者使用系統(tǒng)的一項(xiàng)功能時(shí)所進(jìn)行的交互過程的一個(gè)文字描述序列。
1、定義及表示法用況ATM取款1、定義及表示法用況ATM取款用例:
用戶從ATM機(jī)提取一定數(shù)量的紙幣。主參加者:客戶環(huán)境目標(biāo):持有效銀行卡的客戶能提出指定金額的人民幣。前置條件:ATM系統(tǒng)中有足夠數(shù)量的現(xiàn)金,ATM系統(tǒng)空閑,客戶插入有效銀行卡,一次提取金額2000元人民幣。觸發(fā)器:客戶在ATM機(jī)中插卡時(shí)。步驟序列:
1、用戶插入銀行卡
2、輸入密碼
3、選擇取錢功能
4、輸入金額
5、取錢
6、取出銀行卡異常:
1、銀行卡或密碼無效時(shí),顯示恰當(dāng)?shù)腻e(cuò)誤信息。
2、輸入金額大于2000元時(shí),顯示恰當(dāng)?shù)男畔⑻崾?。?yōu)先級:必須被實(shí)現(xiàn)。何時(shí)可用:首次開發(fā)。使用頻率:每天多次。后置條件:用戶完成操作后退卡。未解決的問題:
客戶輸入密碼時(shí),從按下第一個(gè)按鍵開始必須在多長時(shí)間內(nèi)輸入密碼?用況示例1用例:用戶從ATM機(jī)提取一定數(shù)量的紙幣。用況示幾點(diǎn)說明:(1)一個(gè)用況描述參與者對一項(xiàng)系統(tǒng)功能的使用情況。而且只有當(dāng)外部的參與者與該系統(tǒng)進(jìn)行交互時(shí),該功能才發(fā)揮作用。(2)用況中描述的行為實(shí)際上是系統(tǒng)級的。在用況內(nèi)所描述的交互中的動(dòng)作應(yīng)該是詳細(xì)的,準(zhǔn)則是對用況的理解不產(chǎn)生歧義即可;若描述得過于綜合,則不易認(rèn)識清楚系統(tǒng)的功能。(3)陳述參與者和系統(tǒng)在交互過程中雙方所做的事。而且描述彼此為對方直接地做什么事,不描述怎么做,內(nèi)部細(xì)節(jié)不要在其中描述。(4)用況既表達(dá)了系統(tǒng)的功能需求,也表達(dá)了系統(tǒng)的功能劃分。
幾點(diǎn)說明:(5)描述應(yīng)力求準(zhǔn)確、清晰,允許概括,但不要把雙方的行為混在一起。(6)系統(tǒng)執(zhí)行該動(dòng)作序列來為參與者產(chǎn)生一個(gè)可觀察的結(jié)果值。(7)用況描述的是一個(gè)參與者所使用的一項(xiàng)系統(tǒng)功能,該項(xiàng)功能應(yīng)該相對完整。這就要求一個(gè)用況描述的功能,即不能過大以至于包含過多的內(nèi)容,也不能過小以至于僅包含完成一項(xiàng)功能的若干步驟。
(8)用況描述中的一個(gè)步驟應(yīng)該描述且僅描述參與者或系統(tǒng)要完成的一件事情。
(5)描述應(yīng)力求準(zhǔn)確、清晰,允許概括,但不要把雙方的行為混在2、用況與參與者之間的關(guān)系
用況與參與者間的關(guān)聯(lián)是參與者在用況中的參與(也就是參與者實(shí)例與用況實(shí)例之間的相互通信)。若沒有進(jìn)行特殊的說明,任何一方都可發(fā)送和接收消息。即交互是雙向的,參與者能夠產(chǎn)生對系統(tǒng)的請求,或系統(tǒng)要求參與者采取某些動(dòng)作。這是參與者和用況之間的唯一關(guān)系。
用況的一個(gè)場景是指用況執(zhí)行過程中的一個(gè)特定的實(shí)例或執(zhí)行路徑。2、用況與參與者之間的關(guān)系用況與參與者間收款檢查售貨員一個(gè)用況可能要與系統(tǒng)的一個(gè)或幾個(gè)參與者交互。統(tǒng)計(jì)員
把參與者和用況之間的關(guān)聯(lián)表示成參與者和用況之間的一條實(shí)線。收款檢查售貨員一個(gè)用況可能要與系統(tǒng)的一個(gè)或幾個(gè)參與者交互。統(tǒng)3、用況之間的關(guān)系在下述情況下,就需要考慮產(chǎn)生新的用況,并在用況間建立關(guān)系:在一個(gè)用況中存在著幾處重復(fù)使用的動(dòng)作序列;在幾個(gè)用況中存在著重復(fù)使用的動(dòng)作序列;一個(gè)用況中的主要?jiǎng)幼餍蛄谢蚍种?dòng)作序列過于冗長或復(fù)雜,而且分離它們有助于管理和理解。3、用況之間的關(guān)系1)擴(kuò)展
If…AIF…C……IF…AIF…C……用況X用況Y
ACIF…(A)IF…(C)……IF…(A)IF…(C)……用況X用況Y<<extend>>
<<extend>>
1)擴(kuò)展If…AIF…A用況X用況YAIF…(A從基用況到擴(kuò)展用況的擴(kuò)展關(guān)系表明:按基用況中指定的擴(kuò)展條件,把擴(kuò)展用況的行為插入到由基用況中的擴(kuò)展點(diǎn)定義的位置。
通過敞開的虛線箭頭表示用況之間的擴(kuò)展關(guān)系,該箭頭從提供擴(kuò)展的用況指向基用況。這個(gè)箭頭用關(guān)鍵字<<extend>>標(biāo)記??梢栽谶@個(gè)關(guān)鍵字附近表示這個(gè)關(guān)系的條件?;脹r擴(kuò)展用況<<extend>>基用況是可單獨(dú)存在的,但是在一定的條件下,它的行為可以被另一個(gè)用況的行為擴(kuò)展。在擴(kuò)展用況中可定義一組行為增量,在其中定義的行為離開基用況單獨(dú)是沒意義的。一個(gè)擴(kuò)展用況可以擴(kuò)展多個(gè)用況,一個(gè)用況也可以被多個(gè)用況擴(kuò)展,甚至一個(gè)擴(kuò)展用況自身也可以被其他擴(kuò)展用況來擴(kuò)展。從基用況到擴(kuò)展用況的擴(kuò)展關(guān)系表明:按基用況中指適用之處:(1)異常情況(2)正常的變形描述時(shí),而且希望采用更多的控制方式時(shí),采用擴(kuò)展。即在一個(gè)變化點(diǎn)上可附加多個(gè)變體的場合下使用。(3)用擴(kuò)展關(guān)系來區(qū)分所實(shí)現(xiàn)系統(tǒng)的可配置部分。
一個(gè)擴(kuò)展點(diǎn)是基用況中的一個(gè)位置,在這樣的位置上,如果擴(kuò)展條件為真,就在其中插入擴(kuò)展用況中描述的全部動(dòng)作序列或其中的一部分,并予以執(zhí)行。執(zhí)行完后,基用況繼續(xù)執(zhí)行擴(kuò)展點(diǎn)下面的行為。如果擴(kuò)展條件為假,擴(kuò)展不會發(fā)生。
可以把擴(kuò)展點(diǎn)列在用況中的一個(gè)題頭為“擴(kuò)展點(diǎn)”的分欄中。以一種適當(dāng)?shù)姆绞浇o出擴(kuò)展點(diǎn)的位置描述,通常采用普通的文本。
基用況擴(kuò)展用況適用之處:一個(gè)擴(kuò)展點(diǎn)是基用況中的一2)包含
A……用況XA……用況Y
A(A)……(A)……用況X用況Y<<include>>
<<include>>
2)包含A用況XA用況YA(A)(A)用況X用況Y<<
從基用況到被包含用況的包含關(guān)系表明:基用況在它內(nèi)部說明的某一(些)位置上顯式地使用供應(yīng)者用況的行為的結(jié)果。通過一個(gè)敞開的虛線箭頭表示用況之間的包含關(guān)系,該箭頭從基用況指向被包含的用況。這個(gè)箭頭用關(guān)鍵字<<include>>標(biāo)記。包含關(guān)系使得可在一個(gè)用況中局部化多個(gè)用況中共同的活動(dòng)序列。這樣,可以避免多次描述同一事件流;當(dāng)這個(gè)共同的序列發(fā)生變化時(shí),這樣就顯現(xiàn)出優(yōu)勢,即只需要在一個(gè)地方進(jìn)行改動(dòng)。
被包含用況基用況<<include>>從基用況到被包含用況的包含關(guān)系表明:基用況在3)泛化用況之間的泛化關(guān)系就像類之間的泛化關(guān)系一樣。子用況繼承父用況的行為和含義;子用況還可以增加或覆蓋父用況的行為;子用況可以出現(xiàn)在父用況出現(xiàn)的任何位置(父和子均有具體的實(shí)例)。用一個(gè)指向父用況的帶有封閉的空心箭頭的實(shí)線來表示用況之間的泛化關(guān)系。
BA3)泛化BA資金轉(zhuǎn)帳支付費(fèi)用扣除透支利息也可以使用包含資金轉(zhuǎn)帳支付費(fèi)用扣除透支利息也可以使用包含處理取款單業(yè)務(wù)員輸入處理取款命令
Include
檢查口令 收集客戶的取款單上的信息;
加急(擴(kuò)展點(diǎn)){如果客戶選擇了加急}extend處理加急取款單……被包含的用況可以單獨(dú)存在處理取款單被包含的用況可以單獨(dú)存在5捕獲用況1)利用參與者捕獲用況
對所有的參與者(把自己作為參與者),提問下列問題:■
每個(gè)參與者的主要任務(wù)是什么?——粗粒度
在交互過程中,它們是怎樣使用系統(tǒng)的服務(wù)來完成它們的任務(wù)以達(dá)到目的?
——細(xì)粒度
為了達(dá)到某種目的,參與者參加什么活動(dòng)?該參與者是否將讀寫系統(tǒng)的任何信息?參與者是否把系統(tǒng)外部的變化通知系統(tǒng)?參與者是否希望系統(tǒng)把預(yù)料之外的變化通知自己?——細(xì)粒度是什么事件引起了與系統(tǒng)進(jìn)行交互的序列?——細(xì)粒度■
它們參加了什么在本質(zhì)上是不同的過程?能完成特定功能的每一項(xiàng)活動(dòng)明確地是一個(gè)用況。這些參與者參與的活動(dòng),通常會導(dǎo)致其它用況。
5捕獲用況對所有的參與者(把自己作為參與者),提問下列問題
2)從系統(tǒng)功能角度捕獲用況(1)以窮舉的方式檢查用戶對系統(tǒng)的功能需求是否能在各個(gè)用況中體現(xiàn)出來。(2)以窮舉的方式考慮每一個(gè)參與者與系統(tǒng)的交互情況,看看每個(gè)參與者要求系統(tǒng)提供什么功能,以及參與者的每一項(xiàng)輸入信息將要求系統(tǒng)作出什么反映,進(jìn)行什么處理。(3)考慮對例外情況的處理。針對用況描述的基本流,要詳盡地考慮各種其他的情況
(4)
一個(gè)用況描述一項(xiàng)功能,這項(xiàng)功能不能過大。例如,把一個(gè)企業(yè)信息管理系統(tǒng)粗略地分為生產(chǎn)管理、供銷管理、財(cái)務(wù)管理和人事管理等幾大方面的功能,就顯得粒度太大了,應(yīng)該再進(jìn)行細(xì)化。(5)一個(gè)用況應(yīng)該是一個(gè)完整的任務(wù),通常應(yīng)該在一個(gè)相對短的時(shí)間段內(nèi)完成。如果一個(gè)用況的各部分被分配在不同的時(shí)間段,尤其被不同的參與者執(zhí)行,最好還是將各部分作為單獨(dú)的用況對待。2)從系統(tǒng)功能角度捕獲用況6、描述用況用況文檔模板用況名描述:對該用況的一句或兩句的描述。參與者:該用況的參與者。包含:該用況所包含的用況,以及包含它的用況。擴(kuò)展:該用況可以擴(kuò)展的用況,以及擴(kuò)展它的用況。泛化:該用況的子用況和父用況。前置條件:啟動(dòng)該用況所必須具備的條件。事件流:該用況的細(xì)節(jié)。(基本流與可選流)后置條件:在該用況結(jié)束時(shí)確保成立的條件。異常:在該用況的執(zhí)行的過程中可能引起的例外*。注釋:對該用況是重要的任何附加信息。6、描述用況用況文檔模板用況圖
用況圖呈現(xiàn)了一些參與者和一些用況,以及它們之間的關(guān)系。
在圖形上,用況圖是一幅由一組參與者、一組用況以及這些元素之間的關(guān)系組成的圖。這些關(guān)系是參與者和用況之間的關(guān)聯(lián)、參與者之間的泛化,以及用況之間的泛化、擴(kuò)展和包含??梢赃x擇把一些用況用一個(gè)矩形圍起來,用來表示系統(tǒng)邊界。用況圖可以包含注解和約束。
用況圖示例該用況應(yīng)優(yōu)先開發(fā)示例該用況應(yīng)優(yōu)先開發(fā)用況圖的益處:為開發(fā)者提供一種認(rèn)識和理解系統(tǒng)的方法為領(lǐng)域?qū)<?、最終用戶和開發(fā)者提供一種相互交流的手段。易于對需求規(guī)范化
——用戶給出的需求材料常常是不規(guī)范或不夠準(zhǔn)確的。故要較為規(guī)范地定義用況,以全面和比較準(zhǔn)確地用用況中表達(dá)用戶的功能需求。有利于進(jìn)行OOA——有助于發(fā)現(xiàn)主動(dòng)對象對系統(tǒng)測試來說,產(chǎn)生測試用例。有助于設(shè)計(jì)人機(jī)界面……用況圖的益處:審查參與者■
確定系統(tǒng)環(huán)境中的所有與系統(tǒng)有關(guān)的角色,并都?xì)w入了相應(yīng)的參與者。■
每個(gè)參與者都至少和一個(gè)用況關(guān)聯(lián);■
若一個(gè)參與者是另一個(gè)參與者的一部分,或扮演了類似的角色,考慮在它們之間使用泛化關(guān)系;用況■
每個(gè)用況都至少和一個(gè)參與者相關(guān);■
若兩個(gè)用況有相同或相似的序列,可能需要合并它們,或抽取出一個(gè)新用況,在它們之間使用包含、擴(kuò)展或泛化關(guān)系?!?/p>
若用況過于復(fù)雜,為了易于理解,考慮進(jìn)行分解;若一個(gè)用況中有完全不同的事件流,最好把它分解成不同的用況
審查例題
很多軟件系統(tǒng)在一開始都需要登錄,若用戶登錄成功,則可進(jìn)入系統(tǒng)。如下以一個(gè)研究生學(xué)籍管理系統(tǒng)為例,描述四種登錄方法。為了簡化起見,假設(shè)此處僅描述登錄、選課和查看學(xué)分這3項(xiàng)功能。
例題方案一:由于選課和查看學(xué)分都需要登錄,故專門設(shè)立一個(gè)“登錄”用況。若登錄成功,則可以進(jìn)行選課,也可以進(jìn)行查看學(xué)分。
登錄查看學(xué)分選課《include》《include》研究生該方法的缺點(diǎn)是,
(1)必須要了解系統(tǒng)的所有其它模塊,才能描述清楚“登錄”用況。向系統(tǒng)增加新用況時(shí),也要修改登錄用況。從維護(hù)的角度看,有時(shí)會忘記對“登錄”用況進(jìn)行修改。(2)“登錄”用況的功能不單一。研究生啟動(dòng)系統(tǒng);系統(tǒng)提示研究生輸入研究生證號和密碼;研究生輸入研究生證號和密碼;系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息;若通過,若該生選擇選課系統(tǒng)執(zhí)行用況“選課”;若通過,若該生選擇查看學(xué)分系統(tǒng)執(zhí)行用況“查看學(xué)分”;
如下為對用況“登錄”的描述:方案一:登錄查看學(xué)分選課《include》《include》方案二:讓所有的相關(guān)用況都包含登錄用況。
登錄查看學(xué)分選課《include》《include》研究生如下為對用況“選課”的描述:
研究生啟動(dòng)系統(tǒng),調(diào)用用況“登錄”若通過,系統(tǒng)執(zhí)行用況“選課”的其余部分;這個(gè)方法中的“登錄”用況僅描述有關(guān)登錄的信息。其缺點(diǎn)為,對研究生要進(jìn)行多次驗(yàn)證。
——研究生執(zhí)行系統(tǒng)的每項(xiàng)功能都要先登錄。研究生啟動(dòng)系統(tǒng),調(diào)用用況“登錄”若通過,系統(tǒng)執(zhí)行用況“查看學(xué)分”的其余部分;如下為對用況“查看學(xué)分”的描述:
方案二:登錄查看學(xué)分選課《include》《include》方案三:使用擴(kuò)展,設(shè)計(jì)系統(tǒng)登錄。
登錄擴(kuò)展點(diǎn)選課查看學(xué)分選課《extend》《extend》研究生如下為對用況“登錄”的描述
研究生啟動(dòng)系統(tǒng);系統(tǒng)提示研究生輸入研究生證號和密碼;研究生輸入研究生證號和密碼;系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息;若通過,若該生選擇選課系統(tǒng)在擴(kuò)展點(diǎn)”選課”處執(zhí)行用況“選課”;若通過,若該生選擇查看學(xué)分系統(tǒng)在擴(kuò)展點(diǎn)”查看學(xué)分”處執(zhí)行用況“查看學(xué)分”;該方法與方法一相比,對“登錄”用況的描述要清楚一些。在增加新用況時(shí),僅在登錄用況中添加擴(kuò)展點(diǎn)即可。缺點(diǎn):“登陸”用況的功能仍然不單一。擴(kuò)展條件:{選擇選課}擴(kuò)展點(diǎn):選課查看學(xué)分?jǐn)U展條件:{選擇查看學(xué)分}擴(kuò)展點(diǎn):查看學(xué)分方案三:登錄選課《extend》《extend》研究生如下為方案四:登錄用況完全獨(dú)立于其它用況
登錄查看學(xué)分選課研究生如下為對用況“登錄”的描述:
研究生啟動(dòng)系統(tǒng);系統(tǒng)提示研究生輸入研究生證號和密碼;研究生輸入研究生證號和密碼;系統(tǒng)進(jìn)行驗(yàn)證,給出驗(yàn)證信息;如下為對用況“選課”的開始部分的描述
若研究生通過了登錄且選擇了選課,系統(tǒng)開始執(zhí)行用況“選課”;……使用該方法,必須要在“選課”用況和“查看學(xué)分”用況中指定前置條件:只有在登錄成功后才能執(zhí)行自己。
方案四:登錄查看學(xué)分選課研究生如下為對用況“登錄”的描述:例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊課程。在每個(gè)學(xué)期選課開始之前,系統(tǒng)管理員需要對系統(tǒng)中的教師信息、課程信息和學(xué)生信息進(jìn)行維護(hù)。學(xué)期結(jié)束后,將本學(xué)期成績歸檔到學(xué)籍檔案系統(tǒng)。
學(xué)生登錄系統(tǒng)后會得到一份本學(xué)期將要開設(shè)的課程目錄。每門課程包含的信息有開課系別、教師、上課時(shí)間、教室、容納的學(xué)生數(shù)量和學(xué)生選擇課程的先決條件。當(dāng)學(xué)生選擇了一門課程后,系統(tǒng)需訪問學(xué)籍檔案系統(tǒng),查詢是否符合選課的先決條件。如果不符合,系統(tǒng)給出提示信息。每個(gè)學(xué)期有一段時(shí)間讓學(xué)生可以改變計(jì)劃,學(xué)生可以在這段時(shí)間內(nèi)訪問聯(lián)機(jī)系統(tǒng)以增選課程或退選課程。例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊課程。例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊課程。教師可以訪問在線系統(tǒng),查看將要教授哪些課程和每門課程有哪些學(xué)生報(bào)名,課程考試結(jié)束后可以提交成績,系統(tǒng)可以生成帶有成績分布統(tǒng)計(jì)結(jié)果的成績單。例:選課系統(tǒng)。給教師分配課程和學(xué)生注冊課程。1.確定業(yè)務(wù)參與者通過關(guān)注系統(tǒng)的業(yè)務(wù)參與者,我們可以將重點(diǎn)放在如何使用系統(tǒng),而不是如何構(gòu)造系統(tǒng)上,并且有助于進(jìn)一步明確系統(tǒng)的范圍和邊界。當(dāng)系統(tǒng)比較龐大和復(fù)雜時(shí),要搞清楚系統(tǒng)的需求往往比較困難,通過明確參與者,可以針對參與者確定系統(tǒng)需求,有助于保證系統(tǒng)需求的完整性。1.確定業(yè)務(wù)參與者通過關(guān)注系統(tǒng)的業(yè)務(wù)參與者,我們可以將重點(diǎn)1.確定業(yè)務(wù)參與者可通過以下資料來確定系統(tǒng)的參與者:標(biāo)識系統(tǒng)范圍和邊界的環(huán)境圖;現(xiàn)有系統(tǒng)(如果有的話)的文檔和用戶手冊;項(xiàng)目會議和研討會的記錄;現(xiàn)有的需求文檔、工作手冊等。1.確定業(yè)務(wù)參與者可通過以下資料來確定系統(tǒng)的參與者:1.確定業(yè)務(wù)參與者還可以通過提出以下問題,明確系統(tǒng)的參與者:誰或者什么為系統(tǒng)提供輸入?誰或者什么接收系統(tǒng)的輸出?需要與其他系統(tǒng)連接的接口嗎?是否存在在預(yù)定的時(shí)間自動(dòng)觸發(fā)的事件?誰將維護(hù)系統(tǒng)中的信息?1.確定業(yè)務(wù)參與者還可以通過提出以下問題,明確系統(tǒng)的參與者1.確定業(yè)務(wù)參與者從選課系統(tǒng)的需求描述中,可以確定4類參與者:學(xué)生(Student)教師(Teacher)系統(tǒng)管理員(Administrator)學(xué)籍檔案系統(tǒng)(ArchiveSystem)1.確定業(yè)務(wù)參與者從選課系統(tǒng)的需求描述中,可以確定4類參與2.確定業(yè)務(wù)需求用例以下問題可以幫助我們更好地標(biāo)識系統(tǒng)的用例:每個(gè)參與者的特定任務(wù)是什么?是否每個(gè)參與者都要從系統(tǒng)中創(chuàng)建、存儲、改變、移動(dòng)或讀取信息?是否任何參與者需要通知系統(tǒng)有關(guān)突發(fā)性的、外部的改變?哪些用例支持或維護(hù)系統(tǒng)?目前的用例是否覆蓋了所有功能需求?2.確定業(yè)務(wù)需求用例以下問題可以幫助我們更好地標(biāo)識系統(tǒng)的用2.確定業(yè)務(wù)需求用例環(huán)境圖是分析參與者和發(fā)現(xiàn)潛在用例的極好來源,它不僅可以用在結(jié)構(gòu)化分析方法中,也可以用于面向?qū)ο蟮姆治龇椒ㄖ?。通過環(huán)境圖,可以確定系統(tǒng)的主要輸入輸出,通過提交和接收輸入輸出的各方確定潛在的用例。2.確定業(yè)務(wù)需求用例環(huán)境圖是分析參與者和發(fā)現(xiàn)潛在用例的極好選課系統(tǒng)的環(huán)境圖選課系統(tǒng)的環(huán)境圖選課系統(tǒng)的業(yè)務(wù)列表選課系統(tǒng)的業(yè)務(wù)列表用例的規(guī)格說明對用例的完整描述包括用例名稱、執(zhí)行者、前置條件、后置條件、一個(gè)主事件流、零到多個(gè)備選事件流。主事件流表示正常情況下執(zhí)行者與系統(tǒng)之間的信息交互及動(dòng)作序列,備選事件流則表示特殊情況或異常情況下的信息交互及動(dòng)作序列。應(yīng)給出每個(gè)用例的規(guī)格說明。
用例的規(guī)格說明對用例的完整描述包括用例名稱、執(zhí)行者、前置條件用例“選擇課程”的規(guī)格說明用例“選擇課程”的規(guī)格說明用例“選擇課程”的規(guī)格說明用例“選擇課程”的規(guī)格說明3.創(chuàng)建用例圖用例圖是若干個(gè)參與者和用例,以及它們間的關(guān)系構(gòu)成的圖形表示。每個(gè)系統(tǒng)通常都有一個(gè)總體視圖(GlobalViewofActorsandUseCases),如果總體視圖過于復(fù)雜,則可以創(chuàng)建多個(gè)用例圖,每個(gè)用例圖關(guān)注系統(tǒng)的某一方面。通常是圍繞參與者創(chuàng)建用例圖。3.創(chuàng)建用例圖用例圖是若干個(gè)參與者和用例,以及它們間的關(guān)系使用Rose創(chuàng)建用例模型1.在Rose中創(chuàng)建參與者(actors)創(chuàng)建的角色應(yīng)放在Use-CaseModel包中的Actors包中比較好,如果模型結(jié)構(gòu)中沒有這樣的包,可以先創(chuàng)建Actors包,之后按下面的步驟創(chuàng)建角色:
(1)在瀏覽器窗口中的Actors包上單擊鼠標(biāo)右鍵,顯示彈出菜單;
(2)選擇New:Actor菜單選項(xiàng),系統(tǒng)創(chuàng)建名為NewClass的參與者;
(3)選中新創(chuàng)建的參與者,更名為設(shè)計(jì)的名字。使用Rose創(chuàng)建用例模型1.在Rose中創(chuàng)建參與者(act使用Rose創(chuàng)建用例模型1.在Rose中創(chuàng)建參與者(actors)使用Rose創(chuàng)建用例模型1.在Rose中創(chuàng)建參與者(act使用Rose創(chuàng)建用例模型2.給參與者添加文檔在Rose中我們對模型元素都可以(在多數(shù)情況下是必須的)添加文檔以描述更多的信息。應(yīng)該給模型中的每個(gè)actor添加摘要描述,摘要描述表示actor和系統(tǒng)交互的規(guī)則。課程注冊系統(tǒng)中actor的摘要描述如下:
Student——在學(xué)校注冊上課的人;
Teacher——學(xué)校授權(quán)上課的人;
Administrator——系統(tǒng)認(rèn)同的維護(hù)人員;
ArchiveSystem——管理學(xué)生學(xué)籍檔案的外部系統(tǒng)。使用Rose創(chuàng)建用例模型2.給參與者添加文檔使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(UseCase)應(yīng)該將用例放在Usecases包中,如果您的模型結(jié)構(gòu)中沒有這樣的包,則應(yīng)該先創(chuàng)建包。也可以將每個(gè)用例放在單獨(dú)的包中,因此可以先創(chuàng)建相應(yīng)的包,再創(chuàng)建用例。另外,在多個(gè)用例中使用的公共用例,如驗(yàn)證用戶(ValidateUser),可以放在一個(gè)單獨(dú)的包中,如可以在Usecases包中創(chuàng)建IncludedUseCases包來存放公共用例。使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(Use使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(UseCase)在Rose中創(chuàng)建用例的過程如下:
(1)在瀏覽器的相應(yīng)包上單擊鼠標(biāo)右鍵,彈出菜單顯示;
(2)選擇New:UseCase選項(xiàng),則在瀏覽器中生成名為NewUseCase的新用例;
(3)選中創(chuàng)建的新用例,鍵入設(shè)計(jì)的名字。重復(fù)上面的步驟,直到將所有需要的用例都創(chuàng)建完成。使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(Use使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(UseCase)
使用Rose創(chuàng)建用例模型3.在Rose中創(chuàng)建用例(Use使用Rose創(chuàng)建用例模型4.為用例增加文檔描述將每個(gè)用例的規(guī)格說明增加到Rose系統(tǒng)中。例如,可以將選擇課程的規(guī)格說明存放在一個(gè)單獨(dú)的Word文檔“選擇課程的規(guī)格說明.doc”中,并將此文件作為附加文檔添加到Rose中的“Registerforacourse”用例下。
使用Rose創(chuàng)建用例模型4.為用例增加文檔描述使用Rose創(chuàng)建用例模型4.為用例增加文檔描述將用例的規(guī)格說明文檔關(guān)聯(lián)到用例的方法如下:(1)在瀏覽器中的用例(如“Registerforacourse”)上單擊鼠標(biāo)右鍵彈出菜單;(2)選擇Specification菜單;(3)選擇Files標(biāo)簽頁;(4)單擊右鍵彈出快捷菜單;(5)選擇InsertFile菜單,如圖所示;
使用Rose創(chuàng)建用例模型4.為用例增加文檔描述使用Rose創(chuàng)建用例模型4.為用例增加文檔描述(6)瀏覽目錄列表選擇要關(guān)聯(lián)的文件;(7)單擊打開按鈕,系統(tǒng)將選擇的文件加到說明窗口中,如圖所示;(8)單擊OK按鈕關(guān)閉Specification窗口。使用Rose創(chuàng)建用例模型4.為用例增加文檔描述使用Rose創(chuàng)建用例模型5.創(chuàng)建用例圖在Rose中創(chuàng)建用例圖的過程如下:(1)加入?yún)⑴c者及用例①在瀏覽器中的用例視圖(UseCaseView)中雙擊Main;②單擊一個(gè)actor選中,并將其拖動(dòng)到圖中;③重復(fù)步驟②,把每個(gè)需要的actor加入到圖中;④在瀏覽器中選擇一個(gè)用例并把它拖到圖中;⑤重復(fù)步驟④把所有用例都拖到圖中。使用Rose創(chuàng)建用例模型5.創(chuàng)建用例圖使用Rose創(chuàng)建用例模型(2)創(chuàng)建參與者與用例之間的關(guān)聯(lián)關(guān)系在圖形工具欄上單擊Association(雙向關(guān)聯(lián))或UnidirectionalAssociation(單向關(guān)聯(lián))圖標(biāo),在起始actor上單擊并拖動(dòng)到usecase上??梢园聪旅娴牟襟E給關(guān)聯(lián)關(guān)系增加關(guān)系類型(構(gòu)造型,stereotype):
①雙擊Association線,彈出Specifi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度豪華汽車品牌按揭貸款服務(wù)協(xié)議
- 二零二五年度風(fēng)力發(fā)電機(jī)組樁基施工勞務(wù)分包服務(wù)協(xié)議書
- 2025年度租賃合同違約金與租賃關(guān)系終止合同
- 2025年度電力設(shè)施裝卸作業(yè)安全責(zé)任書
- 2025年度高級管理人員競業(yè)限制及保密協(xié)議書
- 全站儀基礎(chǔ)知識
- 二零二五年度模特與剪輯師合作拍攝合同
- 二零二五年度企業(yè)廉潔自律行為規(guī)范執(zhí)行監(jiān)督協(xié)議
- 二零二五年度房地產(chǎn)買賣合同糾紛法庭調(diào)解和解協(xié)議
- 二零二五年度文化產(chǎn)品推廣居間合同服務(wù)費(fèi)用約定
- 再生資源門店加盟協(xié)議書
- 療愈珠寶的科學(xué)與藝術(shù)
- 新能源汽車車位租賃合同
- 《人工智能導(dǎo)論》(第2版)高職全套教學(xué)課件
- 39 《出師表》對比閱讀-2024-2025中考語文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
- 院前急救技術(shù)-止血包扎固定搬運(yùn)課件
- 中國煤炭地質(zhì)總局公開招聘報(bào)名表
- 電子商務(wù)數(shù)據(jù)分析基礎(chǔ)(第二版) 課件 模塊1、2 電子商務(wù)數(shù)據(jù)分析概述、基礎(chǔ)數(shù)據(jù)采集
- YB-T+4190-2018工程用機(jī)編鋼絲網(wǎng)及組合體
- 高大模板安全施工施工安全保證措施
- 地連墻鋼筋籠吊裝安全施工T及T吊裝驗(yàn)算及設(shè)備選定
評論
0/150
提交評論