面向?qū)ο筌浖O(shè)計(jì)_第1頁
面向?qū)ο筌浖O(shè)計(jì)_第2頁
面向?qū)ο筌浖O(shè)計(jì)_第3頁
面向?qū)ο筌浖O(shè)計(jì)_第4頁
面向?qū)ο筌浖O(shè)計(jì)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο筌浖O(shè)計(jì) 設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖透永щy。你必須找到相關(guān)的對(duì)象,以適當(dāng)?shù)牧6葘⑺鼈儦w類,再定義類的接口和繼承層次,建立對(duì)象之間的基本關(guān)系。你的設(shè)計(jì)應(yīng)該對(duì)手頭的問題有針對(duì)性,同時(shí)對(duì)將來的問題和需求也要有足夠的通用性。 經(jīng)驗(yàn)?zāi)阋蚕M苊庵貜?fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者會(huì)告訴你,要一下子就得到復(fù)用性和靈活性好的設(shè)計(jì),即使不是不可能的至少也是非常困難的。一個(gè)設(shè)計(jì)在最終完成之前常要被復(fù)用好幾次,而且每一次都有所修改。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者的確能做出良好的設(shè)計(jì),而新手則面對(duì)眾多選擇無從下手,總是求助于以前使用過的非面向?qū)ο蠹夹g(shù)。 好的解決方案內(nèi)行

2、的設(shè)計(jì)者知道:不是解決任何問題都要從頭做起。他們更愿意復(fù)用以前使用過的解決方案。當(dāng)找到一個(gè)好的解決方案,他們會(huì)一遍又一遍地使用。這些經(jīng)驗(yàn)是他們成為內(nèi)行的部分原因。因此,你會(huì)在許多面向?qū)ο笙到y(tǒng)中看到類和相互通信的對(duì)象的重復(fù)模式。這些模式解決特定的設(shè)計(jì)問題,使面向?qū)ο笤O(shè)計(jì)更靈活、優(yōu)雅,最終復(fù)用性更好。它們幫助設(shè)計(jì)者將新的設(shè)計(jì)建立在以往工作的基礎(chǔ)上,復(fù)用以往成功的設(shè)計(jì)方案。面向?qū)ο筌浖O(shè)計(jì)的目的我們都知道設(shè)計(jì)經(jīng)驗(yàn)的重要價(jià)值。你曾經(jīng)多少次有過這種感覺你已經(jīng)解決過了一個(gè)問題但就是不能確切知道是在什么地方或怎么解決的?如果你能記起以前問題的細(xì)節(jié)和怎么解決它的,你就可以復(fù)用以前的經(jīng)驗(yàn)而不需要重新發(fā)現(xiàn)它。然而

3、,我們并沒有很好記錄下可供他人使用的軟件設(shè)計(jì)經(jīng)驗(yàn)。面向?qū)ο筌浖O(shè)計(jì)的目的就是將設(shè)計(jì)經(jīng)驗(yàn)作為設(shè)計(jì)模式記錄下來。將每一個(gè)設(shè)計(jì)模式系統(tǒng)地命名、解釋和評(píng)價(jià),展現(xiàn)面向?qū)ο笙到y(tǒng)中重要和重復(fù)出現(xiàn)的設(shè)計(jì)。目標(biāo)是將設(shè)計(jì)經(jīng)驗(yàn)以人們能夠有效利用的形式記錄下來,將一些最重要的設(shè)計(jì)模式以編目分類的形式展現(xiàn)出來。 設(shè)計(jì)模式設(shè)計(jì)模式使人們可以更加簡(jiǎn)單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會(huì)使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式幫助你做出有利于系統(tǒng)復(fù)用的選擇,避免設(shè)計(jì)損害了系統(tǒng)復(fù)用性。通過提供一個(gè)顯式類和對(duì)象作用關(guān)系以及它們之間潛在聯(lián)系的說明規(guī)范,設(shè)計(jì)模式甚至能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維

4、護(hù)的有效性。簡(jiǎn)而言之,設(shè)計(jì)模式可以幫助設(shè)計(jì)者更快更好地完成系統(tǒng)設(shè)計(jì)。設(shè)計(jì)模式定義 設(shè)計(jì)模式是對(duì)被用來在特定場(chǎng)景下解決一般設(shè)計(jì)問題的類和相互通信的對(duì)象的描述。 每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng)。一個(gè)模式有四個(gè)基本要素 1. 模式名稱(pattern name) 一個(gè)助記名,它用一兩個(gè)詞來描述模式的問題、解決方案和效果。 2. 問題(problem) 描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)問題和問題存在的前因后果,它可能描述了特定的設(shè)計(jì)問題,如怎樣用對(duì)象表示算法等。 3. 解決方案(solution)

5、描述了設(shè)計(jì)的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。 4. 效果(consequences) 描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問題。 程序設(shè)計(jì)語言的選擇程序設(shè)計(jì)語言的選擇非常重要,它將影響人們理解問題的出發(fā)點(diǎn)。我們的設(shè)計(jì)模式采用了Smalltalk 和C + +層的語言特性,這個(gè)選擇實(shí)際上決定了哪些機(jī)制可以方便地實(shí)現(xiàn),而哪些則不能。若采用過程式語言,可能就要包括諸如“繼承”、“封裝”和“多態(tài)”的設(shè)計(jì)模式。相應(yīng)地,一些特殊的面向?qū)ο笳Z言可以直接支持我們的某些模式。 描述設(shè)計(jì)模式 怎樣描述設(shè)計(jì)模式呢?圖形符號(hào)雖然很重要也很有用,卻還遠(yuǎn)遠(yuǎn)不夠,它們只是將設(shè)計(jì)過程的結(jié)果簡(jiǎn)單記錄為類和

6、對(duì)象之間的關(guān)系。為了達(dá)到設(shè)計(jì)復(fù)用,必須同時(shí)記錄設(shè)計(jì)產(chǎn)生的決定過程、選擇過程和權(quán)衡過程。用統(tǒng)一的格式描述設(shè)計(jì)模式,每一個(gè)模式根據(jù)模板被分成若干部分。模板具有統(tǒng)一的信息描述結(jié)構(gòu),有助于更容易地學(xué)習(xí)、比較和使用設(shè)計(jì)模式。 模式名和分類模式名簡(jiǎn)潔地描述了模式的本質(zhì)。一個(gè)好的名字非常重要,因?yàn)樗鼘⒊蔀槟愕脑O(shè)計(jì)詞匯表中的一部分。 意圖是回答問題的簡(jiǎn)單陳述:設(shè)計(jì)模式是做什么的?它的基本原理和意圖是什么?它解決的是什么樣的特定設(shè)計(jì)問題?別名:模式的其他名稱。動(dòng)機(jī):用以說明一個(gè)設(shè)計(jì)問題以及如何用模式中的類、對(duì)象來解決該問題的特定情景。該情景會(huì)幫助你理解隨后對(duì)模式更抽象的描述。適用性:什么情況下可以使用該設(shè)計(jì)模式

7、?該模式可用來改進(jìn)哪些不良設(shè)計(jì)?你怎樣識(shí)別這些情況? 協(xié)作:模式的參與者怎樣協(xié)作以實(shí)現(xiàn)它們的職責(zé)。效果:模式怎樣支持它的目標(biāo)?使用模式的效果和所需做的權(quán)衡取舍?系統(tǒng)結(jié)構(gòu)的哪些方面可以獨(dú)立改變? 實(shí)現(xiàn):實(shí)現(xiàn)模式時(shí)需要知道的一些提示、技術(shù)要點(diǎn)及應(yīng)避免的缺陷,以及是否存在某些特定于實(shí)現(xiàn)語言的問題。尋找合適的對(duì)象 面向?qū)ο蟪绦蛴蓪?duì)象組成,對(duì)象包括數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行操作的過程,過程通常稱為方法或操作。對(duì)象在收到客戶的請(qǐng)求(或消息)后,執(zhí)行相應(yīng)的操作。面向?qū)ο笤O(shè)計(jì)最困難的部分是將系統(tǒng)分解成對(duì)象集合。因?yàn)橐紤]許多因素:封裝、粒度、依賴關(guān)系、靈活性、性能、演化、復(fù)用等等,它們都影響著系統(tǒng)的分解,并且這些因素通

8、常還是互相沖突的。 決定對(duì)象的粒度 對(duì)象在大小和數(shù)目上變化極大。它們能表示下自硬件或上自整個(gè)應(yīng)用的任何事物。 指定對(duì)象接口 對(duì)象聲明的每一個(gè)操作指定操作名、作為參數(shù)的對(duì)象和返回值,這就是所謂的操作的型構(gòu)。對(duì)象操作所定義的所有操作型構(gòu)的集合被稱為該對(duì)象的接口( i n t e r f a c e )。對(duì)象接口描述了該對(duì)象所能接受的全部請(qǐng)求的集合,任何匹配對(duì)象接口中型構(gòu)的請(qǐng)求都可以發(fā)送給該對(duì)象。 運(yùn)用復(fù)用機(jī)制 理解對(duì)象、接口、類和繼承之類的概念對(duì)大多數(shù)人來說并不難,問題的關(guān)鍵在于如何運(yùn)用它們寫出靈活的、可復(fù)用的軟件。設(shè)計(jì)應(yīng)支持變化 為了設(shè)計(jì)適應(yīng)變化、且具有健壯性的系統(tǒng),你必須考慮系統(tǒng)在它的生命周期

9、內(nèi)會(huì)發(fā)生怎樣的變化。一個(gè)不考慮系統(tǒng)變化的設(shè)計(jì)在將來就有可能需要重新設(shè)計(jì)。這些變化可能是類的重新定義和實(shí)現(xiàn),修改客戶和重新測(cè)試。重新設(shè)計(jì)會(huì)影響軟件系統(tǒng)的許多方面,并且未曾料到的變化總是代價(jià)巨大的。 怎樣使用設(shè)計(jì)模式 1) 大致瀏覽一遍模式特別注意其適用性部分和效果部分,確定它適合你的問題。2 ) 回頭研究結(jié)構(gòu)部分、參與者部分和協(xié)作部分確保你理解這個(gè)模式的類和對(duì)象以及它們是怎樣關(guān)聯(lián)的。3 ) 看代碼示例部分,看看這個(gè)模式代碼形式的具體例子研究代碼將有助于你實(shí)現(xiàn)模式。4 ) 選擇模式參與者的名字,使它們?cè)趹?yīng)用上下文中有意義設(shè)計(jì)模式參與者的名字通常過于抽象而不會(huì)直接出現(xiàn)在應(yīng)用中。 5) 定義類聲明它們

10、的接口,建立它們的繼承關(guān)系,定義代表數(shù)據(jù)和對(duì)象引用的實(shí)例變量。識(shí)別模式會(huì)影響到的你的應(yīng)用中存在的類,做出相應(yīng)的修改。6) 定義模式中專用于應(yīng)用的操作名稱這里再一次體現(xiàn)出,名字一般依賴于應(yīng)用。使用與每一個(gè)操作相關(guān)聯(lián)的責(zé)任和協(xié)作作為指導(dǎo)。 7) 實(shí)現(xiàn)執(zhí)行模式中責(zé)任和協(xié)作的操作實(shí)現(xiàn)部分提供線索指導(dǎo)你進(jìn)行實(shí)現(xiàn)。代碼示例部分的例子也能提供幫助。設(shè)計(jì)模式的使用限制,設(shè)計(jì)模式不能夠隨意使用。通常通過引入額外的間接層次獲得靈活性和可變性的同時(shí),也使設(shè)計(jì)變得更復(fù)雜并/或犧牲了一定的性能。一個(gè)設(shè)計(jì)模式只有當(dāng)它提供的靈活性是真正需要的時(shí)候,才有必要使用。當(dāng)衡量一個(gè)模式的得失時(shí),它的效果部分是最能提供幫助的。 編寫需

11、求文檔 可以用三種方法編寫軟件需求規(guī)格說明:用好的結(jié)構(gòu)化和自然語言編寫文本型文檔。建立圖形化模型,這些模型可以描繪轉(zhuǎn)換過程、系統(tǒng)狀態(tài)和它們之間的變化、數(shù)據(jù)關(guān)系、邏輯流或?qū)ο箢惡退鼈兊年P(guān)系。編寫形式化規(guī)格說明,這可以通過使用數(shù)學(xué)上精確的形式化邏輯語言來定義需求。標(biāo)識(shí)需求 為了滿足軟件需求規(guī)格說明的可跟蹤性和可修改性的質(zhì)量標(biāo)準(zhǔn),必須唯一確定每個(gè)軟件需求。這可以使你在變更請(qǐng)求、修改歷史記錄、交叉引用或需求的可跟蹤矩陣中查閱特定的需求。 最適合的方法 1) 序列號(hào)最簡(jiǎn)單的方法是賦予每個(gè)需求一個(gè)唯一的序列號(hào)。2) 層次化編碼這也許是最常用的方法。 3) 層次化文本標(biāo)簽基于文本的層次化標(biāo)簽方案來標(biāo)識(shí)單個(gè)需

12、求。 編寫需求文檔的原則 編寫優(yōu)秀的需求文檔沒有現(xiàn)成固定的方法,最好是根據(jù)經(jīng)驗(yàn)進(jìn)行。應(yīng)牢記以下幾點(diǎn)建議: 保持語句和段落的簡(jiǎn)短。采用主動(dòng)語態(tài)的表達(dá)方式。編寫具有正確的語法、拼寫和標(biāo)點(diǎn)的完整句子。使用的術(shù)語與詞匯表中所定義的應(yīng)該一致。需求陳述應(yīng)該具有一致的樣式,例如“系統(tǒng)必須.”或者“用戶必須.”,并緊跟一個(gè)行為動(dòng)作和可觀察的結(jié)果。為了減少不確定性,必須避免模糊的、主觀的術(shù)語,例如,用戶友好、容易、簡(jiǎn)單、迅速、有效、支持、許多、最新技術(shù)、優(yōu)越的、可接受的和健壯的。避免使用比較性的詞匯,例如:提高、最大化、最小化和最佳化。 軟件的質(zhì)量屬性 質(zhì)量屬性是很難定義的,并且他們經(jīng)常造成開發(fā)者設(shè)計(jì)的產(chǎn)品和客

13、戶滿意的產(chǎn)品之間的差異。就像Robert Charette(1990)指出的那樣:“真正的現(xiàn)實(shí)系統(tǒng)中,在決定系統(tǒng)的成功或失敗的因素中,滿足非功能需求往往比滿足功能需求更為重要”。優(yōu)秀的軟件產(chǎn)品反映了這些競(jìng)爭(zhēng)性質(zhì)量特性的優(yōu)化平衡。如果你在需求的獲取階段不去探索客戶對(duì)質(zhì)量的期望,那么產(chǎn)品滿足了他們的要求,這只能說你很幸運(yùn)。但更多的可能是客戶失望和開發(fā)者沮喪。非功能需求 用戶總是強(qiáng)調(diào)確定他們的功能、行為或需求軟件讓他們做的事情。除此之外,用戶對(duì)產(chǎn)品如何良好地運(yùn)轉(zhuǎn)抱有許多期望。這些特性包括:產(chǎn)品的易用程度如何,執(zhí)行速度如何,可靠性如何,當(dāng)發(fā)生異常情況時(shí),系統(tǒng)如何處理。這些被稱為軟件質(zhì)量屬性(或質(zhì)量因素

14、)的特性是系統(tǒng)非功能(也叫非行為)部分的需求。 質(zhì)量屬性 雖然有許多產(chǎn)品特性可以稱為質(zhì)量屬性(Quality Attribute),但是在許多系統(tǒng)中需要認(rèn)真考慮的僅是其中的一小部分。如果開發(fā)者知道哪些特性對(duì)項(xiàng)目的成功至關(guān)重要,那么他們就能選擇軟件工程方法來達(dá)到特定的質(zhì)量目標(biāo)。根據(jù)不同的設(shè)計(jì)可以把質(zhì)量屬性分類。一種屬性分類的方法是把在運(yùn)行時(shí)可識(shí)別的特性與那些不可識(shí)別的特性區(qū)分開。另一種方法是把對(duì)用戶很重要的可見特性與對(duì)開發(fā)者和維護(hù)者很重要的不可見特性區(qū)分開。那些對(duì)開發(fā)者具有重要意義的屬性使產(chǎn)品易于更改、驗(yàn)證,并易于移植到新的平臺(tái)上,從而可以間接地滿足客戶的需要。軟件質(zhì)量屬性 對(duì)用戶最重要的屬性對(duì)

15、開發(fā)者最重要的屬性:有效性( availability) 可維護(hù)性( maintainability )高效性( efficiency) 可移植性( p o r t a b i l i t y )靈活性( f l e x i b i l i t y ) 可重用性( r e u s a b i l i t y )完整性(integrity) 可測(cè)試性( t e s t a b i l i t y )互操作性( i n t e r o p e r a b i l i t y )可靠性( r e l i a b i l i t y )健壯性( r o b u s t n e s s )可用性( u

16、s a b i l i t y )對(duì)開發(fā)者重要的屬性 1) 可維護(hù)性可維護(hù)性表明了在軟件中糾正一個(gè)缺陷或做一次更改的簡(jiǎn)易程度。 2) 可移植性可移植性是度量把一個(gè)軟件從一種運(yùn)行環(huán)境轉(zhuǎn)移到另一種運(yùn)行環(huán)境中所花費(fèi)的工作量。 3) 可重用性從軟件開發(fā)的長(zhǎng)遠(yuǎn)目標(biāo)上看,可重用性表明了一個(gè)軟件組件除了在最初開發(fā)的系統(tǒng)中使用之外,還可以在其它應(yīng)用程序中使用的程度。 4) 可測(cè)試性可測(cè)試性指的是測(cè)試軟件組件或集成產(chǎn)品時(shí)查找缺陷的簡(jiǎn)易程度。 屬性的取舍 有時(shí),不可避免地要對(duì)一些特定的屬性對(duì)進(jìn)行取舍。用戶和開發(fā)者必須確定哪些屬性比其它屬性更為重要,并定出優(yōu)先級(jí)。在他們作決策時(shí),要始終遵照那些優(yōu)先級(jí)。 選擇的質(zhì)量屬

17、性之間的正負(fù)關(guān)系 軟件開發(fā)的V字模型 需求驗(yàn)證包括以下幾方面的內(nèi)容 軟件需求規(guī)格說明正確描述了預(yù)期的系統(tǒng)行為和特征。從系統(tǒng)需求或其它來源中得到軟件需求。需求是完整的和高質(zhì)量的。所有對(duì)需求的看法是一致的。需求為繼續(xù)進(jìn)行產(chǎn)品設(shè)計(jì)、構(gòu)造和測(cè)試提供了足夠的基礎(chǔ)。需求驗(yàn)證確保了需求符合需求陳述( requirement statement)的良好特征(完整的、正確的、靈活的、必要的、具有優(yōu)先級(jí)的、無二義行及可驗(yàn)證的)并且符合需求規(guī)格說明的良好特性(完整的、一致的、易修改的、可跟蹤的)。 審查過程階段 審查速度與發(fā)現(xiàn)錯(cuò)誤數(shù)量之間關(guān)系 測(cè)試需求 如果你在部分需求穩(wěn)定時(shí)就開始開發(fā)測(cè)試用例,那么就可以及早發(fā)現(xiàn)問

18、題并以較少的費(fèi)用解決這些問題。 需求開發(fā)向設(shè)計(jì)規(guī)劃的轉(zhuǎn)化 從需求到項(xiàng)目規(guī)劃:由于需求定義了項(xiàng)目預(yù)期的成果( o u t c o m e),所以你的項(xiàng)目規(guī)劃、預(yù)測(cè)和進(jìn)度安排都必須以軟件需求為基礎(chǔ)。從需求到設(shè)計(jì)和編碼:需求和設(shè)計(jì)之間存在差別,但盡量使你的規(guī)格說明的具體實(shí)現(xiàn)無傾向性。 從需求到測(cè)試:詳盡的需求是系統(tǒng)測(cè)試的基礎(chǔ),反過來只能通過測(cè)試來判斷軟件是否滿足了需求。 從需求到成功 需求管理的原則與實(shí)現(xiàn) 需求管理強(qiáng)調(diào):控制對(duì)需求基線的變動(dòng)。保持項(xiàng)目計(jì)劃與需求一致??刂茊蝹€(gè)需求和需求文檔的版本情況。管理需求和聯(lián)系鏈之間的聯(lián)系或管理單個(gè)需求和其它項(xiàng)目可交付品之間的依賴關(guān)系。跟蹤基線中需求的狀態(tài)。需求管理的主要活動(dòng)軟件需求管理 處于更高成熟度級(jí)別的組織把具有創(chuàng)造性、訓(xùn)練有素的員工同軟件工程和項(xiàng)目管理過程結(jié)合起來,組織必須具有在軟件開發(fā)與管理的六個(gè)關(guān)鍵過程域( key process areas,K PA)以展示達(dá)到目標(biāo)的能力。 需求管理的目標(biāo)如下:1) 把軟件需求建立一個(gè)基線供軟件工程和管理使用。2) 軟件計(jì)劃,產(chǎn)品和活動(dòng)同軟件需求保持一致。需求管理步驟 開發(fā)組織應(yīng)該定義項(xiàng)目組執(zhí)行管理他們需求的步驟。考慮選擇以下主題:用于控制各種需求文檔和單個(gè)需求版本的工具、技術(shù)和習(xí)慣做法。建議、處理、協(xié)商、通告新的需求和變更給有關(guān)的功能域的方法。如何制定需求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論