基本概念

          應(yīng)該如何為對象類分配職責(zé)(responsibility)?對象之間應(yīng)該如何協(xié)作?什么樣的類應(yīng)該做什么樣的事情?這些都是系統(tǒng)設(shè)計中的關(guān)鍵問題。解決這些問題的一個設(shè)計方法是職責(zé)驅(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)重要的能力是熟練地為軟件對象分配職責(zé)。

          分析(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)需求,即職責(zé)和協(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和其可視化建模。

          posts - 0, comments - 9, trackbacks - 0, articles - 13

          Copyright © Norvid

          主站蜘蛛池模板: 田林县| 普洱| 赤水市| 新竹市| 铁岭县| 蒙城县| 张家港市| 卫辉市| 阿荣旗| 金华市| 永福县| 玛纳斯县| 肇源县| 屏南县| 峨眉山市| 雷山县| 白水县| 黄平县| 英德市| 宁乡县| 长顺县| 海门市| 鸡西市| 运城市| 子长县| 襄樊市| 历史| 赫章县| 浦东新区| 福建省| 裕民县| 长汀县| 丹寨县| 元氏县| 连平县| 江安县| 阿克苏市| 南皮县| 浮山县| 东阿县| 宜黄县|