第07章 面向?qū)ο蟮姆治雠c設(shè)計_第1頁
第07章 面向?qū)ο蟮姆治雠c設(shè)計_第2頁
第07章 面向?qū)ο蟮姆治雠c設(shè)計_第3頁
第07章 面向?qū)ο蟮姆治雠c設(shè)計_第4頁
第07章 面向?qū)ο蟮姆治雠c設(shè)計_第5頁
已閱讀5頁,還剩148頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第七章面向?qū)ο蟮姆治雠c設(shè)計

本章內(nèi)容

第一節(jié)原理和工具

第二節(jié)面向?qū)ο蟮姆治雠c設(shè)計的過程

第三節(jié)識別系統(tǒng)的目標和邊界

第四節(jié)用例和用例圖

第五節(jié)對象與類圖

第六節(jié)交互圖

《第一節(jié)原理與工具

-00方法的發(fā)展

■00方法的基本概念

-00方法的建模語言UML

面向?qū)ο蠓椒ǖ膬?yōu)勢

■對問題空間的理解更直接,更符合人們認識

客觀事物的思維規(guī)律

■系統(tǒng)分析、系統(tǒng)設(shè)計和系統(tǒng)實現(xiàn)使用同一模

型,不存在過渡困難

■開發(fā)出來的信息系統(tǒng)從本質(zhì)上具有更強的生

命力

■維護成本降低

.一、面向?qū)ο蟀l(fā)展

■60年代后期:Simula67,基本思想

面向?qū)ο?/p>

年代后期:實用化

■70SmalltalkSO,理序設(shè)計語言

■1982貝爾實驗室:C++

■1985微軟:MS-Windows

■1995Sun:Java

£90年代:面向?qū)ο笈c設(shè)計方法學(xué)上“方法大戰(zhàn)”

:-B?H.Sellers等提出噴泉模型

■G.Booch提出面向?qū)ο箝_發(fā)方法等

■P,Coad和E,Yourdon提出00A和00D

;■Jacobson提出OOSE

■1997年:UML被OMG接納為標準

4現(xiàn)狀

-現(xiàn)狀

■00成為最重要的軟件開發(fā)方法

■00在GUI、模擬系統(tǒng)、游戲開發(fā)、應(yīng)用框架、軟

件構(gòu)件化領(lǐng)域大顯身手

■UML、MDA與RUP、敏捷開發(fā)

■構(gòu)件技術(shù)(CORBA、COM、EJB、.Net、SOAP)

■類庫與設(shè)計模式

.二、面向?qū)ο蠓椒ǖ幕靖拍?/p>

■對象

-類

-封裝

■集成

-消息

■關(guān)系

■多態(tài)

,(工)對象(Object)

-《現(xiàn)代漢語詞典》(商務(wù)印書館,1996)的解

釋是:對象是行動或思考時作為目標的人或

事物。廣義地講,對象可以是任何人或事物。

■對象是一些屬性及專用服務(wù)的封裝體,它是

問題域中一些事物的抽象。

■這些屬性的值刻畫了一個對象的狀態(tài);

■這些操作是對象的行為,通過它們改變對象的狀

態(tài)(即屬性值)

舉例

屬性counter

:

胤、度

value

總重量init()

燃料股分dec()

燃量inc()

料i

-

搭表物

一個計數(shù)器對象:

屬性值

?

操作?清空

?

操傕

?加

1

點火減

軌道運行1

返回

對象舉例

醫(yī)療保險賬戶

屬性:操作:

姓名:張三查詢余額

年度:2005撥入資金

醫(yī)保號付費用

累計賬戶撥入金額:1800.00年度結(jié)轉(zhuǎn)

累計賬戶支付金額:230.50

最高統(tǒng)籌限額:50000.00

累計統(tǒng)籌支付金額:680.00

《對象的屬性

-屬性是類的特征或特性

?屬性的值是某一特定對象的屬性值

.在類中屬性名必須是唯一的

?每一個類的實例都有為這個類定義的所有

屬性的值

《對象的操作

■對象的行為是由為此對象定義的一系列操作

決定的

-操作訪問或修改對象的屬性值

■一個類可能同時存在多個實例,也可能在某

一時刻沒有實例

■一個類的所有實例都可以使用在這個類中定

義的操作

y(2)類(Class)

■對象類(Objectclass)簡稱類,是指有相同屬性

和服務(wù)的一組對象的集合。

■類的概念體現(xiàn)了人類常用的一種思維方式一一抽象,

類就是對一組對象的抽象表示,同樣包含屬性和服

務(wù)兩個部分。

■實例(Instance):一個具體的對象就是該對象所

在類的一個實例

-類是抽象虛無的,實例是具體實在的(如個人帳戶與我的

個人帳戶)

■在程序運行過程中根據(jù)類定義來創(chuàng)建實例,每個實例互不

干擾,各自有自己獨立的存儲空間,保存自己特有的屬性。

(如同數(shù)據(jù)類型和變量的關(guān)系)

3類舉例

/個人帳戶,張三的個人賬戶

類名'Name對象名張三

Income1800.00

Payment230.50

屬性,

屬性’Limitation50000.00

UsedLimitation680.00

GetBalance()GetBalance()

Save()Save()

,Pay()

Pay()

操作

操作'CarryForward()CarryForward()

*區(qū)分對象和類

-同類對象具有相同的屬性和服務(wù),是指它們

的定義形式相同,即具有相同的屬性項和行

為方式,而不是說每個對象的屬性值都相同。

■類是靜態(tài)的,類的存在、語義和關(guān)系在程序執(zhí)行

前就已經(jīng)定義好了。

■對象是動態(tài)的,對象在程序執(zhí)行時可以被創(chuàng)建和

刪除。計算機中一個對象通常就是指一個實例

■有的場合不作區(qū)分

抽象類和接口

■抽象類(abstractclass)用來表征我們在對

問題領(lǐng)域進行分析、設(shè)計中得出的抽象概念。

■如“形狀”就是一個抽象概念,圓是具體概念。

■接口(interface)是抽象類的變體。接口是

一些方法的集合,但所有方法都是抽象的,只

有聲明而沒有程序體。其它類需要實現(xiàn)某個接

口時才對這個接口的所有方法進行定義。

■比如很多物體都有“開”和“關(guān)”的操作,但對于

不同的對象類是抽象的行為,具體實現(xiàn)由不同的物

體來定義,如電燈的開、關(guān)和門的開、關(guān)。

定義一個幾何計算的接口

interfaceMath

<

publicvoidarea();

}

classrectangleimplementsMathclasscircleimplementsMath

<<

privatedoubleheight,width;privatedoubleradius;

publicvoidareapublicvoidarea

<<

}}

}}

(3)封裝(Encapsulation)

-封裝即信息隱藏,它保證軟件部件具有較好

的模塊性。

■設(shè)計軟件總體結(jié)構(gòu)時,應(yīng)盡量封裝為獨立的

模塊,每個模塊對外提供接口,而盡可能少

地顯露其內(nèi)部處理邏輯。(黑箱)

■對象是更高一個級別的封裝體,它把數(shù)據(jù)和

服務(wù)封裝于一個內(nèi)在的整體。對象向外提供

某種界面(接口),可能包括一組數(shù)據(jù)(屬

性)和一組操作(服務(wù)),而把內(nèi)部的實現(xiàn)

細節(jié)(如函數(shù)體)隱蔽起來。

)良好封裝的好處

■封裝使對象對外僅提供接口,即可見的一些

屬性和操作,而具體實現(xiàn)是不可見的。

■開發(fā)人員一旦設(shè)計好對象的界面(接口)后,不

需要等待該對象全部完成就可以進行后續(xù)開發(fā),

實現(xiàn)并行工作

■只要對象接口不變,對象內(nèi)部邏輯的修改不會影

響其它部件,便于復(fù)用,也減少了因修改引起的

“水波效應(yīng)”;

■嚴密的接口保護,使對象的屬性或服務(wù)不會隨意

地被使用,對象的狀況易于控制,可靠性隨之增

強。

1|(4)泛化(Generazation)

■泛化是指將一組相關(guān)對象進行歸納,抽取它們共同

擁有的一般性的屬性與服務(wù)進行封裝,從而構(gòu)造出

對象從一般到特殊的分類層次。特殊類擁有一般類

的語義性質(zhì),并具有自己特有的屬性和操作。

■繼承是泛化的具體實現(xiàn)手段。

-一般類/特殊類、父類/子類、超類/子類、基類/派生類等

都是相同的概念。可以簡化系統(tǒng)的描述和實現(xiàn),較好地實

現(xiàn)軟件重用,提高效率。

-子類(特殊類)可以繼承父類(一般類)的屬性和操作,

也可以重新定義特殊行為。

■繼承可分為單繼承和多繼承,單繼承是指子類只從一個父

類繼承,多繼承是指子類從多個父類繼承。

繼承舉例

繼承下去

Student

多繼承(Multi-Inheritance)

多繼承可以設(shè)計成對多個接口的實現(xiàn)

⑸消息(Message)

■消息是指向?qū)ο蟀l(fā)出的服務(wù)請求(對象間的交互

信息)O

■一個對象向另一個對象發(fā)消息請求某項服務(wù),接收

消息的對象響應(yīng)該消息,激發(fā)所要求的服務(wù)操作,

并把操作結(jié)果返回給請求服務(wù)的對象。

■一個消息應(yīng)當包含以下信息:消息名、接收消息對

象的標識、服務(wù)類型、輸入信息、回答消息。

■采用消息(而不是函數(shù)調(diào)用)這個術(shù)語的好處:

■1、更接近人們?nèi)粘K季S所采用的術(shù)語,符合對象

的獨立自治原則;

■2、在分布式環(huán)境中,對象可以在不同的網(wǎng)絡(luò)結(jié)點

上相互提供服務(wù),消息具有更強的適應(yīng)性。

(6)關(guān)系(Relationship)

-類之間的聯(lián)系方式:

■(1)分類結(jié)構(gòu):繼承/泛化(generalization)。類之間

的關(guān)系是指對象分類的層次關(guān)系,繼承關(guān)系對于類中的所有

對象都成立,而不特指某個具體對象。

■(2)實現(xiàn)(realization):即描述和實現(xiàn)。一個接口可

以提供某些操作的描述,另一些類需要具體來完成這些操作,

即對接口進行實現(xiàn)。

■對象關(guān)系則是存在于具體對象實例之間的聯(lián)系:

■(3)關(guān)聯(lián)(association):組裝結(jié)構(gòu)和實例連接。表達

對象與對象的靜態(tài)聯(lián)系,是一種長期關(guān)系,比如整體和部分

關(guān)系。

■(4)消息連接:也稱依賴(dependency):表達對象與對

象的動態(tài)聯(lián)系(運行時),是一種短期關(guān)系。

(7)多態(tài)(Polymorphism)

-多態(tài)性又叫多形性,指相同的操作(或函數(shù),

或過程)可作用于多種類型的對象并獲得不

同的結(jié)果。

■在OOP中多態(tài)的實現(xiàn)有兩種方法:

■由覆蓋(overtide)實現(xiàn)動態(tài)多態(tài),子類對父類

的方法進行重寫,稱為運行時多態(tài),展示的是父

類及其多個不同子類的多態(tài)性。

■由重載(overload)實現(xiàn)的靜態(tài)多態(tài),即利用重

載技術(shù)在一個類中定義多個名稱相同、參數(shù)類型

不同的方法,稱為編譯時多態(tài),是一個類中操作

多態(tài)性的表現(xiàn)。

多態(tài)舉例

*

1

昌PRINT(GRAPHobJect1

HI歪,,.”I..

PRINT(JMAGEobject

多態(tài)的好處

-多態(tài)性一般需要建立在繼承機制之上。

1.當給不同子類型的對象發(fā)送相同的消息時,消

息的發(fā)送者可以不用關(guān)心具體的對象類型,而

由對象自身做出不同的響應(yīng)處理。

2.需要擴充一種新類型時,只需要從父類中再派

生出一個子類,覆蓋父類的某些服務(wù),而不需

要改動其它外部程序。

3.多態(tài)性極大地提高了重用性和靈活性,對象的

使用和理解也得以簡化。

)三、統(tǒng)一建模語言

>OOA&OOD

>UML

面向?qū)ο蠓治雠c設(shè)計

-結(jié)構(gòu)化分析與設(shè)計注重對過程進行建模,面向?qū)ο蟮姆治?/p>

與設(shè)計則強調(diào)對事物和它們的交互建模。

■00A主要任務(wù)是分析問題空間的主要目標和功能,尋找存

在的對象,找出這些對象的特征和責任(即屬性和服務(wù)),

以及對象間的關(guān)系,并由此產(chǎn)生一個完整表達系統(tǒng)需求的

規(guī)格說明——“做什么”的描述。

■00D主要任務(wù)是將分析得到的需求做進一步的明確和調(diào)整,

運用面向?qū)ο蠹夹g(shù)和前人總結(jié)的經(jīng)驗?zāi)J絻?yōu)化對象結(jié)構(gòu),

設(shè)計用戶界面類和內(nèi)部控制類,設(shè)計數(shù)據(jù)庫結(jié)構(gòu)等,它強

調(diào)的是對分析結(jié)果的完善和改良,產(chǎn)生一個指導(dǎo)面向?qū)ο?/p>

編程的詳細規(guī)格說明——“怎么做”的描述。

■UML是00方法的標準建模語言

*UML的目標

■統(tǒng)一建模語言UnifiedModeling

Language-UML,是一個通用的可視化

建模語言

-充分運用面向?qū)ο蟮母拍顏順?gòu)造系統(tǒng)模型(不僅僅是針

對軟件);

■建立起從概念模型直至運行體之間明顯的對應(yīng)關(guān)系;

.著眼于那些有重大影響的問題;

-創(chuàng)建一種對人和機器都適用的建模語言;

-提供擴展和專用機制,為新概念或特定應(yīng)用提供支持。

UNIFIED

MODELING

LANGUAGE

,UML的歷史

""R2004

UNIFIED

MODEUNG!

Fall1998LANGUAGE?

OMGAcceptance,Nov1997

public

FinalsubmissiontoOMG,Nov'97

feedbackUML1.1

FirstsubmissiontoOMG,Jan97

UMLpartnersUML1.0

/

OthermethodsBoochmethodOMTOOSE

1989-1994期間,00方法從不足10種增加到50多種

&UML的創(chuàng)始人

■UML是由世界著名的面向?qū)ο蠹夹g(shù)專家G.

Booch>J.Rumbaugh和I.Jacobson發(fā)

起,在Booch方法、OMT方法和OOSE方法

的基礎(chǔ)上,廣泛征求意見,集眾家之長,幾

經(jīng)修改而完成的。

■Threeamigos

BoochRumbaughJacobson

uoiieoiuniuuioo;ndi]6noji]±

uoj同網(wǎng)su/%/a/i//a(7^Uiqeieos

ABo/odo}uieisAsQOUBLUJOped

6uueaui6ue山ejsAssjoiej6d)uiiua;sAs

■M9IA}U9LUAO|d9aM3IAssaoojd/空

M9iAaseo-asn

、Ameuoi;ounj

fuaiudDeueurajeMffosajnionjis

sjeuiiuejOoJdjasn-pu3sjeuBisaa/^sAieuv

MOiAuo!)e}uaiue|diu|M9IA|BOI6OIg

由13

國蹌1+Wiwn《

yUML的4+1視圖

■用例視圖UseCaseView

■最終用戶

■這些視圖由用例視圖所統(tǒng)一>它描述項目干系

人(stakeholder)的需求;所有其他視圖都

是從用例視圖派生而來,該視圖把系統(tǒng)的基本

需求捕獲為用例并提供構(gòu)造其他視圖的基礎(chǔ)

■邏輯視圖LogicalView

■分析師和設(shè)計師

■系統(tǒng)功能和詞匯;描述問題域的詞匯,作為類

和對象的集合。重點是展示對象和類是如何組

晟4系統(tǒng)、實現(xiàn)所需系統(tǒng)行為的

3UML的4+3■視圖

■進程視圖ProcessView

■系統(tǒng)集成商

■系統(tǒng)性能、可伸縮性和吞吐量;建模在我們系統(tǒng)中的可執(zhí)行

線程和進程柞為活動類。其實,它是邏輯視圖面向進程的變

體,包含居點相同的制品

■實現(xiàn)視圖ImplementationView

-程序員

■系統(tǒng)組裝和配置管理;對組成基于系統(tǒng)的物理代碼的文件和

構(gòu)件進行蕖模。它同才羊展示出構(gòu)件之間的依賴,展示一組構(gòu)

件的配置管理以定義系統(tǒng)的版本

■實施視圖DeploymentView

■系統(tǒng)工程師

■系統(tǒng)的拓撲結(jié)構(gòu)、分布、移交和安裝;建模把構(gòu)件物理地部

奢到一組跖理招、可訃算節(jié)點上,如計算機和外設(shè)上。

&UML中的圖

對整個系統(tǒng)而言:

■功能由用例圖描述。

■靜態(tài)結(jié)構(gòu)由類圖和對象圖描述。

.動態(tài)行為由狀態(tài)圖、順序圖、協(xié)作圖和活

動圖描述。

.物理架構(gòu)則是由構(gòu)件圖和部署圖描述。

(工)用例圖UseCaseDiagram

-用例圖定義了系統(tǒng)的功能需求,它完全是從

系統(tǒng)的外部觀看系統(tǒng)功能,并不描述系統(tǒng)內(nèi)

部對功能的具體實現(xiàn)。是從外部執(zhí)行者的角

度來描述系統(tǒng)提供的功能。

(2)類圖ClassDiagram

■類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),表示系統(tǒng)中的類

以及類與類之間的關(guān)系。

卜(3)對象圖ObjectDiagram

對象圖描述了一組對象以及它們之間的關(guān)系,

表示類的對象實例。對象圖是對類圖一種實

例化。是系統(tǒng)某個時期可能存在的具體對象

實例。

1號會員:會員0012號租賃:租賃記錄

編號=1租賃號=0012

入會日期=2002/09/01租賃日期=2002/09/10

姓名=李立預(yù)付款=100

《飄》001:項百一

0012號內(nèi)容1:租賃明細項

序號=001

名稱=飄租賃天數(shù)=3

每日租金=5歸還日期=

狀態(tài)=租出

(4)狀態(tài)圖StateChartDiagram

-狀態(tài)圖表示一個狀態(tài)機,強調(diào)對象行為的事

件順序。是對類的補充,展示此類對象可能

的狀態(tài)和發(fā)生某些事件時其狀態(tài)的轉(zhuǎn)移情況。

(5)活動圖ActivityDiagram

■活動圖反映系統(tǒng)中從一個活動到另一個活動

[.⑹順序圖SequenceDiagram

■順序圖和協(xié)作圖均表示一組對象之間的動態(tài)

協(xié)作關(guān)系,其中順序圖反映對象之間發(fā)送消

息的時間順序

(7)協(xié)作圖CollaborationDiagram

■協(xié)作圖反映收發(fā)消息的對象的結(jié)構(gòu)組織。順

序圖和協(xié)作圖是同構(gòu)的,即兩者之間可以相

互轉(zhuǎn)換。

⑻構(gòu)件圖ComponentDiagram

■構(gòu)件圖描述程序代碼的組織結(jié)構(gòu)。構(gòu)件以及

它們之間的依賴關(guān)系,表示系統(tǒng)的靜態(tài)實現(xiàn)

視囪O

UML2.0中的構(gòu)件圖

]|(9)實施圖DeploymentDiagram

-實施圖(部署圖)反映了系統(tǒng)中軟件和硬件

的物理架構(gòu),表示系統(tǒng)運行時的處理節(jié)點以

及節(jié)點中構(gòu)件的配置。

UML2.0新增圖

■包圖正式化

■協(xié)作圖(CollaborationDiagram)改名為

通信圖(CommunicationDiagram)

■交互概覽圖(InteractionOverview

Diagram)

■復(fù)合結(jié)構(gòu)圖(CompositeStructure

Diagram)

■定時圖/計時圖(TimingDiagram)

y(10)UML建模工具

■RationalRose98、2000—2003

(UML1.3)

■RationalSoftwareArchitect(UML2.0)

■MicrosoftVisio

■PowerDesigner

■Together

■其它軟件產(chǎn)品……

上第二節(jié)面向?qū)ο蟮姆治雠c設(shè)計

■1.識別信息系統(tǒng)目標和系統(tǒng)邊界。

-2,識別用例,建立用例圖。

■3.識別對象、類及其關(guān)系,建立類圖。

-4,設(shè)計用例的詳細實現(xiàn)邏輯,建立順序圖和

協(xié)作圖。

-5,精化并調(diào)整。

*第三節(jié)識別系統(tǒng)的目標和邊界

■根據(jù)企業(yè)目標制定信息系統(tǒng)的目

■根據(jù)企業(yè)流程和業(yè)務(wù)內(nèi)容,識別

所包含的信息處理,確定信息系

統(tǒng)范圍

&一、識別信息系統(tǒng)的目標

-信息系統(tǒng)目標要盡可能地明確和簡潔;

■采用積極正面的方式表達,因此用的詞如

“幫助”、“提高”、“維持”、“支持”

和“推動”等;

-每個描述都支持整個企業(yè)行為;

■避免使用技術(shù)術(shù)語。目標的表述常常不用計

算機或其他技術(shù)常語,因為它只是嘗試著定

義“一個信息系統(tǒng)將要做什么”,而不是

“這個信息系統(tǒng)如何去做”。

《信息系統(tǒng)目標舉例

■某便利店信息系統(tǒng)的目標是:幫助收銀員提高結(jié)

賬的工作效率,保存好每筆銷售記錄,更有效地

支持商店的操作。

■某材料倉庫(任何倉庫應(yīng)用)信息系統(tǒng)的目標是:

幫助人員更有效地實現(xiàn)進貨和出貨,從而提高倉

庫的收益……確保庫存商品數(shù)量的正確性,并提

高庫存率。

■某訂貨中心信息系統(tǒng)的目標是:提高接收貨單、

貨單運送和付款的效率和正確率。

■某自動導(dǎo)航系統(tǒng)(任何其它實時控制系統(tǒng))信息系

統(tǒng)的目標是:維持飛機的高度、方向和飛行途中

的狀態(tài)。

*二、明確信息系統(tǒng)的邊界

-通過識別系統(tǒng)參與者來確立系統(tǒng)邊界。

■系統(tǒng)參與者(Actor):直接使用信息系統(tǒng),

與系統(tǒng)之間進行信息交換的人或事物。

■誰負責提供、使用或刪除信息?

-誰將使用此功能?

■誰對某個特定功能感興趣?

■在組織中的什么地方使用系統(tǒng)?

■誰負責支持和維護系統(tǒng)?

■參與者可以是個人、外部硬件、第三方系統(tǒng)

參與者舉例

■參與者為旅行社

機票預(yù)訂系統(tǒng)

■參與者為旅客

機票預(yù)訂系統(tǒng)

/三、門診系統(tǒng)案例說明

■掛號

■窗口掛號、預(yù)約掛號,普通號/專家號/教授號

■建檔

■就診

■醫(yī)生書寫診斷和處方

■存檔

■交費

■根據(jù)處方收費

■收費處維護各項收費標準

J第四節(jié)用例與用例圖

-基于用例的需求分析:

■確定系統(tǒng)應(yīng)具備哪些功能,這些功能是否完整

表達了系統(tǒng)的需求;

■為系統(tǒng)功能提供清晰規(guī)范的描述,這是開發(fā)人

員之間以及開發(fā)人員與用戶之間交流的基礎(chǔ),

也為系統(tǒng)測試和驗收提供依據(jù);

■以用例驅(qū)動,為具體實現(xiàn)的類及其方法提供跟

蹤檢測和設(shè)計啟發(fā)。

、一、什么是用例

-用例是參與者與系統(tǒng)之間為達到某個目的而

進行的一次典型的交互過程。

■用例創(chuàng)始人雅各布森IvarJacobson認為:

■用例(usecase)是對于一組動作序列的描述,

系統(tǒng)執(zhí)行這些動作會對特定的參與者(actor)

產(chǎn)生可觀測的、有價值的結(jié)果。

.用例結(jié)構(gòu)

■基本用例是包含常規(guī)會發(fā)生的最基本功能的

用例,它是具有普遍性的,對于任何執(zhí)行該

功能的參與者來講都是適合的。進行用例描

述時,往往會有冗余的情況出現(xiàn),比如多個

用例會共享一些子功能。

■擴展和包含關(guān)系就是用例模型中消除冗余的

一種手段。

■但忌諱使用結(jié)構(gòu)化的功能分解將用例分解成

一些子用例、子子用例。

y(1)基本用例

■一個最初的未經(jīng)過分解、包含常規(guī)會發(fā)生的

最基本的功能的用例,稱為基本用例。

■它是具有普遍性的,對于任何執(zhí)行該功能的

參與者來講都是適合的。

d(2)包含用例

■經(jīng)過封裝后可以在各種不同的基本用例中

復(fù)用的行為稱為包含用例。基本用例可以

控制包含用例,并要使用包含用例所得到

的結(jié)果。

■包含用例是基本用例存在的必要條件

■一個基本用例可以有多個包含用例,一個

包含用例可以包含在若干基本用例中。

$(3)擴展用例

■表達某些可選或只在特定條件下才執(zhí)行的

系統(tǒng)行為的用例,稱為擴展用例。

■擴展用例是可選的,它是否執(zhí)行取決于在

執(zhí)行基本用例時所發(fā)生的事件

還書時可以直接

登記賠償,也可

以不登記

k_7

〈〈exlend〉〉

歸還圖書登記賠償

圖書管理員

I,(4)泛化用例

■■用一個新的、通常也是抽象的用例來描述多

個用例的共有部分(父用例),子用例繼承父

用例的所有結(jié)構(gòu)、行為和關(guān)系,并含有自己

特殊的部分。

■父用例通常是抽象的,如果兩個子用例都對

同一父用例進行特殊化,則兩個子用例是相

互獨立而且完整的,這一點與包含關(guān)系擴展

*二、如何識別用例

-識別參與者

-識別用例

■審查用例

.(工)識別參與者(Actor)

參與者是系統(tǒng)之外與系統(tǒng)進行交互的任何事物。

工.使用系統(tǒng)的個人

■誰負責提供、使用或刪除信息?

■誰替使用某項功能?

2.系統(tǒng)所連接的外部硬件。

■例如,控制建筑物中溫度的通風系統(tǒng)不斷地從傳

感器獲取溫度信息,傳感器就是一個參與者。

3.與該系統(tǒng)進行通信的其他信息系統(tǒng)。

■例如為自動柜員機系統(tǒng)建模時,中央銀行系統(tǒng)就

是它的一個參與者。銀行卡系統(tǒng)是銷售系統(tǒng)中的

一個蓼與著

.區(qū)分參與者和DFD的外部實體

-只有在執(zhí)行系統(tǒng)功能時與信息系統(tǒng)進行實時

交互的人員才能被當作參與者

■外部實體是指數(shù)據(jù)的來源和去向,提供數(shù)據(jù)

的人員不一定會執(zhí)行系統(tǒng)功能

■新生入學(xué)手工填寫個人信息,然后由教務(wù)人員統(tǒng)

一臀數(shù)據(jù)登記到學(xué)籍系統(tǒng)中,教務(wù)人員是參與者。

■如果學(xué)生直接通過Web方式提交個人信息,則認

為學(xué)生是參與者。

為區(qū)分直接參與者和間接參與者

-直接參與者是從系統(tǒng)中直接獲得可度量價值

的用戶。

■間接參與者的需求驅(qū)動了用例所表示的行為

或功能,在用例中起輔助支持作用

■用例分析的重點是要找到直接參與者。

■比如,門診的窗口掛號中掛號員是直接參與者,

患者是間接參與者。

■在圖書館的借/還書用例中,首先要考慮誰直接

使用這一功能,誰頻繁地和系統(tǒng)進行交互?圖書

管理人員是直接操作者,他們的需求和變化對于

用例的影響最大。

《參與者的表示

■在UML中,參與者使用小人符號:

";r、一RSA中的

M:符號)

1尸送件務(wù)K

?,學(xué)隹

11節(jié)寫周記

教帥3

容寫周志意見

《參與者的泛化

-在某些情況下,參與者的角色可以有共性,

或者說一般性,一種角色可以擁有另一種角

色的全部行為。

■比如在超市系統(tǒng)中,值班經(jīng)理完全可以充當收銀

員這一角色,此外,值班經(jīng)理還可以有退貨、更

改事務(wù)等權(quán)利。

值班經(jīng)理.,

,(2)識別用例(UseCase)

-用例就是功能性需求。

-每個用例至少和一個參與者相關(guān),用例名稱

要體現(xiàn)參與者希望系統(tǒng)提供的一項具體功能。

?用例的UML圖形表示

(

Rose中的符號C

購買冏品

?區(qū)分用例和用例完成的步驟

-不能混淆用例和用例所包含的步驟。

■比如“借出圖書”功能要經(jīng)過驗證讀者信息、檢

查超出可借數(shù)量、保存借書記錄、修改圖書狀態(tài)

等步驟

■在系統(tǒng)中這些步驟通常不作為單獨的功能提

供給參與者使用,它們只是一個用例所包含

的事件流,或者是用例的子功能。

■與結(jié)構(gòu)化分析中提到的事件概念相同。

)區(qū)分業(yè)務(wù)用例和系統(tǒng)用例

-當針對整個業(yè)務(wù)領(lǐng)域建模時,使用的是業(yè)務(wù)用

■比如醫(yī)生“檢查患者”

■信息系統(tǒng)作為整個業(yè)務(wù)系統(tǒng)的一部分,只負責

管理業(yè)務(wù)的部分信息處理的功能,使用系統(tǒng)用

例:

■如上述業(yè)務(wù)用例應(yīng)表示為系統(tǒng)用例,即醫(yī)生“登記

檢查結(jié)果”

4(3)用例的檢查

■L每個基本用例應(yīng)至少涉及一個參與者。

■2.如果兩個用例總是以同樣的順序被激活,而且是

不可分割的操作序列,那么需要將它們合并為一個

用例。

■3.如果兩個用例有非常相似的行為或事件流,可以

將它們合并為一個用例,或者適當采用包含用例或

擴展用例。

■5.用例的名稱應(yīng)具有惟一性、直觀性和可理解性。

■6■一個用例中如果包含完全不同分支的事件流,可

以考慮分解成兩個或更多個單獨的用例。

■7.用例功能在信息系統(tǒng)中能體現(xiàn)。

.三、構(gòu)建用例建模

基于用例的需求獲取過程:

■1.獲取原始需求

■2.開發(fā)一個可以理解的需求

-識別參與者

-識別用例

■構(gòu)建用例圖

■3詳細、完整地描述需求

-書寫用例規(guī)格說明

■4重構(gòu)用例模型

-識別用例間的關(guān)系

-對用例進行組織和分包

口.(工)用例圖

名稱描述符號

用于描述與系統(tǒng)功能有關(guān)的外部實體,可以是人或其他系統(tǒng)

參與者大

(Actor)

表示用例圖中的用例,每個用例代表系統(tǒng)的一項外部功能需求

用例匚

(Usecase)

關(guān)聯(lián)連接參與者與用例(可以指定方向)

(Association)

>

包含關(guān)系從基本用例到包含用例的關(guān)系,由用例A指向用例B,指用例A?include>:>

(Include)定義的行為包含了用例B定義的行為

擴展關(guān)系從擴展用例到基本用例的關(guān)系,由用例A指向用例B,指用例A?Extend?>

(Extend)定義的行為在擴展條件滿足時插入到用例B定義的行為中

泛化關(guān)系指一種從子用例到父用例的關(guān)系,由用例A指向用例B,指用例

------------O

(Generalize)A繼承用例B的行為和含義,并且增加或覆蓋了用例B的行為

系統(tǒng)邊界界定系統(tǒng)功能范圍,描述該系統(tǒng)的用例置于其中,參與者置于—

(Boundary)其外

用于對基本兀素的補充描述

注釋(Notes)

$(2)用例的說明

-用例圖是對系統(tǒng)中的用例的高度概括和直觀

的表示,但沒有細節(jié)。

■一個用例就象一個故事,使用文字敘述對用

例進行詳細描述。

■一個編寫良好的用例應(yīng)該具有很好的可讀性,

沒有可讀性的用例則一點兒用也沒有。

■用例的描述可以有多種格式,從隨意的語言

描述到定義嚴格的用例模板,可根據(jù)實際情

況選擇。

用例規(guī)格說明Specification

用例名稱

直接參與者/間接參與者

簡要描述

前置條件

后置條件

主事件流(主要成功場景/基本路徑)

備選事件流(擴展路徑/替代流程/異常事件流)

特殊要求/非功能性需求

發(fā)生頻率

用例事件流(FlowofActivities)

■用例描述的是一個系統(tǒng)做什么,可以通過

用足夠清晰的、外部人員很容易理解的文

字描述一個事件流,來說明一個用例的行

為。

-事件流的描述包括:

■用例何時開始和結(jié)束

■用例何時與參與者交互(對話過程)

■參與者與系統(tǒng)之間有什么對象或信息被交換

■該行為的主事件流和備選事件流

,用例的前置條件和后置條件

■前置條件(pre-condition):表述在系統(tǒng)允許

用例開始以前,系統(tǒng)應(yīng)確保為真的條件。這可為

后續(xù)的編程人員提供幫助,從而確定在用例的實

現(xiàn)代碼中哪些條件無須再次檢驗。

■如果前置條件不滿足,用例無法被啟動,比如“網(wǎng)上

掛號”用例的前置條件是用戶已正確登錄到系統(tǒng)中。

■后置條件(guarantee):或稱為成功保證。表

述在用例結(jié)束時,系統(tǒng)將要保證的限定條件,一

般都是在成功完成用例后成立。

■一旦用例被成功地執(zhí)行,可能會導(dǎo)致系統(tǒng)內(nèi)部某些狀

態(tài)的改變,比如成功地“掛號”會使掛號限額改變等C

■某些用例可能沒有前置條件或后置條件,比如掛

號員“查詢”用例。

“取款”用例的完整描述

主參叮者:銀行卡用戶

目標:用戶使用銀行卡從ATM機獲取現(xiàn)金

范圍:銀行ATM系統(tǒng)

前置條件:用戶將信用卡插入ATM

后置事件:交易日志被保存

主事件流:

1.用戶插入銀行卡到ATM機

2.ATM系統(tǒng)識別卡的ID和賬號,并用主銀行系統(tǒng)驗證其有效性

3.用戶輸入密碼,ATM系統(tǒng)驗證其有效性

4.用戶選擇取款,并輸入提取金額,該數(shù)額必須在50?2000之間,

50的倍數(shù)

5.ATM系統(tǒng)通知賬戶所在的主銀行系統(tǒng),傳遞賬號和取款金額,

并接受返回的確認信息和賬戶余額

6.ATM系統(tǒng)發(fā)放現(xiàn)金、卡,并打印收據(jù)

7.ATM將事務(wù)記入日志

4對“取款”用例的完整描述(續(xù))

備選事件流:

2a:該卡不能在此ATM機上使用

2al.提示錯誤并退卡

3a:密碼不正確

3al.提示密碼錯誤,返回3

3b:用戶沒有及時輸入密碼

■■■

4a:金額不是50的倍數(shù),或不在指定范圍

5a:主機死機或網(wǎng)絡(luò)癱瘓

???

5b:賬戶余額不足

發(fā)生頻率:一天1000次

為四、門診系統(tǒng)的用例模型

收款

.第五節(jié)對象與類圖

建立邏輯模型的步驟

-識別對象

-識別對象屬性

-識別對象服務(wù)

-確定對象分類層次

■確定對象關(guān)聯(lián)關(guān)系

-構(gòu)建類圖

■永久對象的持久化

*一、識別對象

-有兩種方法用來識別領(lǐng)域中的對象(概念),

從而確定概念類

1.從用例描述中獲取候選概念

■摘取用例的詳細文檔中的名詞(術(shù)語或名詞短

語),然后進行分析

2.通過不同類別發(fā)現(xiàn)候選概念

(1)Wirfs-Brock名詞短語策略

L閱讀理解需求文檔(或用例說明);

2.反復(fù)閱讀,篩選出名詞或名詞短語,建立

初始對象清單(候選對象);

3.將候選對象分成三類,即顯而易見的對象、

明顯無意義的對象和不確定類別的對象;

4.舍棄明顯無意義的名詞或短語;

5.小組討論不確定類別的對象,直到將它們

都合并或調(diào)整到其它兩類。

名詞策略舉例

名詞類別對象列表

顯而易見的對象顧客、信用卡、收據(jù)、現(xiàn)金

明顯無意義的對象“取消”按鈕

不確定類別的對象密碼、業(yè)務(wù)類型、取款業(yè)務(wù)類型、

機器、存款余額

q.(2)不同類別的概念

■人員:系統(tǒng)需要保存或管理其信息的人員(如錄象商店

的會員、圖書館的讀者),或在系統(tǒng)中中扮演一定角色

的人員(如錄象商店的職員、論文評閱教師)。

■組織:在系統(tǒng)中發(fā)揮一定作用的組織機構(gòu)(如錄象商店

的連鎖店,醫(yī)療保險系統(tǒng)中的醫(yī)院,學(xué)校中的系)。

■物品:需要由系統(tǒng)管理的各種物品(如錄象商店的商品、

圖書),包括無形事物(如學(xué)校的一門課程、畢設(shè)題

目)。

-設(shè)備:在系統(tǒng)中被使用或由系統(tǒng)進行監(jiān)控的設(shè)備、儀器

等,系統(tǒng)運行中的硬件設(shè)備(如打印機)除外。

■事件:需要由系統(tǒng)長期記憶的事件(如在自動柜員機上

的每次取款事件、每次借書事件)。

不同類別的概念(續(xù))

■規(guī)格說明:系統(tǒng)中關(guān)于對象的規(guī)格信息的描述。

■如藥品描述,每種藥品有一個唯一的藥品編號,同時

還包含一些描述信息,如名稱、包裝規(guī)格、價格、廠

家等,所有相同藥品對象共用這些規(guī)格說明。這是一

種經(jīng)過了抽象的概念,同樣應(yīng)該識別為概念類。

&(3)對象的檢查

■對象的名稱及說明是否清楚而且易于理解?對象的

名稱必須有明確的符合問題空間的使用習慣,不能

有二義性,這樣所有人員才能達成共識。

■對象是否參與至少一個用例的實現(xiàn)?如果一個對象

不參與任何用例的實現(xiàn),說明該對象與系統(tǒng)沒有責

任關(guān)系,應(yīng)刪除。如果該對象是從需求文檔中獲取

的,則不會出現(xiàn)這種情況。

-是否有表示同一種事物的對象?由于有的事物名稱

不統(tǒng)一,可能會出現(xiàn)別名,如果有則將它們合并。

*(4)門診系統(tǒng)的對象

所屬類目對象舉例

人員掛號員醫(yī)生收款員患者

組織科室

物品掛號單病案發(fā)票普通號專家號教授號

設(shè)備

事件醫(yī)生診療開處方交款

規(guī)范化描述藥品描述檢查項目描述掛號限額表掛號價

格表

八識別屬性

■屬性是描述對象靜態(tài)特征的一個數(shù)據(jù)項。

■屬性是對象自身能管理的特征

(1)識別屬性的策略

見屬性的策略:

-如何為對象做一般性的描述?比如人,一般的描述信息

有姓名、性別、出生日期、身高、體重等。

-在當前問題域,對象還具備那些特定描述項?比如人作

為門診系統(tǒng)的患者,還需要考慮血型、藥物過敏、家族

病史等。

-對象的責任是什么?在系統(tǒng)中對象還需要了解或提供哪

些信息?比如圖書館要實現(xiàn)催還功能,與該責任相關(guān)的

就需要為書籍或借書事項定義借書日期和期限。

-對象需要長期保存哪些信息?比如肥胖癥患者病案中需

要保存以往的體重資料。

-對象可能處于什么狀態(tài)?對象的狀態(tài)不同,貝I可能執(zhí)行

的操作也不同。比如出租物品就有在庫、出租、維修三

個狀態(tài)。

*(2)屬性的檢查

■屬性名是否清楚?與對象命名一樣,屬性名稱也必

須符合問題空間的使用習慣,不能含糊不清。

■該屬性是否能在系統(tǒng)責任中發(fā)揮用途?如果一個屬

性在系統(tǒng)中脫離主題,不參與任何操作,應(yīng)標記刪

除。但也可以考慮暫時保留,經(jīng)過多輪分析設(shè)計后

仍然發(fā)現(xiàn)無用再舍棄。

■是否存在可導(dǎo)出的屬性?比如年齡可以由出生日期

導(dǎo)出。除非導(dǎo)出算法很復(fù)雜或有特別的需要,否則

舍棄可導(dǎo)出的屬性。

■該屬性是否不是簡單類型?簡單類型是指布爾、日

期、數(shù)字、字符串、文本、時間等類型。

$(3)屬性的說明

-每個屬性需要說明如下內(nèi)容:

■屬性的名稱和解釋:有些屬性只適用于該問題域,

是專業(yè)術(shù)語,晦澀難懂;有些常用詞語在特定環(huán)

境下字面的含義有所修改,為了提高清晰度,需

溫馨提示

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

評論

0/150

提交評論