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