《軟件工程》課件-第9章 面向?qū)ο蠓治鯻第1頁
《軟件工程》課件-第9章 面向?qū)ο蠓治鯻第2頁
《軟件工程》課件-第9章 面向?qū)ο蠓治鯻第3頁
《軟件工程》課件-第9章 面向?qū)ο蠓治鯻第4頁
《軟件工程》課件-第9章 面向?qū)ο蠓治鯻第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章

面向?qū)ο蠓治鯴X大學XX系XXX軟件工程教程電子科技大學出版社學習目標l

掌握面向?qū)ο蠓治龅幕靖拍?;l

掌握使用UML建立對象模型的方法;l

掌握使用UML建立動態(tài)模型的方法;l

掌握使用UML建立功能模型的方法。目錄01020304面向?qū)ο蠹夹g(shù)概述面向?qū)ο蠓治鲞^程面向?qū)ο蠓治鲈瓌t建立對象模型0506建立動態(tài)模型建立功能模型07

本章小結(jié)面向?qū)ο蠓治龈攀?1面向?qū)ο蠓治龈攀觥?/p>

面向?qū)ο蠓治觯∣OA)的目標是抽取和整理用戶需求,并建立一系列問題域的精確模型來描述能夠滿足用戶需要的計算機軟件?!?/p>

面向?qū)ο蠓治鏊⒌哪P鸵硎境鱿到y(tǒng)的數(shù)據(jù)、功能和行為三個方面的基本特征。◆

在進行面向?qū)ο蠓治鰰r,需要建立面向?qū)ο蟮膶ο竽P停枋鱿到y(tǒng)的數(shù)據(jù)結(jié)構(gòu))、功能模型(描述系統(tǒng)的功能)和行為模型(描述系統(tǒng)的控制結(jié)構(gòu))。面向?qū)ο蠓治龈攀觥?/p>

對任何大型系統(tǒng)而言,三個模型都必不可少。其中,對象模型又始終是最重要、最基本、最核心的。◆

面向?qū)ο蠓治龇ㄖ傅氖窃谝粋€系統(tǒng)的開發(fā)過程中進行了系統(tǒng)業(yè)務(wù)調(diào)查以后,按照面向?qū)ο蟮乃枷雭矸治鰡栴}。面向?qū)ο蠓治龈攀觥?/p>

OOA(面向?qū)ο蟮姆治觯┠P陀?個層次(主題層、對象類層、結(jié)構(gòu)層、屬性層和服務(wù)層)和5個活動(標識對象類、標識結(jié)構(gòu)、定義主題、定義屬性和定義服務(wù))組成?!?/p>

定義了兩種對象類之間的結(jié)構(gòu),一種稱為分類結(jié)構(gòu),一種稱為組裝結(jié)構(gòu)。分類結(jié)構(gòu)就是所謂的一般與特殊的關(guān)系。組裝結(jié)構(gòu)則反映了對象之間的整體與部分的關(guān)系。面向?qū)ο蠓治龈攀觥?/p>

OOA在定義屬性的同時,要識別實例連接?!?/p>

OOA在定義服務(wù)的同時要識別消息連接?!?/p>

OOA中的5個層次和5個活動繼續(xù)貫穿在OOD(面向?qū)ο笤O(shè)計)過程中。◆

OOD模型由4個部分組成。它們分別是設(shè)計問題域部分、設(shè)計人機交互部分、設(shè)計任務(wù)管理部分和設(shè)計數(shù)據(jù)管理部分。面向?qū)ο蠓治鲞^程02面向?qū)ο蠓治鲞^程在用OOA具體分析一個事物時,大致上遵循如下五個基本步驟。(1)確定對象和類。這里所說的對象是對數(shù)”據(jù)及其處理方式的抽象。類是多個對象的共同屬性和方法集合的描述。(2)確定結(jié)構(gòu)(structure)。結(jié)構(gòu)是指問題域的復(fù)雜性和連接關(guān)系。面向?qū)ο蠓治鲞^程(3)確定主題(subject)。主題是指事物的總體概貌和總體分析模型。(4)確定屬性(attribute)。屬性就是數(shù)據(jù)元素。”(5)確定方法(method)。方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。面向?qū)ο蠓治鲞^程面向?qū)ο蠓治瞿軌虍a(chǎn)生如下三種模型。(1)對象模型。對象模型是對用例模型進行分析,把系統(tǒng)分解成互相協(xié)作的分析類,通過類圖、對象圖描述對象、對象的屬性、對象間的關(guān)系,是系統(tǒng)的靜態(tài)模型?!保?)動態(tài)模型。動態(tài)模型用來描述系統(tǒng)的動態(tài)行為,通過時序圖、協(xié)作圖、描述對象的交互,以揭示對象間如何協(xié)作來完成每個具體的用例。單個對象的狀態(tài)變化、動態(tài)行為可以通過狀態(tài)圖來表示。(3)功能模型。功能模型即用例模型作為輸入。面向?qū)ο蠓治鲈瓌t03面向?qū)ο蠓治鲈瓌t(1)抽象抽象是從許多事物中舍棄個別的、非本質(zhì)的特征,抽取共同的、本質(zhì)性的特征。抽象是形成概念的必須手段。抽象原則有兩個方面的意義:①

盡管問題域中的事物是很復(fù)雜的,但是分析員并不需要了解和描述它們的一切,只需要分析其中與系統(tǒng)目標有關(guān)的事物及其本質(zhì)性特征。②

通過舍棄個體事物在細節(jié)上的差異,抽取其共同特性而得到一批事物的抽象概念。面向?qū)ο蠓治鲈瓌t抽象原則包括過程抽象和數(shù)據(jù)抽象兩個方面?!?/p>

過程抽象:是指任何一個完成確定功能的操作序列,其使用者都可以把它看做一個單一的實體,盡管實際上它可能是由一系列更低級的操作完成的?!?/p>

數(shù)據(jù)抽象:是根據(jù)施加于數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型,并限定數(shù)據(jù)的值只能由這些操作來修改和觀察。數(shù)據(jù)抽象是OOA的核心原則。面向?qū)ο蠓治鲈瓌t(2)封裝封裝就是把對象的屬性和服務(wù)結(jié)合為一個不可分的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細節(jié)。(3)繼承特殊類的對象擁有的其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。面向?qū)ο蠓治鲈瓌t(4)分類分類就是把具有相同屬性和服務(wù)的對象劃分為一類,用類作為這些對象的抽象描述。(5)聚合聚合又稱組裝,其原則是把一個復(fù)雜的事物看成若干比較簡單的事物組裝體,從而簡化對復(fù)雜事物的描述。面向?qū)ο蠓治鲈瓌t(6)關(guān)聯(lián)關(guān)聯(lián)是人類思考問題時經(jīng)常運用的思想方法:通過一個事物聯(lián)想到另外的事物。(7)消息通信這一原則要求對象之間只能通過消息進行通信,而不允許在對象之外直接地存取對象內(nèi)部的屬性。面向?qū)ο蠓治鲈瓌t(8)粒度控制控制自己的視野:考慮全局時,注意其大的組成部分,暫時不詳細描述每一部分的具體細節(jié):考慮某部分的細節(jié)時則暫時撇開其余的部分。這就是粒度控制原則。(9)行為分析顯示世界中事物的行為是復(fù)雜的。由大量的事物所構(gòu)成的問題域中各種行為往往相互依賴交織。建立對象模型04建立對象模型◆

面向?qū)ο蠓治龅氖滓蝿?wù)就是建立對象模型,建立對象模型的基本過程如下:(1)確定分析模型中的類和對象。(2)確定對象間的關(guān)系。(3)確定對象的屬性。(4)確定繼承關(guān)系。建立對象模型◆

確定類與對象的步驟如下:(1)找出候選的類與對象。(2)篩選出正確的類與對象。(3)區(qū)分實體類、邊界類和控制類。◆

實體類表示系統(tǒng)將跟蹤的持久信息;邊界類表示參與者與系統(tǒng)之間的交互;控制類負責用例的實現(xiàn)。建立對象模型圖9.1

實體類圖形表示建立對象模型◆

確定關(guān)聯(lián)標識關(guān)聯(lián)的啟發(fā)式準則如下:①

檢查指示狀態(tài)的動詞或動詞短語,識別動作的主體和客體,從角色尋找關(guān)聯(lián)。②準確地命名關(guān)聯(lián)和角色。③盡量使用常用的修飾詞標識出名字空間和關(guān)鍵屬性。④應(yīng)消除導(dǎo)出其他關(guān)聯(lián)的關(guān)聯(lián)。⑤在一組關(guān)聯(lián)被穩(wěn)定之前先不必考慮實例之間的多重性。⑥過多的關(guān)聯(lián)使得一個模型不可讀。建立對象模型分析階段屬性定義的原則如下。①每個對象至少包含一個屬性,例如_id。②屬性取值必需適合對象類的所有實例。③

出現(xiàn)在泛化關(guān)系中的對象所繼承的屬性必須與泛化關(guān)系一致。④系統(tǒng)的所有存儲數(shù)據(jù)必須定義為屬性。⑤對象的導(dǎo)出屬性應(yīng)當略去。⑥

在分析階段,如果某屬性描述了對象的外部不可見狀態(tài),應(yīng)將該屬性從分析模型中刪去。建立對象模型例9.1:在醫(yī)院的病房里,將病癥監(jiān)視器安置在每個病床,對病人進行監(jiān)護。監(jiān)視器將病人的病癥信號(組合)實時地傳送到中央監(jiān)護系統(tǒng)進行分析處理。在中心值班室里,值班護士使用中央監(jiān)護系統(tǒng)對病員的情況進行監(jiān)控,監(jiān)護系統(tǒng)實時地將病人的病癥信號與標準的病診信號進行比較分析,當病癥出現(xiàn)異常時,系統(tǒng)會立即自動報警,并打印病情報告和更新病歷。系統(tǒng)根據(jù)醫(yī)生的要求隨時打印病人的病情報告,系統(tǒng)還定期自動更新病歷。建立對象模型通過簡單的需求分析,根據(jù)分析系統(tǒng)主要實現(xiàn)以下功能。①

病癥監(jiān)視器可以將采集到的病癥信號(組合),格式化后實時的傳送到中央監(jiān)護系統(tǒng);②

中央監(jiān)護系統(tǒng)將病人的病癥信號與標準的病癥信號庫里的病癥信號的正常值進行比較,當病癥出現(xiàn)異常時系統(tǒng)自動報警;③當病癥信號異常時,系統(tǒng)自動更新病歷并打印病情報告④值班護士可以查看病情報告并進行打??;⑤

醫(yī)生可以查看病情報告,要求打印病情報告,也可以查看或要求打印病歷;⑥系統(tǒng)定期自動更新病歷。建立對象模型用UML的靜態(tài)建模機制定義并描述本系統(tǒng)的靜態(tài)結(jié)構(gòu)。1)建立系統(tǒng)的用例圖。2)將用例細化,可以得到分解的用例。3)識別系統(tǒng)的類。4)用包圖和配置圖描述系統(tǒng)的體系結(jié)構(gòu)。建立對象模型1)建立系統(tǒng)的用例圖通過以下六個問題識別角色。①誰使用系統(tǒng)的主要功能?②誰需要系統(tǒng)的支持以完成日常工作任務(wù)?③誰負責維護,管理并保持系統(tǒng)正常運行?④系統(tǒng)需要應(yīng)付(或處理)哪些硬設(shè)備?⑤系統(tǒng)需要和哪些外部系統(tǒng)交互?⑥誰(或什么)對系統(tǒng)運行產(chǎn)生的結(jié)果(值)感興趣?建立對象模型角色描述模板:通過回答這六個問題以后,再進一步分析可以識別出本系統(tǒng)的四個角色分別是值班護士,醫(yī)生,病人,標準病癥信號庫。圖9.2

角色描述模板圖9.3

頂層用例圖建立對象模型2)將用例細化,可以得到分解的用例。本例中需要分解的用例如下:①中央監(jiān)護②病癥監(jiān)護③提供標準病癥信號④病歷管理⑤病情報告圖9.4

細化用例圖建立對象模型3)識別系統(tǒng)的類通過名詞識別法和系統(tǒng)實體識別法等方法可以識別出系統(tǒng)的十二個類。進一步地,在類圖中標明類之間的關(guān)系,形成類關(guān)系圖。十二個系統(tǒng)類圖如下所示:圖9.5

系統(tǒng)類圖以上是12個系統(tǒng)類圖。下面是類關(guān)系圖。圖9.6類關(guān)系圖4)用包圖和配置圖描述系統(tǒng)的體系結(jié)構(gòu)圖9.7

包圖圖9.8

網(wǎng)絡(luò)結(jié)構(gòu)圖建立動態(tài)模型05建立動態(tài)模型◆

在面向?qū)ο蠓椒ㄖ?,主要用狀態(tài)圖來描述系統(tǒng)的動態(tài)模型(也叫行為模型)?!?/p>

對象模型建立后,就需考察對象和關(guān)系動態(tài)變化序列。面向?qū)ο蠓治鲈O(shè)定對象和關(guān)系都具有其生存周期?!?/p>

生存周期由許多階段組成,每個階段都有一系列的運行規(guī)律和規(guī)則,用來調(diào)節(jié)和管理對象的行為。建立動態(tài)模型◆

通常用動態(tài)模型描述對象和關(guān)系的生存周期,即它們的狀態(tài)、狀態(tài)轉(zhuǎn)換的觸發(fā)事件、對象的服務(wù)(行為)?!?/p>

狀態(tài):對象在其生存周期中的某個特定階段所具有的行為模式?!?/p>

事件:事件是某個特定時刻所發(fā)生的事情,是引起對象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的抽象,它沒有持續(xù)時間,是瞬間完成的。時間是引起對象狀態(tài)轉(zhuǎn)換的控制信息。建立動態(tài)模型◆

服務(wù)(行為):對象的某種狀態(tài)下所發(fā)生的一系列處理操作。行為是需要消耗時間的?!?/p>

動態(tài)模型的建立首先編寫腳本,從腳本中提取事件,畫出事件跟蹤圖,再畫狀態(tài)轉(zhuǎn)換圖。(1)編寫腳本(2)設(shè)計用戶界面(3)畫順序圖(4)畫狀態(tài)轉(zhuǎn)換圖建立動態(tài)模型例9.2:分別畫出旅館管理系統(tǒng)中旅客和床位的狀態(tài)轉(zhuǎn)換圖。旅館管理系統(tǒng)中要為旅客安排床位,床位有“空”和“住人”兩種狀態(tài)。只有當床位處于“空”狀態(tài)時,才可安排旅客住宿,隨后床位的狀態(tài)變?yōu)椤白∪恕?。旅客離開后,他所住的床位又變?yōu)椤翱铡睜顟B(tài)。因而要分析旅客和床位的狀態(tài),以及引起狀態(tài)轉(zhuǎn)換的事件(操作)。旅客在該系統(tǒng)中有三種狀態(tài),分別為旅客登記、住宿和注銷。從“旅客登記”到“住宿”,是由事件“登記旅客情況”和“分配床位”的發(fā)生引起的。從“住宿”狀態(tài)到“注銷”狀態(tài),是由事件“結(jié)賬”和“退房”引起的。建立動態(tài)模型圖9.9旅客的狀態(tài)轉(zhuǎn)換圖圖9.10床位的系統(tǒng)狀態(tài)轉(zhuǎn)換圖建立動態(tài)模型例9.3:結(jié)合9.4節(jié)案例,完成動態(tài)模型的創(chuàng)建。(1)給出兩個關(guān)系很緊密的狀態(tài)圖(2)用時序圖和合作圖描述病人病情異常時系統(tǒng)的情況,其他情況從略。(3)用活動圖描述系統(tǒng)在監(jiān)護病人時的狀態(tài)變化。圖9.11

狀態(tài)圖圖9.12

時序圖圖9.13

合作圖圖9.14

狀態(tài)變化圖建立功能模型06建立功能模型◆

功能模型由一組數(shù)據(jù)流圖組成。在面向?qū)ο蠓治龇椒ㄖ袨閯討B(tài)模型的每個狀態(tài)畫出數(shù)據(jù)流圖,可以清楚地說明與狀態(tài)有關(guān)的處理過程,即服務(wù)(行為)?!?/p>

在建立系統(tǒng)信息模型的基礎(chǔ)上,以數(shù)據(jù)或信息為主線,在分析數(shù)據(jù)和信息的過程中分析其處理過程,將數(shù)據(jù)和處理結(jié)合在一起而不是分離開來。◆

功能模型可用數(shù)據(jù)流圖、程序流程圖、N-S圖等來表示。建立功能模型◆

功能模型由數(shù)據(jù)流圖組成,指明從外部輸入到外部輸出,數(shù)據(jù)在系統(tǒng)中傳遞和變換的情況?!?/p>

例9.4:結(jié)合9.4節(jié)案例,完成功能模型的創(chuàng)建,具體步驟如下:經(jīng)過初步的需求分析,得到系統(tǒng)功能要求:(1)監(jiān)視病員的病癥(血壓、體溫、脈搏等)。(2)定時更新病歷。(3)病員出現(xiàn)異常情況時報警。(4)隨機地產(chǎn)生某一病員的病情報告。建立功能模型(1)分析系統(tǒng)頂層結(jié)構(gòu)①源點來自病人本身或者護士;②

終點是護士,因為一切報告和告警信息應(yīng)匯集到護士處;③加工(處理)是病房監(jiān)視系統(tǒng);④

數(shù)據(jù)流包括病情信號,報告,告警信息和要求報告;⑤數(shù)據(jù)存儲是指病員病歷。圖9.15

頂層圖建立功能模型(2)系統(tǒng)分解系統(tǒng)可以分解為:①

系統(tǒng)分析后,劃分出一個床邊監(jiān)視器實現(xiàn)本地監(jiān)控;②在護士辦公室實現(xiàn)中央監(jiān)視;③病人病歷的更新;④護士辦公室提出報告。圖9.16

第一層分解圖建立功能模型(3)進一步分解將中央監(jiān)視系統(tǒng)劃分為

溫馨提示

  • 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

提交評論