軟件工程課件:第4章 面向?qū)ο蠓治龇椒╛第1頁
軟件工程課件:第4章 面向?qū)ο蠓治龇椒╛第2頁
軟件工程課件:第4章 面向?qū)ο蠓治龇椒╛第3頁
軟件工程課件:第4章 面向?qū)ο蠓治龇椒╛第4頁
軟件工程課件:第4章 面向?qū)ο蠓治龇椒╛第5頁
已閱讀5頁,還剩281頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 面向?qū)ο蠓治龇椒?面向?qū)ο蟮母拍钆c開發(fā)方法 統(tǒng)一建模語言UML概述 面向?qū)ο蠓治?UML建模工具Rational Rose,4.1 面向?qū)ο蟮母拍钆c開發(fā)方法,現(xiàn)實世界就是由各種對象組成的,如建筑物、人、汽車、動物、植物等。 復雜的對象可以由簡單的對象組成。 在研究對象時主要考慮對象的屬性和行為,有些不同的對象會呈現(xiàn)相同或相似的屬性和行為,如轎車、卡車、面包車。 通常將屬性及行為相同或相似的對象歸為一類。 類可以看成是對象的抽象,代表了此類對象所具有的共有屬性和行為。,4.1面向?qū)ο蟮母拍钆c開發(fā)方法,Coad和Yourdon給出了“面向?qū)ο蟆钡囊粋€定義: 面向?qū)ο髮ο箢惱^承消息通信 如果

2、一個系統(tǒng)是使用這樣4個概念設(shè)計和實現(xiàn)的,則可認為這個系統(tǒng)是面向?qū)ο蟮摹?面向?qū)ο蠹夹g(shù)的發(fā)展歷史,初始階段 1960s: 挪威奧斯陸大學和挪威計算中心共同研制了Simula語言 1980s: Xerox研究中心推出了Smalltalk語言和環(huán)境,面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù)),發(fā)展階段 1980s: 理論基礎(chǔ),許多OO 編程語言(如C+, Objective-C等) 面向?qū)ο缶幊陶Z言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦酥?面向?qū)ο蠹夹g(shù)的發(fā)展歷史(續(xù)),成熟階段 1990s: 面向?qū)ο蠓治龊驮O(shè)計方法(Booch, OMT, OOSE等), Java 語言 面向?qū)ο蟮姆治龊驮O(shè)計技術(shù)逐漸走向?qū)嵱?,最終形

3、成了從分析、設(shè)計到編程、測試與維護一整套的軟件工程體系,問題域,測試,編程,計算機,編程語言,自然語言,需求 分析,總體 設(shè)計,詳細 設(shè)計,軟件工程學的作用 結(jié)構(gòu)化的軟件工程方法,問題域,OOA,計算機,自然語言,面向?qū)ο蟮?編程語言,OOD,OOP,OOT,軟件工程學的作用 面向?qū)ο蟮能浖こ谭椒?一切都是對象 例題:編寫一個開發(fā)票程序,需要對發(fā)票的名細欄進行計算。,非面向?qū)ο笏悸罚?定義數(shù)據(jù)結(jié)構(gòu) 定義函數(shù),面向?qū)ο笏悸罚?對象 一組屬性 操作:發(fā)票總計 ,客觀世界,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象名 屬性 操作 ,類,類,類,類,分類,類,繼承,類,類,對象

4、,聚合,抽象 客觀事物及其間的聯(lián)系,關(guān)聯(lián),用況圖,類圖,順序圖,狀態(tài)圖,活動圖,構(gòu)件圖,OO模型,對象,對象,對象,對象,對象,對象,對象,對象,計算機內(nèi)的對象,編程,構(gòu)成,封裝,運行,分析,設(shè)計,對象,對象是包含現(xiàn)實世界物體特征的抽象實體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。 例如,Student對象的數(shù)據(jù)可能有姓名、性別、出生日期、家庭住址、電話號碼等,其操作可能是對這些數(shù)據(jù)值的賦值及更改。,對象,對象與后面講的類具有幾乎完全相同的表示形式,主要差別是對象的名字下面要加一條下劃線。對象名有下列三種表示格式: (1) 第一種格式是對象名在前,類名在后,中間用冒號連接。形如: 對象

5、名:類名 (2) 第二種格式形如: :類名 這種格式用于尚未給對象命名的情況,注意,類名前的冒號不能省略。 (3) 第三種格式形如: 對象名,對象,對象有兩個層次的概念: (1) 現(xiàn)實生活中對象指的是客觀世界的實體。可以是可見的有形對象,如人、學生、汽車、房屋等;也可以是抽象的邏輯對象,如銀行帳號,生日。 (2) 程序中對象就是一組變量和相關(guān)方法的集合,其中變量表明對象的狀態(tài),方法表明對象所具有的行為。,對象,可以將程序中的對象分為5類:物理對象,角色,事件,交互,規(guī)格說明。 物理對象(Physical Objects) 物理對象是最易識別的對象,通??梢栽趩栴}領(lǐng)域的描述中找到,它們的屬性可以

6、標識和測量。 例如,大學課程注冊系統(tǒng)中的學生對象;一個網(wǎng)絡(luò)管理系統(tǒng)中各種網(wǎng)絡(luò)物理資源對象(如開關(guān)、CPU和打印機)都是物理對象。,對象,(2) 角色(Roles) 一個實體的角色也可以抽象成一個單獨的對象。角色對象的操作是由角色提供的技能。 例如,一個面向?qū)ο笙到y(tǒng)中通常有“管理器”對象,它履行協(xié)調(diào)系統(tǒng)資源的角色。一個窗口系統(tǒng)中通常有“窗口管理器”對象,它扮演協(xié)調(diào)鼠標器按鈕和其他窗口操作的角色。特別地,一個實際的物理對象可能同時承擔幾個角色。 例如,一個退休教師同時扮演退休者和教師的角色。,對象,(3) 事件(Events) 一個事件是某種活動的一次“出現(xiàn)”。 例如“鼠標”事件。一個事件對象通常

7、是一個數(shù)據(jù)實體,它管理“出現(xiàn)”的重要信息。事件對象的操作主要用于對數(shù)據(jù)的存取。 如“鼠標”事件對象有諸如光標坐標、左右鍵、單擊,雙擊等信息。,對象,(4) 交互(Interactions) 交互表示了在兩個對象之間的關(guān)系,這種類型的對象類似于在數(shù)據(jù)庫設(shè)計時所涉及的“關(guān)系”實體。 當實體之間是多對多的關(guān)系時,利用交互對象可將其簡化為兩個一對多的關(guān)系。 例如,在大學課程注冊系統(tǒng)中,學生和課程之間的關(guān)系是多對多的關(guān)系,可設(shè)置一個“選課”交互對象來簡化它們之間的關(guān)系。,類與封裝,類。可以將現(xiàn)實生活中的對象經(jīng)過抽象,映射為程序中的對象。對象在程序中是通過一種抽象數(shù)據(jù)類型來描述的,這種抽象數(shù)據(jù)類型稱為類(

8、Class)。 為了讓計算機創(chuàng)建對象,必須先提供對象的定義,也就是先定義對象所屬的類。例如,可以將學生對象所屬的類定義為Student。類的圖形表示如圖所示。,類與封裝,封裝。面向?qū)ο蟮姆庋b特性與其抽象特性密切相關(guān)。封裝是一種信息隱蔽技術(shù),就是利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起。用戶只能看到對象的封裝界面信息,對象的內(nèi)部細節(jié)對用戶是隱蔽的。 封裝的定義是: (1) 清楚的邊界,所有對象的內(nèi)部信息被限定在這個邊界內(nèi); (2) 接口,即對象向外界提供的方法,外界可以通過這些方法與對象進行交互; (3) 受保護的內(nèi)部實現(xiàn),即軟件對象功能的實現(xiàn)細節(jié),實現(xiàn)細節(jié)不能從類外訪問。,繼承,繼承。

9、繼承是一種聯(lián)結(jié)類的層次模型,為類的重用提供了方便,它提供了明確表述不同類之間共性的方法。 我們將公共類稱為超類(superclass)、父類(father class)、祖先(ancestor)或基類(base class),而從其繼承的類稱為子類(subclasses)、后代(deslendane)或?qū)С鲱悾╠erived class)。,多態(tài),根據(jù)為請求提供服務(wù)的對象不同可以得到不同的行為,這種現(xiàn)象稱為多態(tài)。 在運行時對類進行實例化,并調(diào)用與實例化對象相應(yīng)的方法,稱為動態(tài)綁定、后期綁定或運行時綁定。相應(yīng)地,如果方法的調(diào)用是在編譯時確定的,則稱為是靜態(tài)綁定、前期綁定或編譯時綁定。 通過在子類

10、中覆蓋父類的方法實現(xiàn)多態(tài)。,消息通信,消息是一個對象與另一個對象的通信單元,是要求某個對象執(zhí)行類中定義的某個操作的規(guī)格說明。 發(fā)送給一個對象的消息定義了一個方法名和一個參數(shù)表(可能是空的),并指定某一個對象。 一個對象接收到消息,則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。,面向?qū)ο蟮拈_發(fā)方法,面向?qū)ο筌浖_發(fā)方法的特征 方法的唯一性即方法是對軟件開發(fā)過程所有階段進行綜合考慮而得到的。 從生存期的一個階段到下一個階段的高度連續(xù)性即生存期后一階段的成果只是在前一階段成果的補充和修改。 把面向?qū)ο蠓治?OOA)、面向?qū)ο笤O(shè)計(OOD)和面向?qū)ο蟪绦蛟O(shè)計(OOP)集成到生存期的相

11、應(yīng)階段。,面向?qū)ο蟮拈_發(fā)方法,Rumbaugh方法 Rumbaugh和他的同事提出的對象模型化技術(shù)(OMT)用于分析、系統(tǒng)設(shè)計和對象級設(shè)計。分析活動建立三個模型: 對象模型(描述對象、類、層次和關(guān)系); 動態(tài)模型(描述對象和系統(tǒng)的行為); 功能模型(類似于高層的DFD,描述穿越系統(tǒng)的信息流)。,面向?qū)ο蟮拈_發(fā)方法,Coad和Yourdon方法 Coad和Yourdon方法常常被認為是最容易學習的OOA方法。建模符號相當簡單,其OOA過程如下: (1) 使用“要找什么”準則標識對象; (2) 定義對象之間的一般化/特殊化結(jié)構(gòu)(又稱為分類結(jié)構(gòu)); (3) 定義對象之間的整體/部分結(jié)構(gòu)(又稱為組合結(jié)

12、構(gòu)); (4) 標識主題; (5) 定義對象的屬性及對象之間的實例連接; (6) 定義服務(wù)及對象之間的消息連接。,面向?qū)ο蟮拈_發(fā)方法,Booch方法 包含“微開發(fā)過程”和“宏開發(fā)過程”兩個過程。 OOA 宏觀開發(fā)過程如下: 標識類和對象; 標識類和對象的語義; 標識類和對象間的關(guān)系; 進行一系列精化; 實現(xiàn)類和對象。,面向?qū)ο蟮拈_發(fā)方法,Jacobson方法 也稱為OOSE(面向?qū)ο筌浖こ?,其特點是特別強調(diào)使用用例用以描述用戶和產(chǎn)品或系統(tǒng)間如何交互的場景。 過程如下: 標識系統(tǒng)的用戶和他們的整體責任 構(gòu)造需求模型 構(gòu)造分析模型,4.2 統(tǒng)一建模語言UML概述,面向?qū)ο蟮慕UZ言很多,目前使

13、用最廣泛的是統(tǒng)一建模語言(UML,Unified Modeling Language); 它將Booch、Rumbaugh和Jacobson等各自獨立的OOA和OOD方法中最優(yōu)秀的特色組合成一個統(tǒng)一的方法。,4.2.1UML的產(chǎn)生和發(fā)展,UML(Unified Modeling Language)的概念于1996年由面向?qū)ο蠓椒I(lǐng)域的三位著名專家Grady Booch,James Rumbaugh和Ivar Jacobson提出的。 1996年6月和10月分別發(fā)布了UML0.9, UML0.91。 1997年1月,UML1.0被提交給對象管理組織OMG。 1997年9月,提交UML1.1,19

14、97年11月被OMG采納作為基于面向?qū)ο蠹夹g(shù)的標準建模語言。 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.2,UML的產(chǎn)生和發(fā)展,UML的特點,(1)統(tǒng)一標準 UML不僅統(tǒng)一了Booch、OMT和OOSE等方法中的基本概念,還吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域中其他流派的長處,其中也包括非OO方法的影響。已經(jīng)成為OMG的標準。 (2)面向?qū)ο?UML支持面向?qū)ο蠹夹g(shù)的主要概念,它提供了一批基本的表示模型元素的圖形和方法,能簡潔明了地表達

15、面向?qū)ο蟮母鞣N概念和模型元素。,UML的特點,(3)可視化,表達能力強大 UML是一種圖形化語言,用UML的模型圖形能清晰地表示系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型。UML還提供了語言的擴展機制,用戶可以根據(jù)需要增加定義自己的構(gòu)造型、標記值和約束等。 (4)獨立于過程 UML是系統(tǒng)建模的語言,不依賴特定的開發(fā)過程。,UML的特點,(5) 容易掌握使用 UML概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用。 (6)與編程語言的關(guān)系 支持UML的一些CASE工具(如Rose)可以根據(jù) UML所建立的系統(tǒng)模型自動產(chǎn)生Java、C+ 等代碼框架。,4.2.2 UML的基本模型,UML符號為開發(fā)者或開發(fā)工

16、具使用這些圖形符號和文本語法為系統(tǒng)建模提供了標準。 這些圖形符號和文字所表達的是應(yīng)用級的模型,在語義上它是UML元模型的實例。 UML模型由事物、關(guān)系和圖組成,4.2.2 UML的基本模型,4.2.3 UML的事物,事物是對模型中最具代表性成分的抽象,在UML中,可以分為結(jié)構(gòu)事物、行為事物、分組事物和注釋事物4類。,結(jié)構(gòu)事物,結(jié)構(gòu)事物是UML模型的靜態(tài)部分,主要用來描述概念的或物理的元素,包括類、主動類、接口、對象、用例、參與者、協(xié)作、構(gòu)件和節(jié)點等。 (1)類(class) 類用帶有類名、屬性和操作的矩形框來表示。,結(jié)構(gòu)事物,(2)主動類(active class) 主動類的實例應(yīng)具有一個或多

17、個進程或線程,能夠啟動控制活動。,(3)接口(interface) 描述了一個類或構(gòu)件的一組外部可用的服務(wù)(操作)集。 接口定義的是一組操作的描述,而不是操作的實現(xiàn)。 一般將接口畫成從實現(xiàn)它的類或構(gòu)件引出的圓圈,接口體現(xiàn)了使用與實現(xiàn)分離的原則。,結(jié)構(gòu)事物,(4)對象(object) 對象是類的實例,其名字下邊加下劃線,對象的屬性值需明確給出。 (5)用例(use case) 也稱用況,用于表示系統(tǒng)想要實現(xiàn)的行為,即描述一組動作序列(即場景)。而系統(tǒng)執(zhí)行這組動作后將產(chǎn)生一個對特定參與者有價值的結(jié)果。,結(jié)構(gòu)事物,(6)參與者(actor) 也稱角色,是指與系統(tǒng)有信息交互關(guān)系的人、軟件系統(tǒng)或硬件設(shè)備

18、,在圖形上用簡化的小木頭人表示。 (7)協(xié)作(collaboration) 用例僅描述要實現(xiàn)的行為,不描述這些行為的實現(xiàn)。這種實現(xiàn)用協(xié)作描述。 協(xié)作定義交互,描述一組角色實體和其他實體如何通過協(xié)同工作來完成一個功能或行為。類可以參與幾個協(xié)作。,結(jié)構(gòu)事物,(8)構(gòu)件(component) 也稱組件,是系統(tǒng)中物理的、可替代的部件。它通常是描述一些邏輯元素的物理包。 (9)節(jié)點(node) 是在運行時存在的物理元素。它代表一種可計算的資源,通常具有一定的記憶能力和處理能力。,行為事物,行為事物是UML模型的動態(tài)部分,包括兩類: (1)交互(interaction) 交互由在特定的上下文環(huán)境中共同完成

19、一定任務(wù)的一組對象之間傳遞的消息組成。如圖所示。交互涉及的元素包括消息、動作序列(由一個消息所引起的行為)和鏈(對象間的連接)。,對象之間的交互,行為事物,(2)狀態(tài)機(state machine) 描述了一個對象或一個交互在生存周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列,單個類或者一組類之間協(xié)作的行為都可以用狀態(tài)機來描述。 狀態(tài)機涉及到狀態(tài)、變遷和活動,其中狀態(tài)用圓角矩形來表示。,分組事物,分組事物是UML模型的組織部分。它的作用是為了降低模型復雜性。 UML中的分組事物是包(package)。 包是把模型元素組織成組的機制,結(jié)構(gòu)事物、行為事物甚至其他分組事物都可以放進包內(nèi)。,注釋事物,注釋事物是UML

20、模型的解釋部分,它們用來描述和標注模型的任何元素。 通??梢杂米⑨屝揎棊в屑s束或者解釋的圖。,4.2.4 UML的關(guān)系,依賴關(guān)系,依賴(Dependency)是兩個事物之間的語義關(guān)系,其中一個事物發(fā)生變化會影響到另一個事物的語 義,它用一個虛線箭頭表示。 虛線箭頭的方向從源事物指向目標事物,表示源事物依賴于目標事物。,依賴關(guān)系,依賴關(guān)系,關(guān)聯(lián)關(guān)系,關(guān)聯(lián)(association)是一種結(jié)構(gòu)關(guān)系,它描述了兩個或多個類的實例之間的連接關(guān)系,是一種特殊的依賴。 關(guān)聯(lián)分為普通關(guān)聯(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)聯(lián)關(guān)系,只要類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)

21、表示。普通關(guān)聯(lián)又分為二元關(guān)聯(lián)和多元關(guān)聯(lián)。 二元關(guān)聯(lián)描述兩個類之間的關(guān)聯(lián),用兩個類之間的一條直線來表示,直線上可寫上關(guān)聯(lián)名。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),多重性(multiplicity):多重性表明在一個關(guān)聯(lián)的兩端連接的類實例個數(shù)的對應(yīng)關(guān)系,即一端的類的多少個實例對象可以與另一端的類的一個實例相關(guān)。 如果圖中沒有明確標出關(guān)聯(lián)的多重性,則默認的多重性為1。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),角色:關(guān)聯(lián)端點上還可以附加角色名,表示類的實例在這個關(guān)聯(lián)中扮演的角色。UML還允許一個類與它自身關(guān)聯(lián)。,關(guān)聯(lián)關(guān)系普通關(guān)聯(lián),多元關(guān)聯(lián):多元關(guān)聯(lián)是指3個或3個以上類之間的關(guān)聯(lián)。 多元關(guān)聯(lián)由一個菱形,以及由菱形引出的通向各個相關(guān)類的直線組成

22、,關(guān)聯(lián)名可標在菱形的旁邊,在關(guān)聯(lián)的端點也可以標上多重性等信息。,關(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)系末端的一個小方框內(nèi)。,關(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)系的語義做詳細的定義、存儲和訪問,為此可以建立關(guān)聯(lián)類(association class),用來描述關(guān)聯(lián)的屬性。 關(guān)聯(lián)中的每個鏈與關(guān)聯(lián)類的一個實例相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。,關(guān)聯(lián)關(guān)系聚合,聚合(Aggregati

23、on)也稱為聚集,是一種特殊的關(guān)聯(lián)。它描述了整體和部分之間的結(jié)構(gòu)關(guān)系。 兩種特殊的聚合關(guān)系:共享聚合(shared aggregation)和復合聚合(composition aggregation)。 如果在聚合關(guān)系中處于部分方的實例可同時參與多個處于整體方實例的構(gòu)成,則該聚合稱為共享聚合。,關(guān)聯(lián)關(guān)系聚合,如果部分類完全隸屬于整體類,部分類需要與整體類共存,一旦整體類不存在了,則部分類也會隨之消失,或失去存在價值,則這種聚合稱為復合聚合。,關(guān)聯(lián)關(guān)系導航,導航(navigability)是關(guān)聯(lián)關(guān)系的一種特性,它通過在關(guān)聯(lián)的一個端點上加箭頭來表示導航的方向。,泛化關(guān)系,泛化(generaliza

24、tion)關(guān)系就是一般類和特殊類之間的繼承關(guān)系。 在UML中,一般類亦稱泛化類,特殊類亦稱特化類。 泛化針對類型而不針對實例,因為一個類可以繼承另一個類,但一個對象不能繼承另一個對象。 泛化可進一步劃分成普通泛化和受限泛化兩類。,泛化關(guān)系普通泛化,普通泛化與前面講過的繼承基本相同。但在泛化關(guān)系中常遇到抽象類。 一般稱沒有具體對象的類為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。,泛化關(guān)系普通泛化,普通泛化可以分為多重繼承和單繼承。多重繼承是指一個子類可同時繼承多個上層父類。,泛化關(guān)系受限泛化,受限泛化關(guān)系是指泛化具有約束條件。 一般有4種約束:交疊(overlappin

25、g)、不相交(disjoint)、完全(complete)和不完全(incomplate)。,實現(xiàn)關(guān)系,實現(xiàn)(implement)是泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語義關(guān)系,通常在以下兩種情況出現(xiàn)實現(xiàn)關(guān)系: (1)接口和實現(xiàn)它們的類或構(gòu)件之間; (2)用例和實現(xiàn)它們的協(xié)作之間。,4.2.4 UML的圖,靜態(tài)結(jié)構(gòu),物理架構(gòu),UML 圖,用況圖:需求獲取,測試依據(jù) 功能 類 圖: 類以及類之間的相互關(guān)系 結(jié)構(gòu) 對象圖:對象以及對象之間的相互關(guān)系 構(gòu)件圖:構(gòu)件及其相互依賴關(guān)系 部署圖:構(gòu)件在各節(jié)點上的部署 時序圖:強調(diào)時間順序的交互圖 行為 協(xié)作圖:強調(diào)對象協(xié)作的交互圖 狀態(tài)圖:類所經(jīng)歷的各種

26、狀態(tài) 活動圖:對工作流程建模,67,用況圖:參與者,參與者(Actor) 參與者是與系統(tǒng)交互的外部實體。 參與者既可以是使用該系統(tǒng)的用戶,也可以是與系統(tǒng)交互的其他外部系統(tǒng)、硬件設(shè)備或組織機構(gòu)。,68,用況圖:參與者,參與者的泛化關(guān)系 參與者之間可以存在泛化的關(guān)系,類似的參與者可以利用泛化關(guān)系組成一般與特殊的層次結(jié)構(gòu)。,69,用況圖:用況,用況(Use Case) 用況是從用戶角度描述系統(tǒng)的行為,它將系統(tǒng)的一個功能描述成一系列事件,這些事件最終對參與者產(chǎn)生有價值的可觀測結(jié)果。 用況可以促進與用戶溝通,理解正確的需求,同時也可以用來劃分系統(tǒng)與外部實體的界限。 用況之間的關(guān)系 包含關(guān)系(includ

27、e) 擴展關(guān)系(extend) 泛化關(guān)系(generalization),70,用況圖:用況,包含關(guān)系(include) 包含關(guān)系是指一個基本用例的行為包含了另一個用例的行為 包含關(guān)系是對用例之間的共性部分進行建模 UML 符號,71,用況圖:用況,擴展關(guān)系(extend) 在用例執(zhí)行過程中,可能會出現(xiàn)異常行為,也可能會在不同的流程分支中選擇執(zhí)行,這時可以將異常行為或可選分支抽象成一個單獨的擴展用例,它與主用例之間形成擴展關(guān)系。 UML 符號,72,用況圖:用況,泛化關(guān)系(generalization) 用例之間的泛化關(guān)系是描述用例之間一般與特殊關(guān)系的,不同的子用例代表了父用例的不同實現(xiàn)方法。

28、 UML 符號,73,用況圖:用況,三種關(guān)系的比較 包含關(guān)系 如果需要重復處理兩個或多個用例時,可以考慮使用包含關(guān)系,實現(xiàn)一個基本用例對另一個用例的引用。 被包含的用例從不獨立存在,僅作為基本用例的一部分出現(xiàn)。 擴展關(guān)系 當描述正常行為的變型,而且希望采用更多的控制方式時,可以在基本用例中設(shè)置擴展點,使用擴展關(guān)系。 在擴展關(guān)系中,基本用例可以獨立存在,當它執(zhí)行時擴展用例可以執(zhí)行也可以不執(zhí)行。 泛化關(guān)系 當處理正常行為的變型,而且只是偶爾描述時,可以考慮只用泛化關(guān)系。,74,用況圖:用況描述,用況描述 用況采用自然語言來描述參與者與系統(tǒng)進行交互時雙方的行為,而不追求形式化的語言表達。 用況描述的

29、主要內(nèi)容 用況的目的 用況如何被啟動 參與者與用況之間的事件流:基本流、可選流 前置條件 后置條件 擴展點,75,用況圖:用況描述,說明 應(yīng)該只描寫“可觀測的”結(jié)果 應(yīng)該使用主動語句 句子的主語應(yīng)該是參與者或者系統(tǒng) 參與者 系統(tǒng) 參與者 系統(tǒng) 不要涉及系統(tǒng)的實現(xiàn)細節(jié) 不要涉及界面的細節(jié),76,用況圖:用況描述,下面的用例描述有問題嗎? 舉例1: 1.系統(tǒng)顯示輸入用戶名和密碼的界面。 2.會員輸入用戶名和密碼,點擊“確定”。 3.如果用戶名和密碼正確,系統(tǒng)根據(jù)用戶名從數(shù)據(jù)庫的“會員”表中查詢該會員信息,系統(tǒng)顯示會員定制界面。 4.如果用戶名不存在, 舉例2: 系統(tǒng)從用戶獲得用戶名和密碼。 用戶名

30、和密碼被驗證。,77,UML 圖:類圖,類圖(Class Diagram) 類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),表示系統(tǒng)中的類、類與類之間的關(guān)系以及類的屬性和操作。 在不同的開發(fā)階段,類圖具有不同的抽象層次 需求階段:概念層類圖描述應(yīng)用領(lǐng)域中的概念,這些概念和類有很自然的聯(lián)系,但兩者并沒有直接的映射關(guān)系。 設(shè)計階段:說明層類圖描述軟件的接口部分,而不是軟件的實現(xiàn)部分。 實現(xiàn)階段:實現(xiàn)層類圖才真正考慮類的實現(xiàn)問題,揭示軟件實現(xiàn)的細節(jié)。,78,UML 圖:類圖,79,UML 圖:對象圖,對象圖(Object Diagram) 對象圖表示一組對象和它們之間的聯(lián)系,它是一個系統(tǒng)的詳細狀態(tài)在某一時刻的快照。 說明

31、對象圖實質(zhì)上是類圖的實例。 對象圖常用于表示復雜的類圖的一個實例。 對象圖的使用相當有限,主要用于表達數(shù)據(jù)結(jié)構(gòu)的示例,以及了解系統(tǒng)在某個特定時刻的具體情況。,80,UML 圖:對象圖,81,UML 圖:時序圖,時序圖(Sequence Diagram) 時序圖描述了一組交互對象間的交互方式,它表示完成某項行為的對象和這些對象之間傳遞消息的時間順序。 一般情況下,我們使用時序圖描述一個用況的事件流,標識參與這個用況的對象,并以服務(wù)的形式將用況的行為分配到對象上。 時序圖的組成 對象(參與者實例也是對象) 生命線:表示對象存在的時間 控制焦點:表示對象執(zhí)行一個所經(jīng)歷的時間段 消息:表示對象之間的通

32、信,82,UML 圖:時序圖,83,UML 圖:時序圖,84,UML 圖:協(xié)作圖,協(xié)作圖(Collaboration Diagram) 協(xié)作圖反映收發(fā)消息的對象的結(jié)構(gòu)組織,用于描述系統(tǒng)的行為是如何由系統(tǒng)的成分協(xié)作實現(xiàn)的。 時序圖和協(xié)作圖是同構(gòu)的,即兩者之間可以相互轉(zhuǎn)換。,85,UML 圖:協(xié)作圖,86,UML 圖:狀態(tài)圖,狀態(tài)圖(StatechartDiagram) 狀態(tài)圖是由狀態(tài)機擴展而來的,用來描述對象所經(jīng)過的對外部事件做出相應(yīng)的狀態(tài)序列。 狀態(tài)圖側(cè)重于描述某個對象在其生命周期中的動態(tài)行為,包括對象在各個不同的狀態(tài)間的跳轉(zhuǎn)以及觸發(fā)這些跳轉(zhuǎn)的外部事件,即從狀態(tài)到狀態(tài)的控制流。,87,UML

33、圖:狀態(tài)圖,狀態(tài)(State) 狀態(tài)是指在對象生命期中的一個條件或狀況,對象在此期間將滿足某些條件、執(zhí)行某些活動或等待某些事件。 在狀態(tài)圖中定義的狀態(tài)有:初態(tài)、終態(tài)、中間狀態(tài)、組合狀態(tài)、歷史狀態(tài)等。 一個狀態(tài)圖只能有一個初態(tài),而終態(tài)可以有多個。 事件(Event) 事件是對一個在時間和空間上占有一定位置的有意義事情的規(guī)格說明,在狀態(tài)機的語境中,事件應(yīng)觸發(fā)一個狀態(tài)轉(zhuǎn)換。,88,UML 圖:狀態(tài)圖,轉(zhuǎn)換(Transition) 轉(zhuǎn)換表示兩個狀態(tài)之間的關(guān)系,它指明對象在第一個狀態(tài)中執(zhí)行一定的動作,并當特定事件發(fā)生或特定條件滿足時進入第二個狀態(tài)。 活動(Activity) 活動是狀態(tài)機中進行的非原子執(zhí)

34、行單元。 動作(Action) 動作是由引起模型狀態(tài)改變或值的返回的可執(zhí)行原子計算所組成的。,89,UML 圖:狀態(tài)圖,90,UML 圖:活動圖,活動圖(Activity Diagram) 活動圖反映系統(tǒng)中從一個活動到另一個活動的流程,強調(diào)對象間的控制流程。 活動圖的組成 活動(Activity) 轉(zhuǎn)移(Transition) 泳道(Swimlane) 分支(Branch) 分叉和匯合(Fork and Join) 對象流(Object Stream),91,UML 圖:活動圖,92,UML 圖:狀態(tài)圖與活動圖比較,活動圖和狀態(tài)圖描述的重點不同 活動圖描述的是從活動到活動的控制流,而狀態(tài)圖描述

35、的是對象的狀態(tài)及狀態(tài)之間的轉(zhuǎn)移。 活動圖和狀態(tài)圖使用的場合不同 對于以下幾種情況可以使用活動圖 分析用例 理解涉及多個用況的工作流 處理多線程應(yīng)用 對于下面的情況要使用狀態(tài)圖 顯示一個對象在其生命周期內(nèi)的行為 說明:如果要顯示多個對象之間的交互,可用時序圖或協(xié)作圖,93,UML 圖:構(gòu)件圖,構(gòu)件圖(Component Diagram) 構(gòu)件圖描述組件以及它們之間的關(guān)系,用于表示系統(tǒng)的靜態(tài)實現(xiàn)視圖,94,UML 圖:部署圖,部署圖(Deployment Diagram) 部署圖反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運行時的處理節(jié)點以及節(jié)點中組件的配置。,95,對象約束語言(OCL),對象約束

36、語言 對象約束語言(OCL,Object Constraint Language)是一種形式語言,用于表示施加于模型元素上的約束。,96,UML 工具,Rational Rose Microsoft Visio 教育在線可下載,97,4.3 面向?qū)ο蠓治?參考書: 1、面向?qū)ο蠓治雠c設(shè)計 麻志毅 機械工業(yè)出版社 2、UML基礎(chǔ)、案例與應(yīng)用 Joseph Schmuller 人民郵電出版社,OOA過程,4.3.1需求模型-用況圖,問題的提出:在系統(tǒng)尚未存在時,如何描繪用戶需要一個什么樣的系統(tǒng)?如何規(guī)范地定義用戶需求? 考慮問題的思路:把系統(tǒng)看作一個黑箱,看它對外部的客觀世界發(fā)揮什么作用,描述它外

37、部可見的行為。,系統(tǒng)是由一條邊界包圍起來的未知空間,把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求,用況圖,系統(tǒng)邊界 參與者 用況 用況的關(guān)系 包含 擴展 泛化 用況圖,102,系統(tǒng)邊界,系統(tǒng)邊界:一個系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線。,參與者(人員),參與者(設(shè)備),參與者(外系統(tǒng)),參與者:在系統(tǒng)邊界以外,與系統(tǒng)進行交互的事物人員、設(shè)備、外系統(tǒng),系統(tǒng)邊界,現(xiàn)實世界中的事物與系統(tǒng)的關(guān)系包括如下幾種情況: 某些事物位于系統(tǒng)邊界內(nèi),作為系統(tǒng)成分。 某些事物位于系統(tǒng)邊界外,作為參與者。 某些事物可能既有一個對象作為其抽象描述,而本身(作為現(xiàn)實世界中的事物)又是在系統(tǒng)邊界以外與系

38、統(tǒng)進行交互的參與者。 某些事物即使屬于問題域,也與系統(tǒng)責任沒有什么關(guān)系。,認識清楚上述事物之間的關(guān)系,也就劃分出了系統(tǒng)邊界。,參與者,簡言之,參與者是在系統(tǒng)之外的與系統(tǒng)進行交互的任何事物。 1、 概念與表示法 一個參與者定義了用況的使用者在與這些用況交互時所扮演的一組功能高內(nèi)聚的角色。 參與者是與系統(tǒng)交互的任何事務(wù)。,收款,檢查,售貨員,參與者可以向系統(tǒng)發(fā)出請求 參與者回復系統(tǒng)的響應(yīng),參與者和系統(tǒng)之間可能存在著復雜的對話,所有的參與者與系統(tǒng)間的請求/響應(yīng)確定了系統(tǒng)邊界,一個參與者的一個實例,要以一種特定的方式與系統(tǒng)進行交互。,如果一組參與者具有共同的性質(zhì),可以把這些性質(zhì)抽取出來放在另一個參與者

39、中,它們再從中繼承,把這種關(guān)系稱為參與者之間的泛化關(guān)系。,A,從參與者A到參與者B之間的泛化關(guān)系是指,A的實例除了擁有自己的與系統(tǒng)的交互外,還擁有B的實例與系統(tǒng)進行的交互。, 用戶 從直接使用系統(tǒng)的人員中發(fā)現(xiàn)參與者。 這里強調(diào)的是直接使用,而不是間接的。 特定的人,在系統(tǒng)中可扮演不同的角色。 例如,添加數(shù)據(jù)、統(tǒng)計某項數(shù)據(jù)及產(chǎn)生匯總表的那個人就扮演了三種不同的角色,反映為三種不同的參與者。 例如,用戶角色的類別可為:目標終端用戶、管理員、經(jīng)理或顧客。,2、 識別參與者, 設(shè)備 識別所有與系統(tǒng)交互的設(shè)備。 這樣的設(shè)備與系統(tǒng)相連,向系統(tǒng)提供外界信息,或在系統(tǒng)的控制下運行。如外部傳感器(輸入信息)和受

40、控馬達(輸出信息)。 通常,不包括監(jiān)視器、鍵盤、鼠標和其它的標準的用戶接口類型設(shè)備。, 外部系統(tǒng) 所有與系統(tǒng)交互的外部應(yīng)用系統(tǒng)都是參與者。 從系統(tǒng)邊界的角度,應(yīng)該把與軟件系統(tǒng)一起運行以完成特定任務(wù)的應(yīng)用系統(tǒng),看作是外部的應(yīng)用。相對于當前在正在開發(fā)的系統(tǒng)而言,外部應(yīng)用系統(tǒng)可以是其他子系統(tǒng)、上級系統(tǒng)、下級系統(tǒng)或任何與它進行協(xié)作的系統(tǒng),但對它的開發(fā)并不是當前系統(tǒng)的開發(fā)小組的責任。,超市銷售管理系統(tǒng),收款員,供貨員,上級系統(tǒng),參與者:收款員、供貨員、導購員、經(jīng)理、保安、顧客 收款機?,用況是對參與者使用系統(tǒng)的一項功能時所進行的交互過程的一個文字描述序列。,1、定義及表示法,用況,ATM取款,用例: 用

41、戶從ATM機提取一定數(shù)量的紙幣。 主參加者:客戶 環(huán)境目標:持有效銀行卡的客戶能提出指定金額的人民幣。 前置條件: ATM系統(tǒng)中有足夠數(shù)量的現(xiàn)金,ATM系統(tǒng)空閑,客戶插入有效銀行卡,一次提取金額2000元人民幣。 觸發(fā)器:客戶在ATM機中插卡時。 步驟序列: 1、用戶插入銀行卡 2、輸入密碼 3、選擇取錢功能 4、輸入金額 5、取錢 6、取出銀行卡 異常: 1、銀行卡或密碼無效時,顯示恰當?shù)腻e誤信息。 2、輸入金額大于2000元時,顯示恰當?shù)男畔⑻崾尽?優(yōu)先級:必須被實現(xiàn)。 何時可用:首次開發(fā)。 使用頻率:每天多次。 后置條件:用戶完成操作后退卡。 未解決的問題: 客戶輸入密碼時,從按下第一個

42、按鍵開始必須在多長時間內(nèi)輸入密碼?,用況示例1,幾點說明: (1)一個用況描述參與者對一項系統(tǒng)功能的使用情況。而且只有當外部的參與者與該系統(tǒng)進行交互時,該功能才發(fā)揮作用。 (2)用況中描述的行為實際上是系統(tǒng)級的。在用況內(nèi)所描述的交互中的動作應(yīng)該是詳細的,準則是對用況的理解不產(chǎn)生歧義即可;若描述得過于綜合,則不易認識清楚系統(tǒng)的功能。 (3)陳述參與者和系統(tǒng)在交互過程中雙方所做的事。而且描述彼此為對方直接地做什么事,不描述怎么做,內(nèi)部細節(jié)不要在其中描述。 (4)用況既表達了系統(tǒng)的功能需求,也表達了系統(tǒng)的功能劃分。,(5)描述應(yīng)力求準確、清晰,允許概括,但不要把雙方的行為混在一起。 (6)系統(tǒng)執(zhí)行該

43、動作序列來為參與者產(chǎn)生一個可觀察的結(jié)果值。 (7)用況描述的是一個參與者所使用的一項系統(tǒng)功能,該項功能應(yīng)該相對完整。這就要求一個用況描述的功能,即不能過大以至于包含過多的內(nèi)容,也不能過小以至于僅包含完成一項功能的若干步驟。 (8)用況描述中的一個步驟應(yīng)該描述且僅描述參與者或系統(tǒng)要完成的一件事情。,2、 用況與參與者之間的關(guān)系,用況與參與者間的關(guān)聯(lián)是參與者在用況中的參與(也就是參與者實例與用況實例之間的相互通信)。 若沒有進行特殊的說明,任何一方都可發(fā)送和接收消息。即交互是雙向的,參與者能夠產(chǎn)生對系統(tǒng)的請求,或系統(tǒng)要求參與者采取某些動作。 這是參與者和用況之間的唯一關(guān)系。,用況的一個場景是指用況

44、執(zhí)行過程中的一個特定的實例或執(zhí)行路徑。,收款,檢查,售貨員,一個用況可能要與系統(tǒng)的一個或幾個參與者交互。,統(tǒng)計員,把參與者和用況之間的關(guān)聯(lián)表示成參與者和用況之間的一條實線。,3、 用況之間的關(guān)系 在下述情況下,就需要考慮產(chǎn)生新的用況,并在用況間建立關(guān)系: 在一個用況中存在著幾處重復使用的動作序列; 在幾個用況中存在著重復使用的動作序列; 一個用況中的主要動作序列或分支動作序列過于冗長或復雜,而且分離它們有助于管理和理解。,1)擴展,從基用況到擴展用況的擴展關(guān)系表明:按基用況中指定的擴展條件,把擴展用況的行為插入到由基用況中的擴展點定義的位置。 通過敞開的虛線箭頭表示用況之間的擴展關(guān)系,該箭頭從

45、提供擴展的用況指向基用況。這個箭頭用關(guān)鍵字標記??梢栽谶@個關(guān)鍵字附近表示這個關(guān)系的條件。,基用況是可單獨存在的,但是在一定的條件下,它的行為可以被另一個用況的行為擴展。在擴展用況中可定義一組行為增量,在其中定義的行為離開基用況單獨是沒意義的。 一個擴展用況可以擴展多個用況,一個用況也可以被多個用況擴展,甚至一個擴展用況自身也可以被其他擴展用況來擴展。,適用之處: (1)異常情況 (2)正常的變形描述時,而且希望采用更多的控制方式時,采用擴展。即在一個變化點上可附加多個變體的場合下使用。 (3)用擴展關(guān)系來區(qū)分所實現(xiàn)系統(tǒng)的可配置部分。,一個擴展點是基用況中的一個位置,在這樣的位置上,如果擴展條件

46、為真,就在其中插入擴展用況中描述的全部動作序列或其中的一部分,并予以執(zhí)行。執(zhí)行完后,基用況繼續(xù)執(zhí)行擴展點下面的行為。如果擴展條件為假,擴展不會發(fā)生。 可以把擴展點列在用況中的一個題頭為“擴展點”的分欄中。以一種適當?shù)姆绞浇o出擴展點的位置描述,通常采用普通的文本。,基用況,擴展用況,2)包含,A ,用況X,A ,用況Y,從基用況到被包含用況的包含關(guān)系表明:基用況在它內(nèi)部說明的某一(些)位置上顯式地使用供應(yīng)者用況的行為的結(jié)果。 通過一個敞開的虛線箭頭表示用況之間的包含關(guān)系,該箭頭從基用況指向被包含的用況。這個箭頭用關(guān)鍵字標記。,包含關(guān)系使得可在一個用況中局部化多個用況中共同的活動序列。這樣,可以避

47、免多次描述同一事件流;當這個共同的序列發(fā)生變化時,這樣就顯現(xiàn)出優(yōu)勢,即只需要在一個地方進行改動。,被包含用況,基用況,3)泛化 用況之間的泛化關(guān)系就像類之間的泛化關(guān)系一樣。子用況繼承父用況的行為和含義;子用況還可以增加或覆蓋父用況的行為;子用況可以出現(xiàn)在父用況出現(xiàn)的任何位置(父和子均有具體的實例)。 用一個指向父用況的帶有封閉的空心箭頭的實線來表示用況之間的泛化關(guān)系。,B,A,資金轉(zhuǎn)帳,支付費用,扣除透支利息,也可以使用包含,處理取款單 業(yè)務(wù)員輸入處理取款命令 Include 檢查口令 收集客戶的取款單上的信息; 加急(擴展點)如果客戶選擇了加急 extend 處理加急取款單 ,被包含的用況可

48、以 單獨存在,5 捕獲用況 1)利用參與者捕獲用況,對所有的參與者(把自己作為參與者),提問下列問題: 每個參與者的主要任務(wù)是什么?粗粒度 在交互過程中,它們是怎樣使用系統(tǒng)的服務(wù)來完成它們的任務(wù)以達到目的? 細粒度 為了達到某種目的,參與者參加什么活動?該參與者是否將讀寫系統(tǒng)的任何信息?參與者是否把系統(tǒng)外部的變化通知系統(tǒng)?參與者是否希望系統(tǒng)把預料之外的變化通知自己? 細粒度 是什么事件引起了與系統(tǒng)進行交互的序列? 細粒度 它們參加了什么在本質(zhì)上是不同的過程? 能完成特定功能的每一項活動明確地是一個用況。這些參與者參與的活動,通常會導致其它用況。,2)從系統(tǒng)功能角度捕獲用況 (1)以窮舉的方式檢

49、查用戶對系統(tǒng)的功能需求是否能在各個用況中體現(xiàn)出來。 (2)以窮舉的方式考慮每一個參與者與系統(tǒng)的交互情況,看看每個參與者要求系統(tǒng)提供什么功能,以及參與者的每一項輸入信息將要求系統(tǒng)作出什么反映,進行什么處理。 (3)考慮對例外情況的處理。針對用況描述的基本流,要詳盡地考慮各種其他的情況 (4) 一個用況描述一項功能,這項功能不能過大。例如,把一個企業(yè)信息管理系統(tǒng)粗略地分為生產(chǎn)管理、供銷管理、財務(wù)管理和人事管理等幾大方面的功能,就顯得粒度太大了,應(yīng)該再進行細化。 (5)一個用況應(yīng)該是一個完整的任務(wù),通常應(yīng)該在一個相對短的時間段內(nèi)完成。如果一個用況的各部分被分配在不同的時間段,尤其被不同的參與者執(zhí)行,

50、最好還是將各部分作為單獨的用況對待。,6、描述用況,用況文檔模板 用況名 描述:對該用況的一句或兩句的描述。 參與者:該用況的參與者。 包含:該用況所包含的用況,以及包含它的用況。 擴展:該用況可以擴展的用況,以及擴展它的用況。 泛化:該用況的子用況和父用況。 前置條件:啟動該用況所必須具備的條件。 事件流:該用況的細節(jié)。(基本流與可選流) 后置條件:在該用況結(jié)束時確保成立的條件。 異常:在該用況的執(zhí)行的過程中可能引起的例外*。 注釋:對該用況是重要的任何附加信息。,用況圖 用況圖呈現(xiàn)了一些參與者和一些用況,以及它們之間的關(guān)系。 在圖形上,用況圖是一幅由一組參與者、一組用況以及這些元素之間的關(guān)

51、系組成的圖。這些關(guān)系是參與者和用況之間的關(guān)聯(lián)、參與者之間的泛化,以及用況之間的泛化、擴展和包含。 可以選擇把一些用況用一個矩形圍起來,用來表示系統(tǒng)邊界。 用況圖可以包含注解和約束。,示例,該用況應(yīng)優(yōu)先開發(fā),用況圖的益處: 為開發(fā)者提供一種認識和理解系統(tǒng)的方法 為領(lǐng)域?qū)<摇⒆罱K用戶和開發(fā)者提供一種相互交流的手段。 易于對需求規(guī)范化 用戶給出的需求材料常常是不規(guī)范或不夠準確的。故要較為規(guī)范地定義用況,以全面和比較準確地用用況中表達用戶的功能需求。 有利于進行OOA 有助于發(fā)現(xiàn)主動對象 對系統(tǒng)測試來說,產(chǎn)生測試用例。 有助于設(shè)計人機界面 ,審查 參與者 確定系統(tǒng)環(huán)境中的所有與系統(tǒng)有關(guān)的角色,并都歸入

52、了相應(yīng)的參與者。 每個參與者都至少和一個用況關(guān)聯(lián); 若一個參與者是另一個參與者的一部分,或扮演了類似的角色,考慮在它們之間使用泛化關(guān)系; 用況 每個用況都至少和一個參與者相關(guān); 若兩個用況有相同或相似的序列,可能需要合并它們,或抽取出一個新用況,在它們之間使用包含、擴展或泛化關(guān)系。 若用況過于復雜,為了易于理解,考慮進行分解;若一個用況中有完全不同的事件流,最好把它分解成不同的用況,例題 很多軟件系統(tǒng)在一開始都需要登錄,若用戶登錄成功,則可進入系統(tǒng)。 如下以一個研究生學籍管理系統(tǒng)為例,描述四種登錄方法。 為了簡化起見,假設(shè)此處僅描述登錄、選課和查看學分這3項功能。,方案一: 由于選課和查看學分

53、都需要登錄,故專門設(shè)立一個“登錄”用況。若登錄成功,則可以進行選課,也可以進行查看學分。,該方法的缺點是, (1)必須要了解系統(tǒng)的所有其它模塊,才能描述清楚“登錄”用況。向系統(tǒng)增加新用況時,也要修改登錄用況。從維護的角度看,有時會忘記對“登錄”用況進行修改。 (2) “登錄”用況的功能不單一。,研究生啟動系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號和密碼; 研究生輸入研究生證號和密碼; 系統(tǒng)進行驗證,給出驗證信息; 若通過,若該生選擇選課 系統(tǒng)執(zhí)行用況“選課”; 若通過,若該生選擇查看學分 系統(tǒng)執(zhí)行用況“查看學分”;,如下為對用況“登錄”的描述:,方案二: 讓所有的相關(guān)用況都包含登錄用況。,如下為對用

54、況“選課”的描述:,研究生啟動系統(tǒng),調(diào)用用況“登錄” 若通過,系統(tǒng)執(zhí)行用況“選課”的其余部分;,這個方法中的“登錄”用況僅描述有關(guān)登錄的信息。 其缺點為,對研究生要進行多次驗證。 研究生執(zhí)行系統(tǒng)的每項功能都要先登錄。,研究生啟動系統(tǒng),調(diào)用用況“登錄” 若通過,系統(tǒng)執(zhí)行用況“查看學分”的其余部分;,如下為對用況“查看學分”的描述:,方案三: 使用擴展,設(shè)計系統(tǒng)登錄。,登錄 擴展點 選課 查看學分,選課,extend,extend,研究生,如下為對用況“登錄”的描述,研究生啟動系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號和密碼; 研究生輸入研究生證號和密碼; 系統(tǒng)進行驗證,給出驗證信息; 若通過,若該生選

55、擇選課 系統(tǒng)在擴展點”選課”處執(zhí)行用況“選課”; 若通過,若該生選擇查看學分 系統(tǒng)在擴展點”查看學分”處執(zhí)行用況“查看學分”;,該方法與方法一相比,對“登錄”用況的描述要清楚一些。在增加新用況時,僅在登錄用況中添加擴展點即可。 缺點:“登陸”用況的功能仍然不單一。,擴展條件:選擇選課 擴展點:選課,查看學分,擴展條件:選擇查看學分 擴展點:查看學分,方案四: 登錄用況完全獨立于其它用況,如下為對用況“登錄”的描述:,研究生啟動系統(tǒng); 系統(tǒng)提示研究生輸入研究生證號和密碼; 研究生輸入研究生證號和密碼; 系統(tǒng)進行驗證,給出驗證信息;,如下為對用況“選課”的開始部分的描述,若研究生通過了登錄且選擇了

56、選課, 系統(tǒng)開始執(zhí)行用況“選課”; ,使用該方法,必須要在“選課”用況和“查看學分”用況中指定前置條件:只有在登錄成功后才能執(zhí)行自己。,例:選課系統(tǒng)。給教師分配課程和學生注冊課程。 在每個學期選課開始之前,系統(tǒng)管理員需要對系統(tǒng)中的教師信息、課程信息和學生信息進行維護。學期結(jié)束后,將本學期成績歸檔到學籍檔案系統(tǒng)。 學生登錄系統(tǒng)后會得到一份本學期將要開設(shè)的課程目錄。每門課程包含的信息有開課系別、教師、上課時間、教室、容納的學生數(shù)量和學生選擇課程的先決條件。 當學生選擇了一門課程后,系統(tǒng)需訪問學籍檔案系統(tǒng),查詢是否符合選課的先決條件 。如果不符合,系統(tǒng)給出提示信息。 每個學期有一段時間讓學生可以改變

57、計劃,學生可以在這段時間內(nèi)訪問聯(lián)機系統(tǒng)以增選課程或退選課程。,例:選課系統(tǒng)。給教師分配課程和學生注冊課程。 教師可以訪問在線系統(tǒng),查看將要教授哪些課程和每門課程有哪些學生報名,課程考試結(jié)束后可以提交成績,系統(tǒng)可以生成帶有成績分布統(tǒng)計結(jié)果的成績單。,1. 確定業(yè)務(wù)參與者,通過關(guān)注系統(tǒng)的業(yè)務(wù)參與者,我們可以將重點放在如何使用系統(tǒng),而不是如何構(gòu)造系統(tǒng)上,并且有助于進一步明確系統(tǒng)的范圍和邊界。 當系統(tǒng)比較龐大和復雜時,要搞清楚系統(tǒng)的需求往往比較困難,通過明確參與者,可以針對參與者確定系統(tǒng)需求,有助于保證系統(tǒng)需求的完整性。,1. 確定業(yè)務(wù)參與者,可通過以下資料來確定系統(tǒng)的參與者: 標識系統(tǒng)范圍和邊界的環(huán)

58、境圖; 現(xiàn)有系統(tǒng)(如果有的話)的文檔和用戶手冊; 項目會議和研討會的記錄; 現(xiàn)有的需求文檔、工作手冊等。,1. 確定業(yè)務(wù)參與者,還可以通過提出以下問題,明確系統(tǒng)的參與者: 誰或者什么為系統(tǒng)提供輸入? 誰或者什么接收系統(tǒng)的輸出? 需要與其他系統(tǒng)連接的接口嗎? 是否存在在預定的時間自動觸發(fā)的事件? 誰將維護系統(tǒng)中的信息?,1. 確定業(yè)務(wù)參與者,從選課系統(tǒng)的需求描述中,可以確定4類參與者: 學生(Student) 教師(Teacher) 系統(tǒng)管理員(Administrator) 學籍檔案系統(tǒng)(Archive System),2. 確定業(yè)務(wù)需求用例,以下問題可以幫助我們更好地標識系統(tǒng)的用例: 每個參與

59、者的特定任務(wù)是什么? 是否每個參與者都要從系統(tǒng)中創(chuàng)建、存儲、改變、移動或讀取信息? 是否任何參與者需要通知系統(tǒng)有關(guān)突發(fā)性的、外部的改變? 哪些用例支持或維護系統(tǒng)? 目前的用例是否覆蓋了所有功能需求?,2. 確定業(yè)務(wù)需求用例,環(huán)境圖是分析參與者和發(fā)現(xiàn)潛在用例的極好來源,它不僅可以用在結(jié)構(gòu)化分析方法中,也可以用于面向?qū)ο蟮姆治龇椒ㄖ小?通過環(huán)境圖,可以確定系統(tǒng)的主要輸入輸出,通過提交和接收輸入輸出的各方確定潛在的用例。,選課系統(tǒng)的環(huán)境圖,選課系統(tǒng)的業(yè)務(wù)列表,用例的規(guī)格說明,對用例的完整描述包括用例名稱、執(zhí)行者、前置條件、后置條件、一個主事件流、零到多個備選事件流。 主事件流表示正常情況下執(zhí)行者與系統(tǒng)之間的信息交互及動作序列,備選事件流則表示特殊情況或異常情況下的信息交互及動作序列。 應(yīng)給出每個用例

溫馨提示

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

評論

0/150

提交評論