<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-1  評論-68  文章-98  trackbacks-0

    “實戰OO”學習筆記

    作者:徐建祥(netpirate@gmail.com

    時間:2006/01/11

    來自:http://www.anymobile.org

     

    “實戰OO系列文章是徐鋒發表在2004年《程序員》雜志的一系列關于面向對象的入門文章,通過圖書館的實例,深入淺出地講述了基于軟件建模技術的面向對象開發過程。介紹了面向對象的分析(OOA)和設計(OOD),并對OOP做了指導,讓你迅速了解OO的威力,成為你分析系統和設計解決方案的工具。

     

    全系列包括:

    1)域建模

    2)用例建模

    3)魯棒性分析

    4)交互建模

    5)過程總結

    6)部署與實施

    7)補遺

     

    1、  問題域建模,概念模型

     

    輔助性的,靜態模型,幫助開發團隊了解客戶所處的世界。

     

    從現實問題域中找到最有代表性的概念對象;整理成類圖;改成文字描述,基本完成術語表。

     

    a、  概念模型的目的是讓開發團隊對問題域,業務知識建立正確的理解;

    b、  概念模型是在開發過程中產生出來的第一個系統的靜態模型。

     

    2、  用例建模,用例模型

     

    反映系統行為的,動態模型,幫助開發團隊明白客戶想解決什么問題。

     

    Ivar Jacobson:“用例實例是在系統中執行的一系列動作,這些動作將生成特定參與者可見的價值結果。一個用例定義一組用例實例。”

     

    a、  需求(功能特性)捕獲,編號(FEAT***),以便進行跟蹤管理;

    b、  識別參與者(actor,與系統交互,系統之外的所有事物);

    c、  合并需求,編號實例(UC**),決定用例的優先級;

    d、  細化用例描述:搭框架;細化事件流(溝通);補缺漏(確認)。

     

    1、   用例名稱:

          新增書籍信息(UC01

    2、   簡要說明:

          錄入新購書籍信息,并自動存儲建檔。

    3、   事件流:

          3.1 基本事件流

          3.2 擴展事件流

    4、   非功能需求:

    5、   前置條件:

          用戶進入圖書管理系統。

    6、   后置條件:

          完成新書信息的存儲建檔。

    7、   擴展點:

          無。

    8、   優先級:

          最高(滿意度5,不滿意度)

      1)前置條件:指在用例啟動時,參與者(Actor)與系統應置于什么狀態,這個狀態應該是系統能夠檢測到的、可觀測的;

      2)后置條件:用例結束時,系統應置于什么狀態,這個狀態也應該是系統能夠檢測得到的、可觀測的;

      3)基本事件流:基本事件流是對用例中常規、預期路徑的描述,也被稱為Happy day場景,這時大部分時間所遇到的場景;它將體現系統的核心價值;

      4)擴展事件流:主要是對一些異常情況、選擇分支進行描述。

     

    注:非核心實體無須過渡展開,如四輪馬車,將新增、修改、查詢、刪除,抽象為管理;可以通過包來實現用例層次。

     

    3、  Robustness魯棒分析,健壯性分析

     

    Ivar Jacobson 1991引入,分析與設計之間的橋梁。

    草圖,使得開發者對于系統細節了解得更加清楚。

     

    3.1 分析的作用:

    a、  正確性檢查;

    b、  完整性檢查;

    c、  持續發現對象;

    d、  對象確定;

    e、  初步設計:將分析的元素,類分為實體對象,控制對象,邊界對象。類似MVC

     

    實體對象:來自域模型,通常映射到數據表或文件中。

    控制對象:抽象應用程序的執行邏輯。

    邊界對象:用來完成參與者與系統之間交互的對象。

     

    3.2 分析規則:

    a、參與者,只能夠通過邊界對象與系統交互;

    b、邊界對象,只能與控制對象或參與者交互;

    c、實體對象,也只能與控制對象交互;

    d、控制對象,可以與邊界對象、實體對象交互,但不能與參與者交互。

     

    4、  交互建模

     

    序列圖,協作圖,詳細設計階段。通過尋找對象之間的交互關系,從而進行“行為分配”。

    Ivar Jacobson:“只有在所有的用例為所有事件進程建立了交互模型之后,才可以確定已經發現系統所需的每個對象所扮演的角色,以及它們的責任。”

     

    序列圖Sequence diagram:體現事件發生的次序。

    協作圖Collaboration diagram:通過使用局部圖指明了各個對象之間是如何靜態相連的。

     

    a、  羅列實體對象;

    b、  羅列邊界對象和參與者,放置在左邊;

    c、  添加個類的屬性與方法;

    d、  引入基礎類;

    e、  質量評審;

    1)    低耦合:耦合性是指兩個類之間的連接強度,耦合性越低,獨立性越高,越靈活。

    2)    高內聚:內聚性是指一個類的屬性和方法高度地集成,內聚性越高,設計越合理。

    3)    效率:衡量的要點在于解決方案的執行效率是否滿足系統要求。

    4)    完整性:是指在任何環境下都可以重復使用。

    5)    簡單性:類越簡單,出錯的可能性越小,系統的靈活性和可維護性也越好。

    可以使用一些例如OCPSRPDIPLSP原則等經典的面向對象設計原則來衡量。

    Robert C Martin《敏捷軟件開發》

    f、   用設計模式進行優化。

     

    5、  過程總結

     

    現代軟件開發過程:

     

    a、  RUPRational公司,Rose軟件,“用例驅動、以體系結構為中心,迭代、增量的軟件開發過程。”

    RUP軟件開發分為四個階段:

    1)      初始階段:理解和分析需求,生產用例模型框架,對優先級較高的用例進行細化;

    2)      精化階段:完成部分優先級最高的用例開發,并完善出所有的用例模型;

    3)      構建階段:分為多個迭代,逐步完成不同優先級的用例開發;

    4)      交付階段:進行各種功能、性能測試,進行產品化、部署,完成整個系統的開發工作。

     

    b、  XP,極限編程,“敏捷建模”,以最大化發揮人的能量為核心目標,以“小步快走”的邏輯知道開發,12個最佳實踐充分體現了其迭代式開發的特點。

     

    User Story用戶故事是Kent Beck在極限編程(XP)方法論中推薦的最佳實踐之一。它由客戶參與編寫,說明他們需要系統為他們做什么,一般用客戶的術語寫就,三句話左右。

    敏捷開發:

    1) 直接的溝通和交流;

    2) 分步實施、及時交付、及時測試;

    3) 從簡單開始,逐步完善;

    4) 積極主動;

    5) 接受變化,響應變化,甚至從頭再來。

     

    c、  FDDFeature Drive Develop,特征驅動開發,Together創始人Peter Coad所創。通過特征來制定開發計劃,也是每日構建為核心,強調按特征分步開發和交付。一個特征就是一個小的、具有客戶價值的功能,通常表示為<action><result><object>

     

    迭代開發過程:

     

    a、  第一次迭代

    1)      捕獲需求

    2)      建立初始的領域模型

    3)      建立用例模型框架

    4)      制定開發計劃

    b、  第二次迭代

    1)      關鍵用例的Robustness分析與交互建模

    2)      體系結構設計

    3)      建立類模型

    4)      關鍵用例的開發與測試

    5)      完善用例模型

    c、  n次迭代

    完成所有用例的分析、設計與開發。

    d、  最后的迭代

    1)      整體測試:進行各種功能、性能和壓力測試。

    2)      部署與安裝:生成相應的部署圖。

    3)      產品化:進行一些產品化的包裝。

    注:每一次迭代之后,都應該交付一個可以運行的中間版本。

     

    6、  部署和實施

     

    構件圖:表現系統物理結構。

    部署圖:說明系統部署結構。

     

    “構件是系統中可替換的物理部分,它包裝了實現而且遵從并提供一組接口的實現。”

    1)      實施構件:構成一個可執行系統必要和充分的構件,如DLLEXE文件。

    2)      工作產品構件:開發過程的產物,包括創建實施構件的源代碼和數據文件。

    3)      執行構件:是作為一個正在執行的系統的結果而被創建的,如COM+對象。

     

    構件圖:包括構件、接口以及各種關系。

    1)      對源代碼進行建模:表示出各個不同源程序文件之間的關系。

    2)      對可執行的發布建模:表示出各個執行部分之間的信賴和關聯關系。

    3)      對物理數據庫建模:表示出各種類型的數據庫、表之間的關系。

    4)      對可調整的系統建模:如負載均衡,故障恢復等。

     

    部署圖或實施圖的關鍵組成部分:節點和連接;構件和連接。

    1)      對處理器和設備建模;

    2)      對構件的分步建模:通常用來可視化地指定其構件的位置和協作關系。

     

    7、  其它

     

    活動圖:面向對象的流程圖。

    狀態圖:用來描述一個特定對象的所有可能狀態及其引起狀態轉移的事件。

     

    活動圖按照簡繁程度劃分:

    1)      基本活動圖。

    2)      實例說明。

    3)      帶泳道的活的圖。

    a、  業務建模階段:針對的是職責對象。

    b、  系統設計狀態階段:針對的是對象,使用較少,一般使用順序圖。

     

    鏈接:

     

    徐鋒專欄--無名空間

    http://blog.csdn.net/fjxufeng/

     

    用例驅動的需求過程實踐(徐鋒)

    http://www.ccw.com.cn/cio/research/info/htm2003/20031223_13XEG.asp

    http://www.sawin.cn/doc/SA/REQ/blueski313.htm

     

    廣告管理系統中的UML分析與設計

    http://www.itpmi.com/Article.asp?ArtID=425

     

    銷售管理系統的UML分析與設計

    http://51cmm.csai.cn/ANALYZE/no000081.htm

     

    posted on 2006-01-29 22:35 Xu Jianxiang 閱讀(1045) 評論(0)  編輯  收藏 所屬分類: Design Research
    主站蜘蛛池模板: 最近免费中文字幕mv在线电影| 久青草视频97国内免费影视| 最近2019中文字幕免费直播 | 亚洲熟妇无码爱v在线观看| 99在线热播精品免费99热| 亚洲一区二区三区偷拍女厕| g0g0人体全免费高清大胆视频| 亚洲国产黄在线观看| xvideos永久免费入口| 亚洲av永久无码精品表情包| 免费国产在线视频| 老汉色老汉首页a亚洲| 最近中文字幕大全中文字幕免费| 亚洲高清不卡视频| 亚洲中文无码永久免费| 亚洲av无码专区在线观看亚| 国产aa免费视频| 99re6在线精品免费观看| 久久精品国产亚洲香蕉| 免费福利在线播放| 久久亚洲色WWW成人欧美| ZZIJZZIJ亚洲日本少妇JIZJIZ| 免费网站观看WWW在线观看| 久久久亚洲AV波多野结衣| xx视频在线永久免费观看| 亚洲人成色4444在线观看| 免费国产不卡午夜福在线| 91免费在线视频| 亚洲国产视频一区| 在线日韩av永久免费观看| 黄视频在线观看免费| 亚洲欧洲中文日产| 又粗又硬又黄又爽的免费视频| 中国在线观看免费的www| 亚洲成年人免费网站| 国产传媒在线观看视频免费观看| 两性色午夜免费视频| 亚洲一级毛片中文字幕| 亚洲国产精品国产自在在线| 18禁美女裸体免费网站| 精品国产日韩亚洲一区91|