(完整word版)軟件工程導(dǎo)論(第6版)知識點(diǎn)總結(jié)、復(fù)習(xí)課_第1頁
(完整word版)軟件工程導(dǎo)論(第6版)知識點(diǎn)總結(jié)、復(fù)習(xí)課_第2頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、復(fù)習(xí)課- 酷愛YC第一章1、什么是軟件危機(jī),什么是軟件工程軟件危機(jī)是指在計(jì)算機(jī)軟件開發(fā)、使用與維護(hù)過程中遇到的一系列嚴(yán)重問題和難題。它 包括兩方面:(1 1)如何開發(fā)軟件,以滿足對軟件日益增長的需求;(2 2)如何維護(hù)數(shù)量不斷膨 脹的已有軟件。軟件工程:采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而 證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì) 量的軟件,并有效地維護(hù)它。2、完整的軟件配置由哪些內(nèi)容組成軟件配置主要包括程序,文檔和數(shù)據(jù)等成分。3、軟件生命周期分為哪3個(gè)時(shí)期和8個(gè)階段, 每個(gè)階段的任務(wù)(工作)分別是 什么,重要性如何問題定義問題

2、定義軟件定義軟件定義可行性研究可行性研究需求分析需求分析爲(wèi)體設(shè)計(jì)爲(wèi)體設(shè)計(jì)詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件生命周期軟件生命周期軟件開發(fā)軟件開發(fā) 編碼與單元測試編碼與單元測試綜合測試綜合測試運(yùn)行維護(hù)運(yùn)行維護(hù)持續(xù)滿足用戶需求持續(xù)滿足用戶需求概括地說,軟件生命周期由 軟件定義、軟件開發(fā)和運(yùn)行維護(hù) 3 3 個(gè)時(shí)期組成1 1 、軟件定義 (系統(tǒng)分析 ) 軟件定義時(shí)期的任務(wù)是:確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo) 出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源 和成本,并且制定工程進(jìn)度表。這個(gè)時(shí)期的工作通常又稱為系統(tǒng)分析,由系統(tǒng)分析員負(fù) 責(zé)完成。軟件定義時(shí)期通常進(jìn)一步劃分

3、成 3 3 個(gè)階段,即問題定義、可行性研究和需求分 析。(1 1)問題定義 ,確定系統(tǒng)要解決的問題是什么。成果:關(guān)于問題性質(zhì)、工程目標(biāo)和工程規(guī) 模的報(bào)告。(2 2)可行性研究 ,確定問題是否有可用的、能行得通的解 (包括:技術(shù)、經(jīng)濟(jì)、操作、社 會等方面的可行性 )。這個(gè)階段的任務(wù)不是具體解決問題,而是研究問題的范圍,探索這 個(gè)問題是否值得去解,是否有可行的解決辦法。成果:可行性研究報(bào)告。(3 3)需求分析 ,確定軟件系統(tǒng)的必須實(shí)現(xiàn)的功能、必須達(dá)到的性能、必須滿足的運(yùn)行環(huán)境 要求。系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經(jīng)過用 戶確認(rèn)的系統(tǒng)邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字

4、典和簡要的算法表示系統(tǒng)的邏輯模型。 在需求分析階段確定的系統(tǒng)邏輯模型是以后設(shè)計(jì)和實(shí)現(xiàn)目標(biāo)系統(tǒng)的基礎(chǔ),因此必須準(zhǔn)確 完整地體現(xiàn)用戶的要求。成果:軟件需求規(guī)格說明書(SRSSRS),內(nèi)容包括:系統(tǒng)的邏輯模型; 系統(tǒng)(子系統(tǒng) )的名稱、功能描述、接口、基本數(shù)據(jù)結(jié)構(gòu)、性能、設(shè)計(jì)需求、開發(fā)標(biāo)準(zhǔn)、驗(yàn) 收原則等。2 2、軟件開發(fā)。開發(fā)時(shí)期具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件,它通常由下述 4 4 個(gè)階段組成:總體 設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼和單元測試,綜合測試。其中前兩個(gè)階段又稱為系統(tǒng)設(shè)計(jì),后兩 個(gè)階段又稱為系統(tǒng)實(shí)現(xiàn)(1)(1) 總體設(shè)計(jì) ( (概要設(shè)計(jì) ) ),回答“怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)”o建立系統(tǒng)的總體結(jié)構(gòu),劃分

5、子系統(tǒng);確定系統(tǒng)由哪些模塊組成,各子系統(tǒng)間、各模塊間的關(guān)系 ( (包括定義各子系統(tǒng)接口界面和各功能模塊的接口,設(shè)計(jì)全局?jǐn)?shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu), 規(guī)定設(shè)計(jì)約束,制定組裝測試計(jì)劃 ) )。成果:概要設(shè)計(jì)說明書、數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)說明書、 系統(tǒng)的組裝 ( (集成 ) )測試計(jì)劃等文檔。(2)(2) 詳細(xì)設(shè)計(jì) 任務(wù)就是把解法具體化, 也就是回答:“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢 ? ?”, 設(shè)計(jì)每個(gè)程序模塊的內(nèi)部細(xì)節(jié),包括數(shù)據(jù)結(jié)構(gòu)、算法以及各程序模塊間的接口信息,并 設(shè)計(jì)模塊的單元測試計(jì)劃。成果:詳細(xì)設(shè)計(jì)規(guī)格說明和單元測試計(jì)劃等詳細(xì)設(shè)計(jì)文檔。以上 (1)(1)、 (2)(2)又合稱為軟件設(shè)計(jì)。(3)(3) 編碼

6、和單元測試 這個(gè)階段的關(guān)鍵任務(wù)是寫出正確的容易理解、 容易維護(hù)的程序模塊。 根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說明,選用某種程序設(shè)計(jì)語言把詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為機(jī)器可運(yùn)行的 源程序模塊;運(yùn)行和調(diào)試每一個(gè)程序模塊;每編寫出一個(gè)程序模塊的源程序,調(diào)試通過 后,即對該模塊進(jìn)行單元測試。成果:按一定規(guī)則存在盤上的通過了單元測試的各功能 模塊的集合;詳細(xì)的單元測試報(bào)告等文檔。(4)(4) 綜合測試 通過各種類型的測試 ( (及相應(yīng)的調(diào)試 ) )使軟件達(dá)到預(yù)定的要求。最基本的測試是集成測試和驗(yàn)收測試。成果:滿足概要設(shè)計(jì)要求、可運(yùn)行軟件系統(tǒng)和源程序清單;組裝測試報(bào)告等文檔。驗(yàn)收測試報(bào)告、項(xiàng)目開發(fā)總結(jié)報(bào)告,向用戶提交的源程序清單

7、、最終用戶手冊、操作手冊等文檔資料;由專家、用戶負(fù)責(zé)人、軟件開發(fā)和管理人員組成軟件評審小組對軟件驗(yàn)收測試報(bào)告、測試結(jié)果和軟件進(jìn)行評審,最終驗(yàn)收軟件產(chǎn)品。以上 (3)(3)、 (4)(4)又合稱為軟件實(shí)現(xiàn)。三種不同的軟件測試:單元測試、集成測試、驗(yàn)收測試。3 3 、軟件運(yùn)行與維護(hù)軟件技術(shù)人員通過各種維護(hù)活動使軟件系統(tǒng)持久滿足用戶需要。通常有 4 4 類維護(hù)活動:改正性維護(hù),也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤; 適應(yīng)性維護(hù),即修改軟件以適應(yīng)環(huán)境的變化;完善性維護(hù),即根據(jù)用戶的要求改進(jìn)或擴(kuò) 充軟件使它更完善;預(yù)防性維護(hù),即修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備。成果:更新后的軟件產(chǎn)品;準(zhǔn)確記錄維

8、護(hù)活動的文檔。4、幾種傳統(tǒng)軟件工程生命周期模型:瀑布模型:基本思想、主要優(yōu)點(diǎn)基本思想:瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果及 文檔,每一階段的任務(wù)完成后,都必須對其階段性產(chǎn)品 (主要是文檔)進(jìn)行評審,通過后才 能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動的模型。優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用規(guī)范的方法;嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;要求 每個(gè)階段交傳統(tǒng)的瀑布模型出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證??焖僭湍P停夯舅枷牖舅枷耄很浖_發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一

9、個(gè)原型,以便向用戶展示軟件系統(tǒng)應(yīng)有的一部分或全部功能和性能,同時(shí)使用戶熟悉系統(tǒng)。在征求用戶對原 型的初步意見后,進(jìn)一步使需求全面化、精確化,并據(jù)此改進(jìn)、完善原型。如此迭代, 直到軟件開發(fā)人員和用戶都通過原型確認(rèn)軟件系統(tǒng)的需求并達(dá)成一致的理解為止。軟件 需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測試等以后的各個(gè)開發(fā)步驟。增量模型:基本思想、主要優(yōu)點(diǎn)需求分析驗(yàn)證規(guī)格說明驗(yàn)證針對毎亍構(gòu)件完成洋細(xì) 設(shè)計(jì)、編碼和集成,經(jīng)測 試肩交付給用戶十山mt狂f匕門勺;A r亠圧1艸磁-iik1 AL + i燈卯JFl占TT1基本思想:把一個(gè)軟件產(chǎn)品劃分為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測試,并逐個(gè)添加到軟件產(chǎn)品中去,逐

10、步向用戶提交產(chǎn)品。每個(gè)構(gòu)件能夠完成特定的功能優(yōu)點(diǎn):(1 1 )軟件的實(shí)現(xiàn)和維護(hù)階段沒有明顯的分界線;(2 2)用戶在很短時(shí)間內(nèi)就可以使用產(chǎn)品的部分功能(3 3 )用戶適應(yīng)新產(chǎn)品的時(shí)間較充裕(4 4 )構(gòu)件的分解要易于測試、規(guī)模適中(5 5)軟件的體系結(jié)構(gòu)是開放的,易于擴(kuò)充和維護(hù)螺旋模型:引入的原因,與瀑布模型、快速原型模型的聯(lián)系基本思想:軟件風(fēng)險(xiǎn)是任何軟件開發(fā)項(xiàng)目中都普遍存在的實(shí)際問題,項(xiàng)目越大,軟件越 復(fù)雜,承擔(dān)該項(xiàng)目所冒的風(fēng)險(xiǎn)也越大。軟件風(fēng)險(xiǎn)可能在不同程度上損害軟件開發(fā)過程和 軟件產(chǎn)品質(zhì)量。構(gòu)建原型是一種能使某些類型的風(fēng)險(xiǎn)降至最低的方法。螺旋模型的基本 思想是,使用原型及其他方法來盡量降低

11、風(fēng)險(xiǎn)。聯(lián)系:簡化的螺旋模型是在快速原型模型的基礎(chǔ)上擴(kuò)展而成的,把它看作在每個(gè)階段之 前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型。完整的螺旋模型,將瀑布模型與原型模型結(jié)合起來,并且加入前兩種模型均忽略了的風(fēng) 險(xiǎn)分析瀑布模型的優(yōu)點(diǎn):有利于大型軟件開發(fā)過程中人員的組織、管理,有利于軟件開發(fā)方法 和工具的研究,從而提高了大型軟件項(xiàng)目開發(fā)的質(zhì)量和效率。瀑布模型的缺點(diǎn):(1 1 )開發(fā)過程一般不能逆轉(zhuǎn),否則代價(jià)太大;(2 2)實(shí)際的項(xiàng)目開發(fā)很 難嚴(yán)格按該模型進(jìn)行;(3 3 )客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。(4 4)軟件的實(shí)際情況必須到項(xiàng)目開發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。瀑

12、布模型的使用范圍:(1 1)用戶的需求非常清楚全面,且在開發(fā)過程中沒有或很少變化;(2 2 )開發(fā)人員對軟件的應(yīng)用領(lǐng)域很熟悉;(3 3)用戶的使用環(huán)境非常穩(wěn)定;(4 4 )開發(fā)工作 對用戶參與的要求很低??焖僭湍P偷膬?yōu)點(diǎn):(1 1 )可以得到比較良好的需求定義,容易適應(yīng)需求的變化;(2 2)有利于開發(fā)與培訓(xùn)的同步;(3 3)開發(fā)費(fèi)用低、開發(fā)周期短且對用戶更友好??焖僭湍P偷娜秉c(diǎn):(1 1)客戶與開發(fā)者對原型理解不同;(2 2)準(zhǔn)確的原型設(shè)計(jì)比較困 難;(3 3)不利于開發(fā)人員的創(chuàng)新??焖僭湍P偷氖褂梅秶海? 1)對所開發(fā)的領(lǐng)域比較熟悉而且有快速的原型開發(fā)工具;(2 2) 項(xiàng)目招投標(biāo)時(shí),

13、可以以原型模型作為軟件的開發(fā)模型;(3 3)進(jìn)行產(chǎn)品移植或升級時(shí),或 對已有產(chǎn)品原型進(jìn)行客戶化工作時(shí),原型模型是非常適合的增量模型的優(yōu)點(diǎn):(1 1 )采用增量模型的優(yōu)點(diǎn)是人員分配靈活,剛開始不用投入大量人力資源;(2 2 )如果核心產(chǎn)品很受歡迎,則可增加人力實(shí)現(xiàn)下一個(gè)增量;(3 3)可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。增量模型的缺點(diǎn): (1 1)并行開發(fā)構(gòu)件有可能遇到不能集成的風(fēng)險(xiǎn),軟件必須具備開放式 的體系結(jié)構(gòu);(2 2)增量模型的靈活性可以使其適應(yīng)這種變化的能力大大優(yōu)于瀑布模型和 快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。增量模型的使用范圍:(

14、1 1)進(jìn)行已有產(chǎn)品升級或新版本開發(fā),增量模型是非常適合的;(2 2) 對完成期限嚴(yán)格要求的產(chǎn)品,可以使用增量模型;(3 3)對所開發(fā)的領(lǐng)域比較熟悉而且已有原型系統(tǒng),增量模型也是非常適合的。螺旋模型的優(yōu)點(diǎn):(1 1 )設(shè)計(jì)上的靈活性,可以在項(xiàng)目的各個(gè)階段進(jìn)行變更;(2 2)以小的分 段來構(gòu)建大型系統(tǒng),使成本計(jì)算變得簡單容易;(3 3)客戶始終參與每個(gè)階段的開發(fā),保證了 項(xiàng)目不偏離正確方向以及項(xiàng)目的可控性;(4 4)隨著項(xiàng)目推進(jìn),客戶始終掌握項(xiàng)目的最新信 息,從而他或她能夠和管理層有效地交互。螺旋模型的缺點(diǎn):(1 1)采用螺旋模型需要具有相當(dāng)豐富的風(fēng)險(xiǎn)評估經(jīng)驗(yàn)和專門知識,在 風(fēng)險(xiǎn)較大的項(xiàng)目開發(fā)中

15、,如果未能夠及時(shí)標(biāo)識風(fēng)險(xiǎn),勢必造成重大損失;(2 2 )過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時(shí)間。螺旋模型的使用范圍:螺旋模型只適合于大規(guī)模的軟件項(xiàng)目第二章什么是:經(jīng)濟(jì)可行性、技術(shù)可行性、運(yùn)行與操作可行性、法律可行性(1)(1) 經(jīng)濟(jì)可行性 :這個(gè)系統(tǒng)的經(jīng)濟(jì)效益能超過它的開發(fā)成本嗎 ? ? 估算項(xiàng)目的開發(fā)成本和系統(tǒng)投入使用后可能帶來的利潤,進(jìn)行成本 / / 效益分析,從經(jīng) 濟(jì)角度判斷系統(tǒng)開發(fā)是否“合算” 。(2)(2) 技術(shù)可行性 :使用現(xiàn)有的技術(shù)能實(shí)現(xiàn)這個(gè)系統(tǒng)嗎 ? ? 根據(jù)客戶提出的系統(tǒng)功能、性能要求,從開發(fā)者的技術(shù)實(shí)力、以往工作基礎(chǔ)、問題的 復(fù)雜性等出發(fā),判斷系統(tǒng)開發(fā)在時(shí)間、 費(fèi)用及其

16、他各項(xiàng)約束條件限制下成功的可能性。(3)(3) 運(yùn)行、操作可行性 :系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)行得通嗎 ? ? 主要研究系統(tǒng)的運(yùn)行方式在用戶單位是否可以被有效地實(shí)施, 是否與原有其他系統(tǒng)相 矛盾;系統(tǒng)的操作規(guī)程在用戶單位內(nèi)是否可行,它包括人事、科技政策、管理方法等 等。(4)(4) 法律可行性 :系統(tǒng)的開發(fā)使用,在當(dāng)國當(dāng)?shù)禺?dāng)時(shí)合法嗎?利用軟件工程的方法設(shè)計(jì)開發(fā)軟件系統(tǒng)的過程第三章需求分析的基本任務(wù)1.1. 確定需求-確定對系統(tǒng)的綜合要求功能需求 性能需求 可靠性和可用性需求 出錯處理需求接口需求 約束 逆向需求(8 8)將來可能提出的要求2.2. 建立數(shù)據(jù)模型-利用圖形工具描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)

17、并將數(shù)據(jù)結(jié)構(gòu)規(guī)范化,建立數(shù)據(jù)模型3.3. 導(dǎo)出系統(tǒng)的邏輯模型-通常用數(shù)據(jù)流圖、實(shí)體-聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典和主 要的處理算法描述整個(gè)邏輯模型4.4. 編寫需求規(guī)格說明書5.5. 修正系統(tǒng)開發(fā)計(jì)劃本階段結(jié)束形成的基本文檔軟件需求規(guī)格說明書結(jié)構(gòu)化分析應(yīng)建立哪三大模型,分別用什么工具描述數(shù)據(jù)模型一數(shù)據(jù)流圖功能模型一實(shí)體- -聯(lián)系圖(E-RE-R 圖)行為模型一狀態(tài)圖數(shù)據(jù)流圖、E-R圖、狀態(tài)轉(zhuǎn)換圖的構(gòu)成數(shù)據(jù)流圖-系統(tǒng)邏輯功能的描述工具4 4 種成分:源點(diǎn)和終點(diǎn),處理,數(shù)據(jù)存儲,數(shù)據(jù)流E-RE-R 圖:實(shí)體( (即數(shù)據(jù)對象)-)-矩形框,關(guān)系-菱形框,屬性-橢圓形或圓角矩形 狀態(tài)轉(zhuǎn)換圖:狀態(tài),事件

18、,狀態(tài)轉(zhuǎn)換數(shù)據(jù)字典:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素進(jìn) 行定義的集合。它的作用正是在軟件分析和設(shè)計(jì)的過程中給人提供關(guān)于數(shù)據(jù)的描述信息。 數(shù)據(jù)流圖和數(shù)據(jù)字典共同構(gòu)成系統(tǒng)可行性研究階段的邏輯模型。數(shù)據(jù)字典的實(shí)現(xiàn)(1)(1) 用 CaseCase 工具中的數(shù)據(jù)字典處理程序?qū)?shù)據(jù)字典進(jìn)行生成和編輯;(2)(2) 通過手工制作卡片來制作數(shù)據(jù)字典。每張卡片上保存描述一個(gè)數(shù)據(jù)的信息,主要應(yīng)該 包含下述這樣一些信息:名字、別名、描述、定義、位置。第五章1、總體設(shè)計(jì)過程包含哪兩個(gè)工作階段,各完成什么任務(wù)第一階段:系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的物理實(shí)現(xiàn)方案(1)(1)設(shè)想( (完善) )

19、供選擇的方案(2)(2)選取合理的方案(3)(3)推薦最佳方案第二階段:結(jié)構(gòu)設(shè)計(jì)階段,確定軟件的結(jié)構(gòu)(1)(1) 功能分解,從實(shí)現(xiàn)的角度細(xì)化邏輯模型(2)(2) 設(shè)計(jì)軟件結(jié)構(gòu)(3)(3) 設(shè)計(jì)數(shù)據(jù)庫(4)(4) 制定測試計(jì)劃(5)(5) 書寫文檔 (6)(6)審查和復(fù)審2、軟件工程的中心課題是控制軟件的復(fù)雜度;在總體設(shè)計(jì)階段,軟件復(fù)雜 度主要體現(xiàn)為模塊獨(dú)立性(和全局?jǐn)?shù)據(jù)結(jié)構(gòu)復(fù)雜度);描述模塊獨(dú)立性的兩個(gè) 指標(biāo)分別是耦合和內(nèi)聚3、耦合的含義,1-8級耦合的具體含義,耦合級別的排列從耦合(CouplingCoupling):是對軟件結(jié)構(gòu)內(nèi)不同模塊之間相互關(guān)聯(lián)程度的強(qiáng)弱的度量。它取 決于各個(gè)模塊之間

20、接口的復(fù)雜程度、進(jìn)入或訪問一個(gè)模塊的點(diǎn)以及哪些信息通過接口傳 遞。耦合度可以分為若干級別:flX(無直接耦合強(qiáng)(低耦合)數(shù)據(jù)耦合合1特征耦合性(屮槌合)控制據(jù)合1外部勰令(較強(qiáng)耦合仏艾赭合*FC強(qiáng)耦舎)內(nèi)容耦合弱(1 1)非直接耦合-兩個(gè)模塊沒有直接關(guān)系(如模塊 1 1 和模塊 2 2),每一個(gè)都能獨(dú)立地工作而 不需要另一個(gè)模塊的存在。非直接耦合兩個(gè)模塊間的獨(dú)立性最強(qiáng)。非直接耦合(2)(2) 數(shù)據(jù)耦合-兩個(gè)模塊彼此間通過參數(shù)交換信息, 而且交換的信息僅僅是簡單的數(shù)據(jù)信 息。這屬于松散耦合。(3)(3) 標(biāo)記耦合-兩個(gè)模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)參數(shù)加以聯(lián)系( (不是簡單數(shù)據(jù),而是記錄、數(shù) 組等) ),

21、則稱這兩個(gè)模塊間存在標(biāo)記偶合。開發(fā)票計(jì)算水電費(fèi)特征耦合( (標(biāo)記耦合) )(4)(4) 特征耦合-屬于標(biāo)記耦合,把整個(gè)數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞,而被調(diào)用的模塊只需要使 用其中一部分?jǐn)?shù)據(jù)元素。P39P39控制耦合(5)(5) 控制耦合-一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模 塊的某部分功能控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增單價(jià)數(shù)量金額計(jì)算電費(fèi)住戶情況/ / /住戶情況水費(fèi)電費(fèi)計(jì)算水費(fèi)數(shù)據(jù)耦合*f1RL口1_zr VHIIM- 9公共環(huán)境耦合公共號據(jù)區(qū)加了相互依賴去除模塊間控制耦合的方法:a.a. 將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行

22、b.b. 被調(diào)用模塊分解成若干單一功能模塊(6)(6) 外部耦合-一組模塊都訪問同一全局簡單變量, 而且不是通過參數(shù)傳遞該全局變量的 信息。(7)(7) 公共環(huán)境耦合-兩個(gè)或多個(gè)模塊通過一個(gè)公共數(shù)據(jù)環(huán)境相互作用。公共環(huán)境可以是全 程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲介質(zhì)上的文件、物理設(shè)備等等。公共環(huán)境耦合的復(fù)雜程度隨耦合的模塊個(gè)數(shù)而變化,當(dāng)耦合的模塊個(gè)數(shù)增加時(shí)復(fù)雜程度 顯著增加。公共環(huán)境偶合必不可少,但耦合模塊的數(shù)目應(yīng)盡量少(8)(8)內(nèi)容耦合一 P41P41內(nèi)容耦合A4Bi AEntrylEntry2iB一填塊直接訪問另一糕塊的內(nèi)部信息(程席代入o棋塊4、內(nèi)聚的含義,1-7級內(nèi)聚

23、的具體含義,內(nèi)聚級別的排列*內(nèi)聚(CohesionCohesion ):標(biāo)志同一個(gè)模塊內(nèi)各個(gè)元素彼此 結(jié)合的緊密程度,它是信息隱藏 和局部化概念的自然擴(kuò)展。高內(nèi)聚:模塊內(nèi)部完成單一的處理;低內(nèi)聚:模塊內(nèi)部各部分關(guān)聯(lián)不緊密,完成分散的多個(gè)處理任務(wù);設(shè)計(jì)時(shí)應(yīng)該力爭做到高內(nèi)聚。1 1 內(nèi)聚度也可以分為若干級別:(1)(1)偶然內(nèi)聚-當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)也很松散,則稱這種模塊為偶然內(nèi)聚模塊,它的內(nèi)聚程度最低(2)(2)邏輯內(nèi)聚-把幾種相關(guān)功能或邏輯上相似的功能組合在一個(gè)模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能邏輯類聚(3)(3) 時(shí)間內(nèi)聚-一個(gè)模塊包含若干必須在同

24、一段時(shí)間內(nèi)執(zhí)行的任務(wù)X-“Z-W.低內(nèi)聚性IWJ弱(功能分散)強(qiáng)(功能單一)3分 f5分了偶然內(nèi)聚 邏輯內(nèi)聚時(shí)間內(nèi)聚 過程內(nèi)聚通信內(nèi)聚 順序內(nèi)聚功能內(nèi)聚丄0分偶然類聚S例如系統(tǒng)初始化模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等均是時(shí)間性聚合模塊。(6)(6)順序內(nèi)聚-一個(gè)模塊內(nèi)的處理元素既包含數(shù)據(jù)聯(lián)系也包含控制聯(lián)系,而且這些處理必須順序執(zhí)行( (通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù)) )。(7)(7)功能內(nèi)聚-一個(gè)模塊中各個(gè)部分都是完成某單一功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成同一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,則 稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚

25、是最高程度的內(nèi)聚新文件(4)(4)過程內(nèi)聚-一個(gè)模塊內(nèi)的處理元素是相關(guān)的且僅有控制聯(lián)系,各處理元素必須以特定加工記錄信息內(nèi)聚-這種模塊完成多個(gè)簡單功能,各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。由于這個(gè)模塊的所有功能都是基于同一個(gè)數(shù)據(jù)結(jié)構(gòu),因此,它是一個(gè)信息內(nèi)聚的模塊。信息內(nèi)聚信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。5、如何將數(shù)據(jù)流圖轉(zhuǎn)換為初始的軟件結(jié)構(gòu)圖/層次圖通過變換分析的方法第 1 1 步復(fù)查基本系統(tǒng)模型。第 2 2 步復(fù)查并精化

26、數(shù)據(jù)流圖。第 3 3 步 確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。第 4 4 步 確定輸入流和輸出流的邊界,從而孤立出變換中心。第 5 5 步完成“第一級分解”。第 6 6 步完成“第二級分解”。第 7 7 步使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化* 1功能內(nèi)聚6、關(guān)于模塊設(shè)計(jì)的啟發(fā)規(guī)則啟發(fā)式規(guī)則(模塊化設(shè)計(jì)的經(jīng)驗(yàn))卜-寬度1.1. 改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性2.2. 模塊規(guī)模應(yīng)該適中3.3. 深度、寬度、扇出和扇入都應(yīng)適當(dāng)4.4. 模塊的作用域應(yīng)該在控制域之內(nèi)5.5. 力爭降低模塊接口的復(fù)雜程度6.6. 設(shè)計(jì)單入口單出口的模塊7.7. 模塊功能應(yīng)該可以預(yù)測第六章1、詳細(xì)設(shè)

27、計(jì)的目的(主要任務(wù))目的:為軟件系統(tǒng)的 H H 圖/SC/SC 圖中的每一個(gè)模塊確定采用的算法(處理流程)和模塊內(nèi)數(shù) 據(jù)結(jié)構(gòu),選定某種表達(dá)工具給出精確的描述任務(wù):用一定的工具精確描述目標(biāo)系統(tǒng),從而方便在編碼階段可以把這種描述直接翻譯 成用某種程序設(shè)計(jì)語言書寫的程序。(1)(1) 確定每一模塊的算法( (處理流程) )(2)(2) 確定每一模塊使用的局部數(shù)據(jù)結(jié)構(gòu)(3)(3) 確定本模塊的接口和用戶界面(4)(4) 為每一模塊設(shè)計(jì)一組測試用例( (單元測試計(jì)劃) )2、結(jié)構(gòu)化程序設(shè)計(jì)1 1、什么是結(jié)構(gòu)化程序設(shè)計(jì)(1)(1) 如果一個(gè)程序的代碼塊僅僅是通過順序、選擇和循環(huán)這3 3 種基本控制結(jié)構(gòu)進(jìn)行

28、連接,并且每個(gè)代碼塊是單入口、單出口的,則稱這個(gè)程序是結(jié)構(gòu)化的。(2)(2) 結(jié)構(gòu)化程序設(shè)計(jì)是盡可能少用 GOGO TOTO 語句的程序設(shè)計(jì)方法。最好僅在檢測出錯誤時(shí) 才使用 GOGO T TO O語句,而且應(yīng)該總是使用前向 GOGO TOTO 語句。如果允許使用 LEAVELEAVE( (或 BREAK)BREAK)結(jié)構(gòu),則不僅方便而且會使效率提高很多。LEAVELEAVE或 BREAKBREAK 結(jié)構(gòu)實(shí)質(zhì)上是受限制的 GOGO TOTO 語句,用于轉(zhuǎn)移到循環(huán)結(jié)構(gòu)外面的語句。如果只允許使用順序、IF-THEN-ELSEIF-THEN-ELSE 型分支和 DO-WHILEDO-WHILE 型循

29、環(huán)這 3 3 種基本控制結(jié)構(gòu),則稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì);如果除了上述3 3 種基本控制結(jié)構(gòu)之外,還允許使用DO-CASEDO-CASE 型多分支結(jié)構(gòu)和 DO-UNTILDO-UNTIL 型循環(huán)結(jié)構(gòu),則稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì);如果 再加上允許使用LEAVELEAVE( (或 BREAKBREAK) )結(jié)構(gòu),則稱為修正的結(jié)構(gòu)化程序設(shè)計(jì)2 2、結(jié)構(gòu)化程序設(shè)計(jì)中基本的控制流程3、詳細(xì)設(shè)計(jì)的描述一程序流程圖、盒圖、PAD圖:什么是,基本符號和含義,畫法1 1、程序流程圖-又稱為程序框圖,廣泛描述過程設(shè)計(jì)的方法?;痉? (國家標(biāo)準(zhǔn)) )1rB順順*序型序型多情況選擇型多情況選擇型(CASES!)先判定

30、型循環(huán)先判定型循環(huán)(U0-WJ11LE)流線流線虛線虛線省略線省略線并行方式并行方式注解或注釋注解或注釋選擇型選擇型后判定塑循環(huán)后判定塑循環(huán)(D0-UNT1L)A1* AilT可表示的控制結(jié)構(gòu)見前圖( (結(jié)構(gòu)化程序設(shè)計(jì)中基本的控制流程) )27數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出處理處理淮備或預(yù)處理淮備或預(yù)處理預(yù)定義處理預(yù)定義處理或既定處理或既定處理二-O O-循循環(huán)上界環(huán)上界循環(huán)下界循環(huán)下界文件或文檔文件或文檔外接內(nèi)接外接內(nèi)接起止端點(diǎn)起止端點(diǎn)O條件條件判斷判斷2 2、盒圖(N-SN-S 圖) 出于要有一種不允許違背結(jié)構(gòu)程序設(shè)計(jì)精神的圖形工具的考慮,提出了盒圖,又稱為 N-SN-S 圖。佃)順序;佃)順序

31、;(h)選擇;選擇;CASE多分支多分支; ;(1)循環(huán);何調(diào)用子程序循環(huán);何調(diào)用子程序A3 3、PADPAD 圖PADPAD 是問題分析圖(problem(problem analysisanalysis diagram),diagram),的控制流,將這種圖翻譯成程序代碼比較容易NassiNassi 和 ShneidermanShneidermanCASE 條件/1值2值CASE 1CASE 2部分CASEH部分T卜、X1訐|LDO-J|LhTlL X5_、DO-MULE=2=3X3cde用二維樹形結(jié)構(gòu)的圖來表示程序循環(huán)條件DO-WHILE部分(1O使用PAD圖提供的定義功能來逐步求精的例

32、子WHILE CP(d)UNTIL CP(f)def(g)(a)(a)順序(先執(zhí)行 P1P1 后執(zhí)行 P2P2); (b)(b)選擇(IFIF C C THENTHEN P1P1 ELSEELSE P2P2 )(c)CASE(c)CASE 型多分支;(d)WHILE(d)WHILE 型循環(huán)(WHILEWHILE C C DODO P P ) ;(e)UNTIL;(e)UNTIL 型循環(huán)(REPEAREPEA P PUNTILUNTIL C C ) ;(f);(f)語句標(biāo)號;(g g) g g 定義CT?卩8UNTIL C3P9PIO(b)(b)(e)(c)UNTIL C24、在詳細(xì)設(shè)計(jì)階段,軟

33、件復(fù)雜度主要體現(xiàn)為程序的復(fù)雜程度,可用程序模塊的環(huán)形復(fù)雜度(McCabe方法)來度量,或用Halstead方法來度量5、環(huán)形復(fù)雜度(McCabe方法)來度量計(jì)算工具 :流圖-退化了的程序流程圖McCabeMcCabe 方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果 稱為 程序的環(huán)形復(fù)雜度 。為了突出表示程序的控制流,人們通常使用流圖 ( (也稱為程序圖 ) )。所謂流圖實(shí)質(zhì)上是“退 化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及 分支或循環(huán)的具體條件。計(jì)算方法:3種方法(1)(1) 流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度 區(qū)域:由邊和結(jié)點(diǎn)圍成的面積稱為

34、區(qū)域。當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起 來的那個(gè)區(qū)域。即流圖的封閉區(qū)域數(shù)加 1 1。(2)(2)流圖的環(huán)形復(fù)雜度 V(G)=E-N+2V(G)=E-N+2,其中,E E 是流圖中邊的條數(shù),N N 是結(jié)點(diǎn)數(shù)。 流圖的環(huán)形復(fù)雜度 V(G)=P+1V(G)=P+1,其中,P P 是流圖中判定結(jié)點(diǎn)的數(shù)目。6、Halstead方法來度量-計(jì)算方法HalsteadHalstead 方法是另一個(gè)著名的方法,它根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來度量程序的復(fù)雜程度。計(jì)算復(fù)雜度的方法:在圖形界面( (或 WebWeb 界面) )環(huán)境下,尤其是在交互系統(tǒng)的中,一個(gè)模 塊的頁面數(shù)以及每個(gè)頁面上的項(xiàng)目數(shù),也是模塊復(fù)雜

35、程度度量的依據(jù)第七章1、編碼風(fēng)格涉及的一系列內(nèi)容源程序?qū)嶋H上也是一種供人閱讀的文檔,有一個(gè)文檔的風(fēng)格問題。應(yīng)該使程序具有良好 的風(fēng)格。源程序代碼的邏輯簡明清晰、易讀易懂是好程序的一個(gè)重要標(biāo)準(zhǔn)。1源程序文檔化 (程序內(nèi)部的文檔 )2數(shù)據(jù)說明3語句構(gòu)造4輸入輸出設(shè)計(jì)5程序的效率2、單元測試、集成測試、確認(rèn)/驗(yàn)收測試,測試計(jì)劃(包括用例)在什么時(shí)候 書寫形成單元測試: - 模塊測試 模塊測試的目的是保證每個(gè)模塊作為一個(gè)單元能正確運(yùn)行,所以模塊測試通常又稱為單 元測試。在這個(gè)測試步驟中所發(fā)現(xiàn)的往往是詳細(xì)設(shè)計(jì)和編碼的錯誤。集成測試:子系統(tǒng)測試 - 局部(模塊 子系統(tǒng))子系統(tǒng)測試是按軟件結(jié)構(gòu)把經(jīng)過單元測試

36、的若干模塊放在一起形成一個(gè)子系統(tǒng)來測試。 模塊相互間的協(xié)調(diào)和通信是這個(gè)測試過程中的主要問題,因此,這個(gè)步驟著重測試模塊 間的接口。系統(tǒng)測試 - 全局(子系統(tǒng) 完整系統(tǒng)) 系統(tǒng)測試是,按軟件結(jié)構(gòu),把經(jīng)過測試的若干子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測試。在這個(gè)過程中不僅應(yīng)該發(fā)現(xiàn)設(shè)計(jì)和編碼的錯誤,還應(yīng)該驗(yàn)證系統(tǒng)確實(shí)能提供需求說明書中 指定的功能,而且系統(tǒng)的動態(tài)特性也符合預(yù)定要求。在這個(gè)測試步驟中發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯誤,也可能發(fā)現(xiàn)需求說明中的錯誤。不論是子系統(tǒng)測試還是系統(tǒng)測試,都兼有檢測和組裝兩重含義,通常合稱為集成測試。驗(yàn)收測試-用戶參與驗(yàn)收測試把軟件系統(tǒng)作為單一的實(shí)體進(jìn)行測試,測試內(nèi)容與系統(tǒng)測試基

37、本類似,但是它是在用戶積極參與下進(jìn)行的,而且可能主要使用實(shí)際數(shù)據(jù)( (系統(tǒng)將來要處理的信息) )進(jìn)行測試。驗(yàn)收測試的目的是驗(yàn)證系統(tǒng)確實(shí)能夠滿足用戶的需要,在這個(gè)測試步驟中發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯誤。驗(yàn)收測試也稱為確認(rèn)測試。3、軟件測試與調(diào)試的目的軟件測試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤測試橫跨兩個(gè)階段:(1)(1) 編寫出每個(gè)模塊之后就對它做必要的測試( (稱為單元測試) )。(2)(2)在上一階段結(jié)束之后,對軟件系統(tǒng)還應(yīng)該進(jìn)行各種綜合測試通常由專門的測試人 員承擔(dān)這項(xiàng)工作。 軟件測試的直接目的是要衡量軟件產(chǎn)品是否符合預(yù)期; 軟件測試的根本目的是確保軟件滿

38、足用戶需求;調(diào)試就是通過測試發(fā)現(xiàn)軟件的錯誤之后改正錯誤并進(jìn)行再診斷。調(diào)試是測試階段最困難的工作。調(diào)試是在測試發(fā)現(xiàn)錯誤之后排除錯誤的過程。調(diào)試的任務(wù)是進(jìn)一步診斷和改正 程序中潛在的錯誤4、軟件錯誤主要包括什么軟件錯誤指軟件產(chǎn)品中存在的導(dǎo)致期望的運(yùn)行結(jié)果和實(shí)際運(yùn)行結(jié)果間出現(xiàn)差異的一系列 問題,這些問題包括故障、失效、缺陷。1.1. 軟件故障是指軟件運(yùn)行過程中出現(xiàn)的一種不希望或不可接受的內(nèi)部狀態(tài)。2.2. 軟件失效是指軟件運(yùn)行時(shí)產(chǎn)生的一種不可接受的外部行為結(jié)果。3.3. 軟件缺陷是存在于軟件之中的那些不希望或不可接受的偏差。5、測試用例由什么組成IEEEIEEE 對于測試用例給出的定義是:測試用例是

39、一組測試輸入、執(zhí)行條件和預(yù)期結(jié)果, 目的是要滿足一個(gè)特定的目標(biāo),例如執(zhí)行一條特定的程序路徑或檢驗(yàn)是否符合一個(gè)特定 的需求。測試用例可表示成:測試用例= =輸入+ +輸出+ +測試環(huán)境其中,輸入是指測試數(shù)據(jù)和操作步驟;輸出是指系統(tǒng)的預(yù)期執(zhí)行結(jié)果;測試環(huán)境是 指進(jìn)行軟件測試所必須的工作平臺和前提條件。6、軟件測試的方法C人工測試方法人工測試方法/ /靜態(tài)測試方法靜態(tài)測試方法 軟件測試的策略和方法白盒測試方法白盒測試方法動態(tài)測試方法動態(tài)測試方法黒盒測試方法黒盒測試方法(1)靜態(tài)測試一什么是靜態(tài)測試-對軟件( (文檔) )進(jìn)行分析、檢查和審閱,不實(shí)際運(yùn)行被測試的軟件。靜態(tài)測試約可找出 303070%7

40、0%的邏輯設(shè)計(jì)錯誤,主要工作是對需求規(guī)格說明書、軟件設(shè)計(jì)說明書、源程序做檢查和審閱( (主要是閱讀文檔) ),包括:(1)(1) 通過結(jié)構(gòu)分析、流圖分析、代碼審查,指出軟件缺陷。(2)(2) 是否符合標(biāo)準(zhǔn)和規(guī)范;動態(tài)測試一什么是白盒測試-什么是黑盒測試-什么是動態(tài)測試-通過運(yùn)行軟件來檢驗(yàn)軟件的運(yùn)行結(jié)果和動態(tài)行為的正確性。動態(tài)測試的兩個(gè)基本要素:被測試程序、測試用例。動態(tài)測試有兩種典型的方法:黑盒測試和白盒測試(1)黑盒測試輸入條件I被測對象輸入條件川定義:已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以針對產(chǎn)品的每個(gè)( (或主要) )功能點(diǎn)設(shè)計(jì) 一組用例( (包括輸入數(shù)據(jù)和預(yù)期輸出數(shù)據(jù)),通過測試來檢驗(yàn)是否每個(gè)功能都能正常 使用;輸出結(jié)果黑盒測試主要在以下方面進(jìn)行:(1 1)a/ /B測試:(2)(2)菜單/ /幫助測試:(3)(3)發(fā)行測試:(4)(4)回歸測試黑盒測試的優(yōu)勢:a.a.黑盒測試方法對測試人員

溫馨提示

  • 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

提交評論