版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第7章分析問題學(xué)習(xí)目標(biāo):理解分析的含義建立靜態(tài)分析模型理解動態(tài)分析如何幫助驗證靜態(tài)模型第7章分析問題7.1引言分析是需求和設(shè)計之間的橋梁,可以把系統(tǒng)必須提供的服務(wù)的清晰陳述轉(zhuǎn)化為對要處理的對象的正確理解。分析是找出系統(tǒng)要處理什么的過程,而不是確定如何處理過程。2023/11/202第7章分析問題分析模型的分類分析模型有靜態(tài)部分和動態(tài)部分靜態(tài)分析:使用類圖描述,顯示對象及其對象之間的關(guān)系動態(tài)分析:使用通信圖(協(xié)作圖)證明靜態(tài)模型是可行的2023/11/203第7章分析問題分析的來源業(yè)務(wù)需求模型:描述業(yè)務(wù)上下文的手工和自動工作流,它使用參與者的面向?qū)ο螅I(yè)務(wù))版本、用例、對象、術(shù)語表,有時還有通信圖和活動圖來描述系統(tǒng)需求模型:包含系統(tǒng)的外部視圖,描述為參與者的面向系統(tǒng)版本、用例和用例圖、用戶界面草案、增強的術(shù)語表和非功能需求2023/11/204第7章分析問題分析階段內(nèi)容分析的來源必須轉(zhuǎn)化為由系統(tǒng)處理的對象模型,以及對象的屬性和關(guān)系這些對象存在于系統(tǒng)或系統(tǒng)邊界上,可以通過一個或多個接口來訪問該階段的大多數(shù)對象都對應(yīng)于真實世界中的物理對象或概念(低級的、面向解決方案的對象要在設(shè)計階段才出現(xiàn))貫徹“用例驅(qū)動”2023/11/205第7章分析問題補充:處理過程分析用例用例工程師業(yè)務(wù)模型[或領(lǐng)域模型]補充需求特征列表用例模型[概況的]分析類用例實現(xiàn)2023/11/206第7章分析問題7.2為什么要進行分析分析可防止在徹底理解問題之前設(shè)計解決方案不可能僅根據(jù)業(yè)務(wù)需求模型就完全理解問題,只有轉(zhuǎn)化為軟件,才有可能引入新的實踐2023/11/207第7章分析問題分析的作用完成靜態(tài)分析,客戶就能確認(rèn)我們對業(yè)務(wù)對象的理解是否正確,之后讓對象影響我們的設(shè)計完成動態(tài)分析,就可以確信分析對象能夠支持需要的系統(tǒng)功能2023/11/208第7章分析問題7.3分析過程概述使用系統(tǒng)需求模型查找候選的類,以描述與系統(tǒng)相關(guān)的對象,并在類圖上建立它們確定類之間的關(guān)系(關(guān)聯(lián)、聚合、復(fù)合和繼承)確定類的屬性(對象的、已指定的簡單特性)2023/11/209第7章分析問題分析過程概述檢查系統(tǒng)用例,確定已有的對象支持它們。在檢查過程中微調(diào)類、屬性和關(guān)系,這個用例的實現(xiàn)過程將生成一些操作,來補充屬性需要時更新術(shù)語表和非功能需求——用例本身不需要更新,但可能需要某些更正2023/11/2010第7章分析問題需要給客戶展示的...類圖和屬性便于客戶的理解,有這樣糾正錯誤的分析2023/11/2011第7章分析問題不要客戶展示的...對象操作或通信圖難以被客戶理解膚淺的設(shè)計,系統(tǒng)用例已演示了動態(tài)行為其中隱含編碼,暴露秘密在設(shè)計之前是要刪除的2023/11/2012第7章分析問題7.4靜態(tài)分析靜態(tài)分析確定系統(tǒng)的邏輯或物理部分,以及如何把它們連接在一起,即描述如何構(gòu)建和初始化系統(tǒng)2023/11/2013第7章分析問題7.4.1確定類為了檢查業(yè)務(wù)需求建模和系統(tǒng)需求建模,以系統(tǒng)用例的形式抽取出候選類候選類常常在用例中用名詞表示2023/11/2014第7章分析問題確定類不適合作為候選類的名詞:系統(tǒng)本身參與者(例外:需要在內(nèi)部存儲參與者的信息)邊界小類型(字符串或數(shù)字)2023/11/2015第7章分析問題7.4.2標(biāo)識類的關(guān)系依賴泛化(繼承)關(guān)聯(lián)聚集復(fù)合(組合)實現(xiàn)2023/11/2016第7章分析問題1.依賴定義:對于兩個相對獨立的對象,當(dāng)一個對象負(fù)責(zé)構(gòu)造另一個對象的實例,或者依賴另一個對象的服務(wù)時,這兩個對象之間主要體現(xiàn)為依賴關(guān)系。表現(xiàn):依賴關(guān)系表現(xiàn)在局部變量,方法的參數(shù),以及對靜態(tài)方法的調(diào)用2023/11/2017第7章分析問題依賴實例:比如說擰螺絲,要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作代碼:public
class
Person{
/**
擰螺絲
*/
public
void
screw(Screwdriver
screwdriver){
screwdriver.screw();
}
}
2023/11/2018第7章分析問題2.泛化(繼承)關(guān)系定義:表示類與類之間的繼承關(guān)系,接口與接口之間的繼承關(guān)系,或類對接口的實現(xiàn)關(guān)系。一般化的關(guān)系是從子類指向父類的,與繼承或?qū)崿F(xiàn)的方法相反。表現(xiàn):父類父類實例=new子類()
2023/11/2019第7章分析問題泛化代碼class
Animal{}
class
Tiger
extends
Animal{}
public
class
Test
{
public
void
test()
{
Animal
a=new
Tiger();
}
}
2023/11/2020第7章分析問題3.關(guān)聯(lián)關(guān)系定義:對于兩個相對獨立的對象,當(dāng)一個對象的實例與另一個對象的一些特定實例存在固定的對應(yīng)關(guān)系時,這兩個對象之間為關(guān)聯(lián)關(guān)系表現(xiàn):關(guān)聯(lián)關(guān)系是使用實例變量來實現(xiàn)
2023/11/2021第7章分析問題關(guān)聯(lián)實例:比如客戶和訂單,每個訂單對應(yīng)特定的客戶,每個客戶對應(yīng)一些特定的訂單;再例如公司和員工,每個公司對應(yīng)一些特定的員工,每個員工對應(yīng)一特定的公司2023/11/2022第7章分析問題關(guān)聯(lián)代碼public
class
Company{
private
Employee
employee;
public
Employee
getEmployee(){
return
employee;
}
public
void
setEmployee(Employee
employee){
this.employee=employee;
}
//公司運作
public
void
run(){
employee.startWorking();
}
}
2023/11/2023第7章分析問題4.聚合關(guān)系定義:當(dāng)對象A被加入到對象B中,成為對象B的組成部分時,對象B和對象A之間為聚合(聚集)關(guān)系。聚合是關(guān)聯(lián)關(guān)系的一種,是較強的關(guān)聯(lián)關(guān)系(強關(guān)聯(lián)),強調(diào)的是整體與部分之間的關(guān)系,即“has-a”關(guān)系聚合的整體和部分之間在生命周期上沒有什么必然的聯(lián)系,部分對象可以在整體對象創(chuàng)建之前創(chuàng)建,也可以在整體對象銷毀之后銷毀。2023/11/2024第7章分析問題聚合關(guān)系表現(xiàn):與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實例變量來實現(xiàn)這樣關(guān)系的。關(guān)聯(lián)關(guān)系和聚合關(guān)系來語法上是沒辦法區(qū)分的,從語義上才能更好的區(qū)分兩者的區(qū)別。2023/11/2025第7章分析問題關(guān)聯(lián)與聚合的區(qū)別關(guān)聯(lián)關(guān)系所涉及的兩個對象是處在同一個層次上的。比如人和自行車就是一種關(guān)聯(lián)關(guān)系,而不是聚合關(guān)系,因為人不是由自行車組成的。
聚合關(guān)系涉及的兩個對象處于不平等的層次上,一個代表整體,一個代表部分。比如電腦和它的顯示器、鍵盤、主板以及內(nèi)存就是聚集關(guān)系,因為主板是電腦的組成部分。對于具有聚集關(guān)系(尤其是強聚集關(guān)系)的兩個對象,整體對象會制約它的組成對象的生命周期。部分類的對象不能單獨存在,它的生命周期依賴于整體類的對象的生命周期,當(dāng)整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內(nèi)存)拆了下來。
2023/11/2026第7章分析問題聚合關(guān)系publicClassPerson{...}publicClassSchool{ privateArrayListstudents; privatevoidaddStudent(Personperson) { students.add(person); }}2023/11/2027第7章分析問題聚合關(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運作
cpu.run();
}
}
2023/11/2028第7章分析問題5.復(fù)合關(guān)系復(fù)合(強聚集,組合,合成):復(fù)合的對象不能由其他對象共享,且與構(gòu)成它的對象一齊消亡它帶有很強的擁有有關(guān)系且整體與部分的生命周期一致的聚合關(guān)聯(lián)形式。例如Windows的窗口和窗口上的菜單就是組合關(guān)系。生命周期一致指的是部分必須在組合創(chuàng)建的同時或者之后創(chuàng)建,在組合銷毀之前或者同時銷毀,部分的生命周期不會超出組合的生命周期。組合是用帶實心菱形的實線來表示。2023/11/2029第7章分析問題復(fù)合關(guān)系 publicClassWindow
{
privateMenumenu;
publicWindow()
{
menu=newMenu();
}//可以在這時候創(chuàng)建Menu對象,也可以在之后創(chuàng)建
publicvoiddestory()
{
menu.destory();
}//必須同時或者在這之前銷毀關(guān)聯(lián)的Menu對象
}2023/11/2030第7章分析問題舉例School與Student是什么關(guān)系? publicClassSchool
{
publicSchool()
{...}//不需要創(chuàng)建任何Person對象,其Students都是已有的Person對象
publicvoiddestroy()
{...}//只需要關(guān)掉School對象和斷開它與自己所有的Person對象的關(guān)聯(lián)即可,Person對象是不會銷毀的
}聚合關(guān)系2023/11/2031第7章分析問題6.實現(xiàn)關(guān)系實現(xiàn):指的是一個類元描述了另一個類元保證實現(xiàn)的契約。對類來說,就是一個類實現(xiàn)了一個接口2023/11/2032第7章分析問題舉例:實現(xiàn)關(guān)系 publicinterfaceA
{
publicvoidmethodA();
}
publicclassBimplementsA
{
publicvoidmethodA()
{...}
...
}2023/11/2033第7章分析問題總結(jié)一般對類關(guān)系建模的時候,先對泛化、關(guān)聯(lián)和實現(xiàn)建模,剩下的關(guān)系都可以看作依賴。2023/11/2034第7章分析問題標(biāo)識類的關(guān)系使用頻率:關(guān)聯(lián)>聚合>繼承>復(fù)合就設(shè)計和實現(xiàn)而言,關(guān)聯(lián)、聚合和復(fù)合之間的區(qū)別很難界定2023/11/2035第7章分析問題7.4.3繪制類圖和對象圖類圖顯示存在哪些類,這些類有什么關(guān)系(正式的類圖還可以顯示屬性和操作)對于聚合、復(fù)合和關(guān)聯(lián),類圖顯示了可能的運行時關(guān)系,而不是顯示實際運行時關(guān)系2023/11/2036第7章分析問題iCoot的分析類圖2023/11/2037第7章分析問題用UML描述運行時的對象2023/11/2038第7章分析問題7.4.4繪制關(guān)系繼承關(guān)系2023/11/2039第7章分析問題繪制關(guān)系聚合關(guān)系2023/11/2040第7章分析問題繪制關(guān)系復(fù)合關(guān)系2023/11/2041第7章分析問題繪制關(guān)系關(guān)聯(lián)關(guān)系2023/11/2042第7章分析問題1.多重性在類的兩端標(biāo)識允許參與關(guān)系的運行時對象的數(shù)量(關(guān)系中的多重性)n:表示nm..n:m到n范圍內(nèi)的任意數(shù)值(包含m和n)p..*:從p到無窮大的任意數(shù)*:0..*的縮寫0..1:可選2023/11/2043第7章分析問題多重性2023/11/2044第7章分析問題2.關(guān)聯(lián)標(biāo)簽、角色和注釋除了繼承之外的所有關(guān)系都可以給定一個關(guān)聯(lián)標(biāo)簽,它表示關(guān)聯(lián)的性質(zhì)如果關(guān)聯(lián)名稱的理解方式不明顯,就可以使用一個黑色的箭頭2023/11/2045第7章分析問題UML中的關(guān)聯(lián)標(biāo)簽、角色和注釋2023/11/2046第7章分析問題iCoot的分析類圖2023/11/2047第7章分析問題用UML描述運行時的對象2023/11/2048第7章分析問題7.4.5屬性屬性是對象的一個特性,例如對象的大小、位置、名稱、價格、字體、利率等。在UML中,每個屬性都可以指定一個類型,可以是類或原型通過分割線,顯示類名和屬性2023/11/2049第7章分析問題用UML描述屬性2023/11/2050第7章分析問題避免做的事情...避免在UML使用獨立于語言的表示法定義自己的原型,如integer、Real和Boolean,因為在開始設(shè)計時,就必須考慮與特定語言相關(guān)的內(nèi)容避免使用數(shù)組類型,因為它是對象和原型的交叉,使用集合類(List或Set)會更好2023/11/2051第7章分析問題避免做的事情...避免在制品中包含派生的屬性,如圓的屬性包括半徑、直徑、周長和面積2023/11/2052第7章分析問題iCoot的屬性2023/11/2053第7章分析問題選擇屬性還是關(guān)系如何為Car的顏色建模?2023/11/2054第7章分析問題在屬性和關(guān)系之間選擇一部分用戶角度心理學(xué)家汽車廠家2023/11/2055第7章分析問題7.4.6關(guān)聯(lián)類2023/11/2056第7章分析問題關(guān)聯(lián)類關(guān)聯(lián)偶爾也有與它相關(guān)的信息或行為關(guān)聯(lián)類可以和關(guān)聯(lián)一起引入關(guān)聯(lián)類表示的屬性和操作僅因為關(guān)聯(lián)關(guān)系的存在而存在在設(shè)計時,必須用更具體的類替換關(guān)聯(lián)類2023/11/2057第7章分析問題7.4.7有形對象和無形對象無形對象建模:如目錄中描述的產(chǎn)品有形對象建模:如送到門口的實際產(chǎn)品2023/11/2058第7章分析問題有形對象和無形對象2023/11/2059第7章分析問題1.錯誤的建模為了清單有形性問題,假定除了銷售汽車之外,經(jīng)銷商還給顧客提供服務(wù)2023/11/2060第7章分析問題建模信息與銷售相關(guān)的信息包括:modelNumberavailableColorsnumberOfCylinders與服務(wù)相關(guān)的信息包括:OwnervehicleIndentificationNumbermileageAtLastService2023/11/2061第7章分析問題錯誤的建模避免使一個類有兩組完全不同的任務(wù)——這種類的內(nèi)聚力很脆弱,它們的任務(wù)也不會構(gòu)成一個模塊2023/11/2062第7章分析問題錯誤的建模2023/11/2063第7章分析問題2.正確的建模2023/11/2064第7章分析問題正確的建模2023/11/2065第7章分析問題練習(xí)4考慮一個視頻出租系統(tǒng)。下列圖中哪個圖是正確的?2023/11/2066第7章分析問題7.4.8好的對象類取自用例中的名詞對象是具體的事物,是對類的實例化對象擁有屬性對象能做什么,即對象操作建議:在動態(tài)分析類之前,不要過多地關(guān)注操作2023/11/2067第7章分析問題7.5動態(tài)分析進行動態(tài)分析的原因:確認(rèn)類圖是完整、正確的,以便盡早更正錯誤,包括添加、刪除或修改類、關(guān)系、屬性和操作相信當(dāng)前的模型可以在軟件中實現(xiàn)驗證最終系統(tǒng)上用戶界面的功能:在進行詳細(xì)設(shè)計之前,最好按照用例中的線條,把對系統(tǒng)的訪問放在各個界面上2023/11/2068第7章分析問題用例實現(xiàn)動態(tài)分析中最重要的部分就是用例的實現(xiàn)2023/11/2069第7章分析問題用例實現(xiàn)的步驟檢查系統(tǒng)用例,模擬對象之間發(fā)送的消息,在通信圖上記錄結(jié)果在接收消息的對象上引入操作根據(jù)需要添加類,以標(biāo)識邊界(系統(tǒng)接口)和控制器(復(fù)雜業(yè)務(wù)過程的占位符或者對象的創(chuàng)建和檢索)2023/11/2070第7章分析問題7.5.1繪制用例的實現(xiàn)過程為分析對象之間傳送消息的過程,需要用到UML通信圖和順序圖相對而言,通信圖更適合用例的實現(xiàn),僅關(guān)注對象及其連接,不考慮消息發(fā)送的順序2023/11/2071第7章分析問題U7:進行預(yù)約的通信圖2023/11/2072第7章分析問題分析級的通信圖可以顯示...與系統(tǒng)邊界交互的參與者與系統(tǒng)內(nèi)部的對象交互的邊界系統(tǒng)內(nèi)部的對象與外部系統(tǒng)的邊界交互2023/11/2073第7章分析問題7.5.2邊界、控制器和實體為表達額外的信息,UML允許開發(fā)人員使用圖標(biāo)代替標(biāo)準(zhǔn)的對象方框2023/11/2074第7章分析問題邊界、控制器和實體2023/11/2075第7章分析問題參與者參與者:存在于系統(tǒng)外部的人或系統(tǒng)2023/11/2076第7章分析問題邊界邊界:位于系統(tǒng)邊緣上的對象,在系統(tǒng)和參與者之間。對象系統(tǒng)參與者,邊界提供了通信途徑。對于作為參與者的人,邊界表示用戶界面,以執(zhí)行命令和查詢,顯示反饋和結(jié)果。每個邊界對象通常都對應(yīng)于一個用例或一組相關(guān)的用例,通常映射到一個用戶界面草案2023/11/2077第7章分析問題實體實體:系統(tǒng)內(nèi)部的一個對象,表示一個業(yè)務(wù)概念,如顧客、汽車或型號一般實體由邊界和控制器操作,而不是自己的行為實體類出現(xiàn)在分析類圖中,大多數(shù)實體在設(shè)計過程結(jié)束后仍舊存在,數(shù)據(jù)(屬性)存放在數(shù)據(jù)庫中
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度特色果樹苗木繁育與銷售合同3篇
- 2025合同管理流程在綠色建筑項目中的實施建議3篇
- 二零二五版門窗行業(yè)跨界合作與產(chǎn)業(yè)融合合同6篇
- 二零二五年度批灰作業(yè)安全培訓(xùn)及應(yīng)急預(yù)案合同
- 2025年度能源信息化平臺建設(shè)合同4篇
- 2025年度農(nóng)家院農(nóng)業(yè)觀光園租賃與收益分成合同4篇
- 2025年度體育賽事贊助及廣告投放合同4篇
- 2025年度綠色能源項目承包銷售合同4篇
- 個人與個人之間2024年度借款合同6篇
- 二零二五年度旅游扶貧合作開發(fā)合同下載2篇
- 蛋糕店服務(wù)員勞動合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項訓(xùn)練【含答案】
- 新能源行業(yè)市場分析報告
- 2025年天津市政建設(shè)集團招聘筆試參考題庫含答案解析
- 巖土工程勘察.課件
- 中餐烹飪技法大全
- 新型電力系統(tǒng)研究
- 滋補類用藥的培訓(xùn)
- 北師大版高三數(shù)學(xué)選修4-6初等數(shù)論初步全冊課件【完整版】
- 高職《勞動教育》指導(dǎo)綱要
評論
0/150
提交評論