軟件工程導(dǎo)論知識點(diǎn)概要_第1頁
軟件工程導(dǎo)論知識點(diǎn)概要_第2頁
軟件工程導(dǎo)論知識點(diǎn)概要_第3頁
軟件工程導(dǎo)論知識點(diǎn)概要_第4頁
軟件工程導(dǎo)論知識點(diǎn)概要_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1.1 軟件危機(jī)軟件危機(jī)的表現(xiàn)軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)、使用和維護(hù)過程中遇到的一系列嚴(yán)重問題。1)成本難以估計(jì)、成本高。2)軟件開發(fā)進(jìn)度估計(jì)不準(zhǔn)確,項(xiàng)目延期比比皆是。3)軟件質(zhì)量得不到保證(功能和性能)。4)用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。5)維護(hù)非常困難(多樣性 、復(fù)雜性、 副作用)。6)軟件通常沒有適當(dāng)?shù)奈臋n。7)軟件產(chǎn)品供不應(yīng)求,跟不上計(jì)算機(jī)普及速度。產(chǎn)生軟件危機(jī)的原因(1)與軟件本身的特點(diǎn)有關(guān) (邏輯復(fù)雜,成本高,風(fēng)險大,難于維護(hù))。(2)與軟件開發(fā)與維護(hù)的方法不正確有關(guān):軟件程序(軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合)急于求成=拔苗助長(軟件從定義、開發(fā)、使用和

2、維護(hù)、廢棄要經(jīng)歷一個漫長的生命周期)各自為陣無方法學(xué)(應(yīng)要組織良好、管理嚴(yán)密、各類人員協(xié)作共同完成的工程項(xiàng)目)1.2 軟件工程定義軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)、心理學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本和提高效率為目的。軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學(xué)科。軟件工程的特性:1. 軟件工程關(guān)注于大型程序的構(gòu)造(傳統(tǒng)的程序設(shè)計(jì)技術(shù)和工具是支持小型程序設(shè)計(jì)的)2. 軟件工程的中心課題是控制復(fù)雜性(問題分解)3. 軟件經(jīng)常變化(考慮將來要發(fā)生的變化)4. 開發(fā)軟件的效率非常重要(尋求更好、更有效的工具)5. 和諧地合作是

3、開發(fā)軟件的關(guān)鍵(運(yùn)用標(biāo)準(zhǔn)和規(guī)程)6. 軟件必須有效地支持它的用戶(軟件要服務(wù)于用戶)7. 在軟件工程領(lǐng)域中通常是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程的7條基本原理1.用分階段的生命周期計(jì)劃嚴(yán)格管理2.堅(jiān)持進(jìn)行階段評審3.實(shí)行嚴(yán)格的產(chǎn)品控制4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)5.結(jié)果應(yīng)能清楚地審查6.開發(fā)小組的人員應(yīng)該少而精7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程方法學(xué) 通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)。目前使用得最廣泛的軟件工程方法學(xué),分別是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。軟件工程方法學(xué)包含

4、3個要素:方法、工具和過程。1.3 軟件生命周期每階段的基本任務(wù):1. 問題定義2. 可行性研究3. 需求分析4. 總體設(shè)計(jì)5. 詳細(xì)設(shè)計(jì)6. 編碼和單元測試7. 綜合測試8. 軟件維護(hù)1.4 軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。通常包括四種基本的過程活動: ()軟件規(guī)格說明;()軟件開發(fā);()軟件確認(rèn);()軟件演進(jìn)軟件過程模型: 軟件開發(fā)程模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。它能直觀表達(dá)軟件開發(fā)全過程,明確規(guī)定要完成的主要活動、任務(wù)和開發(fā)策略。幾種典型的模型:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RUP等

5、。軟件過程模型的選擇基于項(xiàng)目和應(yīng)用的性質(zhì)、采用的方法工具以及需要的控制和交付的產(chǎn)品。瀑布模型(Waterfall Model ):傳統(tǒng)瀑布模型:規(guī)定了各項(xiàng)軟件工程活動,包括:制定開發(fā)計(jì)劃、需求分析和說明、軟件設(shè)計(jì)、程序編碼、測試、運(yùn)行維護(hù)。并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。特點(diǎn):1、階段間具有順序性和依賴性。2、推遲實(shí)現(xiàn)。3、質(zhì)量保證。優(yōu)點(diǎn):1、可強(qiáng)迫開發(fā)人員采用規(guī)范的方法(例如,結(jié)構(gòu)化技術(shù)); 嚴(yán)格地規(guī)定了每個階段必須提交的文檔;要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。2、瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動的模型。3、

6、瀑布模型適合于用戶需求明確、完整、無重大變化的軟件項(xiàng)目開發(fā)!問題:1、不適應(yīng)需求經(jīng)常發(fā)生變更的環(huán)境:在項(xiàng)目的開發(fā)過程中,變更可能會引起混亂。所以,有人形象地把采用線性模型進(jìn)行商業(yè)軟件工程稱之為“在沙灘上蓋樓房”。(適合于用戶需求明確、完整、無重大變化的軟件項(xiàng)目開發(fā))2、線性順序模型每一步的工作都必須以前一階段的輸出為輸入,這種特征會導(dǎo)致工作中發(fā)生“阻塞”狀態(tài)。3、由于瀑布模型幾乎完全依賴于書面的規(guī)格說明,很可能導(dǎo)致最終開發(fā)出的軟件產(chǎn)品不能真正滿足用戶的需要。 4、是一種整體開發(fā)模型,程序的物理實(shí)現(xiàn)集中在開發(fā)階段的后期,用戶在最后才能看到自己的產(chǎn)品。在可運(yùn)行的軟件產(chǎn)品交付給用戶之前,用戶只能通過

7、文檔來了解產(chǎn)品是什么樣的。快速原型模型(Rapid Prototype Model)步驟:第一步進(jìn)行試驗(yàn)開發(fā),得出產(chǎn)品的“原型”,其目的在于弄清軟件需求并探索可行性;第二步在原型的基礎(chǔ)上開發(fā)出較為滿意的軟件產(chǎn)品。該模型克服了瀑布模型的部分缺陷,減少了軟件需求不明確給開發(fā)工作帶來的風(fēng)險。前提:(1)是用戶必須積極參與原型的建造,建造原型僅僅是為了定義需求,之后就必須被全部拋棄(至少是部分拋棄),實(shí)際的軟件必須在充分考慮到軟件質(zhì)量和可維護(hù)性之后才被開發(fā)。從這個意義上說,原型模型又往往被稱為“拋棄原型模型”。(2)是必須有快速開發(fā)工具可供使用。 增量模型 (Incremental Model)是一種

8、漸進(jìn)地開發(fā)逐步完善的軟件版本的模型,該模型一般首先開發(fā)產(chǎn)品的基本部,然后再逐步開發(fā)產(chǎn)品的附加部分。整個軟件產(chǎn)品被分解成許多個增量構(gòu)件。每個構(gòu)件由多個相互作用的功能模塊構(gòu)成,并能夠完成特定的功能。該增量模型表明:必須在開始實(shí)現(xiàn)各個構(gòu)件之前就全部完成需求分析、規(guī)格說明和概要設(shè)計(jì),因此風(fēng)險較小。優(yōu)點(diǎn):是十分有用的一種模型。在克服瀑布模型缺點(diǎn)、減少由于軟件需求不明確而給開發(fā)工作帶來風(fēng)險方面,確有顯著的效果;縮短產(chǎn)品提交時間都能夠起到良好的作用。困難:1、在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加

9、入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。2、開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨(dú)立的構(gòu)件,因此相互矛盾。除非開發(fā)人員有足夠的技術(shù)能力協(xié)調(diào)好。3、多個構(gòu)件并行開發(fā),具有無法集成的風(fēng)險螺旋模型 (Spiral Model)優(yōu)點(diǎn):對于高風(fēng)險的大型軟件,螺旋模型是一個理想的開發(fā)方法。缺點(diǎn):風(fēng)險驅(qū)動,需要相當(dāng)豐富的風(fēng)險評估經(jīng)驗(yàn)和專門知識,否則風(fēng)險更大。適合場合:主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項(xiàng)目,隨著過程的進(jìn)展演化,開發(fā)者和用戶能夠更好地識別和對待每一個演化級別上的風(fēng)險。只有內(nèi)部開發(fā)的項(xiàng)目,才能在風(fēng)險過大時方便地中止項(xiàng)目。如果進(jìn)行風(fēng)險分析的費(fèi)用接近整個項(xiàng)目的經(jīng)費(fèi)預(yù)算,則

10、風(fēng)險分析是不可行的。噴泉模型 (Fountain Model)特點(diǎn):噴泉模型的各階段均采用了“對象”這一統(tǒng)一范式,整個過程看起來像噴泉從噴出到落下再噴出的周而復(fù)始過程產(chǎn)生的光滑水柱,體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征。適合場合:噴泉模型主要用于面向?qū)ο蟮能浖?xiàng)目,軟件的某個部分通常被重復(fù)多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的軟件成分。Rational統(tǒng)一軟件開發(fā)過程RUP軟件開發(fā)生命周期是一個二維的軟件開發(fā)模型。橫軸代表時間,體現(xiàn)生命周期特征;縱軸代表工作流,體現(xiàn)了開發(fā)過程的靜態(tài)結(jié)構(gòu)。RUP中的軟件生命周期在時間上被分解為四個順序的階段:初始、細(xì)化、構(gòu)造和移交。每個階段圍繞著9個核心工

11、作流分別迭代。適合場合:可開發(fā)或大或小、分布在各個領(lǐng)域的項(xiàng)目,表明了RUP的多功能性和廣泛適應(yīng)性。適合于需求不穩(wěn)定、不全面的軟件項(xiàng)目開發(fā)。1.5 小結(jié)軟件 =程序+數(shù)據(jù)+文檔軟件危機(jī): 原因,現(xiàn)象,辦法 (軟件工程學(xué))軟件工程:指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程科學(xué)軟件工程3個要素:方法、工具和過程。軟件生命周期:定義,開發(fā),運(yùn)行維護(hù)軟件過程: 瀑布模型,快速原型模型、增量模型、螺旋模型、噴泉模型、RUP等2.1 可行性研究目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。2.2 可行性研究的主要內(nèi)容(1) 技術(shù)可行性(2) 經(jīng)濟(jì)可行性(3) 操作可行性(4) 法律可行性(5) 社會可

12、行性2.3 數(shù)據(jù)流圖1、一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。2、它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程,是系統(tǒng)邏輯功能的圖形表示。3、設(shè)計(jì)數(shù)據(jù)流圖時只需考慮系統(tǒng)必須完成的基本邏輯功能,完全不需要考慮怎樣具體地實(shí)現(xiàn)這些功能。畫數(shù)據(jù)流圖的方法:1、自頂向下,逐步求精2、先畫頂層DFD,描繪系統(tǒng)的整體邏輯概貌;頂層流圖僅包含一個加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)。3、其次畫中間層流圖:對上層父圖的處理的細(xì)化,形成子圖。底層流圖是指其加工不需要在做分解的數(shù)據(jù)流圖,它處在最底層。注意:數(shù)據(jù)流圖應(yīng)該分層,并且在把功能級數(shù)據(jù)

13、流圖細(xì)化后得到的處理超過9個時,應(yīng)該采用畫分圖的辦法。當(dāng)把一個處理分解為一系列處理時,分解前和分解后的輸入輸出數(shù)據(jù)流必須相同!數(shù)據(jù)流圖用途:1、畫數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具。2、分析員把他對現(xiàn)有系統(tǒng)的認(rèn)識或?qū)δ繕?biāo)系統(tǒng)的設(shè)想用數(shù)據(jù)流圖描繪出來,供有關(guān)人員審查確認(rèn)。3、由于在數(shù)據(jù)流圖中通常僅僅使用4種基本符號,而且不包含任何有關(guān)物理實(shí)現(xiàn)的細(xì)節(jié),因此,絕大多數(shù)用戶都可以理解和評價它。4、數(shù)據(jù)流圖著重描繪系統(tǒng)所完成的功能,其另一個主要用途是作為輔助物理系統(tǒng)的分析和設(shè)計(jì)的工具。2.4 小結(jié)1、可行性研究的任務(wù): 技術(shù), 經(jīng)濟(jì),社會2、可行性研究過程: 8 步驟3、數(shù)據(jù)流圖: 源點(diǎn)或終點(diǎn)

14、,處理,數(shù)據(jù)存儲和數(shù)據(jù)流4、數(shù)據(jù)字典: 是分析階段的工具,包括流,元素,存儲,處理4類元素組成。5、成本/效益分析:從經(jīng)濟(jì)角度判斷是否繼續(xù)投資于這項(xiàng)工程的主要依據(jù)。3.1 需求分析的具體任務(wù)確定對系統(tǒng)的綜合要求:1、功能需求2、性能需求3、可靠性和可用性需求4、出錯處理需求5、接口需求6、約束7、 逆向需求8、將來可能提出的要求分析系統(tǒng)的數(shù)據(jù)要求:建立數(shù)據(jù)模型,用圖形化的工具描述數(shù)據(jù)結(jié)構(gòu)(如層次方框圖和warnier圖)。導(dǎo)出系統(tǒng)的邏輯模型數(shù)據(jù)流圖、實(shí)體聯(lián)系圖、狀態(tài)轉(zhuǎn)換圖、數(shù)據(jù)字典等。修正系統(tǒng)開發(fā)計(jì)劃:由分析過程準(zhǔn)確地估計(jì)系統(tǒng)的成本和進(jìn)度,修正以前制定的開發(fā)計(jì)劃。3.2 與用戶溝通獲取需求的方

15、法1、訪談2、面向數(shù)據(jù)流自頂向下逐步求精3、簡易的應(yīng)用規(guī)格說明技術(shù)4、快速建立軟件原型(它應(yīng)該實(shí)現(xiàn)用戶看得見的功能,原型要具有快速并容易修改的特點(diǎn))3.3 數(shù)據(jù)規(guī)范化規(guī)范化的目的是:1、消除數(shù)據(jù)冗余,即消除表格中數(shù)據(jù)的重復(fù);2、消除多義性,使關(guān)系中的屬性含義清楚、單一;3、使關(guān)系的“概念”單一化,讓每個數(shù)據(jù)項(xiàng)只是一個簡單的數(shù)或字符串,而不是一個組項(xiàng)或重復(fù)組;4、方便操作。使數(shù)據(jù)的插入、刪除與修改操作可行并方便;5、使關(guān)系模式更靈活,易于實(shí)現(xiàn)接近自然語言的查詢方式。3.4 狀態(tài)轉(zhuǎn)換圖(狀態(tài)圖)通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來表示系統(tǒng)的行為。狀 態(tài)1、狀態(tài)規(guī)定了系統(tǒng)對事件的響應(yīng)方式。

16、2、系統(tǒng)對事件的響應(yīng),既可以是做一個(或一系列)動作,也可以是僅僅改變系統(tǒng)本身的狀態(tài),還可以是既改變狀態(tài)又做動作。3、可分為:初態(tài)(初始狀態(tài));終態(tài)(最終狀態(tài));中間狀態(tài)4、一張狀態(tài)圖中只能有一個初態(tài),而終態(tài)則可以有0至多個。事 件 事件就是引起系統(tǒng)做動作或(和)轉(zhuǎn)換狀態(tài)的控制信息。符 號1、初態(tài)用實(shí)心圓表示,終態(tài)用一對同心圓(內(nèi)圓為實(shí)心圓)表示2、中間狀態(tài)用圓角矩形表示,分成上、中、下3個部分。3、 活動表的語法格式:事件名(參數(shù)表)/動作表達(dá)式(1)“事件名”可以是任何事件的名稱。在活動表中經(jīng)常使用下述3種標(biāo)準(zhǔn)事件:entry,exit和do。(2) entry事件指定進(jìn)入該狀態(tài)的動作,e

17、xit事件指定退出該狀態(tài)的動作,而do事件則指定在該狀態(tài)下的動作。需要時可以為事件指定參數(shù)表。(3) 動作表達(dá)式描述應(yīng)做的具體動作。4、事件表達(dá)式的語法:事件說明守衛(wèi)條件/動作表達(dá)式(1) 事件說明:事件名(參數(shù)表)(2) 動作表達(dá)式:當(dāng)狀態(tài)轉(zhuǎn)換開始時執(zhí)行該表達(dá)式。(3) 守衛(wèi)條件是一個布爾表達(dá)式,如果既有事件說明又有守衛(wèi)條件,則當(dāng)事件發(fā)生且守衛(wèi)條件為真是狀態(tài)轉(zhuǎn)換才發(fā)生,如果只有守衛(wèi)條件沒有事件說明,則守衛(wèi)條件為真時,發(fā)生狀態(tài)轉(zhuǎn)換。5.1 設(shè)計(jì)過程1. 設(shè)想供選擇的方案;2. 選取合理的方案;3. 推薦最佳方案;4.功能分解;5. 設(shè)計(jì)軟件結(jié)構(gòu);6. 設(shè)計(jì)數(shù)據(jù)庫;7. 制定測試計(jì)劃;8. 書寫

18、文檔;9. 審查和復(fù)審5.2 設(shè)計(jì)原理模塊化1、把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個模塊完成一個子功能,這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能以滿足用戶的需求。2、模塊是由邊界元素限定的相鄰程序元素的序列,而且有一個總體標(biāo)識符代表它。模塊是構(gòu)成程序的基本構(gòu)件。3、過程、函數(shù)、子程序和宏等,都可作為模塊。4、面向?qū)ο蠓椒▽W(xué)中的對象是模塊,對象內(nèi)的方法(或稱為服務(wù))也是模塊。模塊化的好處: 1、可以降低軟件開發(fā)的難度;2、可以使程序結(jié)構(gòu)清晰,增加易讀性和易修改性;3、模塊化還有利于提高代碼的可重用性及團(tuán)隊(duì)合作開發(fā)大型軟件的可行性。抽象抽象是人類在解決復(fù)雜問題時經(jīng)常采用的一種思維方

19、式,它是指將現(xiàn)實(shí)世界中具有共性的一類事物的相似的、本質(zhì)的方面集中概括起來,而暫時忽略它們之間的細(xì)節(jié)差異。結(jié)構(gòu)化程序中自頂向下、逐步求精的模塊劃分思想正是人類思維中運(yùn)用抽象方法解決復(fù)雜問題的體現(xiàn)。逐步求精定義:為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮。好處:1、降低了軟件開發(fā)中每個階段的工作難度;2、簡化了軟件的設(shè)計(jì)和實(shí)現(xiàn)過程;3、有助于提高軟件的可讀性、可測試性和可維護(hù)性;4、在程序設(shè)計(jì)中運(yùn)用抽象的方法還能夠提高代碼的可重用性。信息隱藏和局部化1、信息隱藏:設(shè)計(jì)和確定模塊,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。目的:主要是為了提高模塊的獨(dú)

20、立性,減少將一個模塊中的錯誤擴(kuò)散到其他模塊的機(jī)會。模塊之間的信息傳遞只能通過合法的調(diào)用接口來實(shí)現(xiàn)。信息隱蔽對提高軟件的可讀性和可維護(hù)性都是非常重要的。2、局部化:是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。如模塊中的局部數(shù)據(jù)元素是局部化的一個例子。3、局部化和信息隱藏概念是密切相關(guān)的,局部化有助于信息隱藏模塊獨(dú)立模塊的獨(dú)立性是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。1、耦合:不同模塊之間互連程度的度量。2、內(nèi)聚:模塊功能強(qiáng)度的度量。3、模塊獨(dú)立是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。3、優(yōu)點(diǎn):比較容易開發(fā)出有效模塊化(即具有獨(dú)立的模塊

21、)的軟件;獨(dú)立的模塊比較容易測試和維護(hù)。4、耦合:(1) 數(shù)據(jù)耦合:若兩個模塊之間僅通過模塊參數(shù)交換信息,且交換的信息全部為簡單數(shù)據(jù),則稱這種耦合為數(shù)據(jù)耦合。耦合性最低。(2) 控制耦合:若模塊之間交換的信息中包含有控制信息(盡管有時控制信息是以數(shù)據(jù)的形式出現(xiàn)的),則稱這種耦合為控制耦合。控制耦合是中等程度的耦合,它會增加程序的復(fù)雜性。(3) 特征耦合:當(dāng)把整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素。(4) 公共環(huán)境耦合:若兩個或多個模塊通過引用公共數(shù)據(jù)相互聯(lián)系。(5) 內(nèi)容耦合:一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口而轉(zhuǎn)到另一個模塊的內(nèi)部;兩個模塊有

22、一部分程序代碼重疊;一個模塊有多個入口(這意味著一個模塊有幾種功能)。(6) 盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。5、內(nèi)聚:低內(nèi)聚:偶然內(nèi)聚,邏輯內(nèi)聚,時間內(nèi)聚中內(nèi)聚:過程內(nèi)聚,通信內(nèi)聚高內(nèi)聚:順序內(nèi)聚,功能內(nèi)聚6、高內(nèi)聚,低耦合6.1 結(jié)構(gòu)程序設(shè)計(jì)1、結(jié)構(gòu)程序設(shè)計(jì)技術(shù):是實(shí)現(xiàn)質(zhì)量要求的基本保證,是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。2、結(jié)構(gòu)程序設(shè)計(jì)定義: 一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本的控制結(jié)構(gòu)進(jìn)行連接;并且每個代碼塊只有一個入口和一個出口。- 3、只用三種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實(shí)現(xiàn)任何單入口單出口的程序。從而實(shí)現(xiàn)結(jié)構(gòu)程序設(shè)

23、計(jì)。4、三種基本結(jié)構(gòu)的共同特點(diǎn):(1) 只有一個入口; (2) 只有一個出口;(3) 結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到;(4) 結(jié)構(gòu)內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。 5、結(jié)構(gòu)程序設(shè)計(jì)的特點(diǎn):(1) 由三種基本結(jié)構(gòu)順序組成的,可以解決任何復(fù)雜的問題。(2) 程序內(nèi)不存在無規(guī)律的轉(zhuǎn)向,只在基本結(jié)構(gòu)內(nèi)才允許存在分支和向前或向后的跳轉(zhuǎn)。6.2 過程設(shè)計(jì)的工具(1)過程設(shè)計(jì)是設(shè)計(jì)模塊的詳細(xì)步驟(算法),是詳細(xì)設(shè)計(jì)階段應(yīng)完成的主要工作。 (2)過程設(shè)計(jì)的工具描述程序處理過程的工具。程序流程圖的優(yōu)缺點(diǎn):主要優(yōu)點(diǎn):對控制流程的描繪很簡明直觀、易于理解,便于初學(xué)者掌握。主要缺點(diǎn):(1) 本質(zhì)上不是逐步求精的

24、好工具。 -改進(jìn):PAD圖(2) 用箭頭代表控制流,描述程序時可以隨意跳轉(zhuǎn)。 -改進(jìn):N-S圖(3) 不易表示數(shù)據(jù)結(jié)構(gòu)。 -改進(jìn):PAD圖(4) 嵌套的條件選擇表示不清。 -改進(jìn):判定樹、判定表PAD圖(問題分析圖)PAD圖的特點(diǎn):(1) 能展現(xiàn)算法的層次結(jié)構(gòu);(2) 表示形式直觀易懂;(3) 既可用于表示程序邏輯,又可用于描述數(shù)據(jù)結(jié)構(gòu);(4) 支持自頂向下,逐步求精的過程。判定表當(dāng)算法中包含多重嵌套的條件選擇時,用程序流程圖、盒圖、PAD圖等都不易清楚地描述,然而,判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。判定表的優(yōu)缺點(diǎn):優(yōu)點(diǎn):判定表能夠簡潔而無歧義地描述處理規(guī)則。可以對

25、判定表進(jìn)行校驗(yàn)或化簡。缺點(diǎn):并不適于作為一種通用的設(shè)計(jì)工具,直觀性不夠。判定樹判定樹是用來表達(dá)加工邏輯的一種工具。比判定表更直觀,是一種常用的系統(tǒng)分析和設(shè)計(jì)工具。判定樹的優(yōu)缺點(diǎn):優(yōu)點(diǎn):比判定表更直觀。缺點(diǎn): (1) 不夠簡潔,數(shù)據(jù)元素重復(fù)多次地寫。 (2) 畫判定樹時分枝的次序?qū)啙嵆绦蛴杏绊憽DL程序設(shè)計(jì)語言(1) 是一種非形式化、比較靈活的混雜語言。也稱為偽碼。(2) 用于描述模塊內(nèi)部過程的具體算法,以便在開發(fā)人員之間比較精確的進(jìn)行交流。PDL的優(yōu)缺點(diǎn):優(yōu)點(diǎn):(1)可以作為注釋直接插入到源程序中。有利于PDL和源程序保持一致性。(2) PDL編寫方便。(3)可以由自動處理程序?qū)DL生成

26、程序代碼。缺點(diǎn):(1) 不如圖形工具形象直觀。(2) 描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時,不如判定表清晰簡單。6.5 程序復(fù)雜程度的定量度量McCabe方法基本原理:根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度(稱為程序的環(huán)形復(fù)雜度)。采用“流圖”:僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作及分支或循環(huán)的具體條件?;静襟E:(1) 將程序流程圖或PDL等映射為流圖。(2) 基于流圖計(jì)算環(huán)形復(fù)雜度,以定量度量程序的復(fù)雜程度。 流圖定義: 僅僅描繪程序的控制流程基本符號: 圓:表示結(jié)點(diǎn),代表一條或多條語句。 箭頭線:邊 區(qū)域:由邊和圓圍成的面積基本原則:合并原則:順序處理框和菱形判定框

27、、順序處理框序列分別合并映射成流圖中的一個結(jié)點(diǎn)。分解原則:復(fù)合條件分解為若干個簡單條件,每個簡單條件映射成流圖中一個結(jié)點(diǎn)。其他情況下的框映射成流圖中的一個結(jié)點(diǎn)。計(jì)算環(huán)形復(fù)雜度的方法:(1) 流圖中的環(huán)形復(fù)雜度V(G)=區(qū)域數(shù)。(2) 流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。(3) 流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。環(huán)形復(fù)雜度的用途:(1) 可以用于比較兩個算法的優(yōu)劣。對測試難度的一種定量度量。(2) 作為模塊規(guī)模的精確限度。環(huán)形復(fù)雜度高的程序往往是最困難、最容易出問題的程序。實(shí)踐表明,模塊規(guī)模以V(G)10為宜。7.1 軟

28、件測試基礎(chǔ)根本目標(biāo)盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。軟件測試準(zhǔn)則(1) 所有測試都應(yīng)該能追溯到用戶需求。(2) 應(yīng)該遠(yuǎn)在測試開始之前就制定出測試計(jì)劃。(3) 把Pareto原理應(yīng)用到軟件測試中。(測試發(fā)現(xiàn)的錯誤中的80%很可能是由程序中20%的模塊造成的。)(4) 應(yīng)該從“小規(guī)?!睖y試開始,并逐步進(jìn)行“大規(guī)?!睖y試(5) 窮舉測試是不可能的。(6) 為了達(dá)到最佳的測試效果,應(yīng)該由獨(dú)立的第三方從事測試工作。測試方法測試步驟(1) 模塊測試;(2) 子系統(tǒng)測試;(3) 系統(tǒng)測試;(4) 驗(yàn)收測試;(5) 平行運(yùn)行7.2 白盒測試技術(shù)邏輯覆蓋 以程序的邏輯

29、結(jié)構(gòu)為基礎(chǔ)設(shè)計(jì)測試用例的技術(shù)。(1)語句覆蓋 使程序中每個語句至少執(zhí)行一次。(2)判定覆蓋 使每個判定的真假分支都至少執(zhí)行一次。(3)條件覆蓋 使每個判定的每個條件的可能取值至少執(zhí)行一次。(4)判定/條件覆蓋 每個條件的所有可能取值至少執(zhí)行一次;使每個判定的真假分支都至少執(zhí)行一次。(5)條件組合覆蓋 所有可能的條件取值組合至少執(zhí)行一次。滿足條件組合覆蓋的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。覆蓋標(biāo)準(zhǔn)相對較強(qiáng),但是也不意味著所有的路徑都能被執(zhí)行到。(6)路徑覆蓋 使程序中每條可能路徑都至少執(zhí)行一次??刂平Y(jié)構(gòu)測試基本路徑測試(常用)第1步:畫出程序流圖 第2步:計(jì)算程序的環(huán)形

30、復(fù)雜度P (表示程序基本路徑集中的獨(dú)立路徑數(shù)的上限)第3步:確定獨(dú)立路徑的基本集合第4步:從該基本集合導(dǎo)出測試用例第5步:執(zhí)行測試用例第6步:寫測試報告條件測試 條件成分的類型包括布爾算符、布爾變量、布爾括弧(括住簡單條件或復(fù)合條件)、關(guān)系算符及算術(shù)表達(dá)式。循環(huán)測試 (1)簡單循環(huán);(2)嵌套循環(huán);(3)串接循環(huán)7.3 黑盒測試技術(shù)黑盒測試著重測試軟件功能。黑盒測試并不能取代白盒測試,它是與白盒測試互補(bǔ)的測試方法,它很可能發(fā)現(xiàn)白盒測試不易發(fā)現(xiàn)的其他類型的錯誤。黑盒測試力圖發(fā)現(xiàn)下述類型的錯誤: 功能不正確或遺漏了功能; 界面錯誤; 數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤;性能錯誤; 初始化和終止錯誤。

31、黑盒測試技術(shù):(1)等價劃分法:把程序的輸入域劃分成若干個數(shù)據(jù)類,據(jù)數(shù)據(jù)類導(dǎo)出測試用例。(2)邊界值分析法。(3)錯誤推測法。(4)因果圖法等9.1 面向?qū)ο蟮母拍?)對象 對象是封裝了數(shù)據(jù)和行為的通信單位。2)類 類是對具有相同數(shù)據(jù)和相同操作的一組對象的定義,即類是對具有相同屬性和行為的對象的描述。3)消息 對象之間進(jìn)行通信的構(gòu)造或結(jié)構(gòu)。消息分為請求消息和完成消息兩種 (由消息模式描述)。消息模式:發(fā)送對象、接收對象、內(nèi)容4)封裝 面向?qū)ο蟮囊粋€重要原則。封裝是指在面向?qū)ο蟮某绦蛑?,把?shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部。5)繼承 面向?qū)ο竺枋鲱愔g相似性的重要機(jī)制,子類自動地共享基類中

32、定義的數(shù)據(jù)和方法的機(jī)制。6)多態(tài)性 允許每個對象以自己最合適的方式去響應(yīng)共同的消息,從而增強(qiáng)軟件的靈活性和可復(fù)用性。7)重載 函數(shù)重載是指在同一作用域內(nèi)具有多個同名的函數(shù),這些函數(shù)具有若干個不同的參數(shù)特征;運(yùn)算符重載是指同一個運(yùn)算符可以施加于不同類型的操作數(shù)上。9.4 對象模型對象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。它是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖的基本符號1. 定義類UML中類的圖形符號為長方形,分成上、中、下3個區(qū)域(下面兩個區(qū)域可省略),分別放類的名字、屬性和服務(wù)。類名應(yīng)該是富于描述性的、簡潔的而且無二義性的。2. 定義屬性UML

33、描述屬性的語法格式如下:可見性 屬性名: 類型名=初值 性質(zhì)串屬性的可見性(即訪問性):共有的(public)、私有的(private)和保護(hù)的(protected),分別用加號(+)、減號(-)和井號(#)表示。3. 定義服務(wù)服務(wù)也就是操作,UML描述操作的語法格式如下:可見性 操作名(參數(shù)表): 返回值類型性質(zhì)串參數(shù)表是用逗號分隔的形式參數(shù)的序列。描述一個參數(shù)的語法: 參數(shù)名:類型名=默認(rèn)值表示關(guān)系的符號1. 關(guān)聯(lián) 關(guān)聯(lián)表示兩個類的對象之間存在某種語義上的聯(lián)系。1)普通關(guān)聯(lián):類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。2)關(guān)聯(lián)的角色:在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起

34、的作用),如果沒有顯式標(biāo)出角色名,則意味著用類名作為角色名。3)限定關(guān)聯(lián):通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中,可以把模型中的重?cái)?shù)從一對多變成一對一,或從多對多簡化成多對一。4)關(guān)聯(lián)類:說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。關(guān)聯(lián)類與一般類一樣,也有屬性、操作和關(guān)聯(lián)。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。2. 聚集 也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系1)共享聚集:在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成。一般聚集和共享聚集的圖示符號,都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一個空心菱形。2)組合聚集:如

35、果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在價值了),則該聚集稱為組合聚集(簡稱為組成)。組成關(guān)系用實(shí)心菱形表示。3. 泛化 就是通常所說的繼承關(guān)系,它是通用元素和具體元素之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還可以附加一些其他信息。用一端為空心三角形的連線表示泛化關(guān)系,三角形的頂角緊挨著通用元素。1)普通泛化:普通泛化與繼承基本相同。沒有具體對象的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子類)的公共屬性和行為。圖示抽象類時,在類名下方附加一個標(biāo)記值abstract。2)受限泛化:給泛化關(guān)系附加約束條件,以進(jìn)一步說明該泛化關(guān)系的使用方法或擴(kuò)充方法。3)多重繼承:一個子類可以同時多次繼承同一個上層基類。9.5 動態(tài)模型動態(tài)模型表示瞬時的、行為化的系統(tǒng)的“控制”性質(zhì),它規(guī)定了對象模型中的對象的合法變化序列。9.6 功能模型用例圖 一幅用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系。1)用例:表示系統(tǒng)提供的服務(wù),主要刻畫系統(tǒng)如何被參與者使用。Use Cas

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論