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

下載本文檔

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

文檔簡(jiǎn)介

第7章分析問(wèn)題

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

class

Person{

/**

擰螺絲

*/

public

void

screw(Screwdriver

screwdriver){

screwdriver.screw();

}

}

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

2021/5/919泛化代碼class

Animal{}

class

Tiger

extends

Animal{}

public

class

Test

{

public

void

test()

{

Animal

a=new

Tiger();

}

}

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

2021/5/921關(guān)聯(lián)實(shí)例:比如客戶(hù)和訂單,每個(gè)訂單對(duì)應(yīng)特定的客戶(hù),每個(gè)客戶(hù)對(duì)應(yīng)一些特定的訂單;再例如公司和員工,每個(gè)公司對(duì)應(yīng)一些特定的員工,每個(gè)員工對(duì)應(yīng)一特定的公司2021/5/922關(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();

}

}

2021/5/9234.聚合關(guān)系定義:當(dāng)對(duì)象A被加入到對(duì)象B中,成為對(duì)象B的組成部分時(shí),對(duì)象B和對(duì)象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)系聚合的整體和部分之間在生命周期上沒(méi)有什么必然的聯(lián)系,部分對(duì)象可以在整體對(duì)象創(chuàng)建之前創(chuàng)建,也可以在整體對(duì)象銷(xiāo)毀之后銷(xiāo)毀。2021/5/924聚合關(guān)系表現(xiàn):與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過(guò)實(shí)例變量來(lái)實(shí)現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來(lái)語(yǔ)法上是沒(méi)辦法區(qū)分的,從語(yǔ)義上才能更好的區(qū)分兩者的區(qū)別。2021/5/925關(guān)聯(lián)與聚合的區(qū)別關(guān)聯(lián)關(guān)系所涉及的兩個(gè)對(duì)象是處在同一個(gè)層次上的。比如人和自行車(chē)就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因?yàn)槿瞬皇怯勺孕熊?chē)組成的。

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

2021/5/926聚合關(guān)系publicClassPerson{...}publicClassSchool{ privateArrayListstudents; privatevoidaddStudent(Personperson) { students.add(person); }}2021/5/927聚合關(guān)系public

class

Computer{

private

CPU

cpu;

public

CPU

getCPU(){

return

cpu;

}

public

void

setCPU(CPU

cpu){

this.cpu=cpu;

}

//開(kāi)啟電腦

public

void

start(){

//cpu運(yùn)作

cpu.run();

}

}

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

{

privateMenumenu;

publicWindow()

{

menu=newMenu();

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

publicvoiddestory()

{

menu.destory();

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

}2021/5/930舉例School與Student是什么關(guān)系? publicClassSchool

{

publicSchool()

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

publicvoiddestroy()

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

}聚合關(guān)系2021/5/9316.實(shí)現(xiàn)關(guān)系實(shí)現(xiàn):指的是一個(gè)類(lèi)元描述了另一個(gè)類(lèi)元保證實(shí)現(xiàn)的契約。對(duì)類(lèi)來(lái)說(shuō),就是一個(gè)類(lèi)實(shí)現(xiàn)了一個(gè)接口2021/5/932舉例:實(shí)現(xiàn)關(guān)系 publicinterfaceA

{

publicvoidmethodA();

}

publicclassBimplementsA

{

publicvoidmethodA()

{...}

...

}2021/5/933總結(jié)一般對(duì)類(lèi)關(guān)系建模的時(shí)候,先對(duì)泛化、關(guān)聯(lián)和實(shí)現(xiàn)建模,剩下的關(guān)系都可以看作依賴(lài)。2021/5/934標(biāo)識(shí)類(lèi)的關(guān)系使用頻率:關(guān)聯(lián)>聚合>繼承>復(fù)合就設(shè)計(jì)和實(shí)現(xiàn)而言,關(guān)聯(lián)、聚合和復(fù)合之間的區(qū)別很難界定2021/5/9357.4.3繪制類(lèi)圖和對(duì)象圖類(lèi)圖顯示存在哪些類(lèi),這些類(lèi)有什么關(guān)系(正式的類(lèi)圖還可以顯示屬性和操作)對(duì)于聚合、復(fù)合和關(guān)聯(lián),類(lèi)圖顯示了可能的運(yùn)行時(shí)關(guān)系,而不是顯示實(shí)際運(yùn)行時(shí)關(guān)系2021/5/936iCoot的分析類(lèi)圖2021/5/937用UML描述運(yùn)行時(shí)的對(duì)象2021/5/9387.4.4繪制關(guān)系繼承關(guān)系2021/5/939繪制關(guān)系聚合關(guān)系2021/5/940繪制關(guān)系復(fù)合關(guān)系2021/5/941繪制關(guān)系關(guān)聯(lián)關(guān)系2021/5/9421.多重性在類(lèi)的兩端標(biāo)識(shí)允許參與關(guān)系的運(yùn)行時(shí)對(duì)象的數(shù)量(關(guān)系中的多重性)n:表示nm..n:m到n范圍內(nèi)的任意數(shù)值(包含m和n)p..*:從p到無(wú)窮大的任意數(shù)*:0..*的縮寫(xiě)0..1:可選2021/5/943多重性2021/5/9442.關(guān)聯(lián)標(biāo)簽、角色和注釋除了繼承之外的所有關(guān)系都可以給定一個(gè)關(guān)聯(lián)標(biāo)簽,它表示關(guān)聯(lián)的性質(zhì)如果關(guān)聯(lián)名稱(chēng)的理解方式不明顯,就可以使用一個(gè)黑色的箭頭2021/5/945UML中的關(guān)聯(lián)標(biāo)簽、角色和注釋2021/5/946iCoot的分析類(lèi)圖2021/5/947用UML描述運(yùn)行時(shí)的對(duì)象2021/5/9487.4.5屬性屬性是對(duì)象的一個(gè)特性,例如對(duì)象的大小、位置、名稱(chēng)、價(jià)格、字體、利率等。在UML中,每個(gè)屬性都可以指定一個(gè)類(lèi)型,可以是類(lèi)或原型通過(guò)分割線(xiàn),顯示類(lèi)名和屬性2021/5/949用UML描述屬性2021/5/950避免做的事情...避免在UML使用獨(dú)立于語(yǔ)言的表示法定義自己的原型,如integer、Real和Boolean,因?yàn)樵陂_(kāi)始設(shè)計(jì)時(shí),就必須考慮與特定語(yǔ)言相關(guān)的內(nèi)容避免使用數(shù)組類(lèi)型,因?yàn)樗菍?duì)象和原型的交叉,使用集合類(lèi)(List或Set)會(huì)更好2021/5/951避免做的事情...避免在制品中包含派生的屬性,如圓的屬性包括半徑、直徑、周長(zhǎng)和面積2021/5/952iCoot的屬性2021/5/953選擇屬性還是關(guān)系如何為Car的顏色建模?2021/5/954在屬性和關(guān)系之間選擇一部分用戶(hù)角度心理學(xué)家汽車(chē)廠家2021/5/9557.4.6關(guān)聯(lián)類(lèi)2021/5/956關(guān)聯(lián)類(lèi)關(guān)聯(lián)偶爾也有與它相關(guān)的信息或行為關(guān)聯(lián)類(lèi)可以和關(guān)聯(lián)一起引入關(guān)聯(lián)類(lèi)表示的屬性和操作僅因?yàn)殛P(guān)聯(lián)關(guān)系的存在而存在在設(shè)計(jì)時(shí),必須用更具體的類(lèi)替換關(guān)聯(lián)類(lèi)2021/5/9577.4.7有形對(duì)象和無(wú)形對(duì)象無(wú)形對(duì)象建模:如目錄中描述的產(chǎn)品有形對(duì)象建模:如送到門(mén)口的實(shí)際產(chǎn)品2021/5/958有形對(duì)象和無(wú)形對(duì)象2021/5/9591.錯(cuò)誤的建模為了清單有形性問(wèn)題,假定除了銷(xiāo)售汽車(chē)之外,經(jīng)銷(xiāo)商還給顧客提供服務(wù)2021/5/960建模信息與銷(xiāo)售相關(guān)的信息包括:modelNumberavailableColorsnumberOfCylinders與服務(wù)相關(guān)的信息包括:OwnervehicleIndentificationNumbermileageAtLastService2021/5/961錯(cuò)誤的建模避免使一個(gè)類(lèi)有兩組完全不同的任務(wù)——這種類(lèi)的內(nèi)聚力很脆弱,它們的任務(wù)也不會(huì)構(gòu)成一個(gè)模塊2021/5/962錯(cuò)誤的建模2021/5/9632.正確的建模2021/5/964正確的建模2021/5/965練習(xí)4考慮一個(gè)視頻出租系統(tǒng)。下列圖中哪個(gè)圖是正確的?2021/5/9667.4.8好的對(duì)象類(lèi)取自用例中的名詞對(duì)象是具體的事物,是對(duì)類(lèi)的實(shí)例化對(duì)象擁有屬性對(duì)象能做什么,即對(duì)象操作建議:在動(dòng)態(tài)分析類(lèi)之前,不要過(guò)多地關(guān)注操作2021/5/9677.5動(dòng)態(tài)分析進(jìn)行動(dòng)態(tài)分析的原因:確認(rèn)類(lèi)圖是完整、正確的,以便盡早更正錯(cuò)誤,包括添加、刪除或修改類(lèi)、關(guān)系、屬性和操作相信當(dāng)前的模型可以在軟件中實(shí)現(xiàn)驗(yàn)證最終系統(tǒng)上用戶(hù)界面的功能:在進(jìn)行詳細(xì)設(shè)計(jì)之前,最好按照用例中的線(xiàn)條,把對(duì)系統(tǒng)的訪問(wèn)放在各個(gè)界面上2021/5/968用例實(shí)現(xiàn)動(dòng)態(tài)分析中最重要的部分就是用例的實(shí)現(xiàn)2021/5/969用例實(shí)現(xiàn)的步驟檢查系統(tǒng)用例,模擬對(duì)象之間發(fā)送的消息,在通信圖上記錄結(jié)果在接收消息的對(duì)象上引入操作根據(jù)需要添加類(lèi),以標(biāo)識(shí)邊界(系統(tǒng)接口)和控制器(復(fù)雜業(yè)務(wù)過(guò)程的占位符或者對(duì)象的創(chuàng)建和檢索)2021/5/9707.5.1繪制用例的實(shí)現(xiàn)過(guò)程為分析對(duì)象之間傳送消息的過(guò)程,需要用到UML通信圖和順序圖相對(duì)而言,通信圖更適合用例的實(shí)現(xiàn),僅關(guān)注對(duì)象及其連接,不考慮消息發(fā)送的順序2021/5/971U7:進(jìn)行預(yù)約的通信圖2021/5/972分析級(jí)的通信圖可以顯示...與系統(tǒng)邊界交互的參與者與系統(tǒng)內(nèi)部的對(duì)象交互的邊界系統(tǒng)內(nèi)部的對(duì)象與外部系統(tǒng)的邊界交互2021/5/9737.5.2邊界、控制器和實(shí)體為表達(dá)額外的信息,UML允許開(kāi)發(fā)人員使用圖標(biāo)代替標(biāo)準(zhǔn)的對(duì)象方框2021/5/974邊界、控制器和實(shí)體2021/5/975參與者參與者:存在于系統(tǒng)外部的人或系統(tǒng)2021/5/976邊界邊界:位于系統(tǒng)邊緣上的對(duì)象,在系統(tǒng)和參與者之間。對(duì)象系統(tǒng)參與者,邊界提供了通信途徑。對(duì)于作為參與者的人,邊界表示用戶(hù)界面,以執(zhí)行命令和查詢(xún),顯示反饋和結(jié)果。每個(gè)邊界對(duì)象通常都對(duì)應(yīng)于一個(gè)用例或一組相關(guān)的用例,通常映射到一個(gè)用戶(hù)界面草案2021/5/977實(shí)體實(shí)體:系統(tǒng)內(nèi)部的一個(gè)對(duì)象,表示一個(gè)業(yè)務(wù)概念,如顧客、汽車(chē)或型號(hào)一般實(shí)體由邊界和控制器操作,而不是自己的行為實(shí)體類(lèi)出現(xiàn)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論