走在架構(gòu)師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術(shù),軟件架構(gòu),領(lǐng)域建模,IT 項(xiàng)目管理 Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

          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á)

          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í)序圖




          本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請注明出處,如有版權(quán)問題請及時(shí)通知。由于博客時(shí)間倉促,錯(cuò)誤之處敬請諒解,有任何意見可給我留言,愿共同學(xué)習(xí)進(jìn)步。
          posted on 2007-10-14 22:01 Jack.Wang 閱讀(1591) 評(píng)論(0)  編輯  收藏 所屬分類: 開發(fā)技術(shù)
          主站蜘蛛池模板: 长子县| 富阳市| 浦北县| 富裕县| 江阴市| 佛山市| 兰溪市| 甘泉县| 宁晋县| 漠河县| 万年县| 茂名市| 麻城市| 龙陵县| 蒲江县| 绥阳县| 虞城县| 德清县| 宽甸| 广宁县| 淮安市| 称多县| 株洲市| 寿阳县| 玉溪市| 建始县| 云林县| 蓝田县| 诸暨市| 宜宾市| 大同市| 西峡县| 伊宁县| 阿拉善左旗| 嘉兴市| 东平县| 华容县| 封开县| 永平县| 洛隆县| 称多县|