軟件工程導(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頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

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

5、速原型模型、增量模型、螺旋 模型、噴泉模型、RUP等。軟件過程模型的選擇基于項目和應(yīng)用的性質(zhì)、采用的方法工具 以及需要的控制和交付的產(chǎn)品。瀑布模型(Waterfall Model ):傳統(tǒng)瀑布模型:規(guī)定了各項軟件工程活動,包括:制定開發(fā)計 劃、需求分析和說明、軟件設(shè)計、程序編碼、測試、運(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ì)驗證。2、瀑布

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

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

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

9、, 必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié) 構(gòu)設(shè)計得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(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)驗和專門知識, 否則風(fēng)險更大。適合場合:主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項目,隨著過程的進(jìn)展演 化,開發(fā)者和用戶能夠更好地識別和對待每一個演

10、化級別上的風(fēng) 險。只有內(nèi)部開發(fā)的項目,才能在風(fēng)險過大時方便地中止項目。如果進(jìn)行風(fēng)險分析的費(fèi)用接近整個項目的經(jīng)費(fèi)預(yù)算,則風(fēng)險 分析是不可行的。噴泉模型(Fountain Model)特點(diǎn):噴泉模型的各階段均采用了 “對象”這一統(tǒng)一范式, 整個過程看起來像噴泉從噴出到落下再噴出的周而復(fù)始過程產(chǎn) 生的光滑水柱,體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征。適合場合:噴泉模型主要用于面向?qū)ο蟮能浖椖?,軟件?某個部分通常被重復(fù)多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn) 的軟件成分。Rational統(tǒng)_軟件開發(fā)過程RUP軟件開發(fā)生命周期是一個二維的軟件開發(fā)模型。橫軸 代表時間,體現(xiàn)生命周期特征;縱軸代表工作流

11、,體現(xiàn)了開發(fā)過 程的靜態(tài)結(jié)構(gòu)。RUP中的軟件生命周期在時間上被分解為四個順序的階段: 初始、細(xì)化、構(gòu)造和移交。每個階段圍繞著9個核心工作流分別迭代。適合場合:可開發(fā)或大或小、分布在各個領(lǐng)域的項目,表 明了 RUP的多功能性和廣泛適應(yīng)性。適合于需求不穩(wěn)定、不全 面的軟件項目開發(fā)。1. 5小結(jié)軟件=程序+數(shù)據(jù)+文檔軟件危機(jī):原因,現(xiàn)象,辦法(軟件工程學(xué))軟件工程:指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的一門工程科學(xué)軟件工程3個要素:方法、工具和過程。軟件生命周期:定義,開發(fā),運(yùn)行維護(hù)軟件過程:瀑布模型,快速原型模型、增量模型、螺旋模型、噴泉模型、RUP等21可行性研究目的:用最小的代價在盡可能短的時間內(nèi)確定問題

12、是否能夠解決。2.2可行性研究的主要內(nèi)容(1) 技術(shù)可行性(2) 經(jīng)濟(jì)可行性(3) 操作可行性(4) 法律可行性(5) 社會可行性2.3數(shù)據(jù)流圖1、一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸 出的過程中所經(jīng)受的變換。2、它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程,是 系統(tǒng)邏輯功能的圖形表示。3、設(shè)計數(shù)據(jù)流圖時只需考慮系統(tǒng)必須完成的基本邏輯功能, 完全不需要考慮怎樣具體地實(shí)現(xiàn)這些功能。數(shù)據(jù)流圖四種基本符號O或數(shù)據(jù)加工/處理/變換或a數(shù)據(jù)源點(diǎn)或終點(diǎn)(外部實(shí)體)(或姻存儲文件(靜止畑軸)數(shù)據(jù)流(data flow)(運(yùn)動中的 數(shù)據(jù))畫數(shù)據(jù)流圖的方法:1、自頂向下,逐步求精2、先畫頂層DFD,

13、描繪系統(tǒng)的整體邏輯概貌;頂層流圖僅 包含一個加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入 數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù)。3、其次畫中間層流圖:對上層父圖的處理的細(xì)化,形成子 圖。底層流圖是指其加工不需要在做分解的數(shù)據(jù)流圖,它處在最 底層。注意:數(shù)據(jù)流圖應(yīng)該分層,并且在把功能級數(shù)據(jù)流圖細(xì)化后 得到的處理超過9個時,應(yīng)該采用畫分圖的辦法。當(dāng)把一個處理 分解為一系列處理時,分解前和分解后的輸入輸出數(shù)據(jù)流必須相 同!【據(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ù)流圖中通常僅僅

14、使用4種基本符號,而且不 包含任何有關(guān)物理實(shí)現(xiàn)的細(xì)節(jié),因此,絕大多數(shù)用戶都可以理解 和評價它。4、數(shù)據(jù)流圖著重描繪系統(tǒng)所完成的功能,其另一個主要用 途是作為輔助物理系統(tǒng)的分析和設(shè)計的工具。2.4 小結(jié)1、可行性研究的任務(wù):技術(shù),經(jīng)濟(jì),社會2、可行性研究過程:8步驟3、數(shù)據(jù)流圖:源點(diǎn)或終點(diǎn),處理,數(shù)據(jù)存儲和數(shù)據(jù)流4、數(shù)據(jù)字典:是分析階段的工具,包括流,元素,存儲,處 理4類元素組成。5、成本/效益分析:從經(jīng)濟(jì)角度判斷是否繼續(xù)投資于這項工 程的主要依據(jù)。3.1需求分析的具體任務(wù)確定對系統(tǒng)的綜合要求:1、功能需求2、性能需求3、可靠性和可用性需求4、出錯處理需求5、接口需求6、約束7、逆向需求&將來

15、可能提出的要求分析系統(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ā)計劃:由分析過程準(zhǔn)確地估計系統(tǒng)的成本和進(jìn)度,修正以前制定的開 發(fā)計劃。3.2及用戶溝通獲取協(xié)求的方法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ù)

16、項只是一個簡單的 數(shù)或字符串,而不是一個組項或重復(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)方式。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)的控制信息。10/25軟件工程導(dǎo)論知識

17、點(diǎn)概要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)的動作,exit事件指定退 出該狀態(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)

18、守衛(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è)計過程1. 設(shè)想供選擇的方案;2.選取合理的方案;3.推薦最佳方 案;4.功能分解;5.設(shè)計軟件結(jié)構(gòu);6.設(shè)計數(shù)據(jù)庫;7.制定測 試計劃;8.書寫文檔;9.審查和復(fù)審5.2設(shè)計原理模塊化1、把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個模塊完 成一個子功能,這些模塊集成起來構(gòu)成一個整體,可以完成指定的 功能以滿足用戶的需求。2、模塊是由邊界元素限定的相鄰程序元素的序列,而且有一 個總體標(biāo)識符代表它。模塊是構(gòu)成程序的基本構(gòu)件

19、。3、過程、函數(shù)、子程序和宏等,都可作為模塊。4、面向?qū)ο蠓椒▽W(xué)中的對象是模塊,對象內(nèi)的方法(或稱為 服務(wù))也是模塊。模塊化的好處:1、可以降低軟件開發(fā)的難度;2、可以使程序結(jié)構(gòu)清晰,增加易讀性和易修改性;3、模塊化還有利于提高代碼的可重用性及團(tuán)隊合作開發(fā) 大型軟件的可行性。抽象抽象是人類在解決復(fù)雜問題時經(jīng)常采用的一種思維方式,它是 指將現(xiàn)實(shí)世界中具有共性的一類事物的相似的、本質(zhì)的方面集中概 括起來,而暫時忽略它們之間的細(xì)節(jié)差異。結(jié)構(gòu)化程序中自頂向下、 逐步求精的模塊劃分思想正是人類思維中運(yùn)用抽象方法解決復(fù)雜 問題的體現(xiàn)。逐步求精定義:為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的 考慮。好

20、處:1、降低了軟件開發(fā)中每個階段的工作難度;2、簡化了軟件的設(shè)計和實(shí)現(xiàn)過程;3、有助于提高軟件的可讀性、可測試性和可維護(hù)性;4、在程序設(shè)計中運(yùn)用抽象的方法還能夠提高代碼的可重用性。 信息隱藏和局部化1、信息隱藏:設(shè)計和確定模塊,使得一個模塊內(nèi)包含的信息(過 程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。目的:主要是為了提高模塊的獨(dú)立性,減少將一個模塊中 的錯誤擴(kuò)散到其他模塊的機(jī)會。模塊之間的信息傳遞只能通過 合法的調(diào)用接口來實(shí)現(xiàn)。信息隱蔽對提高軟件的可讀性和可維 護(hù)性都是非常重要的。2、局部化:是指把一些關(guān)系密切的軟件元素物理地放得彼此 靠近。如模塊中的局部數(shù)據(jù)元素是局部化的一個例子。

21、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ú)立的模塊)的 軟件;獨(dú)立的模塊比較容易測試和維護(hù)。4、耦合:(1) 數(shù)據(jù)耦合:若兩個模塊之間僅通過模塊參數(shù)交換信息, 且交換的信息全部為簡單數(shù)據(jù),則稱這種耦合為數(shù)據(jù)耦合。耦 合性最低。(2) 控制耦合:若模塊之間交換的信息中包含有控制信息 (盡管有時控制

22、信息是以數(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)部;兩個模塊有 一部分程序代碼重疊;一個模塊有多個入口 (這意味著一個模 塊有幾種功能)。(6) 盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制 公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。5、內(nèi)聚:低內(nèi)聚:偶然內(nèi)聚,邏輯內(nèi)聚,時間內(nèi)聚中內(nèi)聚:過程

23、內(nèi)聚,通信內(nèi)聚高內(nèi)聚:順序內(nèi)聚,功能內(nèi)聚6、高內(nèi)聚,低耦合6.1結(jié)構(gòu)程序設(shè)計1、結(jié)構(gòu)程序設(shè)計技術(shù):是實(shí)現(xiàn)質(zhì)量要求的基本保證,是詳細(xì) 設(shè)計的邏輯基礎(chǔ)。2、結(jié)構(gòu)程序設(shè)計定義: 一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基 本的控制結(jié)構(gòu)進(jìn)行連接; 并且每個代碼塊只有一個入口和一個出口。-3、只用三種基本的控制結(jié)構(gòu)(順序,選擇,循環(huán))就能實(shí)現(xiàn)任何單 入口單出口的程序。從而實(shí)現(xiàn)結(jié)構(gòu)程序設(shè)計。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è)計的特點(diǎn):(1) 由三種基本結(jié)構(gòu)順序

24、組成的,可以解決任何復(fù)雜的問 題。(2) 程序內(nèi)不存在無規(guī)律的轉(zhuǎn)向,只在基本結(jié)構(gòu)內(nèi)才允許 存在分支和向前或向后的跳轉(zhuǎn)。6.2過程設(shè)計的工具(1)過程設(shè)計是設(shè)計模塊的詳細(xì)步驟(算法),是詳細(xì)設(shè)計階段 應(yīng)完成的主要工作。(2)過程設(shè)計的工具描述程序處理過程的工具。詳細(xì)設(shè)計階段的描述工具程序流程圖=N-S圖PAD圖判定表/判定樹描述工具PDL偽代碼程序流程圖的優(yōu)缺點(diǎn):主要優(yōu)點(diǎn):對控制流程的描繪很簡明直觀、易于理解,便于初 學(xué)者掌握。主要缺點(diǎn):(1) 本質(zhì)上不是逐步求精的好工具。-改進(jìn):PAD圖(2) 用箭頭代表控制流,描述程序時可以隨意跳轉(zhuǎn)。改進(jìn):N-S圖(3) 不易表示數(shù)據(jù)結(jié)構(gòu)。改 : PAD 圖

25、(4) 嵌套的條件選擇表示不清。改進(jìn):判定樹.判定表21 / 25GD起止框 判斷框處理框口輸入/輸出框注釋框流向線O連接點(diǎn)NS圖為了避免流程圖在描述程序時的隨意跳轉(zhuǎn),握岀了 N-s圖代替流 程圖。N-S圖由而且僅由順序.選擇.循環(huán)三種基本結(jié)構(gòu)組成.塊1塊2XCaseM /塊塊2塊3多分支當(dāng)條件成立時塊直到鈿竝時當(dāng)型循環(huán)(while)PAD圖(問題分析圖)pad圖的特點(diǎn):(1)能展現(xiàn)算法的層次結(jié)構(gòu);(2) 表示形式直觀易懂;(3) 既可用于表示程序邏輯,又可用于描述數(shù)據(jù)結(jié)構(gòu); 支持自頂向下,逐步求精的過程。r順序 結(jié)構(gòu)選擇結(jié)構(gòu)土 /判定表PAD圖基本符號當(dāng)算法中包含多重嵌套的條件選擇時,用程序

26、流程圖、盒圖、 PAD圖等都不易清楚地描述,然而,判定表能夠清晰地表示復(fù)雜 的條件組合及應(yīng)做的動作之間的對應(yīng)關(guān)系。判定表的優(yōu)缺點(diǎn):優(yōu)點(diǎn):判定表能夠簡潔而無歧義地描述處理規(guī)則??梢詫?判定表進(jìn)行校驗或化簡。缺點(diǎn):并不適于作為一種通用的設(shè)計工具,直觀性不夠。判定樹判定樹是用來表達(dá)加工邏輯的一種工具。比判定表更直觀,是 一種常用的系統(tǒng)分析和設(shè)計工具。判定樹的優(yōu)缺點(diǎn):優(yōu)點(diǎn):比判定表更直觀。缺點(diǎn):(1)不夠簡潔,數(shù)據(jù)元素重復(fù)多次地寫。(2)畫判定樹時分枝的次序?qū)啙嵆绦蛴杏绊?。PDL程序設(shè)計語言(1) 是一種非形式化、比較靈活的混雜語言。也稱為偽碼。(2) 用于描述模塊內(nèi)部過程的具體算法,以便在開發(fā)人員

27、之間 比較精確的進(jìn)行交流。PDL的優(yōu)缺點(diǎn):優(yōu)點(diǎn):(1) 可以作為注釋直接插入到源程序中。有利于PDL 和源程序保持一致性。(2) PDL編寫方便??梢杂勺詣犹幚沓绦?qū)DL生成程序代碼。 缺點(diǎn):(1) 不如圖形工具形象直觀。(2) 描述復(fù)雜的條件組合及動作間的對應(yīng)關(guān)系時,不 如判定表清晰簡單。6.5程序復(fù)雜程度的定it度畳McCabe方法基本原理:根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程 度(稱為程序的環(huán)形復(fù)雜度)。采用“流圖”:僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具 體操作及分支或循環(huán)的具體條件?;静襟E:(1) 將程序流程圖或PDL等映射為流圖。(2) 基于流圖計算環(huán)形復(fù)雜度,以定

28、量度量程序的復(fù)雜程度。 流圖定義:僅僅描繪程序的控制流程基本符號:一圓:表示結(jié)點(diǎn),代表一條或多條語句。箭頭線:邊區(qū)域:由邊和圓圍成的面積基本原則:合并原則:順序處理框和菱形判定框、順序處理框序列 分別合并映射成流圖中的一個結(jié)點(diǎn)。分解原則:復(fù)合條件分解為若干個簡單條件,每個簡單 條件映射成流圖中一個結(jié)點(diǎn)。其他情況下的框映射成流圖中的一個結(jié)點(diǎn)。 計算環(huán)形復(fù)雜度的方法:(1)流圖中的環(huán)形復(fù)雜度V(G)=區(qū)域數(shù)。流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中 邊的條數(shù),N是結(jié)點(diǎn)數(shù)。流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中 判定結(jié)點(diǎn)的數(shù)目。環(huán)形復(fù)雜度的用途:(1) 可以用于比較兩個

29、算法的優(yōu)劣。對測試難度的一種定 量度量。(2) 作為模塊規(guī)模的精確限度。環(huán)形復(fù)雜度高的程序往往 是最困難、最容易出問題的程序。實(shí)踐表明,模塊規(guī)模以V(G) W 10為宜。7.1軟件測試基礎(chǔ)根本目標(biāo)盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質(zhì)量 的軟件系統(tǒng)交給用戶使用。軟件測試準(zhǔn)則(1) 所有測試都應(yīng)該能追溯到用戶需求。(2) 應(yīng)該遠(yuǎn)在測試開始之前就制定出測試計劃。把Pareto原理應(yīng)用到軟件測試中。(測試發(fā)現(xiàn)的錯誤中的 80%很可能是由程序中20%的模塊造成的。)(4) 應(yīng)該從“小規(guī)?!睖y試開始,并逐步進(jìn)行“大規(guī)模”測試(5) 窮舉測試是不可能的。(6) 為了達(dá)到最佳的測試效果,應(yīng)該由

30、獨(dú)立的第三方從事測試 工作。測試方法Z靜態(tài)測試方法軟件測試的人工測試方法計算機(jī)輔助靜態(tài)分析方進(jìn)策略和方法白盒測試方袪動態(tài)測試方注黑盒測試方法測試步驟(1)模塊測試;(2)子系統(tǒng)測試;(3)系統(tǒng)測試;(4)驗收測試;(5) 平行運(yùn)行7.2白盒測試技術(shù)邏輯覆蓋以程序的邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計測試用例的技術(shù)。(1) 語句覆蓋使程序中每個語句至少執(zhí)行一次。(2) 判定覆蓋使每個判定的真假分支都至少執(zhí)行一次。(3) 條件覆蓋使每個判定的每個條件的可能取值至少執(zhí)行一次。(4) 判定/條件覆蓋每個條件的所有可能取值至少執(zhí)行一次;使 每個判定的真假分支都至少執(zhí)行一次。(5) 條件組合覆蓋所有可能的條件取值組合至少執(zhí)

31、行一次。滿 足條件組合覆蓋的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判 定/條件覆蓋標(biāo)準(zhǔn)。覆蓋標(biāo)準(zhǔn)相對較強(qiáng),但是也不意味著所有的路 徑都能被執(zhí)行到。軟件工程導(dǎo)論知識點(diǎn)概要(6)路徑覆蓋使程序中每條可能路徑都至少執(zhí)行一次??刂平Y(jié)構(gòu)測試基本路徑測試(常用)第1步:畫出程序流圖第2步:計算程序的環(huán)形復(fù)雜度P (表示程序基本路徑邏輯覆蓋測試的6種標(biāo)準(zhǔn)的比較發(fā)現(xiàn)錯誤 的能力標(biāo)準(zhǔn)含義1(弱)語句覆蓋每條語句至少執(zhí)行一次2判走覆蓋每一判定的每個分支至少執(zhí)行一次3條件覆蓋每一判定中的每個條件,分別按41真V“假”至少各執(zhí)行次4判定/條件覆 蓋同時滿足判定覆蓋和條件覆蓋的要求5條件組合覆 蓋求岀判定中所有條件的

32、各種可能組合 值,每一可能的條件組合至少執(zhí)行一次6()路徑覆蓋使程序中每條可能路徑都至少執(zhí)行一次77集中的獨(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) 的其他類型的錯誤。23 / 25軟件工程導(dǎo)論知識點(diǎn)概要黑盒測試力圖發(fā)現(xiàn)下述類型的

33、錯誤: 功能不正確或遺漏了功能; 界面錯誤; 數(shù)據(jù)結(jié)構(gòu)錯誤或外部數(shù)據(jù)庫訪問錯誤; 性能錯誤; 初始化和終止錯誤。黑盒測試技術(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ū)ο蟮某?序中,

34、把數(shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對象內(nèi)部。5)繼承面向?qū)ο竺枋鲱愔g相似性的重要機(jī)制,子類自動地 共享基類中定義的數(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ū) 域(

35、下面兩個區(qū)域可省略),分別放類的名字、屬性和服務(wù)。 類名應(yīng)該是富于描述性的、簡潔的而且無二義性的。2. 定義屬性UML描述屬性的語法格式如下:可見性屬性名:類型名=初值性質(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):類

36、及類之間存在連接關(guān)系就可以用普通關(guān) 聯(lián)表示。2)關(guān)聯(lián)的角色:在任何關(guān)聯(lián)中都會涉及到參及此關(guān)聯(lián)的 對象所扮演的角色(即起的作用),如果沒有顯式標(biāo)出角色名, 則意味著用類名作為角色名。3)限定關(guān)聯(lián):通常用在一對多或多對多的關(guān)聯(lián)關(guān)系中, 可以把模型中的重數(shù)從一對多變成一對一,或從多對多簡化成 多對一 O4)關(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)系中處于部分方的對象可同時參 及

37、多個處于整體方對象的構(gòu)成。一般聚集和共享聚集的圖示符 號,都是在表示關(guān)聯(lián)關(guān)系的直線末端緊挨著整體類的地方畫一 個空心菱形。2)組合聚集:如果部分類完全隸屬于整體類,部分及整 體共存,整體不存在了部分也會隨之消失(或失去存在價值了), 則該聚集稱為組合聚集(簡稱為組成)。組成關(guān)系用實(shí)心菱形 表示。3. 泛化就是通常所說的繼承關(guān)系,它是通用元素和具體元素 之間的一種分類關(guān)系。具體元素完全擁有通用元素的信息,并且還 可以附加一些其他信息。用一端為空心三角形的連線表示泛化關(guān)系, 三角形的頂角緊挨著通用元素。1)普通泛化:普通泛化及繼承基本相同。沒有具體對象 的類稱為抽象類。抽象類通常作為父類,用于描述其他類(子 類)的公共屬性和行為。圖示抽象類時,在類名下方附加一個 標(biāo)記值abstract o2)受限泛化:給泛化關(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)用例

溫馨提示

  • 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

提交評論