第7章 分析問題_第1頁
第7章 分析問題_第2頁
第7章 分析問題_第3頁
第7章 分析問題_第4頁
第7章 分析問題_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章分析問題學(xué)習(xí)目標(biāo):理解分析的含義建立靜態(tài)分析模型理解動(dòng)態(tài)分析如何幫助驗(yàn)證靜態(tài)模型2024/1/101.7.1引言分析是需求和設(shè)計(jì)之間的橋梁,可以把系統(tǒng)必須提供的效勞的清晰陳述轉(zhuǎn)化為對要處理的對象的正確理解。分析是找出系統(tǒng)要處理什么的過程,而不是確定如何處理過程。2024/1/102.分析模型的分類分析模型有靜態(tài)局部和動(dòng)態(tài)局部靜態(tài)分析:使用類圖描述,顯示對象及其對象之間的關(guān)系動(dòng)態(tài)分析:使用通信圖〔協(xié)作圖〕證明靜態(tài)模型是可行的2024/1/103.分析的來源業(yè)務(wù)需求模型:描述業(yè)務(wù)上下文的手工和自開工作流,它使用參與者的面向?qū)ο蟆矘I(yè)務(wù)〕版本、用例、對象、術(shù)語表,有時(shí)還有通信圖和活動(dòng)圖來描述系統(tǒng)需求模型:包含系統(tǒng)的外部視圖,描述為參與者的面向系統(tǒng)版本、用例和用例圖、用戶界面草案、增強(qiáng)的術(shù)語表和非功能需求2024/1/104.分析階段內(nèi)容分析的來源必須轉(zhuǎn)化為由系統(tǒng)處理的對象模型,以及對象的屬性和關(guān)系這些對象存在于系統(tǒng)或系統(tǒng)邊界上,可以通過一個(gè)或多個(gè)接口來訪問該階段的大多數(shù)對象都對應(yīng)于真實(shí)世界中的物理對象或概念〔低級的、面向解決方案的對象要在設(shè)計(jì)階段才出現(xiàn)〕貫徹“用例驅(qū)動(dòng)〞2024/1/105.補(bǔ)充:處理過程分析用例用例工程師業(yè)務(wù)模型[或領(lǐng)域模型]補(bǔ)充需求特征列表用例模型[概況的]分析類用例實(shí)現(xiàn)2024/1/106.7.2為什么要進(jìn)行分析分析可防止在徹底理解問題之前設(shè)計(jì)解決方案不可能僅根據(jù)業(yè)務(wù)需求模型就完全理解問題,只有轉(zhuǎn)化為軟件,才有可能引入新的實(shí)踐2024/1/107.分析的作用完成靜態(tài)分析,客戶就能確認(rèn)我們對業(yè)務(wù)對象的理解是否正確,之后讓對象影響我們的設(shè)計(jì)完成動(dòng)態(tài)分析,就可以確信分析對象能夠支持需要的系統(tǒng)功能2024/1/108.7.3分析過程概述使用系統(tǒng)需求模型查找候選的類,以描述與系統(tǒng)相關(guān)的對象,并在類圖上建立它們確定類之間的關(guān)系(關(guān)聯(lián)、聚合、復(fù)合和繼承)確定類的屬性〔對象的、已指定的簡單特性〕2024/1/109.分析過程概述檢查系統(tǒng)用例,確定已有的對象支持它們。在檢查過程中微調(diào)類、屬性和關(guān)系,這個(gè)用例的實(shí)現(xiàn)過程將生成一些操作,來補(bǔ)充屬性需要時(shí)更新術(shù)語表和非功能需求——用例本身不需要更新,但可能需要某些更正2024/1/1010.需要給客戶展示的...類圖和屬性便于客戶的理解,有這樣糾正錯(cuò)誤的分析2024/1/1011.不要客戶展示的...對象操作或通信圖難以被客戶理解淺薄的設(shè)計(jì),系統(tǒng)用例已演示了動(dòng)態(tài)行為其中隱含編碼,暴露秘密在設(shè)計(jì)之前是要?jiǎng)h除的2024/1/1012.7.4靜態(tài)分析靜態(tài)分析確定系統(tǒng)的邏輯或物理局部,以及如何把它們連接在一起,即描述如何構(gòu)建和初始化系統(tǒng)2024/1/1013.7.4.1確定類為了檢查業(yè)務(wù)需求建模和系統(tǒng)需求建模,以系統(tǒng)用例的形式抽取出候選類候選類常常在用例中用名詞表示2024/1/1014.確定類不適合作為候選類的名詞:系統(tǒng)本身參與者〔例外:需要在內(nèi)部存儲(chǔ)參與者的信息〕邊界小類型〔字符串或數(shù)字〕2024/1/1015.7.4.2標(biāo)識(shí)類的關(guān)系依賴泛化〔繼承〕關(guān)聯(lián)聚集復(fù)合〔組合〕實(shí)現(xiàn)2024/1/1016.1.依賴定義:對于兩個(gè)相對獨(dú)立的對象,當(dāng)一個(gè)對象負(fù)責(zé)構(gòu)造另一個(gè)對象的實(shí)例,或者依賴另一個(gè)對象的效勞時(shí),這兩個(gè)對象之間主要表達(dá)為依賴關(guān)系。表現(xiàn):依賴關(guān)系表現(xiàn)在局部變量,方法的參數(shù),以及對靜態(tài)方法的調(diào)用2024/1/1017.依賴實(shí)例:比方說擰螺絲,要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作代碼:public

class

Person{

/**

擰螺絲

*/

public

void

screw(Screwdriver

screwdriver){

screwdriver.screw();

}

}

2024/1/1018.2.泛化〔繼承〕關(guān)系定義:表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對接口的實(shí)現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。表現(xiàn):父類父類實(shí)例=new子類()

2024/1/1019.泛化代碼class

Animal{}

class

Tiger

extends

Animal{}

public

class

Test

{

public

void

test()

{

Animal

a=new

Tiger();

}

}

2024/1/1020.3.關(guān)聯(lián)關(guān)系定義:對于兩個(gè)相對獨(dú)立的對象,當(dāng)一個(gè)對象的實(shí)例與另一個(gè)對象的一些特定實(shí)例存在固定的對應(yīng)關(guān)系時(shí),這兩個(gè)對象之間為關(guān)聯(lián)關(guān)系表現(xiàn):關(guān)聯(lián)關(guān)系是使用實(shí)例變量來實(shí)現(xiàn)

2024/1/1021.關(guān)聯(lián)實(shí)例:比方客戶和訂單,每個(gè)訂單對應(yīng)特定的客戶,每個(gè)客戶對應(yīng)一些特定的訂單;再例如公司和員工,每個(gè)公司對應(yīng)一些特定的員工,每個(gè)員工對應(yīng)一特定的公司2024/1/1022.關(guān)聯(lián)代碼public

class

Company{

private

Employee

employee;

public

Employee

getEmployee(){

return

employee;

}

public

void

setEmployee(Employee

employee){

this.employee=employee;

}

//公司運(yùn)作

public

void

run(){

employee.startWorking();

}

}

2024/1/1023.4.聚合關(guān)系定義:當(dāng)對象A被參加到對象B中,成為對象B的組成局部時(shí),對象B和對象A之間為聚合〔聚集〕關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強(qiáng)的關(guān)聯(lián)關(guān)系〔強(qiáng)關(guān)聯(lián)〕,強(qiáng)調(diào)的是整體與局部之間的關(guān)系,即“has-a〞關(guān)系聚合的整體和局部之間在生命周期上沒有什么必然的聯(lián)系,局部對象可以在整體對象創(chuàng)立之前創(chuàng)立,也可以在整體對象銷毀之后銷毀。2024/1/1024.聚合關(guān)系表現(xiàn):與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量來實(shí)現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來語法上是沒方法區(qū)分的,從語義上才能更好的區(qū)分兩者的區(qū)別。2024/1/1025.關(guān)聯(lián)與聚合的區(qū)別關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對象是處在同一個(gè)層次上的。比方人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊嚱M成的。

聚合關(guān)系涉及的兩個(gè)對象處于不平等的層次上,一個(gè)代表整體,一個(gè)代表局部。比方電腦和它的顯示器、鍵盤、主板以及內(nèi)存就是聚集關(guān)系,因?yàn)橹靼迨请娔X的組成局部。對于具有聚集關(guān)系〔尤其是強(qiáng)聚集關(guān)系〕的兩個(gè)對象,整體對象會(huì)制約它的組成對象的生命周期。局部類的對象不能單獨(dú)存在,它的生命周期依賴于整體類的對象的生命周期,當(dāng)整體消失,局部也就隨之消失。比方張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件〔比方硬盤和內(nèi)存〕拆了下來。

2024/1/1026.聚合關(guān)系publicClassPerson{...}publicClassSchool{ privateArrayListstudents; privatevoidaddStudent(Personperson) { students.add(person); }}2024/1/1027.聚合關(guān)系public

class

Computer{

private

CPU

cpu;

public

CPU

getCPU(){

return

cpu;

}

public

void

setCPU(CPU

cpu){

this.cpu=cpu;

}

//開啟電腦

public

void

start(){

//cpu運(yùn)作

cpu.run();

}

}

2024/1/1028.5.復(fù)合關(guān)系復(fù)合〔強(qiáng)聚集,組合,合成〕:復(fù)合的對象不能由其他對象共享,且與構(gòu)成它的對象一齊消亡它帶有很強(qiáng)的擁有有關(guān)系且整體與局部的生命周期一致的聚合關(guān)聯(lián)形式。例如Windows的窗口和窗口上的菜單就是組合關(guān)系。生命周期一致指的是局部必須在組合創(chuàng)立的同時(shí)或者之后創(chuàng)立,在組合銷毀之前或者同時(shí)銷毀,局部的生命周期不會(huì)超出組合的生命周期。組合是用帶實(shí)心菱形的實(shí)線來表示。2024/1/1029.復(fù)合關(guān)系 publicClassWindow

{

privateMenumenu;

publicWindow()

{

menu=newMenu();

}//可以在這時(shí)候創(chuàng)立Menu對象,也可以在之后創(chuàng)立

publicvoiddestory()

{

menu.destory();

}//必須同時(shí)或者在這之前銷毀關(guān)聯(lián)的Menu對象

}2024/1/1030.舉例School與Student是什么關(guān)系? publicClassSchool

{

publicSchool()

{...}//不需要?jiǎng)?chuàng)立任何Person對象,其Students都是已有的Person對象

publicvoiddestroy()

{...}//只需要關(guān)掉School對象和斷開它與自己所有的Person對象的關(guān)聯(lián)即可,Person對象是不會(huì)銷毀的

}聚合關(guān)系2024/1/1031.6.實(shí)現(xiàn)關(guān)系實(shí)現(xiàn):指的是一個(gè)類元描述了另一個(gè)類元保證實(shí)現(xiàn)的契約。對類來說,就是一個(gè)類實(shí)現(xiàn)了一個(gè)接口2024/1/1032.舉例:實(shí)現(xiàn)關(guān)系 publicinterfaceA

{

publicvoidmethodA();

}

publicclassBimplementsA

{

publicvoidmethodA()

{...}

...

}2024/1/1033.總結(jié)一般對類關(guān)系建模的時(shí)候,先對泛化、關(guān)聯(lián)和實(shí)現(xiàn)建模,剩下的關(guān)系都可以看作依賴。2024/1/1034.標(biāo)識(shí)類的關(guān)系使用頻率:關(guān)聯(lián)>聚合>繼承>復(fù)合就設(shè)計(jì)和實(shí)現(xiàn)而言,關(guān)聯(lián)、聚合和復(fù)合之間的區(qū)別很難界定2024/1/1035.7.4.3繪制類圖和對象圖類圖顯示存在哪些類,這些類有什么關(guān)系〔正式的類圖還可以顯示屬性和操作〕對于聚合、復(fù)合和關(guān)聯(lián),類圖顯示了可能的運(yùn)行時(shí)關(guān)系,而不是顯示實(shí)際運(yùn)行時(shí)關(guān)系2024/1/1036.iCoot的分析類圖2024/1/1037.用UML描述運(yùn)行時(shí)的對象2024/1/1038.7.4.4繪制關(guān)系繼承關(guān)系2024/1/1039.繪制關(guān)系聚合關(guān)系2024/1/1040.繪制關(guān)系復(fù)合關(guān)系2024/1/1041.繪制關(guān)系關(guān)聯(lián)關(guān)系2024/1/1042.1.多重性在類的兩端標(biāo)識(shí)允許參與關(guān)系的運(yùn)行時(shí)對象的數(shù)量〔關(guān)系中的多重性〕n:表示nm..n:m到n范圍內(nèi)的任意數(shù)值〔包含m和n〕p..*:從p到無窮大的任意數(shù)*:0..*的縮寫0..1:可選2024/1/1043.多重性2024/1/1044.2.關(guān)聯(lián)標(biāo)簽、角色和注釋除了繼承之外的所有關(guān)系都可以給定一個(gè)關(guān)聯(lián)標(biāo)簽,它表示關(guān)聯(lián)的性質(zhì)如果關(guān)聯(lián)名稱的理解方式不明顯,就可以使用一個(gè)黑色的箭頭2024/1/1045.UML中的關(guān)聯(lián)標(biāo)簽、角色和注釋2024/1/1046.iCoot的分析類圖2024/1/1047.用UML描述運(yùn)行時(shí)的對象2024/1/1048.7.4.5屬性屬性是對象的一個(gè)特性,例如對象的大小、位置、名稱、價(jià)格、字體、利率等。在UML中,每個(gè)屬性都可以指定一個(gè)類型,可以是類或原型通過分割線,顯示類名和屬性2024/1/1049.用UML描述屬性2024/1/1050.防止做的事情...防止在UML使用獨(dú)立于語言的表示法定義自己的原型,如integer、Real和Boolean,因?yàn)樵陂_始設(shè)計(jì)時(shí),就必須考慮與特定語言相關(guān)的內(nèi)容防止使用數(shù)組類型,因?yàn)樗菍ο蠛驮偷慕徊妫褂眉项悺睱ist或Set〕會(huì)更好2024/1/1051.防止做的事情...防止在制品中包含派生的屬性,如圓的屬性包括半徑、直徑、周長和面積2024/1/1052.iCoot的屬性2024/1/1053.選擇屬性還是關(guān)系如何為Car的顏色建模?2024/1/1054.在屬性和關(guān)系之間選擇一局部用戶角度心理學(xué)家汽車廠家2024/1/1055.7.4.6關(guān)聯(lián)類2024/1/1056.關(guān)聯(lián)類關(guān)聯(lián)偶爾也有與它相關(guān)的信息或行為關(guān)聯(lián)類可以和關(guān)聯(lián)一起引入關(guān)聯(lián)類表示的屬性和操作僅因?yàn)殛P(guān)聯(lián)關(guān)系的存在而存在在設(shè)計(jì)時(shí),必須用更具體的類替換關(guān)聯(lián)類2024/1/1057.7.4.7有形對象和無形對象無形對象建模:如目錄中描述的產(chǎn)品有形對象建模:如送到門口的實(shí)際產(chǎn)品2024/1/1058.有形對象和無形對象2024/1/1059.1.錯(cuò)誤的建模為了清單有形性問題,假定除了銷售汽車之外,經(jīng)銷商還給顧客提供效勞2024/1/1060.建模信息與銷售相關(guān)的信息包括:modelNumberavailableColorsnumberOfCylinders與效勞相關(guān)的信息包括:OwnervehicleIndentificationNumbermileageAtLastService2024/1/1061.錯(cuò)誤的建模防止使一個(gè)類有兩組完全不同的任務(wù)——這種類的內(nèi)聚力很脆弱,它們的任務(wù)也不會(huì)構(gòu)成一個(gè)模塊2024/1/1062.錯(cuò)誤的建模2024/1/1063.2.正確的建模2024/1/1064.正確的建模2024/1/1065.練習(xí)4考慮一個(gè)視頻出租系統(tǒng)。以下圖中哪個(gè)圖是正確的?2024/1/1066.7.4.8好的對象類取自用例中的名詞對象是具體的事物,是對類的實(shí)例化對象擁有屬性對象能做什么,即對象操作建議:在動(dòng)態(tài)分析類之前,不要過多地關(guān)注操作2024/1/1067.7.5動(dòng)態(tài)分析進(jìn)行動(dòng)態(tài)分析的原因:確認(rèn)類圖是完整、正確的,以便盡早更正錯(cuò)誤,包括添加、刪除或修改類、關(guān)系、屬性和操作相信當(dāng)前的模型可以在軟件中實(shí)現(xiàn)驗(yàn)證最終系統(tǒng)上用戶界面的功能:在進(jìn)行詳細(xì)設(shè)計(jì)之前,最好按照用例中的線條,把對系統(tǒng)的訪問放在各個(gè)界面上2024/1/1068.用例實(shí)現(xiàn)動(dòng)態(tài)分析中最重要的局部就是用例的實(shí)現(xiàn)2024/1/1069.用例實(shí)現(xiàn)的步驟檢查系統(tǒng)用例,模擬對象之間發(fā)送的消息,在通信圖上記錄結(jié)果在接收消息的對象上引入操作根據(jù)需要添加類,以標(biāo)識(shí)邊界〔系統(tǒng)接口〕和控制器〔復(fù)雜業(yè)務(wù)過程的占位符或者對象的創(chuàng)立和檢索〕2024/1/1070.7.5.1繪制用例的實(shí)現(xiàn)過程為分析對象之間傳送消息的過程,需要用到UML通信圖和順序圖相對而言,通信圖更適合用例的實(shí)現(xiàn),僅關(guān)注對象及其連接,不考慮消息發(fā)送的順序2024/1/1071.U7:進(jìn)行預(yù)約的通信圖2024/1/1072.分析級的通信圖可以顯示...與系統(tǒng)邊界交互的參與者與系統(tǒng)內(nèi)部的對象交互的邊界系統(tǒng)內(nèi)部的對象與外部系統(tǒng)的邊界交互2024/1/1073.7.5.2邊界、控制器和實(shí)體為表達(dá)額外的信息,UML允許開發(fā)人員使用圖標(biāo)代替標(biāo)準(zhǔn)的對象方框2024/1/1074.邊界、控制器和實(shí)體2024/1/1075.參與者參與者:存在于系統(tǒng)外部的人或系統(tǒng)2024/1/1076.邊界邊界:位于系統(tǒng)邊緣上的對象,在系統(tǒng)和參與者之間。對象系統(tǒng)參與者,邊界提供了通信途徑。對于作為參與者的人,邊界表示用戶界面,以執(zhí)行命令和查詢,顯示反響和結(jié)果。每個(gè)邊界對象通常都對應(yīng)于一個(gè)用例或一組相關(guān)的用例,通常映射到一個(gè)用戶界面草案2024/1/1077.實(shí)體實(shí)體:系統(tǒng)內(nèi)部的一個(gè)對象,表示一個(gè)業(yè)務(wù)概念,如顧客、汽車或型號(hào)一般實(shí)體由邊界和控制器操作,而不是自己的行為實(shí)體類出現(xiàn)在分析類圖中,大多數(shù)實(shí)體在設(shè)計(jì)

溫馨提示

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

評論

0/150

提交評論