




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章軟件工程概論1軟件工程定義軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法。是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。軟件工程學(xué)科是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。軟件工程是一類求解軟件的工程。2,軟件工程包括三個要素:方法、工具和過程。方法:“如何做”工具:CASE,是軟件開發(fā)環(huán)境中最重要的組成部分。過程:將方法和工具綜合起來以達(dá)到合理、及時的進(jìn)行計(jì)算機(jī)軟件開發(fā)的目的。3,軟件危機(jī)指在計(jì)算機(jī)軟件開發(fā)和維護(hù)過程中所遇到的一系列問題:1、不能正確地估計(jì)軟件開發(fā)成本和進(jìn)度,致使實(shí)際開發(fā)成本往往高出預(yù)算很多。2、軟件產(chǎn)品不可靠,滿足不了用戶的需求,甚至無法使用。3、交付使用的軟件不易演化
2、,以至于人們不得不重復(fù)開發(fā)類似的軟件。4、軟件生產(chǎn)率低下,遠(yuǎn)遠(yuǎn)滿足不了社會發(fā)展的需求。4,軟件工程是為了解決軟件危機(jī)而產(chǎn)生的。5,軟件工程目標(biāo):生產(chǎn)具有正確性、可用性以及開銷合算的產(chǎn)品。第二章軟件開發(fā)模型1軟件生存周期:軟件生命周期實(shí)質(zhì)上是大型系統(tǒng)開發(fā)過程中各項(xiàng)目階段的一種表示方法,如同任何事物一樣,軟件也有一個孕育、誕生、成長、成熟、衰亡的生存過程。根據(jù)這一思想,把上述基本的過程活動進(jìn)一步展開,可以得到軟件生命期的6個步驟,即制定計(jì)劃、需求分析、設(shè)計(jì)、程序編碼、測試及運(yùn)行維護(hù)。軟件生命期模型是從軟件項(xiàng)目需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個生命周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程、
3、活動和任務(wù)的結(jié)構(gòu)框架。2,軟件開發(fā)過程模型(軟件生存周期模型),是把軟件生存周期中軟件生產(chǎn)活動的有序流程用一個合理的框架開發(fā)模型規(guī)范描述。軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。軟件開發(fā)過程模型是一種軟件過程的抽象表示法,它從一個特定的角度表現(xiàn)一個開發(fā)過程。軟件過程模型主要是根據(jù)軟件的類型、規(guī)模,特別是軟件的開發(fā)方法、開發(fā)環(huán)境等多種因素確立模型。主要有:原型模型、演化模型、增量模型、瀑布模型。3,軟件過程各階段任務(wù)(了解)各種軟件過程模型雖然有所不同,一般都由軟件定義、軟件開發(fā)和軟件維護(hù)三個時期組成,每個時期又可由多個階段(子階段)組成。軟件定義時期的活動是弄清軟件“做什么”,軟
4、件開發(fā)時期的活動是集中解決軟件“怎樣做”,軟件維護(hù)時期的活動是聚焦于軟件的“修改/完善”,它們的主要活動特征可以概括為 “ What-How-Change ”。1,軟件定義時期是了解用戶(或客戶)提出的需求、確定項(xiàng)目的總目標(biāo)、考察和分析項(xiàng)目的可行性、導(dǎo)出實(shí)現(xiàn)項(xiàng)目目標(biāo)應(yīng)該采用的策略,系統(tǒng)的功能,并估計(jì)該項(xiàng)目需要的資源和成本,制定工程進(jìn)度表等。軟件定義時期可以劃分成問題定義、可行性研究、需求分析和開發(fā)計(jì)劃四個階段,其中,最核心的是需求分析階段,所以,軟件定義時期也可以稱為需求分析時期。2,軟件開發(fā)時期的任務(wù)是設(shè)計(jì)和實(shí)現(xiàn)已定義的,并經(jīng)過需求分析的軟件系統(tǒng)。軟件開發(fā)時期通常劃分成軟件設(shè)計(jì)、軟件實(shí)現(xiàn)和軟
5、件測試三個階段。軟件測試也可以分解到軟件實(shí)現(xiàn)的各個活動中,可重新劃分成編碼和單元測試、集成測試、系統(tǒng)測試三個階段。甚至,還可以認(rèn)為軟件測試不是一個獨(dú)立的階段,因?yàn)樗鼞?yīng)該和所有軟件生產(chǎn)活動并行進(jìn)行。3,件維護(hù)時期(階段)任務(wù)是在整個軟件運(yùn)行時期內(nèi),當(dāng)發(fā)現(xiàn)錯誤時加以改正,以確保運(yùn)行正常;當(dāng)環(huán)境改變時修改軟件,以適應(yīng)新的環(huán)境;當(dāng)用戶有新要求時及時改進(jìn)軟件,以滿足需求等一系列維護(hù)活動。每一項(xiàng)維護(hù)活動一般都經(jīng)過提出(或報告)維護(hù)問題、分析維護(hù)要求、提出維護(hù)方案、審批維護(hù)方案、確定維護(hù)計(jì)劃、修改軟件設(shè)計(jì)、修改程序、測試/驗(yàn)收、維護(hù)報告等一系列環(huán)節(jié)(維護(hù)活動實(shí)質(zhì)是一次壓縮和簡化了的軟件定義和開發(fā)過程)。4,
6、瀑布模型(Waterfall Model)也稱線性順序模型。瀑布模型把開發(fā)過程分成固定的、相對獨(dú)立的各個階段,每個階段都有確定的、有限的任務(wù),而且在各個階段采用一些規(guī)范的開發(fā)方法和管理手段,力求保證軟件質(zhì)量和提高軟件生產(chǎn)率。該模型適用于需求非常清楚的軟件開發(fā)環(huán)境。圖5. 瀑布模型5,原型模型可分為:快速原型模型、拋棄式原型模型、演化式原型模型1,圖8. 拋棄式原型模型拋棄式原型模型建立原型的目的是,評價目標(biāo)系統(tǒng)的某一個或某一些特性,以便更準(zhǔn)確地確定需求,或者更嚴(yán)格地驗(yàn)證設(shè)計(jì)方案。使用完之后就把該原型系統(tǒng)拋棄掉,然后再重新構(gòu)造正式的目標(biāo)系統(tǒng)。拋棄式原型模型本質(zhì)上仍屬于瀑布模型,建立原型系統(tǒng)只不過
7、是“需求分析”和“有效性驗(yàn)證”的一種輔助手段,需求分析階段結(jié)束時原型系統(tǒng)的生存周期也就終止。6,增量模型(Incremental Model)把軟件描述、設(shè)計(jì)、實(shí)現(xiàn)活動分解成一系列相互有聯(lián)系的增量構(gòu)件的迭代開發(fā),是瀑布模型順序特征和快速原型模型迭代特征相結(jié)合的一種軟件構(gòu)件化的模型。增量式的開發(fā)過程,首先根據(jù)客戶需要提供的服務(wù)的優(yōu)先次序,確定一系列交付增量,每個增量提供系統(tǒng)功能的一個子集。隨著開發(fā)過程的進(jìn)展,每次迭代產(chǎn)生一個可發(fā)布的(可執(zhí)行的)軟件增量構(gòu)件。增量模型是一種非整體開發(fā)的模型。是一種進(jìn)化式的開發(fā)過程。7,螺旋模型將開發(fā)過程分為幾個螺旋周期,每個螺旋周期可分為4個工作步驟: 第一,確定
8、目標(biāo)、方案和限制條件; 第二,評估方案、標(biāo)識風(fēng)險和解決風(fēng)險; 第三,開發(fā)確認(rèn)產(chǎn)品; 第四,計(jì)劃下一周期工作。對大型軟件,需要多個原型描述系統(tǒng)的生存期,適于螺旋模型開發(fā)方法,將瀑布模型與原型化模型結(jié)合起來,并加入風(fēng)險分析討論。圖11. 螺旋模型結(jié)構(gòu)第三章需求分析1軟件需求說明書是用戶驗(yàn)證的一個標(biāo)準(zhǔn)。2需求獲取的內(nèi)容分為:(了解)l 物理環(huán)境:對系統(tǒng)運(yùn)行時所處的環(huán)境的要求。l 界面:軟件與用戶界面的友好性。l 用戶或人的因素:對用戶的要求。l 功能:你的系統(tǒng)什么的干活?l 文檔:文字說明等。l 數(shù)據(jù):對數(shù)據(jù)的各種要求。l 資源:軟件運(yùn)行時所需的數(shù)據(jù)、軟件、內(nèi)存空間等各項(xiàng)資源。l 安全性:*l 質(zhì)量
9、保證:可靠性和如何對付出錯等。3,需求工程的基本活動包括:獲取需求;深入實(shí)際,在充分理解用戶需求的基礎(chǔ)上,獲取系統(tǒng)需求。 需求分析與建模;進(jìn)行需求建模、對模型或原型進(jìn)行分析。確認(rèn)需求;確保需求說明準(zhǔn)確、完整地表達(dá)系統(tǒng)的主要特性。 進(jìn)化需求??蛻舻男枰偸遣粩啵ㄟB續(xù))增長的 ,進(jìn)化需求是必要的。 4,需求分析方法1結(jié)構(gòu)化分析方法是一種以數(shù)據(jù)、數(shù)據(jù)的封閉性為基礎(chǔ),從問題空間到某種表示的映射方法,由數(shù)據(jù)流圖(DFD圖)表示。2信息建模法 是從數(shù)據(jù)的角度對現(xiàn)實(shí)世界建立系統(tǒng)的信息模型,基本工具是ER圖。是由實(shí)體、屬性和關(guān)系組成的網(wǎng)絡(luò)圖。E-實(shí)體,是一個或一組對象; R-關(guān)系,實(shí)體之間聯(lián)系或交互作用。3面
10、向?qū)ο蟮姆治龇椒?面向?qū)ο蠓治龇椒?OOA)的關(guān)鍵是識別問題域內(nèi)的對象,分析它們之間的關(guān)系,并建立起三類模型。5,結(jié)構(gòu)化需求分析方法在結(jié)構(gòu)化需求分析方法中模型表示工具有:數(shù)據(jù)流圖、數(shù)據(jù)字典、小說明。l 數(shù)據(jù)流圖:是一種描述數(shù)據(jù)變換的圖形工具,系統(tǒng)接受輸入的數(shù)據(jù),經(jīng)過一系列的變換(加工),最后輸出結(jié)果。l 數(shù)據(jù)字典:以一種準(zhǔn)確的和無二義的方式定義所有被加工引用的數(shù)據(jù)流和數(shù)據(jù)存儲。l 小說明:用于集中描述一個加工“做什么”。l 數(shù)據(jù)流圖在數(shù)據(jù)流圖中,加工、數(shù)據(jù)流、數(shù)據(jù)存儲、數(shù)據(jù)源和數(shù)據(jù)譚是數(shù)據(jù)流圖的基本成分。6,數(shù)據(jù)字典以一種準(zhǔn)確的和無二義的方式定義所有被加工引用的數(shù)據(jù)流和數(shù)據(jù)存儲。包含:l 數(shù)據(jù)
11、流條目;數(shù)據(jù)存儲條目;數(shù)據(jù)項(xiàng)條目7,實(shí)施步驟結(jié)構(gòu)化分析從本質(zhì)上說是一種抽象和分解技術(shù),“自頂向下、逐步求精”的過程。有了工具后(數(shù)據(jù)流圖、數(shù)據(jù)字典、小說明),我們來看看如何進(jìn)行結(jié)構(gòu)化分析:1確定系統(tǒng)邊界,畫出系統(tǒng)環(huán)境圖。2自頂向下,畫出各層數(shù)據(jù)流圖。3定義數(shù)據(jù)字典。4定義小說明。5匯總前面各步驟的結(jié)果。8,需求的可變性必須進(jìn)行驗(yàn)證。9,需求驗(yàn)證的內(nèi)容1有效性檢查指功能需求是否符合用戶所提出的需求。2一致性檢查系統(tǒng)功能描述及約束是否一致。3完備性檢查是否包含所有系統(tǒng)用戶的需求和約束。4可檢驗(yàn)性檢查是否能設(shè)計(jì)出一組驗(yàn)證方法,確定了檢驗(yàn)的標(biāo)準(zhǔn)。10,需求分析規(guī)格說明書是需求分析階段產(chǎn)生的一份最重要的
12、文檔,它以一種一致的、無二義的方式準(zhǔn)確的表達(dá)用戶的需求。有如下作用:1、作為軟件開發(fā)機(jī)構(gòu)和用戶之間一份事實(shí)上的技術(shù)合同書。2、作為軟件開發(fā)機(jī)構(gòu)下一步進(jìn)行設(shè)計(jì)和編碼的基礎(chǔ)。3、作為測試和驗(yàn)收目標(biāo)系統(tǒng)的依據(jù)。第四章 軟件設(shè)計(jì)1,軟件設(shè)計(jì)任務(wù)涉及多方面,可分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。2,軟件設(shè)計(jì)的目標(biāo)(如下圖所示)就是構(gòu)造一個高內(nèi)聚低耦合的軟件模型。3,軟件體系結(jié)構(gòu)確定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu)。體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)的第一個階段,該階段側(cè)重于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計(jì),而不關(guān)心模塊的內(nèi)部算法。4,軟件設(shè)計(jì)分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個階段。其工作流程可用下圖表示: 設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方
13、法的不同,有不同的設(shè)計(jì)文檔。 圖33. 軟件設(shè)計(jì)工作流程每個設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。5,以下經(jīng)過長期考驗(yàn)的設(shè)計(jì)準(zhǔn)則:軟件結(jié)構(gòu)的準(zhǔn)則;模塊化準(zhǔn)則;軟件獨(dú)立性準(zhǔn)則。1 軟件結(jié)構(gòu)的準(zhǔn)則:軟件結(jié)構(gòu)表示軟件的系統(tǒng)結(jié)構(gòu),是軟件模塊間關(guān)系的表示,均表示為層次關(guān)系。圖34. 軟件結(jié)構(gòu)示意圖有關(guān)指標(biāo): 深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù); 寬度:表示控制的總分布; 扇出數(shù):指一個模塊直接控制下屬的模塊個數(shù); 扇入數(shù):指一個模塊的直接上屬模塊個數(shù)。 一個好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度最大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。2,模塊化準(zhǔn)則:所謂模塊化就
14、是將系統(tǒng)劃分成若干模塊,每個模塊完成一個子功能,把這些模塊集中起來組成一個整體,以滿足所要求的整個系統(tǒng)的功能。我們利用模塊化來降低軟件復(fù)雜度。注意選擇分解的最佳模塊數(shù)。3,軟件獨(dú)立性準(zhǔn)則: 軟件獨(dú)立性的含義是指開發(fā)具有功能專一,模塊之無過多相互作用的模塊。又稱為模塊獨(dú)立性準(zhǔn)則。這種類型的模塊可以并行開發(fā),開發(fā)容易,能減少錯誤的影響,使模塊容易組合、修改及測試。軟件獨(dú)立性的度量標(biāo)準(zhǔn)是兩個定性指標(biāo):耦合性和內(nèi)聚性。(1)耦合性用于描述模塊之間聯(lián)系的緊密程度。耦合性的幾種類型:圖35. 耦合性的幾種類型從三個方面衡量塊間聯(lián)系大?。?l 方式 (直接或間接)l 類型(數(shù)據(jù)型、控制型、混合型)l 數(shù)量(
15、數(shù)量越大,塊間聯(lián)系越緊密。圖36. 三個方面間的聯(lián)系(1) 內(nèi)聚性 用于描述模塊內(nèi)部聯(lián)系的緊密程度。內(nèi)聚性的幾種類型: 圖37. 內(nèi)聚的類型6,從系統(tǒng)設(shè)計(jì)的角度出發(fā),軟件設(shè)計(jì)方法可分為3大類:1,面向數(shù)據(jù)流的設(shè)計(jì);2,面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),3,面向?qū)ο蟮脑O(shè)計(jì)。7,結(jié)構(gòu)化設(shè)計(jì)方法分為兩部分: 總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。l 總體設(shè)計(jì):確定系統(tǒng)的整體模塊結(jié)構(gòu)。任務(wù):解決系統(tǒng)的模塊結(jié)構(gòu),即分解模塊,確定模塊功能及系統(tǒng)模塊的層次結(jié)構(gòu)。文檔:模塊結(jié)構(gòu)圖及其模塊功能說明。1總體設(shè)計(jì)的目標(biāo):是把系統(tǒng)的功能需求分配給軟件結(jié)構(gòu),形成軟件的模塊結(jié)構(gòu)圖。如圖38所示:2總體設(shè)計(jì)的表示形式層次圖:總體設(shè)計(jì)常用的表示方法,用來描
16、繪軟件的層次結(jié)構(gòu)。HIPO圖:H圖+IPO圖。結(jié)構(gòu)圖:精確表達(dá)程序結(jié)構(gòu)的圖形表示方法。(模塊之間上下的聯(lián)系是調(diào)用關(guān)系)圖38. 軟件的模塊結(jié)構(gòu)圖3,結(jié)構(gòu)化設(shè)計(jì)方法可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。 從DFD圖導(dǎo)出初始的模塊結(jié)構(gòu)圖(SC):中心變換型(transform center) _ 變換分析; 事務(wù)處理型(transaction) _ 事務(wù)分析。 按照SD法設(shè)計(jì)總則,改進(jìn)模塊結(jié)構(gòu)圖。注意:模塊結(jié)構(gòu)圖不同于“框圖”。 軟件 層次性:反映軟件整體的性質(zhì) (結(jié)構(gòu)圖)過程性:反映局部的性質(zhì) (框圖)4,中心變換型的DFD圖:這類數(shù)據(jù)流圖可看成是對輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換而得到輸出數(shù)據(jù)的處理。 DFD圖可以明
17、顯分為“輸入處理輸出”三部分。,5,設(shè)計(jì)的準(zhǔn)則: (1) 好的設(shè)計(jì)的準(zhǔn)則:模塊化;抽象;耦合;內(nèi)聚耦合性是程序結(jié)構(gòu)中各個模塊之間相互關(guān)聯(lián)的度量,他取決于各個模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及那些信息通過接口。模塊化設(shè)計(jì)的目標(biāo)是希望建立模塊間耦合盡可能松散的系統(tǒng)。(耦合性最松散的是數(shù)據(jù)耦合) 內(nèi)聚是模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度。應(yīng)盡量增加內(nèi)聚性,它比減少耦合性更重要,應(yīng)當(dāng)把更多的注意力集中到提高模塊的內(nèi)聚程度上來。(內(nèi)聚最強(qiáng)的是功能內(nèi)聚)(2)啟發(fā)式規(guī)則1改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性 2模塊規(guī)模應(yīng)該適中 3深度、寬度、扇出和扇入應(yīng)適中4模塊的作用域應(yīng)該在控制域之內(nèi) 5力爭降低模塊接口的
18、復(fù)雜性 6模塊功能應(yīng)該可以預(yù)測6,結(jié)構(gòu)圖的描述能力比層次圖更強(qiáng),圖中的每一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能。方框之間的直線表示模塊的調(diào)用關(guān)系。1、模塊:在結(jié)構(gòu)圖中,模塊用矩形框表示,并用模塊的名字標(biāo)記它。2、模塊的調(diào)用關(guān)系和接口:兩個模塊之間用單向箭頭聯(lián)結(jié)。3、模塊間的信息傳遞:用尾端帶有空心圓的短箭頭表示數(shù)據(jù)信息,用尾端帶有實(shí)心圓的短箭頭表控制信息。4、兩個輔助符號:當(dāng)模塊M有條件的調(diào)用另一個模塊時在箭頭尾部標(biāo)以一個菱形符號。當(dāng)一個模塊反復(fù)的調(diào)用模塊A、B、C時,在調(diào)用箭頭尾部標(biāo)以一個弧形符號。結(jié)構(gòu)圖例圖48.生產(chǎn)最佳解的一般結(jié)構(gòu)l 詳細(xì)設(shè)計(jì):給出軟件模塊結(jié)構(gòu)中各模塊的內(nèi)部過
19、程描述(算法)。對模塊圖中每個模塊的過程進(jìn)行描述,常用的描述的方式有:偽代碼,流程圖,N-S圖,PAD圖等。(一)詳細(xì)設(shè)計(jì)的任務(wù)結(jié)構(gòu)化程序設(shè)計(jì)的第二階段,詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個可以直接轉(zhuǎn)換為程序的軟件表示,即對系統(tǒng)中每個模塊的內(nèi)部過程進(jìn)行設(shè)計(jì)和描述。給出軟件模塊結(jié)構(gòu)中各模塊的內(nèi)部過程描述(算法),包含實(shí)現(xiàn)對應(yīng)的總體設(shè)計(jì)的模塊所需的處理邏輯,主要有:1、詳細(xì)的算法。2、數(shù)據(jù)表示和數(shù)據(jù)結(jié)構(gòu)。3、實(shí)施的功能和使用的數(shù)據(jù)之間的關(guān)系。詳細(xì)設(shè)計(jì)的主要任務(wù)是給出軟件模塊結(jié)構(gòu)中各個模塊的內(nèi)部過程描述,也就是模塊內(nèi)部的算法設(shè)計(jì)。而我們接下來看看這些算法的表示形式(二)詳細(xì)設(shè)計(jì)工具1. 程序流程-程序流程也
20、稱程序框圖,使用最為普遍。有五種基本控制結(jié)構(gòu):l 順序型:幾個連續(xù)的加工步驟依次排列構(gòu)成。l 選擇型:有某個邏輯判斷是的取值決定選擇兩個加工中的一個。l 先判定型循環(huán):在循環(huán)控制條件成立時,重復(fù)執(zhí)行特定的加工。l 后判定型循環(huán):重復(fù)執(zhí)行某些特定的加工,直到控制條件成立。l 多情況型選擇:列舉多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。程序流程圖基本結(jié)構(gòu)如圖50所示。2. 標(biāo)準(zhǔn)程序流程圖的規(guī)定符號標(biāo)準(zhǔn)程序流程圖的規(guī)定符號如圖51所示. 圖50. 程序流程圖基本結(jié)構(gòu)圖51. 標(biāo)準(zhǔn)程序流程圖的規(guī)定符號3,盒圖(N-S)圖盒圖是70年代由Nassi和Shneiderman提出的。又稱N-S圖。也有
21、五種基本控制結(jié)構(gòu):l 順序型:幾個連續(xù)的加工步驟依次排列構(gòu)成。l 選擇型:有某個邏輯判斷是的取值決定選擇兩個加工中的一個。l 先判定型循環(huán):在循環(huán)控制條件成立時,重復(fù)執(zhí)行特定的加工。l 后判定型循環(huán):重復(fù)執(zhí)行某些特定的加工,直到控制條件成立。l 多情況型選擇:列舉多種加工情況,根據(jù)控制變量的取值,選擇執(zhí)行其一。N-S圖基本結(jié)構(gòu)如圖52所示。 圖52. N-S圖基本結(jié)構(gòu)4,PAD圖PAD圖是1973年由日本日立公司發(fā)明的,PAD圖又稱問題分析圖(problem Analysis Diagram)用二維樹型結(jié)構(gòu)的圖表示的控制流,將這種圖轉(zhuǎn)換為程序代碼比較容易。其基本控制結(jié)構(gòu)如下:例:對數(shù)組X進(jìn)行排
22、序。 “自頂而下,逐步求精”1、循環(huán)一次,排好一個XhH:=1,n-1 排好第h個X h2、細(xì)化3、連接各圖,構(gòu)成完整的PAD圖一、名詞解釋:1 軟件工程2 軟件開發(fā)模型3 數(shù)據(jù)流圖4 軟件設(shè)計(jì)評價準(zhǔn)則5 結(jié)構(gòu)圖6 模塊耦合7 模塊內(nèi)聚二、選擇填空1. 結(jié)構(gòu)設(shè)計(jì)是一種應(yīng)用最廣泛的系統(tǒng)設(shè)計(jì)方法,是以( )為基礎(chǔ)、自頂向下、逐步求精和模塊化的過程。A、數(shù)據(jù)流 B、數(shù)據(jù)流圖 C、數(shù)據(jù)庫 D、數(shù)據(jù)結(jié)構(gòu)2. ( )的內(nèi)容不應(yīng)當(dāng)包括對算法的詳細(xì)過程性描述。A、需求規(guī)格說明書B、總體框圖C、軟件確認(rèn)準(zhǔn)則D、軟件的性能3.()是一種傳統(tǒng)的程序設(shè)計(jì)表示工具。A、程序流程圖 B、數(shù)據(jù)流圖 C、結(jié)構(gòu)圖D、HIPO圖
23、4.( )的三種基本控制結(jié)構(gòu)的共同特點(diǎn)是只有一個入口和一個出口。A、程序 B、高級語言C、文檔D、數(shù)據(jù)字典5. 模塊在同一段時間內(nèi)完成各種初始化工作,這屬于()。 A、偶然內(nèi)聚B、邏輯內(nèi)聚 C、時間內(nèi)聚D、過程內(nèi)聚6. 在詳細(xì)設(shè)計(jì)的圖示工具中,( )的形狀象一個盒子。A、HIPO圖 B、流程圖 C、N-S圖D、PAD圖三、填空1 軟件開發(fā)是,一個錯誤發(fā)現(xiàn)的越晚,為改正它所付出的代價就。2從系統(tǒng)設(shè)計(jì)的角度出發(fā),軟件設(shè)計(jì)方法分為、三大類。3總體設(shè)計(jì)階段所使用的表示工具有、。4詳細(xì)設(shè)計(jì)的根本目標(biāo)是。5詳細(xì)設(shè)計(jì)的工具有、。四、判斷1. 程序流程圖只反映數(shù)據(jù)的流向,不反映處理邏輯的先后2. 模塊的內(nèi)聚性
24、程度與該模塊在分層結(jié)構(gòu)中的位置有關(guān)系3. HIPO圖是由一組H圖和一張IPO圖組成五、簡答說明“軟件生存周期”的概念1 軟件工程的基本原則和目標(biāo)2 模塊的內(nèi)聚性程度與該模塊在分層結(jié)構(gòu)中的位置有關(guān)系嗎?說明原因。6PAD圖設(shè)置的基本控制結(jié)構(gòu)?7. 模塊的獨(dú)立性是什么?8. 結(jié)構(gòu)圖是什么?9. 從系統(tǒng)設(shè)計(jì)的角度出發(fā),軟件設(shè)計(jì)方法分為?10. 模塊耦合衡量?11.模塊內(nèi)聚衡量?六、畫出下面程序的流程圖、N-S圖和PAD圖。 ORG 2000H MOV R0 , #0AH DL2:MOV R1 , #7DH DL1:NOP NOP DJNZ R1 , DL1 DJNZ R0 , DL2 END七、把下
25、面程序的流程圖轉(zhuǎn)換為N-S圖和PAD圖FDHIJ結(jié)束 E 開始 N A Y B N C Y N YG八、把下面程序的流程圖轉(zhuǎn)換為N-S圖和PAD圖九,把下面程序的流程圖轉(zhuǎn)換為N-S圖和PAD圖。EndS1X>5i<3FFi=i+iTY<0S4S5TFF軟件復(fù)用技術(shù)1,軟件復(fù)用就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng),以達(dá)到提高軟件系統(tǒng)的開發(fā)質(zhì)量與效率,降低開發(fā)成本的目的。可復(fù)用的軟件成分,也稱為可復(fù)用構(gòu)件(Reusable Component)可從舊軟件中提取,也可以專門為復(fù)用而開發(fā)。軟件復(fù)用不僅是對程序的復(fù)用,它包括對軟件生產(chǎn)過程中任何活動所產(chǎn)生的制成品的復(fù)用。如:項(xiàng)目計(jì)劃
26、、可行性報告、需求定義、分析模型、詳細(xì)說明、源程序和測試用例等等。2, 軟件復(fù)用的級別l 測試信息的復(fù)用(主要包括測試用例的復(fù)用和測試過程信息的復(fù)用)。l 分析結(jié)果的復(fù)用(可被復(fù)用的分析結(jié)果是針對問題域的某些事物或某些問題的抽象程度更高的解法)l 設(shè)計(jì)結(jié)果的復(fù)用(受實(shí)際環(huán)境影響小,可復(fù)用機(jī)會多,所需修改少。)l 代碼的復(fù)用(包括目標(biāo)代碼,也包括文本形式的源代碼。)軟件復(fù)用抽象的程度由高到低。3, 構(gòu)件庫用于對可復(fù)用構(gòu)件進(jìn)行存儲和管理。它是支持軟件復(fù)用的必要設(shè)施。構(gòu)件庫必須有大量的可復(fù)用構(gòu)件。構(gòu)件庫系統(tǒng)應(yīng)提供的主要功能:構(gòu)件的存儲、管理、檢索以及庫的瀏覽與維護(hù)等。5, 軟件構(gòu)架是一種由特定領(lǐng)域的
27、軟件體系結(jié)構(gòu)所決定的軟件構(gòu)造框架。軟件構(gòu)架不是解決軟件的某個局部問題,而是描述了軟件的總體結(jié)構(gòu)。它描述了一類軟件的總體構(gòu)成情況,包括該軟件有哪些主要部件以及各部件之間的關(guān)系,但是不涉及每個部件的細(xì)節(jié)??蓮?fù)用的軟件構(gòu)架給出一類應(yīng)用系統(tǒng)在總體構(gòu)造上的共性或相似性,忽略了各個系統(tǒng)的局部差異。第七章 軟件測試1, 軟件測試定義:按照特定規(guī)程,發(fā)現(xiàn)軟件錯誤的過程。(為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。)在軟件投入生產(chǎn)性運(yùn)行前,對軟件需求分析、設(shè)計(jì)規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量保證的關(guān)鍵步驟。因?yàn)殚_發(fā)工作的前期不可避免地會引入錯誤,測試的目的是為了發(fā)現(xiàn)和改正錯誤,這對于某些涉及人的生命安全或重要的軍事、經(jīng)
28、濟(jì)目標(biāo)的項(xiàng)目顯得尤其重要。2, 軟件測試的目標(biāo):1、預(yù)防錯誤;2、發(fā)現(xiàn)錯誤。3, 軟件測試的基本原則1、盡量不由程序設(shè)計(jì)者進(jìn)行測試。2、關(guān)鍵是注重測試用例的選擇。輸入數(shù)據(jù)的組成(輸入數(shù)據(jù)、預(yù)期的輸出結(jié)果)既有合理輸入數(shù)據(jù),也有不合理的輸入數(shù)據(jù)。用例既能檢查應(yīng)完成的任務(wù),也能夠檢查不應(yīng)該完成的任務(wù)。長期保存測試用例。3、充分注意測試中的群集現(xiàn)象。4, 軟件測試方法分為兩類:靜態(tài)分析(白盒法)、動態(tài)測試(黑盒法) 1, 靜態(tài)分析指以人工的、非形式化的方法對程序進(jìn)行分析和測試。桌前檢查代碼會審步行檢查步行檢查時,還常使用以下分析方法:2, 動態(tài)測試: 通過選擇適當(dāng)?shù)臏y試用例,執(zhí)行程序。5, 常用的方
29、法:l 白盒法:分析程序的內(nèi)部邏輯結(jié)構(gòu),注意選擇適當(dāng)?shù)母采w標(biāo)準(zhǔn),設(shè)計(jì)測試用例,對主要路徑進(jìn)行盡可能多的測試。l 黑盒法:不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測試用例。1. 白盒法:白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標(biāo)準(zhǔn)確定的。見圖61。圖61. 不同覆蓋標(biāo)準(zhǔn)2. 白盒法常用的覆蓋標(biāo)準(zhǔn): 語句覆蓋: 選擇足夠的測試用例,使得程序中每個語句至少都能被執(zhí)行一次。 判定覆蓋: 執(zhí)行足夠的測試用例,使得程序中每個判定至少都獲得一次“真”值和“假”值。 條件覆蓋:執(zhí)行足夠的測試用例,使得判定中的每個條件獲得各種可能的結(jié)果。 判定/條件覆蓋: 執(zhí)行足夠的測試用例
30、,使得判定中每個條件取到各種可能的值,并使每個判定取到各種可能的結(jié)果。 條件組合覆蓋: 執(zhí)行足夠的例子,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。3. 白盒法步驟:1選擇邏輯覆蓋標(biāo)準(zhǔn)。2按照覆蓋標(biāo)準(zhǔn)列出所有情況。3選擇確定測試用例4驗(yàn)證分析運(yùn)行結(jié)果與預(yù)期結(jié)果。例:用白盒法測試以下程序段:Procedure(VAR A,B,X:REAL);BEGIN IF (A>1) AND (B=0) THEN X:=X/A ; IF (A=2) OR (X>1) THEN X:=X+1END;白盒法舉例:Procedure (VAR A,B,X:REAL); BEGIN IF(A>1
31、) AND (B=0) THEN X:=X/A ; IF (A=2) OR (X>1) THEN X:=X+1 END;圖62. 白盒法4語句覆蓋語句覆蓋:使得程序中每個語句至少都能被執(zhí)行一次。例:滿足語句覆蓋的情況: 執(zhí)行路徑:ace用例格式:輸入(A,B,X),輸出(A,B,X)選擇用例:(2,0,4),(2,0,3)5判定覆蓋使得程序中每個判定至少為TRUE 或FALSE各一次。覆蓋情況:應(yīng)執(zhí)行路徑ace abd或: acd abe圖63. 路徑流程圖選擇用例(其一): (2,0,4),(2,0,3) ace (1,1,1),(1,1,1) abd (2,1,1),(2,1,2)
32、abe (3,0,3),(3,1,1) acd6條件覆蓋使得判定中的每個條件獲得各種可能的結(jié)果。應(yīng)滿足以下覆蓋情況:圖63. 路徑流程圖判定一: A>1, A1, B=0, B0判定二: A=2, A2, X>1, X1選擇用例: (2,0,4),(2,0,3)(1,1,1),(1,1,1) 注意:(1,0,3),(1,0,4)(2,1,1),(2,1,2)滿足條件覆蓋,但不滿足判斷覆蓋。7判定/條件覆蓋同時滿足判斷覆蓋和條件覆蓋。應(yīng)滿足以下覆蓋情況:條件: A>1, A1, B=0, B0 A=2, A2, X>1, X1應(yīng)執(zhí)行路徑ace abd或: acd abe選
33、擇用例: (2,0,4),(2,0,3)(ace) (1,1,1),(1,1,1) (abd)8條件組合覆蓋使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。滿足以下覆蓋情況: A>1, B =0 A>1, B0 A1, B =0 A1, B0 A=2, X>1 A=2, X1 A2, X>1 A2, X1選擇用例:(2,0,4),(2,0,3) (2,1,1),(2,1,2) (1,0,3),(1,0,4) 圖64. 條件組合覆蓋(1,1,1),(1,1,1) 2,黑盒法不考慮程序的內(nèi)部結(jié)構(gòu)與特性,只根據(jù)程序功能或程序的外部特性設(shè)計(jì)測試用例。在黑盒測試方法中常用的有:等
34、價分類法,邊值分析法,錯誤推測法,因果圖法。1. 等價分類法基本思想:根據(jù)程序的I/O特性,將程序的定義域劃分為有限個等價區(qū)段 “等價類”,從等價類中選擇出的用例,具有“代表性”。等價類分為:有效等價類 對于程序的規(guī)格說明,是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。無效等價類 對于程序的規(guī)格說明,是不合理的、沒有意義的輸入數(shù)據(jù)構(gòu)成的集合。2. 邊值分析法 1<x<2 0.99, 1, 1.01,邊值分析法的基本思想: 選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮輸入亦考慮輸出。(1)分析步驟: A 先劃分等價類。B 選擇測試用例,測試等價類邊界。(2
35、)邊界選擇原則: A 按照輸入值范圍的邊界。1<x<2B 按照輸入/輸出值個數(shù)的邊界。C 輸出值域的邊界。D 輸入/輸出有序集的邊界。1,3,5,7,9 (3)邊值分析法舉例A 按照輸入值范圍的邊界。例如:輸入值的范圍是-1.0至1.0,則可選擇用例: 1.0、1.0、-1.001、1.001。B 按照輸入/輸出值個數(shù)的邊界。3. 錯誤推測法憑經(jīng)驗(yàn)或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發(fā)生錯誤的特殊情況,選擇測試用例。4. 因果圖法-因果圖法把輸入條件視為“因”,把輸出條件視為“果”,將黑盒看成是從因到果的網(wǎng)絡(luò)圖,采用邏輯圖的形式來表達(dá)功能說明書中輸入條件的各種組合與輸
36、出的關(guān)系。根據(jù)這種關(guān)系可選擇高效的測試用例。 因果圖是一種形式化語言,是一種組合邏輯網(wǎng)絡(luò)圖。 因果圖的基本符號0 - 表示“不出現(xiàn)”1 - 表示“出現(xiàn)”6,測試步驟(了解)所有測試過程都應(yīng)采用綜合測試策略;即先作靜態(tài)分析,再作動態(tài)測試。并事先制訂測試計(jì)劃。測試過程通??煞?步進(jìn)行:(1)單元測試:又稱模塊測試,以詳細(xì)設(shè)計(jì)文檔和源程序清單為指導(dǎo),測試模塊內(nèi)的重要控制路徑。(2)集成測試:也稱組裝測試或聯(lián)合測試。通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。(3)有效性測試:也稱確認(rèn)測試。它的任務(wù)是驗(yàn)證軟件的有效性,即驗(yàn)證軟件的功能和性能及其它特性是否與用戶的要求一致。(4)系
37、統(tǒng)測試(system testing ):將經(jīng)過確認(rèn)測試的軟件,與計(jì)算機(jī)硬件、外設(shè)、支持軟件等一起,在實(shí)際運(yùn)行環(huán)境下測試。(5)驗(yàn)收測試(acceptance testing):驗(yàn)收測試是以用戶為主的測試。第八章 軟件維護(hù)1,軟件維護(hù)是指在軟件維護(hù)階段對軟件產(chǎn)品所進(jìn)行的一系列維護(hù)活動。因?yàn)檐浖óa(chǎn)品)不僅僅包括程序,任何對文檔、手冊或產(chǎn)品其他組成部分的修改也都屬于軟件維護(hù)范圍。軟件維護(hù)階段變更/演化軟件的基本目標(biāo):改正錯誤、優(yōu)化軟件、增加功能,提高軟件產(chǎn)品質(zhì)量;延長軟件壽命(軟件生存周期),提高軟件產(chǎn)品的價值。2,軟件維護(hù)的特點(diǎn)(了解) 軟件維護(hù)是軟件生產(chǎn)性活動中延續(xù)時間最長、工作量最大的活動
38、。所以,軟件維護(hù)是使軟件成本大幅度上升的重要因素。 軟件維護(hù)不僅工作量大、任務(wù)重,如果維護(hù)得不當(dāng),還會產(chǎn)生一些副作用,甚至引入新的錯誤。因此,軟件維護(hù)直接影響軟件(產(chǎn)品)的質(zhì)量和使用壽命,維護(hù)活動必須慎之又慎。軟件維護(hù)活動實(shí)際是一個修改和簡化了的軟件開發(fā)過程。軟件開發(fā)的所有環(huán)節(jié),如分析、設(shè)計(jì)、實(shí)現(xiàn)和測試等幾乎都要在維護(hù)活動中用到。軟件維護(hù)和軟件開發(fā)一樣,都要采用軟件工程原理和方法。這樣才可以保證軟件維護(hù)的標(biāo)準(zhǔn)化、高效率,從而降低維護(hù)成本。3,軟件可維護(hù)性是指糾正軟件的錯誤和缺陷,為滿足新要求或環(huán)境變化而進(jìn)行修改、擴(kuò)充、完善的容易程度。軟件可維護(hù)性定義為軟件的可理解、可測試、可修改性的難易程度。
39、可維護(hù)性既是軟件(產(chǎn)品)質(zhì)量的屬性之一,又和其他軟件質(zhì)量屬性有相當(dāng)密切的關(guān)系。4,軟件維護(hù)的類型根據(jù)維護(hù)工作的特征,軟件維護(hù)活動可以歸納為改正性維護(hù)、完善性維護(hù)、適應(yīng)性維護(hù)和預(yù)防性維護(hù)4類。l 改正性維護(hù)(Corrective Maintenance):對在測試階段未能發(fā)現(xiàn)的,在軟件投入使用后才逐漸暴露出來的錯誤的測試、診斷、定位、糾錯以及驗(yàn)證、修改的回歸測試過程。改正性維護(hù)是為了識別和糾正軟件潛在錯誤、改正軟件性能上的缺陷、排除實(shí)施中的誤使用,而進(jìn)行的測試、診斷和改正錯誤的維護(hù)活動。根據(jù)統(tǒng)計(jì)資料,繼續(xù)糾正軟件潛在的錯誤的工作量大約占總維護(hù)量的20%。軟件維護(hù)階段的最初12年內(nèi),改正性維護(hù)量較大。隨著軟件(產(chǎn)品)進(jìn)入正常的使用期,錯誤發(fā)現(xiàn)率急劇降
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)租賃管理合同協(xié)議
- 專柜裝修合同裝修合同協(xié)議
- 房屋轉(zhuǎn)讓協(xié)議合同書
- 聘請勞務(wù)合同
- 安置房買賣協(xié)議合同
- 小學(xué)六英語試卷答案
- 賣魚銷售合同范本
- 個人一周工作計(jì)劃
- 冷凍品供貨合同范本
- 三年級下冊音樂教案
- 2025年高考語文備考訓(xùn)練之社會現(xiàn)象:“數(shù)字囤積癥”
- 2025包頭青山賓館有限公司面向社會公開招聘18人筆試參考題庫附帶答案詳解
- 2025至2030年中國毛絨卡通玩具數(shù)據(jù)監(jiān)測研究報告
- 2025年度智能充電樁場地租賃合同范本3篇
- 2024年蕪湖職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 北師大版三年級下冊數(shù)學(xué)口算題練習(xí)1000道帶答案
- 技術(shù)推廣服務(wù)合同模板五篇
- 《智能制造技術(shù)基礎(chǔ)》課件-第3章 智能制造加工技術(shù)
- 四川政采評審專家入庫考試基礎(chǔ)題復(fù)習(xí)測試題
- 挑戰(zhàn)杯-申報書范本
評論
0/150
提交評論