西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → 《UML和模式應用》讀書筆記

《UML和模式應用》讀書筆記

相關軟件相關文章發(fā)表評論 來源:本站整理時間:2010/9/13 0:19:57字體大小:A-A+

作者:佚名點擊:126次評論:0次標簽: UML

BOUML(編程代碼工具)V4.22.1 官方免費版
  • 類型:編程工具大。7.0M語言:英文 評分:8.5
  • 標簽:
立即下載

第一部分 緒論

1、在OO開發(fā)中,至關重要的能力是熟練地為軟件對象分配職責;個人認為將對象進行抽象的能力也相當重要。

2、分析(analysis)強調(diào)的是對問題和需求的調(diào)查研究,而不是解決方案;設計(design)強調(diào)的是滿足需求的概念上的解決方案(在軟件方面和硬件方面),而不是其實現(xiàn)。

有益的分析和設計可以概括為:做正確的事(分析)和正確地做事(設計)。

xl

3、需求分析可能包括人們?nèi)绾问褂脩玫那楣?jié)或場景,這些情節(jié)或場景可以被編寫成用例(use case)。

4、面向?qū)ο蠓治鲫P注從對象的角度創(chuàng)建領域描述,面向?qū)ο蠓治鲂枰b別重要的概念、屬性和關聯(lián)。面向?qū)ο蠓治龅慕Y果可以表示為領域模型,在領域模型中展示重要的領域概念或?qū)ο蟆?/p>

5、面向?qū)ο笤O計關注軟件對象的定義-它們的職責和協(xié)作。

6、與領域模型表示的是真實世界的類,設計類圖表示的是軟件類。

7、敏捷建模(agile modeling)強調(diào)了UML作為草圖的方式,這也是適用UML的普通方式,而且通常對時間投入具有高回報(一般費時較短)。

8、迭代開發(fā)(iterative development)是UP和大多數(shù)其他現(xiàn)代方法中的關鍵實踐。在這種生命周期方法中,開發(fā)被組織成一系列固定的短期(如三個星期)小項目,稱為迭代(iteration),每次迭代都產(chǎn)生經(jīng)過測試、集成并可執(zhí)行的局部系統(tǒng)。每次迭代都具有各自的需求分析、設計、實現(xiàn)和測試活動。

9、迭代開發(fā)的優(yōu)點包括:

  • 減少項目失敗可能性,提高生產(chǎn)率,降低缺陷率。
  • 在早期緩解高風險(技術、需求、目標、可用性等等)。
  • 早期可見的進展。
  • 早期反饋、用戶參與和調(diào)整,會產(chǎn)生更接近涉眾真實需求的精化系統(tǒng)。
  • 可控復雜性;團隊不會被“分析癱瘓”或長期且復雜的步驟所淹沒。
  • 一次迭代中的經(jīng)驗可以被系統(tǒng)地用于改進開發(fā)過程本身,并如此反復進行下去。

10、在復雜、變更系統(tǒng)中(如大多數(shù)軟件項目),反饋和調(diào)整是成功的關鍵要素。

11、如何進行迭代和進化式分析和設計:

1)在第1次迭代之前,召開第一個時間定量的需求工作會議,例如確切地定義為兩天時間,業(yè)務和開發(fā)人員(包括首席架構師)需要出席。

  • 在第一天上午,進行高階需求分析,例如僅僅確定用例和特性的名稱,以及關鍵的非功能性需求。這種分析不可能是完美的。
  • 透過咨詢首席架構師和業(yè)務人員,從高階列表中選擇10%列表項,這些項目具備以下三種性質(zhì):1,具有重要的架構意義;2,具有高業(yè)務價值;3,具有高風險。
  • 在剩下的一天半內(nèi),對這三個用例的功能和非功能性需求進行詳細的分析。完成這一過程后,對10%進行了深入分析,90%進行了高階分析。

2)在第1次迭代之前,召開迭代計劃會議,選擇上述三個用例的子集,在特定時間內(nèi)(例如,四周的時間定量迭代)進行設計、構造和測試。

3)在三到四周內(nèi)完成第1次迭代(選擇時間定量,并嚴格遵守時間):

  • 在開始的兩天內(nèi),開發(fā)者和其他成員分組進行建模和設計工作,在首席架構師德帶領和指導下,于“公共作戰(zhàn)室”的眾多白板上,畫出UML的草圖(及其他的模型)。
  • 然后,開發(fā)者摘掉其“建模帽子”并戴上“編程帽子”,開始編程、測試和集成工作并且剩余的時間均用于完成這項工作。
  • 進行大量的測試,包括單元測試、驗收測試、負載測試和可用性測試等。
  • 在結束前的一周,檢查是否能夠完成初始的迭代目標;如果不能,則縮小迭代的范圍,將次要目標置回任務列表中。
  • 在最后一周的星期二,凍結代碼。必須檢入、集成和測試所有代碼,以建立迭代的基線。
  • 在星期三的上午,向外部涉眾演示此局部系統(tǒng),展示早期可視進展,同時要求反饋。

4)在第1次迭代即將結束時(如最后一周的星期三和星期四),召開第二次需求工作會,對上一次會議的所有材料進行復查和精化,然后選擇具有重要架構意義和高業(yè)務價值的另外10%到15%的用例,用一到兩天對其進行詳細分析。

5)于周五上午,舉行下一迭代的迭代計劃會議。

6)以相同步驟進行第2次迭代。

7)反復進行四次迭代和五次需求工作會,這樣在第4次迭代結束時,可能已經(jīng)詳細記錄了大約80%-90%的需求。

8)我們大概推進了整個項目過程的20%。此時,可以估計這些精化的、高質(zhì)量的需求所需工作量和時間。因為具有依據(jù)現(xiàn)實得出的調(diào)查、反饋結論并進行了早期編程和測試,因此估計能夠做什么和需要多長時間的結果會更為可靠。

9)此后,一般不需要再召開需求工作會;需求已經(jīng)穩(wěn)定了(盡管需求永遠不會被凍結)。接下來是一系列為期三周的迭代,在最后一個周五召開的迭代計劃會上選擇適宜的下一步工作,每次迭代都要反復詢問:“就我們現(xiàn)在所知,下一個三周應該完成的、最關鍵的技術和業(yè)務特性是什么?”

利用這種方式,經(jīng)過早期探索式開發(fā)的幾次迭代之后,團隊將能夠更準確地回答“什么、多少、何時”。

12、建模(構建UML草圖……)的目的主要是為理解,而非文檔。

第二部分 初始階段

1、用一句話來概括初始階段:預見項目的范圍、設想和業(yè)務案例。用一句話來概括初始階段要解決的主要問題:涉眾是否就項目設想基本達成一致,項目是否值得繼續(xù)進行認真研究。

2、需求分析的最大挑戰(zhàn)是尋找、溝通和記。ㄍǔJ侵赣涗洠┦裁词钦嬲枰,并能夠清楚地講解給客戶和開發(fā)團隊的成員。

3、在統(tǒng)一過程中,需求按照“FURPS+”模型進行分類,這是一中有效的記憶方法,其含義如下:

  • 功能性(Funcational):特性、功能、安全性。
  • 可用性(Usability):人性化因素、幫助、文檔。
  • 可靠性(Reliability):故障頻率、可恢復性、可預測性。
  • 性能(Performance):響應時間、吞吐量、準確性、有效性、資源利用率。
  • 可支持性(Supportability):適用性、可維護性、國際化、可配制性。

”FURPS+“中的”+“是指一些輔助性的和次要的因素,比如:

  • 實現(xiàn)(Implementation):資源閑置、語言和工具、硬件等。
  • 接口(Interface):強加于外部系統(tǒng)接口之上的約束。
  • 操作(Operation):對其操作設置的系統(tǒng)管理。
  • 包裝(Packaging):例如無力的包裝盒。
  • 授權(Legal):許可證或其他方式。

若想從生活中得到什么,必不可少的第一步就是:決定想要什么。 -本。斯坦(Ben Stein)

4、用例是文本形式的情節(jié)描述,廣泛應用于需求的發(fā)現(xiàn)和記錄工作中。

5、用例是一種優(yōu)秀的方法,使領域?qū)<一蛐枨筇峁┱咦约壕帉懀ɑ騾⑴c編寫)用例成為可能,并使這項工作難度降低。

第三部分 細化迭代1 基礎

1、細化(elaboration)是一般項目中最初的一系列迭代,其中包括:

  • 對核心、有風險的軟件架構進行編程和測試。
  • 發(fā)現(xiàn)并穩(wěn)定需求的主體部分。
  • 規(guī)避主要風險。

細化階段是最初的一系列迭代,在這一階段,小組進行細致的調(diào)查、實現(xiàn)(編程和測試)核心架構、澄清大多數(shù)需求和應對高風險問題。

2、在細化階段可能出現(xiàn)的一些關鍵思想和最佳實踐包括:

  • 實行短時間定量、風險驅(qū)動的迭代。
  • 及早開始編程。
  • 對架構的核心和風險部分進行適應性的設計、實現(xiàn)和測試。
  • 盡早、頻繁、實際地測試。
  • 基于來自測試、用戶、開發(fā)者的反饋進行調(diào)整。
  • 通過一系列討論會,詳細編寫大部分用例和其他需求,每個細化迭代舉行一次。

3、通過關聯(lián)而不是屬性來表示概念類之間的關系。

4、沒有所謂唯一正確的領域模型。所有模型都是對我們試圖要理解的領域的近似。領域模型主要是在特定群體中用于理解和溝通的工具。

5、在同一層內(nèi)的對象在職責上應該具有緊密關聯(lián),不同層中對象的職責則不應該混淆。

6、需要哪些對象,它們?nèi)绾瓮ㄟ^消息和方法進行協(xié)作,通過動態(tài)對象建模(例如繪制順序圖)才能真正落實這些準確和詳細的結論。

7、應該把時間花費在交互圖(順序圖或通信圖),而不僅是類圖上。

8、任何順序圖都可以使用sd圖框圍繞起來,并對其命名。當你想要引用相應名字的sd圖框時,可以使用ref圖框。

9、在類圖中,使用依賴線描述對象之間的全局變量、參數(shù)變量、局部變量和靜態(tài)方法(對其他類的靜態(tài)方法加以調(diào)用)的依賴。

10、GRASP是通用職責分配軟件模式(General Responsibility Assignment Software Patterns)的縮寫。GRASP的9個模式如下所示:

創(chuàng)建者(Creator)

如果以下的條件之一(越多越好)為真時,將創(chuàng)建類A實例的職責分配給類B:

  • B“包含”或組成聚集A。
  • B記錄A。
  • B直接使用A。
  • B具有A的初始化數(shù)據(jù),并且在創(chuàng)建A時會將這些數(shù)據(jù)傳遞給A。因此對于A的創(chuàng)建而言,B是專家。
  • B是對象A的創(chuàng)建者。

注意:對象的創(chuàng)建常常具有相當?shù)膹碗s性,這時最好的方法是把創(chuàng)建職責委派給稱為具體工廠(Concrete Factory)或抽象工廠(Abstract Factory)的輔助類,而不是使用創(chuàng)建者模式所建議的類。

信息專家(Information Expert)

把職責分配給信息專家,它具有實現(xiàn)這個職責所必需的信息。分配職責應當從清晰地描述職責開始。

注意:由于耦合與內(nèi)聚問題導致某些情況下,專家模式建議的方案并不合適。

低耦合(Low Coupling)

分配職責,使耦合性盡可能低。利用這一原則來評估可選方案。

控制器(Controller)

控制器是UI層之上的第一個對象,它負責接收和處理系統(tǒng)操作消息。 

高內(nèi)聚(High Cohesion)

內(nèi)聚(或更為專業(yè)地說,是功能內(nèi)聚)是對元素職責的相關性和集中度的度量。

多態(tài)性(Polymorphism)

純虛構(Pure Fabrication)

間接性(Indirection)

防止變異(Protected Variations)

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)