面向?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頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο筌浖O(shè)計(jì)設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖透永щy。你必須找到相關(guān)的對象,以適當(dāng)?shù)牧6葘⑺鼈儦w類,再定義類的接口和繼承層次,建立對象之間的基本關(guān)系。你的設(shè)計(jì)應(yīng)該對手頭的問題有針對性,同時(shí)對將來的問題和需求也要有足夠的通用性。面向?qū)ο筌浖O(shè)計(jì)設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面1經(jīng)驗(yàn)?zāi)阋蚕M苊庵貜?fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者會告訴你,要一下子就得到復(fù)用性和靈活性好的設(shè)計(jì),即使不是不可能的至少也是非常困難的。一個(gè)設(shè)計(jì)在最終完成之前常要被復(fù)用好幾次,而且每一次都有所修改。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者的確能做出良好的設(shè)計(jì),而新手則面對眾多選擇無從下手,總是求助于以前使用過的非面向?qū)ο蠹夹g(shù)。經(jīng)驗(yàn)?zāi)阋蚕M苊庵貜?fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)。有經(jīng)驗(yàn)的面向?qū)?好的解決方案內(nèi)行的設(shè)計(jì)者知道:不是解決任何問題都要從頭做起。他們更愿意復(fù)用以前使用過的解決方案。當(dāng)找到一個(gè)好的解決方案,他們會一遍又一遍地使用。這些經(jīng)驗(yàn)是他們成為內(nèi)行的部分原因。因此,你會在許多面向?qū)ο笙到y(tǒng)中看到類和相互通信的對象的重復(fù)模式。這些模式解決特定的設(shè)計(jì)問題,使面向?qū)ο笤O(shè)計(jì)更靈活、優(yōu)雅,最終復(fù)用性更好。它們幫助設(shè)計(jì)者將新的設(shè)計(jì)建立在以往工作的基礎(chǔ)上,復(fù)用以往成功的設(shè)計(jì)方案。好的解決方案內(nèi)行的設(shè)計(jì)者知道:不是解決任何問題都要從頭做起。3面向?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)它。然而,我們并沒有很好記錄下可供他人使用的軟件設(shè)計(jì)經(jīng)驗(yàn)。面向?qū)ο筌浖O(shè)計(jì)的目的就是將設(shè)計(jì)經(jīng)驗(yàn)作為設(shè)計(jì)模式記錄下來。將每一個(gè)設(shè)計(jì)模式系統(tǒ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)出來。面向?qū)ο筌浖O(shè)計(jì)的目的我們都知道設(shè)計(jì)經(jīng)驗(yàn)的重要價(jià)值。你曾經(jīng)多4設(shè)計(jì)模式設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式幫助你做出有利于系統(tǒng)復(fù)用的選擇,避免設(shè)計(jì)損害了系統(tǒng)復(fù)用性。通過提供一個(gè)顯式類和對象作用關(guān)系以及它們之間潛在聯(lián)系的說明規(guī)范,設(shè)計(jì)模式甚至能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維護(hù)的有效性。簡而言之,設(shè)計(jì)模式可以幫助設(shè)計(jì)者更快更好地完成系統(tǒng)設(shè)計(jì)。設(shè)計(jì)模式設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系5設(shè)計(jì)模式定義設(shè)計(jì)模式是對被用來在特定場景下解決一般設(shè)計(jì)問題的類和相互通信的對象的描述。每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng)。設(shè)計(jì)模式定義設(shè)計(jì)模式是對被用來在特定場景下解決一般設(shè)計(jì)問題6一個(gè)模式有四個(gè)基本要素1.模式名稱(patternname)一個(gè)助記名,它用一兩個(gè)詞來描述模式的問題、解決方案和效果。2.問題(problem)描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)問題和問題存在的前因后果,它可能描述了特定的設(shè)計(jì)問題,如怎樣用對象表示算法等。3.解決方案(solution)描述了設(shè)計(jì)的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。4.效果(consequences)描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問題。一個(gè)模式有四個(gè)基本要素1.模式名稱(patternna7程序設(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ì)語言的選擇非常重要,它將影響人們理8描述設(shè)計(jì)模式怎樣描述設(shè)計(jì)模式呢?圖形符號雖然很重要也很有用,卻還遠(yuǎn)遠(yuǎn)不夠,它們只是將設(shè)計(jì)過程的結(jié)果簡單記錄為類和對象之間的關(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ì)模式。描述設(shè)計(jì)模式怎樣描述設(shè)計(jì)模式呢?圖形符號雖然很重要也很有用9模式名和分類模式名簡潔地描述了模式的本質(zhì)。一個(gè)好的名字非常重要,因?yàn)樗鼘⒊蔀槟愕脑O(shè)計(jì)詞匯表中的一部分。意圖是回答問題的簡單陳述:設(shè)計(jì)模式是做什么的?它的基本原理和意圖是什么?它解決的是什么樣的特定設(shè)計(jì)問題?別名:模式的其他名稱。動(dòng)機(jī):用以說明一個(gè)設(shè)計(jì)問題以及如何用模式中的類、對象來解決該問題的特定情景。該情景會幫助你理解隨后對模式更抽象的描述。適用性:什么情況下可以使用該設(shè)計(jì)模式?該模式可用來改進(jìn)哪些不良設(shè)計(jì)?你怎樣識別這些情況?協(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)語言的問題。模式名和分類模式名簡潔地描述了模式的本質(zhì)。一個(gè)好的名字非常重10尋找合適的對象面向?qū)ο蟪绦蛴蓪ο蠼M成,對象包括數(shù)據(jù)和對數(shù)據(jù)進(jìn)行操作的過程,過程通常稱為方法或操作。對象在收到客戶的請求(或消息)后,執(zhí)行相應(yīng)的操作。面向?qū)ο笤O(shè)計(jì)最困難的部分是將系統(tǒng)分解成對象集合。因?yàn)橐紤]許多因素:封裝、粒度、依賴關(guān)系、靈活性、性能、演化、復(fù)用等等,它們都影響著系統(tǒng)的分解,并且這些因素通常還是互相沖突的。尋找合適的對象面向?qū)ο蟪绦蛴蓪ο蠼M成,對象包括數(shù)據(jù)和對數(shù)據(jù)11決定對象的粒度對象在大小和數(shù)目上變化極大。它們能表示下自硬件或上自整個(gè)應(yīng)用的任何事物。決定對象的粒度對象在大小和數(shù)目上變化極大。它們能表示下自硬12指定對象接口對象聲明的每一個(gè)操作指定操作名、作為參數(shù)的對象和返回值,這就是所謂的操作的型構(gòu)。對象操作所定義的所有操作型構(gòu)的集合被稱為該對象的接口(interface)。對象接口描述了該對象所能接受的全部請求的集合,任何匹配對象接口中型構(gòu)的請求都可以發(fā)送給該對象。指定對象接口對象聲明的每一個(gè)操作指定操作名、作為參數(shù)的對象13運(yùn)用復(fù)用機(jī)制理解對象、接口、類和繼承之類的概念對大多數(shù)人來說并不難,問題的關(guān)鍵在于如何運(yùn)用它們寫出靈活的、可復(fù)用的軟件。運(yùn)用復(fù)用機(jī)制理解對象、接口、類和繼承之類的概念對大多數(shù)人來14設(shè)計(jì)應(yīng)支持變化為了設(shè)計(jì)適應(yīng)變化、且具有健壯性的系統(tǒng),你必須考慮系統(tǒng)在它的生命周期內(nèi)會發(fā)生怎樣的變化。一個(gè)不考慮系統(tǒng)變化的設(shè)計(jì)在將來就有可能需要重新設(shè)計(jì)。這些變化可能是類的重新定義和實(shí)現(xiàn),修改客戶和重新測試。重新設(shè)計(jì)會影響軟件系統(tǒng)的許多方面,并且未曾料到的變化總是代價(jià)巨大的。設(shè)計(jì)應(yīng)支持變化為了設(shè)計(jì)適應(yīng)變化、且具有健壯性的系統(tǒng),你必須15怎樣使用設(shè)計(jì)模式1)大致瀏覽一遍模式特別注意其適用性部分和效果部分,確定它適合你的問題。2)回頭研究結(jié)構(gòu)部分、參與者部分和協(xié)作部分確保你理解這個(gè)模式的類和對象以及它們是怎樣關(guān)聯(lián)的。3)看代碼示例部分,看看這個(gè)模式代碼形式的具體例子研究代碼將有助于你實(shí)現(xiàn)模式。4)選擇模式參與者的名字,使它們在應(yīng)用上下文中有意義設(shè)計(jì)模式參與者的名字通常過于抽象而不會直接出現(xiàn)在應(yīng)用中。5)定義類聲明它們的接口,建立它們的繼承關(guān)系,定義代表數(shù)據(jù)和對象引用的實(shí)例變量。識別模式會影響到的你的應(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ì)模式1)大致瀏覽一遍模式特別注意其適用性部分16設(shè)計(jì)模式的使用限制,設(shè)計(jì)模式不能夠隨意使用。通常通過引入額外的間接層次獲得靈活性和可變性的同時(shí),也使設(shè)計(jì)變得更復(fù)雜并/或犧牲了一定的性能。一個(gè)設(shè)計(jì)模式只有當(dāng)它提供的靈活性是真正需要的時(shí)候,才有必要使用。當(dāng)衡量一個(gè)模式的得失時(shí),它的效果部分是最能提供幫助的。設(shè)計(jì)模式的使用限制,設(shè)計(jì)模式不能夠隨意使用。通常通過引入額外17編寫需求文檔可以用三種方法編寫軟件需求規(guī)格說明:用好的結(jié)構(gòu)化和自然語言編寫文本型文檔。建立圖形化模型,這些模型可以描繪轉(zhuǎn)換過程、系統(tǒng)狀態(tài)和它們之間的變化、數(shù)據(jù)關(guān)系、邏輯流或?qū)ο箢惡退鼈兊年P(guān)系。編寫形式化規(guī)格說明,這可以通過使用數(shù)學(xué)上精確的形式化邏輯語言來定義需求。編寫需求文檔可以用三種方法編寫軟件需求規(guī)格說明:18標(biāo)識需求為了滿足軟件需求規(guī)格說明的可跟蹤性和可修改性的質(zhì)量標(biāo)準(zhǔn),必須唯一確定每個(gè)軟件需求。這可以使你在變更請求、修改歷史記錄、交叉引用或需求的可跟蹤矩陣中查閱特定的需求。標(biāo)識需求為了滿足軟件需求規(guī)格說明的可跟蹤性和可修改性的質(zhì)量19最適合的方法1)序列號最簡單的方法是賦予每個(gè)需求一個(gè)唯一的序列號。2)層次化編碼這也許是最常用的方法。3)層次化文本標(biāo)簽基于文本的層次化標(biāo)簽方案來標(biāo)識單個(gè)需求。最適合的方法1)序列號最簡單的方法是賦予每個(gè)需求一個(gè)唯一20編寫需求文檔的原則編寫優(yōu)秀的需求文檔沒有現(xiàn)成固定的方法,最好是根據(jù)經(jīng)驗(yàn)進(jìn)行。應(yīng)牢記以下幾點(diǎn)建議:保持語句和段落的簡短。采用主動(dòng)語態(tài)的表達(dá)方式。編寫具有正確的語法、拼寫和標(biāo)點(diǎn)的完整句子。使用的術(shù)語與詞匯表中所定義的應(yīng)該一致。需求陳述應(yīng)該具有一致的樣式,例如“系統(tǒng)必須..”或者“用戶必須..”,并緊跟一個(gè)行為動(dòng)作和可觀察的結(jié)果。為了減少不確定性,必須避免模糊的、主觀的術(shù)語,例如,用戶友好、容易、簡單、迅速、有效、支持、許多、最新技術(shù)、優(yōu)越的、可接受的和健壯的。避免使用比較性的詞匯,例如:提高、最大化、最小化和最佳化。編寫需求文檔的原則編寫優(yōu)秀的需求文檔沒有現(xiàn)成固定的方法,最21軟件的質(zhì)量屬性質(zhì)量屬性是很難定義的,并且他們經(jīng)常造成開發(fā)者設(shè)計(jì)的產(chǎn)品和客戶滿意的產(chǎn)品之間的差異。就像RobertCharette(1990)指出的那樣:“真正的現(xiàn)實(shí)系統(tǒng)中,在決定系統(tǒng)的成功或失敗的因素中,滿足非功能需求往往比滿足功能需求更為重要”。優(yōu)秀的軟件產(chǎn)品反映了這些競爭性質(zhì)量特性的優(yōu)化平衡。如果你在需求的獲取階段不去探索客戶對質(zhì)量的期望,那么產(chǎn)品滿足了他們的要求,這只能說你很幸運(yùn)。但更多的可能是客戶失望和開發(fā)者沮喪。軟件的質(zhì)量屬性質(zhì)量屬性是很難定義的,并且他們經(jīng)常造成開發(fā)者22非功能需求用戶總是強(qiáng)調(diào)確定他們的功能、行為或需求—軟件讓他們做的事情。除此之外,用戶對產(chǎn)品如何良好地運(yùn)轉(zhuǎn)抱有許多期望。這些特性包括:產(chǎn)品的易用程度如何,執(zhí)行速度如何,可靠性如何,當(dāng)發(fā)生異常情況時(shí),系統(tǒng)如何處理。這些被稱為軟件質(zhì)量屬性(或質(zhì)量因素)的特性是系統(tǒng)非功能(也叫非行為)部分的需求。非功能需求用戶總是強(qiáng)調(diào)確定他們的功能、行為或需求—軟件讓他23質(zhì)量屬性雖然有許多產(chǎn)品特性可以稱為質(zhì)量屬性(QualityAttribute),但是在許多系統(tǒng)中需要認(rèn)真考慮的僅是其中的一小部分。如果開發(fā)者知道哪些特性對項(xiàng)目的成功至關(guān)重要,那么他們就能選擇軟件工程方法來達(dá)到特定的質(zhì)量目標(biāo)。根據(jù)不同的設(shè)計(jì)可以把質(zhì)量屬性分類。一種屬性分類的方法是把在運(yùn)行時(shí)可識別的特性與那些不可識別的特性區(qū)分開。另一種方法是把對用戶很重要的可見特性與對開發(fā)者和維護(hù)者很重要的不可見特性區(qū)分開。那些對開發(fā)者具有重要意義的屬性使產(chǎn)品易于更改、驗(yàn)證,并易于移植到新的平臺上,從而可以間接地滿足客戶的需要。質(zhì)量屬性雖然有許多產(chǎn)品特性可以稱為質(zhì)量屬性(Quality24軟件質(zhì)量屬性對用戶最重要的屬性對開發(fā)者最重要的屬性:有效性(availability)可維護(hù)性(maintainability)高效性(efficiency)可移植性(portability)靈活性(flexibility)可重用性(reusability)完整性(integrity)可測試性(testability)互操作性(interoperability)可靠性(reliability)健壯性(robustness)可用性(usability)軟件質(zhì)量屬性對用戶最重要的屬性對開發(fā)者最重要的屬性:25對開發(fā)者重要的屬性1)可維護(hù)性可維護(hù)性表明了在軟件中糾正一個(gè)缺陷或做一次更改的簡易程度。2)可移植性可移植性是度量把一個(gè)軟件從一種運(yùn)行環(huán)境轉(zhuǎn)移到另一種運(yùn)行環(huán)境中所花費(fèi)的工作量。3)可重用性從軟件開發(fā)的長遠(yuǎn)目標(biāo)上看,可重用性表明了一個(gè)軟件組件除了在最初開發(fā)的系統(tǒng)中使用之外,還可以在其它應(yīng)用程序中使用的程度。4)可測試性可測試性指的是測試軟件組件或集成產(chǎn)品時(shí)查找缺陷的簡易程度。對開發(fā)者重要的屬性1)可維護(hù)性可維護(hù)性表明了在軟件中糾正26屬性的取舍有時(shí),不可避免地要對一些特定的屬性對進(jìn)行取舍。用戶和開發(fā)者必須確定哪些屬性比其它屬性更為重要,并定出優(yōu)先級。在他們作決策時(shí),要始終遵照那些優(yōu)先級。屬性的取舍有時(shí),不可避免地要對一些特定的屬性對進(jìn)行取舍。用27選擇的質(zhì)量屬性之間的正負(fù)關(guān)系選擇的質(zhì)量屬性之間的正負(fù)關(guān)系28軟件開發(fā)的V字模型軟件開發(fā)的V字模型29需求驗(yàn)證包括以下幾方面的內(nèi)容軟件需求規(guī)格說明正確描述了預(yù)期的系統(tǒng)行為和特征。從系統(tǒng)需求或其它來源中得到軟件需求。需求是完整的和高質(zhì)量的。所有對需求的看法是一致的。需求為繼續(xù)進(jìn)行產(chǎn)品設(shè)計(jì)、構(gòu)造和測試提供了足夠的基礎(chǔ)。需求驗(yàn)證確保了需求符合需求陳述(requirementstatement)的良好特征(完整的、正確的、靈活的、必要的、具有優(yōu)先級的、無二義行及可驗(yàn)證的)并且符合需求規(guī)格說明的良好特性(完整的、一致的、易修改的、可跟蹤的)。需求驗(yàn)證包括以下幾方面的內(nèi)容軟件需求規(guī)格說明正確描述了預(yù)期30審查過程階段審查過程階段31審查速度與發(fā)現(xiàn)錯(cuò)誤數(shù)量之間關(guān)系審查速度與發(fā)現(xiàn)錯(cuò)誤數(shù)量之間關(guān)系32測試需求如果你在部分需求穩(wěn)定時(shí)就開始開發(fā)測試用例,那么就可以及早發(fā)現(xiàn)問題并以較少的費(fèi)用解決這些問題。測試需求如果你在部分需求穩(wěn)定時(shí)就開始開發(fā)測試用例,那么就可33需求開發(fā)向設(shè)計(jì)規(guī)劃的轉(zhuǎn)化從需求到項(xiàng)目規(guī)劃:由于需求定義了項(xiàng)目預(yù)期的成果(outcome),所以你的項(xiàng)目規(guī)劃、預(yù)測和進(jìn)度安排都必須以軟件需求為基礎(chǔ)。從需求到設(shè)計(jì)和編碼:需求和設(shè)計(jì)之間存在差別,但盡量使你的規(guī)格說明的具體實(shí)現(xiàn)無傾向性。從需求到測試:詳盡的需求是系統(tǒng)測試的基礎(chǔ),反過來只能通過測試來判斷軟件是否滿足了需求。從需求到成功需求開發(fā)向設(shè)計(jì)規(guī)劃的轉(zhuǎn)化從需求到項(xiàng)目規(guī)劃:由于需求定義了項(xiàng)34需求管理的原則與實(shí)現(xiàn)需求管理強(qiáng)調(diào):控制對需求基線的變動(dòng)。保持項(xiàng)目計(jì)劃與需求一致??刂茊蝹€(gè)需求和需求文檔的版本情況。管理需求和聯(lián)系鏈之間的聯(lián)系或管理單個(gè)需求和其它項(xiàng)目可交付品之間的依賴關(guān)系。跟蹤基線中需求的狀態(tài)。需求管理的原則與實(shí)現(xiàn)需求管理強(qiáng)調(diào):35需求管理的主要活動(dòng)需求管理的主要活動(dòng)36軟件需求管理處于更高成熟度級別的組織把具有創(chuàng)造性、訓(xùn)練有素的員工同軟件工程和項(xiàng)目管理過程結(jié)合起來,組織必須具有在軟件開發(fā)與管理的六個(gè)關(guān)鍵過程域(keyprocessareas,KPA)以展示達(dá)到目標(biāo)的能力。需求管理的目標(biāo)如下:1)把軟件需求建立一個(gè)基線供軟件工程和管理使用。2)軟件計(jì)劃,產(chǎn)品和活動(dòng)同軟件需求保持一致。軟件需求管理處于更高成熟度級別的組織把具有創(chuàng)造性、訓(xùn)練有素37需求管理步驟開發(fā)組織應(yīng)該定義項(xiàng)目組執(zhí)行管理他們需求的步驟??紤]選擇以下主題:用于控制各種需求文檔和單個(gè)需求版本的工具、技術(shù)和習(xí)慣做法。建議、處理、協(xié)商、通告新的需求和變更給有關(guān)的功能域的方法。如何制定需求基線。將使用的需求狀態(tài),并且是誰允許作出的變更。需求狀態(tài)跟蹤和報(bào)告過程。分析已建議變動(dòng)的影響應(yīng)遵循的步驟。在何種情況下需求變更將會怎樣影響項(xiàng)目計(jì)劃和約定。需求管理步驟開發(fā)組織應(yīng)該定義項(xiàng)目組執(zhí)行管理他們需求的步驟。38需求屬性除了文本,每個(gè)功能需求應(yīng)該有一些相關(guān)的信息或稱之為屬性與之相聯(lián)系。這些屬性在它的預(yù)期功能性之外為每個(gè)需求建立了一個(gè)上下文和背景資料。屬性值可以寫在一張紙上,存儲在一個(gè)數(shù)據(jù)庫或需求管理工具中??紤]明確如下的屬性:?創(chuàng)建需求的時(shí)間?需求的版本號?創(chuàng)建需求的作者?負(fù)責(zé)認(rèn)可該需求的人員?需求狀態(tài)?需求的原因或根據(jù)(或信息的出處)?需求涉及的子系統(tǒng)?需求涉及的產(chǎn)品版本號?使用的驗(yàn)證方法或接受的測試標(biāo)準(zhǔn)?產(chǎn)品的優(yōu)先級或重要程度?需求的穩(wěn)定性需求屬性除了文本,每個(gè)功能需求應(yīng)該有一些相關(guān)的信息或稱之為39需求管理工具在考慮自行開發(fā)工具前先調(diào)查一下是否有可用的成熟工具。這些工具稱為需求管理而不是需求開發(fā)工具。這些工具不會幫助你確認(rèn)未來的客戶或者從項(xiàng)目中獲得正確的需求。然而,你可以獲得許多靈活性,可用來在整個(gè)開發(fā)期間管理需求的變動(dòng),使用需求作為設(shè)計(jì)、測試、項(xiàng)目管理的基礎(chǔ)。需求管理工具在考慮自行開發(fā)工具前先調(diào)查一下是否有可用的成熟40面向?qū)ο筌浖O(shè)計(jì)設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面向?qū)ο筌浖透永щy。你必須找到相關(guān)的對象,以適當(dāng)?shù)牧6葘⑺鼈儦w類,再定義類的接口和繼承層次,建立對象之間的基本關(guān)系。你的設(shè)計(jì)應(yīng)該對手頭的問題有針對性,同時(shí)對將來的問題和需求也要有足夠的通用性。面向?qū)ο筌浖O(shè)計(jì)設(shè)計(jì)面向?qū)ο筌浖容^困難,而設(shè)計(jì)可復(fù)用的面41經(jīng)驗(yàn)?zāi)阋蚕M苊庵貜?fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者會告訴你,要一下子就得到復(fù)用性和靈活性好的設(shè)計(jì),即使不是不可能的至少也是非常困難的。一個(gè)設(shè)計(jì)在最終完成之前常要被復(fù)用好幾次,而且每一次都有所修改。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者的確能做出良好的設(shè)計(jì),而新手則面對眾多選擇無從下手,總是求助于以前使用過的非面向?qū)ο蠹夹g(shù)。經(jīng)驗(yàn)?zāi)阋蚕M苊庵貜?fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì)。有經(jīng)驗(yàn)的面向?qū)?2好的解決方案內(nèi)行的設(shè)計(jì)者知道:不是解決任何問題都要從頭做起。他們更愿意復(fù)用以前使用過的解決方案。當(dāng)找到一個(gè)好的解決方案,他們會一遍又一遍地使用。這些經(jīng)驗(yàn)是他們成為內(nèi)行的部分原因。因此,你會在許多面向?qū)ο笙到y(tǒng)中看到類和相互通信的對象的重復(fù)模式。這些模式解決特定的設(shè)計(jì)問題,使面向?qū)ο笤O(shè)計(jì)更靈活、優(yōu)雅,最終復(fù)用性更好。它們幫助設(shè)計(jì)者將新的設(shè)計(jì)建立在以往工作的基礎(chǔ)上,復(fù)用以往成功的設(shè)計(jì)方案。好的解決方案內(nèi)行的設(shè)計(jì)者知道:不是解決任何問題都要從頭做起。43面向?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)它。然而,我們并沒有很好記錄下可供他人使用的軟件設(shè)計(jì)經(jīng)驗(yàn)。面向?qū)ο筌浖O(shè)計(jì)的目的就是將設(shè)計(jì)經(jīng)驗(yàn)作為設(shè)計(jì)模式記錄下來。將每一個(gè)設(shè)計(jì)模式系統(tǒ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)出來。面向?qū)ο筌浖O(shè)計(jì)的目的我們都知道設(shè)計(jì)經(jīng)驗(yàn)的重要價(jià)值。你曾經(jīng)多44設(shè)計(jì)模式設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu)。將已證實(shí)的技術(shù)表述成設(shè)計(jì)模式也會使新系統(tǒng)開發(fā)者更加容易理解其設(shè)計(jì)思路。設(shè)計(jì)模式幫助你做出有利于系統(tǒng)復(fù)用的選擇,避免設(shè)計(jì)損害了系統(tǒng)復(fù)用性。通過提供一個(gè)顯式類和對象作用關(guān)系以及它們之間潛在聯(lián)系的說明規(guī)范,設(shè)計(jì)模式甚至能夠提高已有系統(tǒng)的文檔管理和系統(tǒng)維護(hù)的有效性。簡而言之,設(shè)計(jì)模式可以幫助設(shè)計(jì)者更快更好地完成系統(tǒng)設(shè)計(jì)。設(shè)計(jì)模式設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系45設(shè)計(jì)模式定義設(shè)計(jì)模式是對被用來在特定場景下解決一般設(shè)計(jì)問題的類和相互通信的對象的描述。每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng)。設(shè)計(jì)模式定義設(shè)計(jì)模式是對被用來在特定場景下解決一般設(shè)計(jì)問題46一個(gè)模式有四個(gè)基本要素1.模式名稱(patternname)一個(gè)助記名,它用一兩個(gè)詞來描述模式的問題、解決方案和效果。2.問題(problem)描述了應(yīng)該在何時(shí)使用模式。它解釋了設(shè)計(jì)問題和問題存在的前因后果,它可能描述了特定的設(shè)計(jì)問題,如怎樣用對象表示算法等。3.解決方案(solution)描述了設(shè)計(jì)的組成成分,它們之間的相互關(guān)系及各自的職責(zé)和協(xié)作方式。4.效果(consequences)描述了模式應(yīng)用的效果及使用模式應(yīng)權(quán)衡的問題。一個(gè)模式有四個(gè)基本要素1.模式名稱(patternna47程序設(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ì)語言的選擇非常重要,它將影響人們理48描述設(shè)計(jì)模式怎樣描述設(shè)計(jì)模式呢?圖形符號雖然很重要也很有用,卻還遠(yuǎn)遠(yuǎn)不夠,它們只是將設(shè)計(jì)過程的結(jié)果簡單記錄為類和對象之間的關(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ì)模式。描述設(shè)計(jì)模式怎樣描述設(shè)計(jì)模式呢?圖形符號雖然很重要也很有用49模式名和分類模式名簡潔地描述了模式的本質(zhì)。一個(gè)好的名字非常重要,因?yàn)樗鼘⒊蔀槟愕脑O(shè)計(jì)詞匯表中的一部分。意圖是回答問題的簡單陳述:設(shè)計(jì)模式是做什么的?它的基本原理和意圖是什么?它解決的是什么樣的特定設(shè)計(jì)問題?別名:模式的其他名稱。動(dòng)機(jī):用以說明一個(gè)設(shè)計(jì)問題以及如何用模式中的類、對象來解決該問題的特定情景。該情景會幫助你理解隨后對模式更抽象的描述。適用性:什么情況下可以使用該設(shè)計(jì)模式?該模式可用來改進(jìn)哪些不良設(shè)計(jì)?你怎樣識別這些情況?協(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)語言的問題。模式名和分類模式名簡潔地描述了模式的本質(zhì)。一個(gè)好的名字非常重50尋找合適的對象面向?qū)ο蟪绦蛴蓪ο蠼M成,對象包括數(shù)據(jù)和對數(shù)據(jù)進(jìn)行操作的過程,過程通常稱為方法或操作。對象在收到客戶的請求(或消息)后,執(zhí)行相應(yīng)的操作。面向?qū)ο笤O(shè)計(jì)最困難的部分是將系統(tǒng)分解成對象集合。因?yàn)橐紤]許多因素:封裝、粒度、依賴關(guān)系、靈活性、性能、演化、復(fù)用等等,它們都影響著系統(tǒng)的分解,并且這些因素通常還是互相沖突的。尋找合適的對象面向?qū)ο蟪绦蛴蓪ο蠼M成,對象包括數(shù)據(jù)和對數(shù)據(jù)51決定對象的粒度對象在大小和數(shù)目上變化極大。它們能表示下自硬件或上自整個(gè)應(yīng)用的任何事物。決定對象的粒度對象在大小和數(shù)目上變化極大。它們能表示下自硬52指定對象接口對象聲明的每一個(gè)操作指定操作名、作為參數(shù)的對象和返回值,這就是所謂的操作的型構(gòu)。對象操作所定義的所有操作型構(gòu)的集合被稱為該對象的接口(interface)。對象接口描述了該對象所能接受的全部請求的集合,任何匹配對象接口中型構(gòu)的請求都可以發(fā)送給該對象。指定對象接口對象聲明的每一個(gè)操作指定操作名、作為參數(shù)的對象53運(yùn)用復(fù)用機(jī)制理解對象、接口、類和繼承之類的概念對大多數(shù)人來說并不難,問題的關(guān)鍵在于如何運(yùn)用它們寫出靈活的、可復(fù)用的軟件。運(yùn)用復(fù)用機(jī)制理解對象、接口、類和繼承之類的概念對大多數(shù)人來54設(shè)計(jì)應(yīng)支持變化為了設(shè)計(jì)適應(yīng)變化、且具有健壯性的系統(tǒng),你必須考慮系統(tǒng)在它的生命周期內(nèi)會發(fā)生怎樣的變化。一個(gè)不考慮系統(tǒng)變化的設(shè)計(jì)在將來就有可能需要重新設(shè)計(jì)。這些變化可能是類的重新定義和實(shí)現(xiàn),修改客戶和重新測試。重新設(shè)計(jì)會影響軟件系統(tǒng)的許多方面,并且未曾料到的變化總是代價(jià)巨大的。設(shè)計(jì)應(yīng)支持變化為了設(shè)計(jì)適應(yīng)變化、且具有健壯性的系統(tǒng),你必須55怎樣使用設(shè)計(jì)模式1)大致瀏覽一遍模式特別注意其適用性部分和效果部分,確定它適合你的問題。2)回頭研究結(jié)構(gòu)部分、參與者部分和協(xié)作部分確保你理解這個(gè)模式的類和對象以及它們是怎樣關(guān)聯(lián)的。3)看代碼示例部分,看看這個(gè)模式代碼形式的具體例子研究代碼將有助于你實(shí)現(xiàn)模式。4)選擇模式參與者的名字,使它們在應(yīng)用上下文中有意義設(shè)計(jì)模式參與者的名字通常過于抽象而不會直接出現(xiàn)在應(yīng)用中。5)定義類聲明它們的接口,建立它們的繼承關(guān)系,定義代表數(shù)據(jù)和對象引用的實(shí)例變量。識別模式會影響到的你的應(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ì)模式1)大致瀏覽一遍模式特別注意其適用性部分56設(shè)計(jì)模式的使用限制,設(shè)計(jì)模式不能夠隨意使用。通常通過引入額外的間接層次獲得靈活性和可變性的同時(shí),也使設(shè)計(jì)變得更復(fù)雜并/或犧牲了一定的性能。一個(gè)設(shè)計(jì)模式只有當(dāng)它提供的靈活性是真正需要的時(shí)候,才有必要使用。當(dāng)衡量一個(gè)模式的得失時(shí),它的效果部分是最能提供幫助的。設(shè)計(jì)模式的使用限制,設(shè)計(jì)模式不能夠隨意使用。通常通過引入額外57編寫需求文檔可以用三種方法編寫軟件需求規(guī)格說明:用好的結(jié)構(gòu)化和自然語言編寫文本型文檔。建立圖形化模型,這些模型可以描繪轉(zhuǎn)換過程、系統(tǒng)狀態(tài)和它們之間的變化、數(shù)據(jù)關(guān)系、邏輯流或?qū)ο箢惡退鼈兊年P(guān)系。編寫形式化規(guī)格說明,這可以通過使用數(shù)學(xué)上精確的形式化邏輯語言來定義需求。編寫需求文檔可以用三種方法編寫軟件需求規(guī)格說明:58標(biāo)識需求為了滿足軟件需求規(guī)格說明的可跟蹤性和可修改性的質(zhì)量標(biāo)準(zhǔn),必須唯一確定每個(gè)軟件需求。這可以使你在變更請求、修改歷史記錄、交叉引用或需求的可跟蹤矩陣中查閱特定的需求。標(biāo)識需求為了滿足軟件需求規(guī)格說明的可跟蹤性和可修改性的質(zhì)量59最適合的方法1)序列號最簡單的方法是賦予每個(gè)需求一個(gè)唯一的序列號。2)層次化編碼這也許是最常用的方法。3)層次化文本標(biāo)簽基于文本的層次化標(biāo)簽方案來標(biāo)識單個(gè)需求。最適合的方法1)序列號最簡單的方法是賦予每個(gè)需求一個(gè)唯一60編寫需求文檔的原則編寫優(yōu)秀的需求文檔沒有現(xiàn)成固定的方法,最好是根據(jù)經(jīng)驗(yàn)進(jìn)行。應(yīng)牢記以下幾點(diǎn)建議:保持語句和段落的簡短。采用主動(dòng)語態(tài)的表達(dá)方式。編寫具有正確的語法、拼寫和標(biāo)點(diǎn)的完整句子。使用的術(shù)語與詞匯表中所定義的應(yīng)該一致。需求陳述應(yīng)該具有一致的樣式,例如“系統(tǒng)必須..”或者“用戶必須..”,并緊跟一個(gè)行為動(dòng)作和可觀察的結(jié)果。為了減少不確定性,必須避免模糊的、主觀的術(shù)語,例如,用戶友好、容易、簡單、迅速、有效、支持、許多、最新技術(shù)、優(yōu)越的、可接受的和健壯的。避免使用比較性的詞匯,例如:提高、最大化、最小化和最佳化。編寫需求文檔的原則編寫優(yōu)秀的需求文檔沒有現(xiàn)成固定的方法,最61軟件的質(zhì)量屬性質(zhì)量屬性是很難定義的,并且他們經(jīng)常造成開發(fā)者設(shè)計(jì)的產(chǎn)品和客戶滿意的產(chǎn)品之間的差異。就像RobertCharette(1990)指出的那樣:“真正的現(xiàn)實(shí)系統(tǒng)中,在決定系統(tǒng)的成功或失敗的因素中,滿足非功能需求往往比滿足功能需求更為重要”。優(yōu)秀的軟件產(chǎn)品反映了這些競爭性質(zhì)量特性的優(yōu)化平衡。如果你在需求的獲取階段不去探索客戶對質(zhì)量的期望,那么產(chǎn)品滿足了他們的要求,這只能說你很幸運(yùn)。但更多的可能是客戶失望和開發(fā)者沮喪。軟件的質(zhì)量屬性質(zhì)量屬性是很難定義的,并且他們經(jīng)常造成開發(fā)者62非功能需求用戶總是強(qiáng)調(diào)確定他們的功能、行為或需求—軟件讓他們做的事情。除此之外,用戶對產(chǎn)品如何良好地運(yùn)轉(zhuǎn)抱有許多期望。這些特性包括:產(chǎn)品的易用程度如何,執(zhí)行速度如何,可靠性如何,當(dāng)發(fā)生異常情況時(shí),系統(tǒng)如何處理。這些被稱為軟件質(zhì)量屬性(或質(zhì)量因素)的特性是系統(tǒng)非功能(也叫非行為)部分的需求。非功能需求用戶總是強(qiáng)調(diào)確定他們的功能、行為或需求—軟件讓他63質(zhì)量屬性雖然有許多產(chǎn)品特性可以稱為質(zhì)量屬性(QualityAttribute),但是在許多系統(tǒng)中需要認(rèn)真考慮的僅是其中的一小部分。如果開發(fā)者知道哪些特性對項(xiàng)目的成功至關(guān)重要,那么他們就能選擇軟件工程方法來達(dá)到特定的質(zhì)量目標(biāo)。根據(jù)不同的設(shè)計(jì)可以把質(zhì)量屬性分類。一種屬性分類的方法是把在運(yùn)行時(shí)可識別的特性與那些不可識別的特性區(qū)分開。另一種方法是把對用戶很重要的可見特性與對開發(fā)者和維護(hù)者很重要的不可見特性區(qū)分開。那些對開發(fā)者具有重要意義的屬性使產(chǎn)品易于更改、驗(yàn)證,并易于移植到新的平臺上,從而可以間接地滿足客戶的需要。質(zhì)量屬性雖然有許多產(chǎn)品特性可以稱為質(zhì)量屬性(Quality64軟件質(zhì)量屬性對用戶最重要的屬性對開發(fā)者最重要的屬性:有效性(availability)可維護(hù)性(maintainability)高效性(efficiency)可移植性(portability)靈活性(flexibility)可重用性(reusability)完整性(integrity)可測試性(testability)互操作性(interoperability)可靠性(reliability)健壯性(robustness)可用性(usability)軟件質(zhì)量屬性對用戶最重要的屬性對開發(fā)者最重要的屬性:65對開發(fā)者重要的屬性1)可維護(hù)性可維護(hù)性表明了在軟件中糾正一個(gè)缺陷或做一次更改的簡易程度。2)可移植性可移植性是度量把一個(gè)軟件從一種運(yùn)行環(huán)境轉(zhuǎn)移到另一種運(yùn)行環(huán)境中所花費(fèi)的工作量。3)可重用性從軟件開發(fā)的長遠(yuǎn)目標(biāo)上看,可重用性表明了一個(gè)軟件組件除了在最初開發(fā)的系統(tǒng)中使用之外,還可以在其它應(yīng)用程序中使用的程度。4)可測試性可測試性指的是測試軟件組件或集成產(chǎn)品時(shí)查找缺陷的簡易程度。對開發(fā)者重要的屬性1)可維護(hù)性可維護(hù)性表明了在軟件中糾正66屬性的取舍有時(shí),不可避免地要對一些特定的屬性對進(jìn)行取舍。用戶和開發(fā)者必須確定哪些屬性比其它屬性更為重要,并定出優(yōu)先級。在他們作決策時(shí),要始終遵照那些優(yōu)先級。屬性的取舍有時(shí),不可避免地要對一些特定的屬性對進(jìn)行取舍。用67選擇的質(zhì)量屬性之間的正負(fù)關(guān)系選擇的質(zhì)量屬性之間的正負(fù)關(guān)系68軟件開發(fā)的V字模型軟件開發(fā)的V字模型69需求驗(yàn)證包括以下幾方面的內(nèi)容軟件需求規(guī)格說明正確描述了預(yù)期的系統(tǒng)行為和特征。從系統(tǒng)需求或其它來源中得到軟件需求。需求是完整的和高質(zhì)量的。所有對需求的看法是一致的。需求為繼續(xù)進(jìn)行產(chǎn)品設(shè)計(jì)、構(gòu)造和測試提供了足夠的基礎(chǔ)。需求驗(yàn)證確保了需求符合需求陳述(requirementstatement)的良

溫馨提示

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

評論

0/150

提交評論