Posted on 2008-02-10 22:40
Norvid 閱讀(448)
評論(0) 編輯 收藏 所屬分類:
讀書筆記
基本概念
應該如何為對象類分配職責(responsibility)?對象之間應該如何協作?什么樣的類應該做什么樣的事情?這些都是系統設計中的關鍵問題。解決這些問題的一個設計方法是職責驅動設計(responsibility-driven design)。
Scrum:由Ken Schwaber和Jeff Sutherland提出,旨在尋求充分發揮面向對象和構建技術的開發方法,是對迭代式面向對象方法的改進,適用于需求難以預測的復雜商務應用產品的開發。
Feature-Driven Development(FDD):由Jeff de Luca和Peter Coad提出,是一個模型驅動、短迭代的開發方法,適用于變換周期短的業務應用開發。所謂的特征點(Feature)時一些用戶眼中有用的小功能項,一個特征點能在兩周或更短的時間內被實施,且產生可見的、能運行的代碼。
Lean Development:這一思想誕生于20世紀40年代默契。當時由于缺乏足夠的資金,剛成立不久的豐田公司制定了豐田生產系統,其主旨是消除浪費。該方法的原則是消除浪費、增加學習、盡量推遲決策、盡快交付、授權團隊、潛入完整性和認識整體。
在OO開發中,至關重要的能力是熟練地為軟件對象分配職責。
分析(analysis)強調的是對問題和需求的調查研究,而不是解決方案。如一個系統應該如何使用它?它應該具有哪些功能?
設計(design)強調的是滿足需求的概念上的解決方案(軟件、硬件兩方面),而不是其實現。設計思想通常排斥底層或“顯而易見”的細節。
有益的分析和設計可以概括為:做正確的事(分析)和正確地做事(設計)。
面向對象分析(Object-oriented analysis)過程中,強調的是在問題領域內發現和描述對象(或概念)。如飛機、航班、飛行員等。
面向對象設計(Object-oriented design)過程中,強調的是定義軟件對象以及他們如何協作以實現需求,即職責和協作。如對象有哪些屬性以及方法。
面向對象分析關注從對象的角度創建領域描述,面向對象分析需要鑒別重要的概念。其分析結果可以表示為領域模型(Domain model),展示重要的領域概念和對象。領域模型也可以成為概念對象模型(conceptual object model)。
順序圖(sequence diagram),描述協作的常見表示法,它展示軟件對象之間的消息流,和由消息引起的方法調用。
設計類圖(design class diagram),描述類的屬性和方法,從而展示類定義的靜態視圖。
統一建模語言(UML)是描述、構造和文檔化系統制品的可視化語言。
應用UML的三種方式:1)UML作為草圖:非正式的、不完整的圖,借助可視化語言的功能,用于探討問題或者解決方案空間的復雜部分;2)UML作為藍圖:相對詳細的設計圖,用于逆向工程或者代碼工程(即前向工程);3)UML作為編程語言:用UML完成軟件系統可執行規格說明。
敏捷建模(Agile Modeling)強調了UML作為草圖的方式,這也是使用UML的普通方式,而且通常對時間投入具有高回報。
應用UML的三種透視圖:1)概念透視圖:用圖來描述現實世界或關注領域中的事物;2)規格說明透視圖:用圖來描述軟件的抽象物或具有規格說明和接口的構件,但是并不約定特定實現;3)實現透視圖:用圖來描述特定技術(如Java)中的軟件實現。
概念類(conceptual class):現實世界中的概念或事物。在概念或本質透視圖中使用。
軟件類(software class):無論在過程還是方法中,都表示軟件構件在規格說明或實現透視圖中的類。
實現類(implementation class):特定OO語言中的類。
小結
介紹了什么是面向對象的分析與設計,以及綜述了UML和其可視化建模。