OOA面向?qū)ο蠓治?/strong>
?面向?qū)ο蠓治霎a(chǎn)生三種分析模型
?功能模型(即用例模型à作為輸入)
?對(duì)象模型:對(duì)用例模型進(jìn)行分析,把系統(tǒng)分解成互相協(xié)作的分析類,通過類圖/對(duì)象圖描述對(duì)象/對(duì)象的屬性/對(duì)象間的關(guān)系,是系統(tǒng)的靜態(tài)模型
?動(dòng)態(tài)模型:描述系統(tǒng)的動(dòng)態(tài)行為,通過時(shí)序圖/協(xié)作圖描述對(duì)象的交互,以揭示對(duì)象間如何協(xié)作來完成扛鼉嚀宓撓美?單個(gè)對(duì)象的狀態(tài)變化/動(dòng)態(tài)行為可以通過狀態(tài)圖來表達(dá)
?功能模型(即用例模型à作為輸入)
?對(duì)象模型:對(duì)用例模型進(jìn)行分析,把系統(tǒng)分解成互相協(xié)作的分析類,通過類圖/對(duì)象圖描述對(duì)象/對(duì)象的屬性/對(duì)象間的關(guān)系,是系統(tǒng)的靜態(tài)模型
?動(dòng)態(tài)模型:描述系統(tǒng)的動(dòng)態(tài)行為,通過時(shí)序圖/協(xié)作圖描述對(duì)象的交互,以揭示對(duì)象間如何協(xié)作來完成扛鼉嚀宓撓美?單個(gè)對(duì)象的狀態(tài)變化/動(dòng)態(tài)行為可以通過狀態(tài)圖來表達(dá)
OOD面向?qū)ο蟮脑O(shè)計(jì)
OOD是對(duì)OOA的細(xì)化
?沒有嚴(yán)格的界線
?OOD的結(jié)果直接用于編碼
?與OOA的輸出一樣,只是更加詳細(xì)完善
OOA與OOD的區(qū)別
?OOA偏重于理解問題,描述軟件要做什么,而OOD偏重于理解解決方案,描述軟件要如何做
?OOA只考慮理想的設(shè)計(jì),不關(guān)心技術(shù)與實(shí)現(xiàn)底層的細(xì)節(jié),而OOD需要得到更具體詳細(xì)更接近于真實(shí)的代碼的設(shè)計(jì)方案
?在設(shè)計(jì)結(jié)果的描述上,OOA偏重于描述對(duì)象的行為,OOD偏重于描述對(duì)象的屬性與方法
?OOA只關(guān)注功能性需求,OOD還需要關(guān)注非功能性需求
OOA步驟
?從用例中提取實(shí)體對(duì)象/實(shí)體類
?添加邊界類
?添加控制類
?提取類的屬性(一般省略,放到OOD中)
?提取分析類間的關(guān)系
?繪制類圖/時(shí)序圖
?編制術(shù)語表(可選)
三種分析類
分析類
?實(shí)體類(Entity Class)
?邊界類
?控制類
實(shí)體類
?是應(yīng)用中的核心類
?與現(xiàn)實(shí)事物相對(duì)應(yīng)的類
?用于長期保存系統(tǒng)中的信息,以及針對(duì)這些信息的相關(guān)處理行為
?一般實(shí)體類的對(duì)象和應(yīng)用系統(tǒng)本身有相同的生命周期
邊界類
?從與那些系統(tǒng)和外界進(jìn)行交互的對(duì)象中歸納和抽象出來的
?邊界類是系統(tǒng)內(nèi)的對(duì)象和系統(tǒng)外的參與者的聯(lián)系媒介
?外界的消息只有通過邊界類的對(duì)象才能發(fā)送給系統(tǒng)
?大多數(shù)為用戶界面(表示層)
控制類
?管理實(shí)體對(duì)象與邊界對(duì)象之間的交互的仲裁對(duì)象
?通過控制類協(xié)調(diào)系統(tǒng)內(nèi)邊界類與實(shí)體類之間的交互
1、提取實(shí)體類
?用例驅(qū)動(dòng):從用例模型中找名詞或名詞短語,再進(jìn)行篩選
?候選實(shí)體類:用戶/帳戶/系統(tǒng)管理員/聊天服務(wù)器/消息
?用戶在系統(tǒng)中表現(xiàn)為帳戶,因此用戶就不需要了
?本項(xiàng)目中系統(tǒng)管理員僅完成啟動(dòng)/關(guān)閉系統(tǒng)的作用,而沒有其他管理任務(wù),也不需要作為一個(gè)實(shí)體類
?聊天系統(tǒng):代表整個(gè)系統(tǒng),大多數(shù)情況這個(gè)實(shí)體對(duì)象不必存在
?聊天消息:聊天的內(nèi)容本項(xiàng)目不需要保存
?可以得到實(shí)體類: 帳戶類
2.添加邊界類
?交互型軟件的邊界類就是用戶界面
?邊界類:
?注冊界面:注冊類
?登陸界面:登陸類
?聊天界面:聊天類
3.添加控制類
?有人認(rèn)為每個(gè)用例確定一個(gè)控制類,但可能會(huì)得到很小的控制類,應(yīng)該考慮進(jìn)行恰當(dāng)?shù)暮喜?nbsp;
?我們項(xiàng)目可以把注冊/登陸/聊天用例合并為一個(gè)控制器類
4、提取屬性
?建議放到設(shè)計(jì)時(shí)再提取,因?yàn)楝F(xiàn)在只能對(duì)屬性進(jìn)行與語言無關(guān)的描述
5、提取分析類之間的關(guān)系
?一對(duì)一
?一對(duì)多
?多對(duì)對(duì)
?歸納關(guān)系
?
6、繪制類圖(參見demo)
7、繪制時(shí)序圖(流程簡單可省略)
8、編制術(shù)語表(羅列系統(tǒng)模型中需要澄清的術(shù)語)
架構(gòu)分析
?架構(gòu)分析主要從宏觀上考慮一個(gè)軟件系統(tǒng)應(yīng)該如何組織
?目的:通過科學(xué)的解析,將整個(gè)軟件系統(tǒng)劃分為不同的組件,并準(zhǔn)確定義出組件和組件之間的接口
?最典型的架構(gòu)模式:分層模式(Layer),客戶/服務(wù)器模式,MVC模式等等
?獲得架構(gòu)圖
OOD步驟
?細(xì)化重組類
?細(xì)化和實(shí)現(xiàn)類間關(guān)系,明確其可見性
?增加屬性,指定屬性的類型與可見性
?分配職責(zé),定義執(zhí)行每個(gè)職責(zé)的方法
?對(duì)消息驅(qū)動(dòng)的系統(tǒng),明確消息傳遞方式
?利用設(shè)計(jì)模式進(jìn)行局部設(shè)計(jì)
?畫出詳細(xì)的類圖與時(shí)序圖
?沒有嚴(yán)格的界線
?OOD的結(jié)果直接用于編碼
?與OOA的輸出一樣,只是更加詳細(xì)完善
OOA與OOD的區(qū)別
?OOA偏重于理解問題,描述軟件要做什么,而OOD偏重于理解解決方案,描述軟件要如何做
?OOA只考慮理想的設(shè)計(jì),不關(guān)心技術(shù)與實(shí)現(xiàn)底層的細(xì)節(jié),而OOD需要得到更具體詳細(xì)更接近于真實(shí)的代碼的設(shè)計(jì)方案
?在設(shè)計(jì)結(jié)果的描述上,OOA偏重于描述對(duì)象的行為,OOD偏重于描述對(duì)象的屬性與方法
?OOA只關(guān)注功能性需求,OOD還需要關(guān)注非功能性需求
OOA步驟
?從用例中提取實(shí)體對(duì)象/實(shí)體類
?添加邊界類
?添加控制類
?提取類的屬性(一般省略,放到OOD中)
?提取分析類間的關(guān)系
?繪制類圖/時(shí)序圖
?編制術(shù)語表(可選)
三種分析類
分析類
?實(shí)體類(Entity Class)
?邊界類
?控制類
實(shí)體類
?是應(yīng)用中的核心類
?與現(xiàn)實(shí)事物相對(duì)應(yīng)的類
?用于長期保存系統(tǒng)中的信息,以及針對(duì)這些信息的相關(guān)處理行為
?一般實(shí)體類的對(duì)象和應(yīng)用系統(tǒng)本身有相同的生命周期
邊界類
?從與那些系統(tǒng)和外界進(jìn)行交互的對(duì)象中歸納和抽象出來的
?邊界類是系統(tǒng)內(nèi)的對(duì)象和系統(tǒng)外的參與者的聯(lián)系媒介
?外界的消息只有通過邊界類的對(duì)象才能發(fā)送給系統(tǒng)
?大多數(shù)為用戶界面(表示層)
控制類
?管理實(shí)體對(duì)象與邊界對(duì)象之間的交互的仲裁對(duì)象
?通過控制類協(xié)調(diào)系統(tǒng)內(nèi)邊界類與實(shí)體類之間的交互
1、提取實(shí)體類
?用例驅(qū)動(dòng):從用例模型中找名詞或名詞短語,再進(jìn)行篩選
?候選實(shí)體類:用戶/帳戶/系統(tǒng)管理員/聊天服務(wù)器/消息
?用戶在系統(tǒng)中表現(xiàn)為帳戶,因此用戶就不需要了
?本項(xiàng)目中系統(tǒng)管理員僅完成啟動(dòng)/關(guān)閉系統(tǒng)的作用,而沒有其他管理任務(wù),也不需要作為一個(gè)實(shí)體類
?聊天系統(tǒng):代表整個(gè)系統(tǒng),大多數(shù)情況這個(gè)實(shí)體對(duì)象不必存在
?聊天消息:聊天的內(nèi)容本項(xiàng)目不需要保存
?可以得到實(shí)體類: 帳戶類
2.添加邊界類
?交互型軟件的邊界類就是用戶界面
?邊界類:
?注冊界面:注冊類
?登陸界面:登陸類
?聊天界面:聊天類
3.添加控制類
?有人認(rèn)為每個(gè)用例確定一個(gè)控制類,但可能會(huì)得到很小的控制類,應(yīng)該考慮進(jìn)行恰當(dāng)?shù)暮喜?nbsp;
?我們項(xiàng)目可以把注冊/登陸/聊天用例合并為一個(gè)控制器類
4、提取屬性
?建議放到設(shè)計(jì)時(shí)再提取,因?yàn)楝F(xiàn)在只能對(duì)屬性進(jìn)行與語言無關(guān)的描述
5、提取分析類之間的關(guān)系
?一對(duì)一
?一對(duì)多
?多對(duì)對(duì)
?歸納關(guān)系
?
6、繪制類圖(參見demo)
7、繪制時(shí)序圖(流程簡單可省略)
8、編制術(shù)語表(羅列系統(tǒng)模型中需要澄清的術(shù)語)
架構(gòu)分析
?架構(gòu)分析主要從宏觀上考慮一個(gè)軟件系統(tǒng)應(yīng)該如何組織
?目的:通過科學(xué)的解析,將整個(gè)軟件系統(tǒng)劃分為不同的組件,并準(zhǔn)確定義出組件和組件之間的接口
?最典型的架構(gòu)模式:分層模式(Layer),客戶/服務(wù)器模式,MVC模式等等
?獲得架構(gòu)圖
OOD步驟
?細(xì)化重組類
?細(xì)化和實(shí)現(xiàn)類間關(guān)系,明確其可見性
?增加屬性,指定屬性的類型與可見性
?分配職責(zé),定義執(zhí)行每個(gè)職責(zé)的方法
?對(duì)消息驅(qū)動(dòng)的系統(tǒng),明確消息傳遞方式
?利用設(shè)計(jì)模式進(jìn)行局部設(shè)計(jì)
?畫出詳細(xì)的類圖與時(shí)序圖
本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請注明出處,如有版權(quán)問題請及時(shí)通知。由于博客時(shí)間倉促,錯(cuò)誤之處敬請諒解,有任何意見可給我留言,愿共同學(xué)習(xí)進(jìn)步。