走在架構師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

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

          公告

          重構
          新浪博客:新浪 blog
          MSN: wbjeasygo@163.com
          Email:  wbjeasygo@163.com
          QQ 精英群: 47763528 
          空間QQ空間

          淘寶店:新開淘寶書店
          致謝:
           感謝雷老師幾年的指導
           感謝導師在學業上的關懷,
           感謝老婆的支持,
           感謝我的同學和同事,
           在我成長的路上有你

          留言簿(26)

          我參與的團隊

          隨筆分類(232)

          隨筆檔案(190)

          我的鄰居們

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          OOA面向對象分析

          ?
          面向對象分析產生三種分析模型 
          ?功能模型(即用例模型à作為輸入) 
          ?對象模型:對用例模型進行分析,把系統分解成互相協作的分析類,通過類圖/對象圖描述對象/對象的屬性/對象間的關系,是系統的靜態模型 
          ?動態模型:描述系統的動態行為,通過時序圖/協作圖描述對象的交互,以揭示對象間如何協作來完成扛鼉嚀宓撓美?單個對象的狀態變化/動態行為可以通過狀態圖來表達

          OOD面向對象的設計


          OOD是對OOA的細化 
          ?沒有嚴格的界線 
          ?OOD的結果直接用于編碼 
          ?與OOA的輸出一樣,只是更加詳細完善
          OOA與OOD的區別
          ?OOA偏重于理解問題,描述軟件要做什么,而OOD偏重于理解解決方案,描述軟件要如何做 
          ?OOA只考慮理想的設計,不關心技術與實現底層的細節,而OOD需要得到更具體詳細更接近于真實的代碼的設計方案 
          ?在設計結果的描述上,OOA偏重于描述對象的行為,OOD偏重于描述對象的屬性與方法 
          ?OOA只關注功能性需求,OOD還需要關注非功能性需求
          OOA步驟
          ?從用例中提取實體對象/實體類 
          ?添加邊界類 
          ?添加控制類 
          ?提取類的屬性(一般省略,放到OOD中) 
          ?提取分析類間的關系 
          ?繪制類圖/時序圖 
          ?編制術語表(可選)
          三種分析類
          分析類 
          ?實體類(Entity Class) 
          ?邊界類 
          ?控制類 
          實體類
          ?是應用中的核心類 
          ?與現實事物相對應的類 
          ?用于長期保存系統中的信息,以及針對這些信息的相關處理行為 
          ?一般實體類的對象和應用系統本身有相同的生命周期
          邊界類
          ?從與那些系統和外界進行交互的對象中歸納和抽象出來的 
          ?邊界類是系統內的對象和系統外的參與者的聯系媒介 
          ?外界的消息只有通過邊界類的對象才能發送給系統 
          ?大多數為用戶界面(表示層)
          控制類
          ?管理實體對象與邊界對象之間的交互的仲裁對象 
          ?通過控制類協調系統內邊界類與實體類之間的交互
          1、提取實體類
          ?用例驅動:從用例模型中找名詞或名詞短語,再進行篩選 
          ?候選實體類:用戶/帳戶/系統管理員/聊天服務器/消息 
          ?用戶在系統中表現為帳戶,因此用戶就不需要了 
          ?本項目中系統管理員僅完成啟動/關閉系統的作用,而沒有其他管理任務,也不需要作為一個實體類 
          ?聊天系統:代表整個系統,大多數情況這個實體對象不必存在 
          ?聊天消息:聊天的內容本項目不需要保存 
          ?可以得到實體類: 帳戶類
          2.添加邊界類
          ?交互型軟件的邊界類就是用戶界面 
          ?邊界類: 
          ?注冊界面:注冊類 
          ?登陸界面:登陸類 
          ?聊天界面:聊天類
          3.添加控制類
          ?有人認為每個用例確定一個控制類,但可能會得到很小的控制類,應該考慮進行恰當的合并 
          ?我們項目可以把注冊/登陸/聊天用例合并為一個控制器類
          4、提取屬性
          ?建議放到設計時再提取,因為現在只能對屬性進行與語言無關的描述
          5、提取分析類之間的關系
          ?一對一 
          ?一對多 
          ?多對對 
          ?歸納關系 
          ?
          6、繪制類圖(參見demo) 
          7、繪制時序圖(流程簡單可省略) 
          8、編制術語表(羅列系統模型中需要澄清的術語)
          架構分析
          ?架構分析主要從宏觀上考慮一個軟件系統應該如何組織 
          ?目的:通過科學的解析,將整個軟件系統劃分為不同的組件,并準確定義出組件和組件之間的接口 
          ?最典型的架構模式:分層模式(Layer),客戶/服務器模式,MVC模式等等 
          ?獲得架構圖

          OOD步驟
          ?細化重組類 
          ?細化和實現類間關系,明確其可見性 
          ?增加屬性,指定屬性的類型與可見性 
          ?分配職責,定義執行每個職責的方法 
          ?對消息驅動的系統,明確消息傳遞方式 
          ?利用設計模式進行局部設計 
          ?畫出詳細的類圖與時序圖




          本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
          posted on 2007-10-14 22:01 Jack.Wang 閱讀(1591) 評論(0)  編輯  收藏 所屬分類: 開發技術
          主站蜘蛛池模板: 太保市| 阿图什市| 多伦县| 体育| 醴陵市| 阿勒泰市| 曲麻莱县| 阿巴嘎旗| 连城县| 巴中市| 敖汉旗| 微博| 汤阴县| 昌黎县| 岳西县| 江川县| 宜宾县| 江油市| 荆门市| 自贡市| 蒲江县| 鹤山市| 博爱县| 兖州市| 济宁市| 紫云| 贺兰县| 琼海市| 祁阳县| 信丰县| 蛟河市| 仲巴县| 原平市| 黄平县| 罗源县| 阆中市| 阜康市| 黄山市| 砚山县| 延川县| 卓资县|