![數(shù)據(jù)庫(kù)與軟件工程-軟件工程概述課件_第1頁(yè)](http://file4.renrendoc.com/view/75fd24f577461de6864f06bdd2d5d69a/75fd24f577461de6864f06bdd2d5d69a1.gif)
![數(shù)據(jù)庫(kù)與軟件工程-軟件工程概述課件_第2頁(yè)](http://file4.renrendoc.com/view/75fd24f577461de6864f06bdd2d5d69a/75fd24f577461de6864f06bdd2d5d69a2.gif)
![數(shù)據(jù)庫(kù)與軟件工程-軟件工程概述課件_第3頁(yè)](http://file4.renrendoc.com/view/75fd24f577461de6864f06bdd2d5d69a/75fd24f577461de6864f06bdd2d5d69a3.gif)
![數(shù)據(jù)庫(kù)與軟件工程-軟件工程概述課件_第4頁(yè)](http://file4.renrendoc.com/view/75fd24f577461de6864f06bdd2d5d69a/75fd24f577461de6864f06bdd2d5d69a4.gif)
![數(shù)據(jù)庫(kù)與軟件工程-軟件工程概述課件_第5頁(yè)](http://file4.renrendoc.com/view/75fd24f577461de6864f06bdd2d5d69a/75fd24f577461de6864f06bdd2d5d69a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程概述數(shù)據(jù)庫(kù)與軟件工程第二部分1軟件工程概述數(shù)據(jù)庫(kù)與軟件工程第二部分12軟件工程綜述軟件生存周期軟件質(zhì)量與質(zhì)量保證軟件工程管理軟件開發(fā)環(huán)境目錄2軟件工程綜述目錄3軟件發(fā)展的三個(gè)階段軟件工程相關(guān)概念軟件工程目標(biāo)軟件工程三要素軟件工程綜述3軟件發(fā)展的三個(gè)階段軟件工程綜述什么是計(jì)算機(jī)軟件?計(jì)算機(jī)軟件指計(jì)算機(jī)系統(tǒng)中的程序及其文檔程序是計(jì)算任務(wù)的處理對(duì)象和處理規(guī)則的描述計(jì)算任務(wù):任何以計(jì)算機(jī)為處理工具的任務(wù)處理對(duì)象:數(shù)據(jù)(如數(shù)據(jù)、文字、圖形、圖像、聲音等,它們只是表示,而無(wú)含義)或信息(數(shù)據(jù)及有關(guān)的含義)處理規(guī)則一般指處理的動(dòng)作和步驟。程序必須裝入計(jì)算機(jī)內(nèi)才能工作文檔是為了便于了解程序所需的闡明性資料,文檔一般是給人看的,不一定裝入計(jì)算機(jī)4什么是計(jì)算機(jī)軟件?計(jì)算機(jī)軟件指計(jì)算機(jī)系統(tǒng)中的程序及其文檔45軟件的特點(diǎn):抽象性—不是實(shí)物。嚴(yán)密性—是邏輯產(chǎn)品。智力性—思維過程。持久性—無(wú)時(shí)間損壞。一次性—?jiǎng)?chuàng)造性的產(chǎn)物。難以度量—難定量測(cè)量。易出錯(cuò)—信息轉(zhuǎn)移造成。必須維護(hù)—糾錯(cuò)和變更。5軟件的特點(diǎn):6軟件發(fā)展的三個(gè)階段程序設(shè)計(jì)時(shí)代(50-60年代)
軟件指程序,軟件開發(fā)關(guān)注程序編寫,用匯編及機(jī)器語(yǔ)言程序系統(tǒng)時(shí)代(60-70年代)
軟件指程序及說(shuō)明書,軟件開發(fā)包括程序設(shè)計(jì)和測(cè)試,用高級(jí)語(yǔ)言軟件工程時(shí)代(70年代以后)軟件開發(fā)包括軟件生命期,用軟件語(yǔ)言(包括需求定義語(yǔ)言、軟件功能語(yǔ)言、軟件設(shè)計(jì)語(yǔ)言、程序設(shè)計(jì)語(yǔ)言等)6軟件發(fā)展的三個(gè)階段程序設(shè)計(jì)時(shí)代(50-60年代)程序系統(tǒng)7軟件工程相關(guān)概念軟件危機(jī):在軟件開發(fā)過程中遇到的問題找不到解決的辦法,致使問題積累起來(lái)形成了日益尖銳的矛盾。危機(jī)實(shí)例(1):1963年美國(guó)飛往火星的火箭探測(cè)器爆炸,造成1000萬(wàn)美元(數(shù)億美元)的損失。原因是用于控制火星探測(cè)器的計(jì)算機(jī)軟件FORTRAN程序:
DO5I=1,3
誤寫為:DO5I=1.3危機(jī)實(shí)例(2):1967年蘇聯(lián)“聯(lián)盟一號(hào)”載人宇宙飛船在返航時(shí),由于軟件忽略一個(gè)小數(shù)點(diǎn),在進(jìn)入大氣層時(shí)因打不開降落傘而燒毀。
宇航員:弗拉迪米爾·科馬洛夫7軟件工程相關(guān)概念軟件危機(jī):在軟件開發(fā)過程中遇到的問題找不到8軟件工程相關(guān)概念軟件危機(jī):危機(jī)實(shí)例(3):人員傷亡:由于計(jì)算機(jī)軟件被廣泛應(yīng)用于包括醫(yī)院等與生命息息相關(guān)的行業(yè)。這也使得軟件的錯(cuò)誤導(dǎo)致人員傷亡成為了可能。
Therac-25的意外:(在軟件工程界被大量引用的案例)
在1985年六月到1987年一月之間,六個(gè)已知的醫(yī)療事故來(lái)自于Therac-25錯(cuò)誤地超過劑量,導(dǎo)致患者死亡或嚴(yán)重輻射灼傷8軟件工程相關(guān)概念軟件危機(jī):危機(jī)實(shí)例(3):9軟件工程相關(guān)概念軟件危機(jī):危機(jī)實(shí)例(4):IBM公司1963-1966年開發(fā)IBM360操作系統(tǒng),項(xiàng)目花了5000人-年的工作量,最多時(shí)有1000人投入開發(fā)工作,寫出100萬(wàn)行源程序,但發(fā)行的每一新版本都是上一版1000個(gè)錯(cuò)誤的修正。事后負(fù)責(zé)人F.D.Brooks總結(jié)教訓(xùn)時(shí)說(shuō):“……正象一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷的越深。最后無(wú)法逃脫滅頂?shù)臑?zāi)難。程序設(shè)計(jì)工作正像這樣一個(gè)泥潭,一批批程序員被迫在泥潭中拼命掙扎,……誰(shuí)也沒料到問題竟會(huì)陷入這樣的困境……”9軟件工程相關(guān)概念軟件危機(jī):危機(jī)實(shí)例(4):10軟件危機(jī)的表現(xiàn)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不正確用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生軟件產(chǎn)品的質(zhì)量往往靠不住軟件常常是不可維護(hù)的軟件通常沒有適當(dāng)?shù)奈臋n資料軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)10軟件危機(jī)的表現(xiàn)對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不正確11軟件危機(jī)的原因軟件是邏輯產(chǎn)品,開發(fā)進(jìn)度、成本難以估計(jì)缺乏或不完整、不一致的文檔給維護(hù)帶來(lái)困難用戶對(duì)軟件需求的描述往往不夠精確,有遺漏,有二義軟件開發(fā)人員對(duì)需求的理解與用戶的本來(lái)愿望有差異大型軟件項(xiàng)目需多人協(xié)同完成,缺乏管理經(jīng)驗(yàn)開發(fā)人員不能有效地、獨(dú)立自主地處理大型軟件的全部關(guān)系缺乏有力的方法學(xué)和工具的支持軟件項(xiàng)目的特殊性和人類智力的局限性11軟件危機(jī)的原因軟件是邏輯產(chǎn)品,開發(fā)進(jìn)度、成本難以估計(jì)12克服軟件危機(jī)的途徑消除錯(cuò)誤的概念和做法推廣使用成功的開發(fā)技術(shù)和方法使用軟件工具和軟件工程支持環(huán)境加強(qiáng)軟件管理擺脫軟件危機(jī)的出路:軟件開發(fā)的工程化和標(biāo)準(zhǔn)化12克服軟件危機(jī)的途徑消除錯(cuò)誤的概念和做法擺脫軟件危機(jī)的出13軟件工程相關(guān)概念軟件工程:軟件工程是用科學(xué)知識(shí)和技術(shù)原理來(lái)定義、開發(fā)、維護(hù)軟件的一門綜合性的交叉學(xué)科,軟件工程是開發(fā)與維護(hù)軟件的規(guī)范化系統(tǒng)方法。它綜合應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)造模型與算法;工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡;管理科學(xué)用于用于計(jì)劃、資源、質(zhì)量、成本等管理。
13軟件工程相關(guān)概念軟件工程:軟件工程是用科學(xué)知識(shí)和技術(shù)原理14軟件工程的目標(biāo)能按時(shí)完成開發(fā)任務(wù),及時(shí)交付使用;付出較低的開發(fā)成本,達(dá)到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護(hù)費(fèi)用;開發(fā)的軟件可靠性高。14軟件工程的目標(biāo)能按時(shí)完成開發(fā)任務(wù),及時(shí)交付使用;15軟件工程三要素軟件工程方法軟件工具軟件工程過程
為軟件開發(fā)提供“如何做”的技術(shù)。如怎樣定項(xiàng)目計(jì)劃、怎樣實(shí)施需求分析、如何測(cè)試等。為軟件工程方法提供自動(dòng)或半自動(dòng)軟件支撐環(huán)境。如軟件開發(fā)工具、測(cè)試工具等。軟件開發(fā)的不同階段可使用不同的工具。將軟件工程劃分為若干階段,分配方法和工具,定義每個(gè)階段的先后順序和完成標(biāo)志。15軟件工程三要素軟件工程方法為軟件開發(fā)提供“如何做”的技術(shù)16軟件生存周期生存周期概念生存周期各階段生存周期模型16軟件生存周期生存周期概念17軟件生存周期軟件生存周期(softwarelifecycle)又稱為軟件生命期。是指從形成開發(fā)軟件概念起,所開發(fā)的軟件使用以后,直到失去使用價(jià)值消亡為止的整個(gè)過程。一般來(lái)說(shuō),整個(gè)生存周期包括計(jì)劃、開發(fā)、運(yùn)行三個(gè)時(shí)期,每一個(gè)時(shí)期又劃分為若干階段。每個(gè)階段有明確的任務(wù),這樣使規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變得容易控制和管理。軟件生存周期概念17軟件生存周期軟件生存周期(softwarelifec18軟件生命周期軟件生命期各階段軟件計(jì)劃與可行性研究軟件系統(tǒng)需求分析軟件設(shè)計(jì)軟件編碼軟件測(cè)試與調(diào)試軟件運(yùn)行與維護(hù)軟件生命期一般包括以下各階段:
18軟件生命周期軟件生命期各階段軟件計(jì)劃與可行性研究軟件生命19軟件-建筑計(jì)劃與可行性研究系統(tǒng)需求分析軟件設(shè)計(jì)軟件編碼軟件測(cè)試與調(diào)試軟件運(yùn)行與維護(hù)19軟件-建筑計(jì)劃與可行性研究20一、軟件計(jì)劃與可行性研究目的確定軟件項(xiàng)目是否能夠開發(fā)?是否值得去開發(fā)?輸出:可行性研究報(bào)告成本—效益分析項(xiàng)目開發(fā)計(jì)劃
20一、軟件計(jì)劃與可行性研究目的確定軟件項(xiàng)目是否能夠開發(fā)?21一、軟件計(jì)劃與可行性研究初步確定項(xiàng)目的規(guī)模和目標(biāo),確定項(xiàng)目的約束和限制。分析員進(jìn)行簡(jiǎn)要的需求分析,抽象出邏輯結(jié)構(gòu),建立邏輯模型。從邏輯模型出發(fā),經(jīng)過壓縮的設(shè)計(jì),找出幾種可供選擇的解決辦法。過程21一、軟件計(jì)劃與可行性研究初步確定項(xiàng)目的規(guī)模和目標(biāo),確定項(xiàng)22一、軟件計(jì)劃與可行性研究對(duì)每種解決方法,可從以下三個(gè)方面分析研究每種解決方法的可行性。
1.技術(shù)可行性
2.經(jīng)濟(jì)可行性
3.社會(huì)可行性內(nèi)容22一、軟件計(jì)劃與可行性研究對(duì)每種解決方法,可從以下三個(gè)23軟件可行性研究1.技術(shù)可行性對(duì)要開發(fā)項(xiàng)目的功能、性能、限制條件進(jìn)行分析,確定在現(xiàn)有的資源條件下,技術(shù)風(fēng)險(xiǎn)有多大,項(xiàng)目是否能實(shí)現(xiàn)。資源:已有的或可以獲得的硬件、軟件資源現(xiàn)有技術(shù)人員的技術(shù)水平已有的工作基礎(chǔ)。技術(shù)可行性分析通常包括風(fēng)險(xiǎn)分析、資源分析和技術(shù)分析三個(gè)方面的可行性23軟件可行性研究1.技術(shù)可行性三個(gè)方面的可行性24風(fēng)險(xiǎn)分析:分析在給定的約束條件下設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的風(fēng)險(xiǎn)。采用不成熟的技術(shù)可能造成技術(shù)風(fēng)險(xiǎn)人員流動(dòng)可能給項(xiàng)目帶來(lái)風(fēng)險(xiǎn)成本和人員估算不合理造成的預(yù)算風(fēng)險(xiǎn)風(fēng)險(xiǎn)分析的目的是找出風(fēng)險(xiǎn),評(píng)價(jià)風(fēng)險(xiǎn)的大小,并有效地控制和緩解風(fēng)險(xiǎn)。24風(fēng)險(xiǎn)分析:分析在給定的約束條件下設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的風(fēng)險(xiǎn)。25資源分析:論證是否具備系統(tǒng)開發(fā)所需的各類人員、軟件、硬件等資源和相應(yīng)的工作環(huán)境。例如,有一支開發(fā)過類似項(xiàng)目的開發(fā)和管理的團(tuán)隊(duì),或者開發(fā)人員比較熟悉系統(tǒng)所處的領(lǐng)域,并有足夠的人員保證,所需的硬件和支撐軟件能通過合法的手段獲取,那么從技術(shù)角度看,可以認(rèn)為具備設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的條件。25資源分析:論證是否具備系統(tǒng)開發(fā)所需的各類人員、軟件、硬件26技術(shù)分析:分析當(dāng)前的科學(xué)技術(shù)是否支持系統(tǒng)開發(fā)的各項(xiàng)活動(dòng)。在技術(shù)分析過程中,分析員收集系統(tǒng)的性能、可靠性、可維護(hù)性和生產(chǎn)率方面的信息,分析實(shí)現(xiàn)系統(tǒng)功能、性能所需的技術(shù)、方法、算法或過程,從技術(shù)角度分析可能存在的風(fēng)險(xiǎn),以及這些技術(shù)問題對(duì)成本的影響。技術(shù)可行性分析時(shí)通常需進(jìn)行系統(tǒng)建模,必要時(shí)可建造原型和進(jìn)行系統(tǒng)模擬26技術(shù)分析:分析當(dāng)前的科學(xué)技術(shù)是否支持系統(tǒng)開發(fā)的各項(xiàng)活動(dòng)。27軟件可行性研究2.經(jīng)濟(jì)可行性進(jìn)行開發(fā)成本的估算以及了解取得效益的評(píng)估,確定要開發(fā)的項(xiàng)目是否值得投資開發(fā)?經(jīng)濟(jì)可行性:成本—效益分析公司經(jīng)營(yíng)長(zhǎng)期策略開發(fā)所需的成本和資源潛在的市場(chǎng)前景三個(gè)方面的可行性27軟件可行性研究2.經(jīng)濟(jì)可行性三個(gè)方面的可行性28基于計(jì)算機(jī)的系統(tǒng)的成本主要包括:購(gòu)置硬件、軟件(如數(shù)據(jù)庫(kù)管理系統(tǒng)、第三方開發(fā)的構(gòu)件等)和設(shè)備(如傳感器等)的費(fèi)用系統(tǒng)的開發(fā)費(fèi)用系統(tǒng)安裝、運(yùn)行和維護(hù)費(fèi)用人員培訓(xùn)費(fèi)用28基于計(jì)算機(jī)的系統(tǒng)的成本主要包括:29效益經(jīng)濟(jì)效益使用基于計(jì)算機(jī)的系統(tǒng)后可增加的收入和可節(jié)省的運(yùn)行費(fèi)用(如操作人員數(shù)、工作時(shí)間、消耗的物資等)。社會(huì)效益使用基于計(jì)算機(jī)的系統(tǒng)后對(duì)社會(huì)產(chǎn)生的影響(如提高了辦事效益,使用戶滿意等),通常社會(huì)效益只能定性地估計(jì)。在進(jìn)行成本效益分析時(shí)通常只統(tǒng)計(jì)五年內(nèi)的經(jīng)濟(jì)效益。
經(jīng)濟(jì)效益通常可用貨幣的時(shí)間價(jià)值、投資回收期和純收入來(lái)度量。29效益30貨幣的時(shí)間價(jià)值(以利率計(jì)算的機(jī)會(huì)成本)設(shè):當(dāng)前金額為P,年利率為i,n年后的金額為F,則計(jì)算時(shí),累計(jì)經(jīng)濟(jì)效益應(yīng)折合成當(dāng)前金額例如,一個(gè)基于計(jì)算機(jī)的系統(tǒng)使用后,每年產(chǎn)生的經(jīng)濟(jì)效益為10萬(wàn),如果年利率為5%,那么,五年內(nèi)該系統(tǒng)的累計(jì)經(jīng)濟(jì)效益是43.2948萬(wàn),而不是50萬(wàn)。30貨幣的時(shí)間價(jià)值(以利率計(jì)算的機(jī)會(huì)成本)31投資回收期:累計(jì)的經(jīng)濟(jì)效益正好等于投資數(shù)(成本)所需的時(shí)間純收入:累計(jì)經(jīng)濟(jì)效益–
投資數(shù)當(dāng)純收入大于零時(shí),該工程值得投資開發(fā)當(dāng)純收入小于零時(shí),該工程不值得投資(除非它有明顯的社會(huì)效益)當(dāng)純收入等于零時(shí),通常也不值得投資顯然,純收入越大越好31投資回收期:累計(jì)的經(jīng)濟(jì)效益正好等于投資數(shù)(成本)所需的時(shí)32軟件可行性研究3.社會(huì)可行性要開發(fā)的項(xiàng)目是否存在任何侵犯、妨礙等責(zé)任問題?要開發(fā)項(xiàng)目的運(yùn)行方式在用戶組織內(nèi)是否行得通?現(xiàn)有管理制度、人員素質(zhì)、操作方式是否可行?三個(gè)方面的可行性32軟件可行性研究3.社會(huì)可行性三個(gè)方面的可行性33中華人民共和國(guó)著作權(quán)法計(jì)算機(jī)軟件保護(hù)條例保密法等33中華人民共和國(guó)著作權(quán)法34可行性分析的結(jié)論可以立即開始進(jìn)行需要推遲到某些條件(例如資金、人力、設(shè)備等)落實(shí)之后才能開始進(jìn)行需要對(duì)開發(fā)目標(biāo)進(jìn)行某些修改之后才能開始進(jìn)行因?yàn)槟撤N原因(如,技術(shù)不成熟、經(jīng)濟(jì)上不合算等)不能進(jìn)行34可行性分析的結(jié)論可以立即開始進(jìn)行35軟件可行性研究1.復(fù)查項(xiàng)目規(guī)模和目標(biāo)2.研究正在使用的系統(tǒng)3.得到新系統(tǒng)的概括的邏輯模型4.導(dǎo)出和評(píng)價(jià)各種方案5.推薦可行的方案6.編寫可行性研究報(bào)告可行性研究的具體步驟35軟件可行性研究1.復(fù)查項(xiàng)目規(guī)模和目標(biāo)可行性研究的具體步驟36軟件可行性研究可行性研究報(bào)告內(nèi)容1.引言。
2.可行性研究前提。
3.對(duì)現(xiàn)有系統(tǒng)的分析。
4.所建議系統(tǒng)的技術(shù)可行性分析。
5.所建議系統(tǒng)的經(jīng)濟(jì)可行性分析。
6.社會(huì)因素的可行性分析。
7.其他可供選擇方案。
8.結(jié)論意見。36軟件可行性研究可行性研究報(bào)告內(nèi)容1.引言。37二、軟件系統(tǒng)需求分析需求分析概念需求分析的基本任務(wù)結(jié)構(gòu)化分析方法BDS37二、軟件系統(tǒng)需求分析需求分析概念BDS38數(shù)據(jù)庫(kù)建設(shè)的基本規(guī)律三分技術(shù),七分管理,十二分基礎(chǔ)數(shù)據(jù)管理數(shù)據(jù)庫(kù)建設(shè)項(xiàng)目管理企業(yè)(即應(yīng)用部門)的業(yè)務(wù)管理基礎(chǔ)數(shù)據(jù)收集、入庫(kù)更新新的數(shù)據(jù)38數(shù)據(jù)庫(kù)建設(shè)的基本規(guī)律39二、軟件系統(tǒng)需求分析需求分析概念需求分析的基本任務(wù)結(jié)構(gòu)化分析方法39二、軟件系統(tǒng)需求分析需求分析概念40需求的定義IEEEStandardGlossaryofSoftwareEngineeringTerminology用戶解決一個(gè)問題或達(dá)到一個(gè)目標(biāo)所需要的一種狀況或能力系統(tǒng)為了滿足一種約定、標(biāo)準(zhǔn)、規(guī)格說(shuō)明或其它正式文件而必須滿足或擁有的一種狀況或能力以上兩種狀態(tài)或能力的文檔化表示主觀需求客觀需求需求文檔40需求的定義IEEEStandardGlossary41功能性需求和非功能性需求功能性需求系統(tǒng)需要提供的服務(wù)或功能:如圖書檢索系統(tǒng)對(duì)特定輸入的處理方式:如對(duì)非法輸入的提示系統(tǒng)在特定環(huán)境下的行為:如長(zhǎng)時(shí)間無(wú)操作時(shí)的屏保非功能性需求對(duì)系統(tǒng)功能或服務(wù)附加的質(zhì)量約束,例如響應(yīng)時(shí)間、容錯(cuò)性、安全性等——客戶所關(guān)心的(外部質(zhì)量)從系統(tǒng)開發(fā)和維護(hù)角度出發(fā)的質(zhì)量屬性,例如可理解性、可擴(kuò)展性、可配置性等——軟件開發(fā)或維護(hù)者所關(guān)心的(內(nèi)部質(zhì)量、軟件所特有)41功能性需求和非功能性需求功能性需求42二、軟件系統(tǒng)需求分析是指開發(fā)人員要準(zhǔn)確理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的形式功能規(guī)約(需求規(guī)格說(shuō)明)的過程。結(jié)構(gòu)化分析方法和面向?qū)ο蠓治龇椒?/p>
1.需求分析概念42二、軟件系統(tǒng)需求分析是指開發(fā)人員要準(zhǔn)確理解用戶的要求,43是要準(zhǔn)確地定義新系統(tǒng)的目標(biāo),滿足用戶需要?;卮鹣到y(tǒng)必須“做什么”的問題。本階段要進(jìn)行以下幾方面的工作:(1)分析人員和用戶對(duì)問題識(shí)別,雙方商定對(duì)問題的綜合需求。包括:功能需求、性能需求、環(huán)境需求和用戶界面需求。另外還有可靠性、安全性、保密性、可移植性、可維護(hù)性等方面的需求.
這些需求一般通過雙方交流、調(diào)查研究來(lái)獲取,并達(dá)到共同的理解。2.需求分析的基本任務(wù)43是要準(zhǔn)確地定義新系統(tǒng)的目標(biāo),滿足用戶需要?;卮鹣到y(tǒng)必須“44(2)分析與綜合,導(dǎo)出軟件的邏輯模型。
分析人員對(duì)獲取的需求,進(jìn)行一致性的分析檢查,在分析、綜合中逐步細(xì)化軟件功能,劃分成各個(gè)子功能。包括:對(duì)數(shù)據(jù)域進(jìn)行分解,并分配到各個(gè)子功能上,以確定系統(tǒng)的構(gòu)成及主要成分,并用圖文結(jié)合的形式,建立起新系統(tǒng)的邏輯模型。(3)編寫文檔。文檔:需求規(guī)格說(shuō)明書初步用戶使用手冊(cè)確認(rèn)測(cè)試計(jì)劃2.需求分析的基本任務(wù)44(2)分析與綜合,導(dǎo)出軟件的邏輯模型。2.需求分析的基453.結(jié)構(gòu)化分析方法
SA方法利用圖形等半形式化的描述方式表達(dá)需求,用它們形成需求說(shuō)明書中的主要部分。描述工具是:(1)數(shù)據(jù)流圖(DFD)(2)描述加工邏輯的工具:結(jié)構(gòu)化語(yǔ)言、判定表、判定樹(3)數(shù)據(jù)字典
結(jié)構(gòu)化分析(StructuredAnalysis,簡(jiǎn)稱SA),是面向數(shù)據(jù)流進(jìn)行需求分析的方法。SA是一種建?;顒?dòng),該方法使用簡(jiǎn)單易讀符號(hào),根據(jù)軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,描繪出滿足功能需求的軟件模型。453.結(jié)構(gòu)化分析方法SA方法利用圖形等半形式化463.結(jié)構(gòu)化分析方法
(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖(DataFlowDiam),是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。數(shù)據(jù)流圖的作用:需求分析時(shí),作為自頂向下的工具描述系統(tǒng)組成部分為技術(shù)員、用戶間交流提供有力方法463.結(jié)構(gòu)化分析方法(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖473.結(jié)構(gòu)化分析方法
(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖由數(shù)據(jù)流、加工(又稱為數(shù)據(jù)處理)、數(shù)據(jù)存儲(chǔ)(又稱為文件)、數(shù)據(jù)源點(diǎn)或終點(diǎn)四種基本成分組成。數(shù)據(jù)流圖實(shí)例:銀行取款過程數(shù)據(jù)流:加工:數(shù)據(jù)存儲(chǔ):數(shù)據(jù)源點(diǎn)、終點(diǎn):473.結(jié)構(gòu)化分析方法(1)數(shù)據(jù)流圖(DFD)數(shù)據(jù)流圖48描述銀行取款過程的數(shù)據(jù)流圖48描述銀行取款過程的數(shù)據(jù)流圖49基本加工邏輯說(shuō)明
對(duì)數(shù)據(jù)流圖的每一個(gè)基本加工,必須有一個(gè)基本加工邏輯說(shuō)明描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則描述實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)包含的信息應(yīng)是充足的,完備的,有用的,無(wú)冗余的49基本加工邏輯說(shuō)明對(duì)數(shù)據(jù)流圖的每一個(gè)基本加工,必須有一個(gè)50(2)用于寫加工邏輯說(shuō)明的工具
結(jié)構(gòu)化英語(yǔ)判定表判定樹3.結(jié)構(gòu)化分析方法
50(2)用于寫加工邏輯說(shuō)明的工具結(jié)構(gòu)化英語(yǔ)3.結(jié)構(gòu)化511)結(jié)構(gòu)化英語(yǔ)結(jié)構(gòu)化英語(yǔ)的詞匯表由英語(yǔ)命令動(dòng)詞數(shù)據(jù)詞典中定義的名字有限的自定義詞邏輯關(guān)系詞
IF_THEN_ELSE、
CASE_OF、
WHILE_DO、
REPEAT_UNTIL等組成。511)結(jié)構(gòu)化英語(yǔ)結(jié)構(gòu)化英語(yǔ)的詞匯表由52是一種介于自然語(yǔ)言和形式化語(yǔ)言之間的語(yǔ)言語(yǔ)言的正文用基本控制結(jié)構(gòu)進(jìn)行分割,加工中的操作用自然語(yǔ)言短語(yǔ)來(lái)表示其基本控制結(jié)構(gòu)有三種:簡(jiǎn)單陳述句結(jié)構(gòu):避免復(fù)合語(yǔ)句;重復(fù)結(jié)構(gòu):while_do
或
repeat_until結(jié)構(gòu)。判定結(jié)構(gòu):if_then_else
或
case_of結(jié)構(gòu);52是一種介于自然語(yǔ)言和形式化語(yǔ)言之間的語(yǔ)言53商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$500then
if
欠款超過了60天then
在償還欠款前不予批準(zhǔn)
else
(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單
else
(發(fā)貨單金額未超過$500)
if
欠款超過60天then
發(fā)批準(zhǔn)書,發(fā)貨單及賒欠報(bào)告
else
(欠款未超期)發(fā)批準(zhǔn)書,發(fā)貨單
53商店業(yè)務(wù)處理系統(tǒng)中“檢查發(fā)貨單”if發(fā)貨單金額超過$5542)判定表如果數(shù)據(jù)流圖的加工需要依賴于多個(gè)邏輯條件的取值,使用判定表來(lái)描述比較合適條件定義條件取值的組合動(dòng)作定義在各種取值的組合下應(yīng)執(zhí)行的動(dòng)作542)判定表如果數(shù)據(jù)流圖的加工需要依賴于多個(gè)邏輯條件的取值55以“檢查發(fā)貨單”為例55以“檢查發(fā)貨單”為例563)判定樹判定樹也是用來(lái)表達(dá)加工邏輯的一種工具。有時(shí)侯它比判定表更直觀。檢查發(fā)貨單金額>$500金額$500
欠款>60天不發(fā)出批準(zhǔn)書
欠款60天發(fā)貨單發(fā)出批準(zhǔn)書、
欠款>60天發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報(bào)告
欠款60天發(fā)出批準(zhǔn)書、發(fā)貨單563)判定樹判定樹也是用來(lái)表達(dá)加工邏輯的一種工具。有時(shí)侯它57(3)數(shù)據(jù)字典數(shù)據(jù)詞典(DataDictionary,簡(jiǎn)稱DD)就是用來(lái)定義數(shù)據(jù)流圖中的各個(gè)成分的具體含義的。對(duì)數(shù)據(jù)流圖中出現(xiàn)的每一個(gè)數(shù)據(jù)流、文件、加工給出詳細(xì)定義。3.結(jié)構(gòu)化分析方法
數(shù)據(jù)字典主要有四類條目:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、數(shù)據(jù)存儲(chǔ)、基本加工。數(shù)據(jù)項(xiàng)是組成數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)的最小元素。57(3)數(shù)據(jù)字典數(shù)據(jù)詞典(DataDictionary58(3)數(shù)據(jù)字典數(shù)據(jù)字典詞條內(nèi)容表3.結(jié)構(gòu)化分析方法
數(shù)據(jù)項(xiàng)/數(shù)據(jù)流/數(shù)據(jù)文件名稱:別名:取消及定義:組成:組織:備注:58(3)數(shù)據(jù)字典數(shù)據(jù)字典詞條內(nèi)容表3.結(jié)構(gòu)化分析方法59實(shí)例:計(jì)算機(jī)售書系統(tǒng)模型
(3)數(shù)據(jù)字典3.結(jié)構(gòu)化分析方法
59實(shí)例:計(jì)算機(jī)售書系統(tǒng)模型(3)數(shù)據(jù)字典3.結(jié)構(gòu)化分60售書系統(tǒng)數(shù)據(jù)流詞條實(shí)例:發(fā)票
數(shù)據(jù)流名:發(fā)票別名:購(gòu)書發(fā)票組成:學(xué)號(hào)+姓名+{書號(hào)+單價(jià)+數(shù)量+總價(jià)}+書費(fèi)合計(jì)備
注:(3)數(shù)據(jù)字典3.結(jié)構(gòu)化分析方法
60售書系統(tǒng)數(shù)據(jù)流詞條實(shí)例:發(fā)票數(shù)據(jù)流名:發(fā)票(3)數(shù)據(jù)61數(shù)據(jù)文件詞條實(shí)例:各班學(xué)生用書表文件名:各班學(xué)生用書表別名:組成:{系編號(hào)+專業(yè)和班級(jí)編號(hào)+年級(jí)+{書號(hào)}}組織:按系、專業(yè)和班編號(hào)從小到大排列備注:(3)數(shù)據(jù)字典3.結(jié)構(gòu)化分析方法
61數(shù)據(jù)文件詞條實(shí)例:各班學(xué)生用書表文件名:各班學(xué)生用書表(62三、軟件設(shè)計(jì)軟件概要設(shè)計(jì)2.軟件詳細(xì)設(shè)計(jì)主要完成軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和確定各組成部分之間的相互關(guān)系。
主要確定每個(gè)模塊的具體執(zhí)行過程,也稱為過程設(shè)計(jì)。62三、軟件設(shè)計(jì)軟件概要設(shè)計(jì)主要完成軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和確定各631.軟件概要設(shè)計(jì)概要設(shè)計(jì)基本任務(wù)概要設(shè)計(jì)基本原理631.軟件概要設(shè)計(jì)概要設(shè)計(jì)基本任務(wù)64(1)概要設(shè)計(jì)基本任務(wù)進(jìn)行軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)進(jìn)行軟件中所使用的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)的設(shè)計(jì)
編寫概要設(shè)計(jì)文檔
進(jìn)行概要設(shè)計(jì)的評(píng)審
64(1)概要設(shè)計(jì)基本任務(wù)進(jìn)行軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)65(1)概要設(shè)計(jì)基本任務(wù)1)軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊。確定每個(gè)模塊的功能。確定模塊之間的調(diào)用關(guān)系。確定模塊之間的接口,即模塊之間傳遞的信息。評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。
65(1)概要設(shè)計(jì)基本任務(wù)1)軟件系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)采用某種66(1)概要設(shè)計(jì)基本任務(wù)2)
數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)的設(shè)計(jì)。
對(duì)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),采用逐步細(xì)化的方法,對(duì)需求分析階段獲得的數(shù)據(jù)字典中的數(shù)據(jù)的結(jié)構(gòu)特性等加以細(xì)化。對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)是指數(shù)據(jù)存儲(chǔ)文件的設(shè)計(jì),主要進(jìn)行概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)三方面設(shè)計(jì)。
66(1)概要設(shè)計(jì)基本任務(wù)2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)的設(shè)計(jì)。對(duì)67(1)概要設(shè)計(jì)基本任務(wù)3)概要設(shè)計(jì)文檔主要包括:
概要設(shè)計(jì)說(shuō)明書。數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書。進(jìn)一步補(bǔ)充需求分析階段編寫的用戶手冊(cè)。修訂測(cè)試計(jì)劃,對(duì)測(cè)試策略、方法、步驟提出明確要求。67(1)概要設(shè)計(jì)基本任務(wù)3)概要設(shè)計(jì)文檔主要包括:概68(1)概要設(shè)計(jì)基本任務(wù)4)進(jìn)行概要設(shè)計(jì)的評(píng)審
:
對(duì)設(shè)計(jì)部分是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能等要求設(shè)計(jì)方案的可行性內(nèi)外部接口定義的正確性、有效性各部分之間的一致性68(1)概要設(shè)計(jì)基本任務(wù)4)進(jìn)行概要設(shè)計(jì)的評(píng)審:對(duì)69(2)概要設(shè)計(jì)的基本原理l)模塊化2)抽象3)信息隱藏4)模塊獨(dú)立性69(2)概要設(shè)計(jì)的基本原理l)模塊化70(2)概要設(shè)計(jì)的基本原理
l)模塊化在軟件的體系結(jié)構(gòu)中,模塊是可組合、分解和更換的單元。模塊具有以下幾種基本屬性:接口、功能、狀態(tài)、邏輯。其中:功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。模塊化是指解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。每個(gè)模塊完成一個(gè)特定的子功能,所有的模塊按某種方法組裝起來(lái),成為一個(gè)整體,完成整個(gè)系統(tǒng)所要求的功能。
70(2)概要設(shè)計(jì)的基本原理
l)模塊化在軟件的71(2)概要設(shè)計(jì)的基本原理
2)抽象抽象是指獲取事物本質(zhì)的共同的特性而暫不考慮它的細(xì)節(jié),不考慮其他因素。抽象是認(rèn)識(shí)復(fù)雜現(xiàn)象過程中使用的思維工具軟件工程過程中的每一步部可以看作是對(duì)軟件解決方法的抽象層次的一次細(xì)化。71(2)概要設(shè)計(jì)的基本原理
2)抽象抽象是指獲72(2)概要設(shè)計(jì)的基本原理
3)抽象信息隱藏信息隱藏指在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對(duì)于不需要這些信息的其他模塊來(lái)說(shuō),是不能訪問的?!半[藏”:模塊化是通過定義一組相互獨(dú)立的模塊來(lái)實(shí)現(xiàn)系統(tǒng),這些獨(dú)立的模塊彼此之間僅僅交換那些為了完成系統(tǒng)功能所必需的信息,而將那些自身的實(shí)現(xiàn)細(xì)節(jié)與數(shù)據(jù)“隱藏”起來(lái)。通過抽象,可以確定組成軟件的過程實(shí)體。通過信息隱藏,可以定義模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。72(2)概要設(shè)計(jì)的基本原理
3)抽象信息隱藏信73(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。如何衡量軟件的獨(dú)立性呢?根據(jù)模塊的外部特征和內(nèi)部特征,提出了兩個(gè)定性的度量標(biāo)準(zhǔn)——耦合性和內(nèi)聚性。將軟件系統(tǒng)劃分模塊時(shí),盡量做到高內(nèi)聚低耦合,提高模塊的獨(dú)立性,為設(shè)計(jì)高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。
73(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性模塊獨(dú)74(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性__耦合性耦合性也稱塊間聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng),模塊的獨(dú)立性則越差。模塊間耦合高低取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息。模塊的耦合性有以下七種類型:非直接耦合、數(shù)據(jù)耦合、標(biāo)記耦合、控制耦合、外部耦合、公共耦合、內(nèi)容耦合,它們的耦合程度由低到高。
74(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性__耦75(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性__內(nèi)聚性又稱塊內(nèi)聯(lián)系。指模塊的功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。若一個(gè)模塊內(nèi)各元素(語(yǔ)句之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就很高。內(nèi)聚性有以下七類類型:偶然內(nèi)聚、邏輯內(nèi)聚、時(shí)間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚,它們的內(nèi)聚程度由低到高。75(2)概要設(shè)計(jì)的基本原理
4)模塊獨(dú)立性__內(nèi)762.概要設(shè)計(jì)軟件結(jié)構(gòu):表示程序的總體結(jié)構(gòu),指程序的控制層次體系(多少模塊,多少層次,調(diào)用關(guān)系)762.概要設(shè)計(jì)軟件結(jié)構(gòu):表示程序的總體結(jié)構(gòu),指程序的控制77一個(gè)問題可以有多種結(jié)構(gòu)來(lái)表示77一個(gè)問題可以有多種結(jié)構(gòu)來(lái)表示78軟件結(jié)構(gòu)的術(shù)語(yǔ)深度:控制的層次數(shù)寬度:控制的總跨度,即最多模塊一層的模塊數(shù)扇出:一個(gè)模塊直接控制的模塊數(shù)扇入:一個(gè)模塊被幾個(gè)模塊直接控制78軟件結(jié)構(gòu)的術(shù)語(yǔ)79軟件結(jié)構(gòu)的術(shù)語(yǔ)從屬:A模塊控制B模塊,則B從屬A統(tǒng)率:A模塊控制B模塊,則A統(tǒng)率B79軟件結(jié)構(gòu)的術(shù)語(yǔ)80C1和C2中,C1’和C,C2’和C,可能是偶然性塊內(nèi)聯(lián)系,把它們從各自的模塊分離出來(lái),C1’,C2’和C的塊內(nèi)聯(lián)系增大,模塊獨(dú)立性增強(qiáng),塊間聯(lián)系看起來(lái)增大一些,又通過模塊的合并,得到圖(c)(d)塊內(nèi)聯(lián)系大,塊間聯(lián)系相應(yīng)小些(模塊個(gè)數(shù)少)。80C1和C2中,C1’和C,C2’和C,可能是偶然性塊內(nèi)聯(lián)81模塊調(diào)用個(gè)數(shù)最好不要超過五個(gè)一個(gè)模塊具有過多的調(diào)用模塊或被調(diào)用模塊,那么它往往包含過多的功能,這就是這個(gè)模塊太復(fù)雜除特殊情況外(case,開關(guān)),應(yīng)避免這種結(jié)構(gòu),用增加層次以減少調(diào)用個(gè)數(shù)。五個(gè)是經(jīng)驗(yàn)得來(lái)的81模塊調(diào)用個(gè)數(shù)最好不要超過五個(gè)82結(jié)構(gòu)化設(shè)計(jì)技術(shù)(SD)?SD是IBM公司提出的,是長(zhǎng)期程序設(shè)計(jì)的經(jīng)驗(yàn)總結(jié)。?下面將介紹如何建立系統(tǒng)的模塊結(jié)構(gòu)。數(shù)據(jù)流圖的類型?SD是以數(shù)據(jù)流為基礎(chǔ)來(lái)設(shè)計(jì)軟件的模塊結(jié)構(gòu),那么我們首先要找出數(shù)據(jù)流圖的一些規(guī)律,從而導(dǎo)出軟件的初始結(jié)構(gòu)。82結(jié)構(gòu)化設(shè)計(jì)技術(shù)(SD)?SD是IBM公司提出的,是長(zhǎng)期程831、變換類型數(shù)據(jù)流圖定義:具體較明顯的輸入,變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖。831、變換類型數(shù)據(jù)流圖定義:具體較明顯的輸入,變換(或稱主842、事務(wù)型數(shù)據(jù)流圖定義:圖中某個(gè)加工將它的輸入數(shù)據(jù)流分離成一串發(fā)散的數(shù)據(jù)流,形成許多活動(dòng)的路徑(分支),并根據(jù)輸入的值選擇其中的一個(gè)路徑,具有這樣特征的數(shù)據(jù)流圖。事務(wù)中心:把輸入數(shù)據(jù)流分離成一串發(fā)散數(shù)據(jù)流的加工。842、事務(wù)型數(shù)據(jù)流圖定義:圖中某個(gè)加工將它的輸入數(shù)據(jù)流分離853、設(shè)計(jì)步驟:總述——模型——實(shí)例第一步:復(fù)查基本系統(tǒng)模型
這一步將看到軟件的原型,傳統(tǒng)方法往往是從這一步開始的。
在做這一步時(shí),要對(duì)以前建立的基本數(shù)據(jù)模型,再作最后的審查,是否有遺漏的輸入或輸出。第二步:復(fù)查并精化數(shù)據(jù)流圖
對(duì)數(shù)據(jù)流圖的最后復(fù)審求精要慎重,一定要保證數(shù)據(jù)流圖的正確性。不同的選擇導(dǎo)出的軟件初始模塊圖的合理性有些差異。853、設(shè)計(jì)步驟:總述——模型——實(shí)例863、設(shè)計(jì)步驟:總述——模型——實(shí)例第三步:確定數(shù)據(jù)流圖的類型:變換型與事務(wù)型。變換設(shè)計(jì):從變換型數(shù)據(jù)流圖導(dǎo)出軟件模塊結(jié)構(gòu)的過程。如何劃分輸入、主加工、輸出三個(gè)部分??從兩頭向中間,先找出邏輯輸入和邏輯輸出,找到它們即可劃分出三個(gè)部分。863、設(shè)計(jì)步驟:總述——模型——實(shí)例變換設(shè)計(jì):878788第四步:設(shè)計(jì)上層模塊結(jié)構(gòu):自頂向下的設(shè)計(jì)方法。頂層:主模塊,對(duì)應(yīng)于主加工。一層:標(biāo)準(zhǔn)的一層,對(duì)應(yīng)于變換數(shù)據(jù)流圖的三個(gè)部分,三個(gè)模塊88第四步:設(shè)計(jì)上層模塊結(jié)構(gòu):自頂向下的設(shè)計(jì)方法。89第五步:設(shè)計(jì)軟件的中下層模塊結(jié)構(gòu)(基于數(shù)據(jù)流圖)。89第五步:設(shè)計(jì)軟件的中下層模塊結(jié)構(gòu)(基于數(shù)據(jù)流圖)。90第六步:對(duì)初始模塊求精,得到合理的軟件結(jié)構(gòu)。90第六步:對(duì)初始模塊求精,得到合理的軟件結(jié)構(gòu)。912.軟件詳細(xì)設(shè)計(jì)(1)詳細(xì)設(shè)計(jì)基本任務(wù)(2)結(jié)構(gòu)化程序設(shè)計(jì)方法912.軟件詳細(xì)設(shè)計(jì)(1)詳細(xì)設(shè)計(jì)基本任務(wù)92(1)詳細(xì)設(shè)計(jì)基本任務(wù)為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。其他設(shè)計(jì)。根據(jù)軟件系統(tǒng)的類型,還可能要進(jìn)行以下設(shè)計(jì):代碼設(shè)計(jì)、輸入輸出格式設(shè)計(jì)、人機(jī)對(duì)話設(shè)計(jì)。編寫詳細(xì)設(shè)計(jì)說(shuō)明書。為每一個(gè)模塊設(shè)計(jì)一組測(cè)試用例。評(píng)審。對(duì)處理過程的算法和數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)都要評(píng)審。92(1)詳細(xì)設(shè)計(jì)基本任務(wù)為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。93(2)結(jié)構(gòu)化程序設(shè)計(jì)方法
結(jié)構(gòu)化程序設(shè)計(jì)是E.W.Dijikstra在1965年提出的。它的主要觀點(diǎn)是采用自頂向下、逐步求精的程序設(shè)計(jì)方法;使用三種基本控制結(jié)構(gòu)構(gòu)造程序,任何程序都可由順序、選擇、重復(fù)三種基本控制結(jié)構(gòu)構(gòu)造。詳細(xì)描述處理過程常用三種工具:圖形、表格和語(yǔ)言。
圖形:程序流程圖、N-S圖、PAD圖表格:判定表語(yǔ)言:過程設(shè)計(jì)語(yǔ)言(PDL)
93(2)結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)是E.W.Di94四、軟件編碼軟件編碼是將詳細(xì)設(shè)計(jì)得到的處理過程的描述轉(zhuǎn)換為基于某種計(jì)算機(jī)語(yǔ)言的程序,即源程序代碼。需注意根據(jù)項(xiàng)目的應(yīng)用領(lǐng)域選擇適當(dāng)?shù)木幊陶Z(yǔ)言、編程的軟硬件環(huán)境以及編碼的程序設(shè)計(jì)風(fēng)格等事項(xiàng)
94四、軟件編碼軟件編碼是將詳細(xì)設(shè)計(jì)得到的處理過程的描述轉(zhuǎn)95四、軟件編碼FourthGenerationLanguages1stgenerationlanguagesmachinelanguages(binary)2ndgenerationlanguagesassemblers3rdgenerationlanguageshigh-levellanguagesFORTRAN,COBOL,C,C++…eachstatementindendedtobe~5-10assemblerstmts4thgenerationlanguages(4GLS)eachstatementindendedtobe~30-50assemblerstmtseasier/fastertoprogramreducescostsdeclarative–saywhatyouwant,nothowtodoit(e.g.,SQLStructuredQueryLanguage)successhasbeenmixedpositivesfastresponsefromDPdept.workwellforDBappsnegativesslow&inefficient95四、軟件編碼FourthGenerationLan96程序風(fēng)格程序?qū)嶋H上也是一種供人閱讀的文章,有一個(gè)文章的風(fēng)格問題。應(yīng)該使程序具有良好的風(fēng)格。
源程序文檔化
數(shù)據(jù)說(shuō)明
語(yǔ)句結(jié)構(gòu)
輸入/輸出方法96程序風(fēng)格程序?qū)嶋H上也是一種供人閱讀的文章,有一個(gè)文章的風(fēng)97源程序文檔化
標(biāo)識(shí)符的命名
安排注釋
程序的視覺組織97源程序文檔化標(biāo)識(shí)符的命名98標(biāo)識(shí)符的命名符號(hào)名即標(biāo)識(shí)符,包括模塊名、變量名、常量名、標(biāo)號(hào)名、子程序名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。名字應(yīng)能反映它所代表的對(duì)象,應(yīng)有一定實(shí)際意義。名字不是越長(zhǎng)越好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時(shí)可使用縮寫名字,但這時(shí)要注意縮寫規(guī)則要一致,并且要給每一個(gè)名字加注釋。在一個(gè)程序中,一個(gè)變量只應(yīng)用于一種用途。98標(biāo)識(shí)符的命名符號(hào)名即標(biāo)識(shí)符,包括模塊名、變量名、常量名、99程序的注釋夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。注釋決不是可有可無(wú)的。一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個(gè)源程序的1/3到1/2,甚至更多。注釋分為序言性注釋和功能性注釋。99程序的注釋夾在程序中的注釋是程序員與日后的程序讀者之間通100序言性注釋通常置于每個(gè)程序模塊的開頭部分,它應(yīng)當(dāng)給出程序的整體說(shuō)明,對(duì)于理解程序本身具有引導(dǎo)作用。有些軟件開發(fā)部門對(duì)序言性注釋做了明確而嚴(yán)格的規(guī)定,要求程序編制者逐項(xiàng)列出。有關(guān)項(xiàng)目包括:程序標(biāo)題;有關(guān)本模塊功能和目的的說(shuō)明;主要算法;接口說(shuō)明:包括調(diào)用形式,參數(shù)描述,子程序清單;100序言性注釋通常置于每個(gè)程序模塊的開頭部分,它應(yīng)當(dāng)給出程101序言性注釋有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制條件,以及其它有關(guān)信息;模塊位置:在哪一個(gè)源文件中,或隸屬于哪一個(gè)軟件包;開發(fā)簡(jiǎn)歷:模塊設(shè)計(jì)者,復(fù)審者,復(fù)審日期,修改日期及有關(guān)說(shuō)明等。101序言性注釋有關(guān)數(shù)據(jù)描述:重要的變量及其用途,約束或限制102功能性注釋功能性注釋嵌在源程序體中,用以描述其后的語(yǔ)句或程序段是在做什么工作,或是執(zhí)行了下面的語(yǔ)句會(huì)怎么樣。而不要解釋下面怎么做。要點(diǎn):描述一段程序,而不是每一個(gè)語(yǔ)句;用縮進(jìn)和空行,使程序與注釋容易區(qū)別;注釋要正確。102功能性注釋功能性注釋嵌在源程序體中,用以描述其后的語(yǔ)句103程序的視覺組織恰當(dāng)?shù)乩每崭?,可以突出運(yùn)算的優(yōu)先性,避免發(fā)生運(yùn)算的錯(cuò)誤。自然的程序段之間可用空行隔開;移行也叫做向右縮格。它是指程序中的各行不必都在左端對(duì)齊,都從第一格起排列。這樣做使程序完全分不清層次關(guān)系。對(duì)于選擇語(yǔ)句和循環(huán)語(yǔ)句,把其中的程序段語(yǔ)句向右做階梯式移行。使程序的邏輯結(jié)構(gòu)更加清晰。103程序的視覺組織恰當(dāng)?shù)乩每崭?,可以突出運(yùn)算的優(yōu)先性,避104數(shù)據(jù)說(shuō)明在設(shè)計(jì)階段已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。在編寫程序時(shí),則需要注意數(shù)據(jù)說(shuō)明的風(fēng)格。為了使程序中數(shù)據(jù)說(shuō)明更易于理解和維護(hù),必須注意以下幾點(diǎn)。
1.數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化
2.說(shuō)明語(yǔ)句中變量安排有序化
3.使用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)104數(shù)據(jù)說(shuō)明在設(shè)計(jì)階段已經(jīng)確定了數(shù)據(jù)結(jié)構(gòu)的組織及其復(fù)雜性。105數(shù)據(jù)說(shuō)明1.數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化數(shù)據(jù)說(shuō)明次序規(guī)范化,使數(shù)據(jù)屬性容易查找,也有利于測(cè)試,排錯(cuò)和維護(hù)。原則上,數(shù)據(jù)說(shuō)明的次序與語(yǔ)法無(wú)關(guān),其次序是任意的。但出于閱讀、理解和維護(hù)的需要,最好使其規(guī)范化,使說(shuō)明的先后次序固定。2.說(shuō)明語(yǔ)句中變量安排有序化當(dāng)多個(gè)變量名在一個(gè)說(shuō)明語(yǔ)句中說(shuō)明時(shí),應(yīng)當(dāng)對(duì)這些變量按字母的順序排列。帶標(biāo)號(hào)的全程數(shù)據(jù)也應(yīng)當(dāng)按字母的順序排列。105數(shù)據(jù)說(shuō)明1.數(shù)據(jù)說(shuō)明的次序應(yīng)當(dāng)規(guī)范化106數(shù)據(jù)說(shuō)明3.使用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)如果設(shè)計(jì)了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),應(yīng)當(dāng)使用注釋來(lái)說(shuō)明在程序?qū)崿F(xiàn)時(shí)這個(gè)數(shù)據(jù)結(jié)構(gòu)的固有特點(diǎn)。106數(shù)據(jù)說(shuō)明3.使用注釋說(shuō)明復(fù)雜數(shù)據(jù)結(jié)構(gòu)107語(yǔ)句結(jié)構(gòu)在設(shè)計(jì)階段確定了軟件的邏輯流結(jié)構(gòu),但構(gòu)造單個(gè)語(yǔ)句則是編碼階段的任務(wù)。語(yǔ)句構(gòu)造力求簡(jiǎn)單,直接,不能為了片面追求效率而使語(yǔ)句復(fù)雜化。1、在一行內(nèi)只寫一條語(yǔ)句2、程序編寫首先應(yīng)當(dāng)考慮清晰性
程序編寫首先應(yīng)當(dāng)考慮清晰性,不要刻意追求技巧性,使程序編寫得過于緊湊。3、程序要能直截了當(dāng)?shù)卣f(shuō)明程序員的用意。107語(yǔ)句結(jié)構(gòu)在設(shè)計(jì)階段確定了軟件的邏輯流結(jié)構(gòu),但構(gòu)造單個(gè)語(yǔ)108語(yǔ)句結(jié)構(gòu)4.除非對(duì)效率有特殊的要求,程序編寫要做到清晰第一,效率第二。不要為了追求效率而喪失了清晰性。事實(shí)上,程序效率的提高主要應(yīng)通過選擇高效的算法來(lái)實(shí)現(xiàn)。5.首先要保證程序正確,然后才要求提高速度。反過來(lái)說(shuō),在使程序高速運(yùn)行時(shí),首先要保證它是正確的。6.避免使用臨時(shí)變量而使可讀性下降。7.讓編譯程序做簡(jiǎn)單的優(yōu)化。8.盡可能使用庫(kù)函數(shù)9.避免不必要的轉(zhuǎn)移。108語(yǔ)句結(jié)構(gòu)4.除非對(duì)效率有特殊的要求,程序編寫要做109語(yǔ)句結(jié)構(gòu)10.盡量只采用三種基本的控制結(jié)構(gòu)來(lái)編寫程序。11.避免使用空的ELSE語(yǔ)句和IF…THENIF…的語(yǔ)句。12.避免采用過于復(fù)雜的條件測(cè)試。13.盡量減少使用“否定”條件的條件語(yǔ)句14.盡可能用通俗易懂的偽碼來(lái)描述程序的流程,然后再翻譯成必須使用的語(yǔ)言。15.數(shù)據(jù)結(jié)構(gòu)要有利于程序的簡(jiǎn)化。16.要模塊化,使模塊功能盡可能單一化,模塊間的耦合能夠清晰可見。109語(yǔ)句結(jié)構(gòu)10.盡量只采用三種基本的控制結(jié)構(gòu)來(lái)編寫程序。110語(yǔ)句結(jié)構(gòu)17.利用信息隱蔽,確保每一個(gè)模塊的獨(dú)立性。18.從數(shù)據(jù)出發(fā)去構(gòu)造程序。19.不要修補(bǔ)不好的程序,要重新編寫。也不要一味地追求代碼的復(fù)用,要重新組織。20.對(duì)太大的程序,要分塊編寫、測(cè)試,然后再集成。21.對(duì)遞歸定義的數(shù)據(jù)結(jié)構(gòu)盡量使用遞歸過程。110語(yǔ)句結(jié)構(gòu)17.利用信息隱蔽,確保每一個(gè)模塊的獨(dú)立性。111輸入/輸出在設(shè)計(jì)和編碼時(shí)都應(yīng)考慮下列原則:
1.對(duì)所有的輸入數(shù)據(jù)都要進(jìn)行檢驗(yàn),識(shí)別錯(cuò)誤的輸入,以保證每個(gè)數(shù)據(jù)的有效性;
2.檢查輸入項(xiàng)的各種重要組合的合理性,必要時(shí)報(bào)告輸入狀態(tài)信息;
3.使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入格式;
111輸入/輸出在設(shè)計(jì)和編碼時(shí)都應(yīng)考慮下列原則:112輸入/輸出
4.輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入;
5.應(yīng)允許缺省值;
6.輸入一批數(shù)據(jù)時(shí),最好使用輸入結(jié)束標(biāo)志,而不要由用戶指定輸入數(shù)據(jù)數(shù)目;
7.在交互式輸入輸入時(shí),要在屏幕上使用提示符明確提示交互輸入的請(qǐng)求,指明可使用選擇項(xiàng)的種類和取值范圍。同時(shí),在數(shù)據(jù)輸入的過程中和輸入結(jié)束時(shí),也要在屏幕上給出狀態(tài)信息;
8.當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語(yǔ)句的要求的一致性;
9.給所有的輸出加注解,并設(shè)計(jì)輸出報(bào)表格式。112輸入/輸出4.輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入;113五、軟件測(cè)試與調(diào)試〈一〉軟件測(cè)試軟件測(cè)試概念及目的軟件測(cè)試的原則軟件測(cè)試方法軟件測(cè)試對(duì)象測(cè)試與軟件開發(fā)各階段的關(guān)系軟件測(cè)試過程測(cè)試用例設(shè)計(jì)113五、軟件測(cè)試與調(diào)試〈一〉軟件測(cè)試軟件測(cè)試概念及目的114<一>軟件測(cè)試1.軟件測(cè)試概念及目的測(cè)試階段的基本任務(wù):是根據(jù)軟件開發(fā)各階段的文檔資料和程序的內(nèi)部結(jié)構(gòu),精心設(shè)計(jì)一組“高效”的測(cè)試用例,利用這些實(shí)例執(zhí)行程序,找出軟件中潛在的各種錯(cuò)誤和缺陷。軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。在IEEE提出的軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)中,軟件測(cè)試是指使用人工或自動(dòng)手段,運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過程,其目的是檢驗(yàn)軟件是否滿足規(guī)定的需求,或是清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差異。
114<一>軟件測(cè)試1.軟件測(cè)試概念及目的測(cè)試階段的基本任115<一>軟件測(cè)試2.測(cè)試的原則在軟件測(cè)試中,應(yīng)注意以下指導(dǎo)原則:測(cè)試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出數(shù)據(jù)兩部分組成。測(cè)試用例不僅選用合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。除了檢查程序是否做了它應(yīng)該做的事,還應(yīng)該檢查程序是否做了它不應(yīng)該做的事。應(yīng)制定測(cè)試計(jì)劃并嚴(yán)格執(zhí)行,排除隨意性。長(zhǎng)期保留測(cè)試用例。對(duì)發(fā)現(xiàn)錯(cuò)誤較多的程序段,應(yīng)進(jìn)行更深入的測(cè)試。程序員避免測(cè)試自己的程序。115<一>軟件測(cè)試2.測(cè)試的原則在軟件測(cè)試中,應(yīng)注意以下116<一>軟件測(cè)試3.測(cè)試方法一般分為兩大類:動(dòng)態(tài)測(cè)試方法與靜態(tài)測(cè)試方法。(1)靜態(tài)測(cè)試
靜態(tài)測(cè)試指被測(cè)試程序不在機(jī)器上運(yùn)行,而是采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的手段對(duì)程序進(jìn)行檢測(cè)。(2)動(dòng)態(tài)測(cè)試
動(dòng)態(tài)測(cè)試指通過運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤。對(duì)軟件產(chǎn)品進(jìn)行動(dòng)態(tài)測(cè)試時(shí),根據(jù)測(cè)試用例的設(shè)計(jì)方法不同一般有兩種方法,分別稱為黑盒測(cè)試法和白盒測(cè)試法。116<一>軟件測(cè)試3.測(cè)試方法一般分為兩大類:動(dòng)態(tài)測(cè)試方117
4.軟件測(cè)試的對(duì)象
軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)試應(yīng)貫穿于軟件定義與開發(fā)的整個(gè)期間。需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)以及程序編碼等各階段所得到的文檔,包括需求規(guī)格說(shuō)明、概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明以及源程序,都應(yīng)成為軟件測(cè)試的對(duì)象。117
4.軟件測(cè)試的對(duì)象
軟件測(cè)試并不等于程序測(cè)試。軟件測(cè)118118119測(cè)試信息流119測(cè)試信息流120測(cè)試信息流軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明、源代碼等;測(cè)試配置:測(cè)試計(jì)劃、測(cè)試用例、測(cè)試程序等;測(cè)試工具:測(cè)試數(shù)據(jù)自動(dòng)生成程序、靜態(tài)分析程序、動(dòng)態(tài)分析程序、測(cè)試結(jié)果分析程序、以及驅(qū)動(dòng)測(cè)試的測(cè)試數(shù)據(jù)庫(kù)等等。120測(cè)試信息流軟件配置:軟件需求規(guī)格說(shuō)明、軟件設(shè)計(jì)規(guī)格說(shuō)明121測(cè)試結(jié)果分析:比較實(shí)測(cè)結(jié)果與預(yù)期結(jié)果,評(píng)價(jià)錯(cuò)誤是否發(fā)生。排錯(cuò)(調(diào)試):對(duì)已經(jīng)發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔。修正后的文檔再測(cè)試:直到通過測(cè)試為止。121測(cè)試結(jié)果分析:比較實(shí)測(cè)結(jié)果與預(yù)期結(jié)果,評(píng)價(jià)錯(cuò)誤是否發(fā)生122通過收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件建立可靠性模型利用可靠性分析,評(píng)價(jià)軟件質(zhì)量:
軟件的質(zhì)量和可靠性達(dá)到可以接受的程度;
所做的測(cè)試不足以發(fā)現(xiàn)嚴(yán)重的錯(cuò)誤;如果測(cè)試發(fā)現(xiàn)不了錯(cuò)誤,可以肯定,測(cè)試配置考慮得不夠細(xì)致充分,錯(cuò)誤仍然潛伏在軟件中。122通過收集和分析測(cè)試結(jié)果數(shù)據(jù),對(duì)軟件建立可靠性模型1235.測(cè)試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個(gè)自頂向下,逐步細(xì)化的過程軟件計(jì)劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設(shè)計(jì)編碼是把設(shè)計(jì)用某種程序設(shè)計(jì)語(yǔ)言轉(zhuǎn)換成程序代碼
測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程。1235.測(cè)試與軟件開發(fā)各階段的關(guān)系軟件開發(fā)過程是一個(gè)自頂124測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程。124測(cè)試過程是依相反順序安排的自底向上,逐步集成的過程。125<一>軟件測(cè)試6.軟件測(cè)試過程
軟件測(cè)試一般要經(jīng)過以下四步測(cè)試:(1)單元測(cè)試主要針對(duì)模塊的五個(gè)基本特征進(jìn)行測(cè)試:模塊接口,局部數(shù)據(jù)結(jié)構(gòu),重要的執(zhí)行路徑,錯(cuò)誤處理,邊界條件。(2)集成測(cè)試也稱組裝測(cè)試,是在單元測(cè)試的基礎(chǔ)上將所有模塊按照設(shè)計(jì)要求組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測(cè)試。(3)確認(rèn)測(cè)試又稱有效性測(cè)試,是檢查軟件的功能與性能是否與需求規(guī)格說(shuō)明書中確定的指標(biāo)相符合。(4)系統(tǒng)測(cè)試是將確認(rèn)通過的軟件作為計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他元素結(jié)合在一起,在實(shí)際的使用環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行一系列的組裝測(cè)試和確認(rèn)測(cè)試。125<一>軟件測(cè)試6.軟件測(cè)試過程軟件測(cè)試一般要經(jīng)1261261277.測(cè)試用例設(shè)計(jì)兩種常用的測(cè)試方法黑盒測(cè)試白盒測(cè)試1277.測(cè)試用例設(shè)計(jì)兩種常用的測(cè)試方法128黑盒測(cè)試把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說(shuō)明書,檢查程序的功能是否符合它的功能說(shuō)明。黑盒測(cè)試又叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試。128黑盒測(cè)試把測(cè)試對(duì)象看做一個(gè)黑盒子,測(cè)試人員完全不考慮程129黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下錯(cuò)誤:
是否有不正確或遺漏了的功能?
在接口上,輸入能否正確地接受?能否輸出正確的結(jié)果?
是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息(例如數(shù)據(jù)文件)訪問錯(cuò)誤?
性能上是否能夠滿足要求?
是否有初始化或終止性錯(cuò)誤?
129黑盒測(cè)試方法是在程序接口上進(jìn)行測(cè)試,主要是為了發(fā)現(xiàn)以下130用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和輸出條件中確定測(cè)試數(shù)據(jù),來(lái)檢查程序是否都能產(chǎn)生正確的輸出。但這是不可能的。130用黑盒測(cè)試發(fā)現(xiàn)程序中的錯(cuò)誤,必須在所有可能的輸入條件和131假設(shè)一個(gè)程序P有輸入量X和Y及輸出量Z。在字長(zhǎng)為32位的計(jì)算機(jī)上運(yùn)行。若X、Y取整數(shù),按黑盒方法進(jìn)行窮舉測(cè)試:可能采用的測(cè)試數(shù)據(jù)組:
232×232
=264
如果測(cè)試一組數(shù)據(jù)需要1毫秒,一年工作365×24小時(shí),完成所有測(cè)試需5億年。131假設(shè)一個(gè)程序P有輸入量X和Y及輸出量Z。在字長(zhǎng)為32位132等價(jià)類劃分等價(jià)類劃分是一種典型的黑盒測(cè)試方法,使用這一方法時(shí),完全不考慮程序的內(nèi)部結(jié)構(gòu),只依據(jù)程序的規(guī)格說(shuō)明來(lái)設(shè)計(jì)測(cè)試用例。等價(jià)類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。132等價(jià)類劃分等價(jià)類劃分是一種典型的黑盒測(cè)試方法,使用這一133等價(jià)類劃分使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(列出等價(jià)類表)和選取測(cè)試用例兩步。劃分等價(jià)類
等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的。測(cè)試某等價(jià)類的代表值就等價(jià)于對(duì)這一類其它值的測(cè)試。133等價(jià)類劃分使用這一方法設(shè)計(jì)測(cè)試用例要經(jīng)歷劃分等價(jià)類(列134等價(jià)類劃分等價(jià)類的劃分有兩種不同的情況:①
有效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合。②
無(wú)效等價(jià)類:是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合。在設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮有效等價(jià)類和無(wú)效等價(jià)類的設(shè)計(jì)。134等價(jià)類劃分等價(jià)類的劃分有兩種不同的情況:135劃分等價(jià)類原則(1)如果輸入條件規(guī)定了取值范圍,或值的個(gè)數(shù),則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。(2)如果輸入條件規(guī)定了輸入值的集合,或者是規(guī)定了“必須如何”的條件,這時(shí)可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(3)如果輸入條件是一個(gè)布爾量,則可以確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。(4)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序要對(duì)每個(gè)輸入值分別進(jìn)行處理。這時(shí)可為每一個(gè)輸入值確立一個(gè)有效等價(jià)類,此外針對(duì)這組值確立一個(gè)無(wú)效等價(jià)類,它是所有不允許的輸入值的集合。(5)如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則)。135劃分等價(jià)類原則(1)如果輸入條件規(guī)定了取值范圍,或值136白盒測(cè)試把測(cè)試對(duì)象看做一個(gè)透明的盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。136白盒測(cè)試把測(cè)試對(duì)象看做一個(gè)透明的盒子,它允許測(cè)試人員利137軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢查:對(duì)程序模塊的所有獨(dú)立的執(zhí)行路徑至少測(cè)試一次;
對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況都至少測(cè)試一次;在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體;測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等。137軟件人員使用白盒測(cè)試方法,主要想對(duì)程序模塊進(jìn)行如下的檢138138139對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能是天文數(shù)字。給出一個(gè)小程序的流程圖,它包括了一個(gè)執(zhí)行20次的循環(huán)。包含的不同執(zhí)行路徑數(shù)達(dá)520條,對(duì)每一條路徑進(jìn)行測(cè)試需要1毫秒,假定一年工作365×24小時(shí),要想把所有路徑測(cè)試完,需3170年。139對(duì)一個(gè)具有多重選擇和循環(huán)嵌套的程序,不同的路徑數(shù)目可能140邏輯覆蓋
語(yǔ)句覆蓋
判定覆蓋
條件覆蓋
判定-條件覆蓋
條件組合覆蓋
路徑覆蓋。邏輯覆蓋是以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試。140邏輯覆蓋語(yǔ)句覆蓋判定-條件覆蓋邏輯覆蓋是以程序內(nèi)部141例(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce141例(A>1)and(B=0)(A=2)or(X142L1
(
ace
)=
{(A>1)
and(B=0)}and{(A=2)
or(X>1)}=
(A>1)
and
(B=0)
and
(A=2)
or
(A>1)
and
(B=0)
and
(X>1)=(A=2)
and
(B=0)
or
(A>1)
and
(B=0)
and
(X>1)
(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce142L1(ace)(A>1)and(143L2(abd)=
not{(A>1)
and
(B=0)}
andnot{(A=2)or
(X>1)}=
{not
(A>1)
ornot
(B=0)
}and
{not
(A=2)
andnot
(X>1)
}=
not
(A>1)
andnot
(A=2)
andnot
(X>1)
or
not
(B=0)
and
not
(A=2)
andnot
(X>1)(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce143L2(abd)(A>1)and(B144L3(abe)=
not{(A>1)
and
(B=0)}and
{(A=2)
or
(X>1)}=
{not
(A>1)
ornot
(B=0)}and
{(A=2)
or
(X>1)}=not
(A>1)
and
(A=2)
or
not
(A>1)
and
(X>1)
or
not
(B=0)and
(A=2)
or
not
(B=0)
and
(X>1)(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce144L3(abe)(A>1)and(B=0145L4(acd)={(A>1)
and
(B=0)}
andnot
{(A=2)
or
(X>1)}=(A>1)
and(B=0)
andnot
(A=2)
and
not
(X>1)(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce145L4(acd)(A>1)and(B146語(yǔ)句覆蓋
語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。在圖例中,正好所有的可執(zhí)行語(yǔ)句都在路徑L1上,所以選擇路徑L1設(shè)計(jì)測(cè)試用例,就可以覆蓋所有的可執(zhí)行語(yǔ)句。
(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)146語(yǔ)句覆蓋語(yǔ)句覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序147測(cè)試用例的設(shè)計(jì)格式如下
【輸入的(A,B,X)輸出的(A,B,X)】為圖例設(shè)計(jì)滿足語(yǔ)句覆蓋的測(cè)試用例是:【(2,0,4),(2,0,3)】覆蓋ace【L1】(A=2)
and
(B=0)
or
(A>1)
and
(B=0)
and
(X>1)
(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)147測(cè)試用例的設(shè)計(jì)格式如下
【輸入的(A,B,X)輸出148
判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。判定覆蓋又稱為分支覆蓋。對(duì)于圖例,如果選擇路徑L1和L2,就可得滿足要求的測(cè)試用例:(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)148判定覆蓋判定覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序149【(2,0,4),(2,0,3)】覆蓋ace【L1】【(1,1,1),(1,1,1)】覆蓋abd【L2】(A=2)
and
(B=0)
or
(A>1)
and
(B=0)
and
(X>1)
not
(A>1)
andnot
(A=2)
andnot
(X>1)
ornot
(B=0)
and
not
(A=2)
andnot
(X>1)(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)149【(2,0,4),(2,0,3)】覆蓋ace【150如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:
【(2,1,1),(2,1,2)】覆蓋abe【L3】
【(3,0,3),(3,0,1)】覆蓋acd【L4】
not(A>1)
and
(X>1)
ornot
(B=0)
and
(A=2)
ornot
(B=0)
and
(X>1)(A>1)
and(B=0)
andnot
(A=2)
and
not
(X>1)(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)150如果選擇路徑L3和L4,還可得另一組可用的測(cè)試用例:
151條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。在圖例中,我們事先可對(duì)所有條件的取值加以標(biāo)記。例如,對(duì)于第一個(gè)判斷:條件A>1取真為,取假為
條件B=0取真為,取假為
(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdceL1(ace)L2(abd)L3(abe)L4(acd)151條件覆蓋條件覆蓋就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,152對(duì)于第二個(gè)判斷:條件A=2取真為,取假為
條件X>1取真為,取假為測(cè)試用例
覆蓋分支
條件取值【(2,0,4),(2,0,3)】
L1(c,e)
【(1,0,1),(1,0,1)】
L2(b,d)【(2,1,1),(2,1,2)】
L3(b,e)
或(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce對(duì)于第一個(gè)判斷:條件A>1取真為,取假為
條件B=0取真為,取假為條件覆蓋152對(duì)于第二個(gè)判斷:(A>1)and(B=0)(A=2153對(duì)于第二個(gè)判斷:條件A=2取真為,取假為
條件X>1取真為,取假為測(cè)試用例
覆蓋分支
條件取值【(1,0,3),(1,0,4)】
L3(b,e)
【(2,1,1),(2,1,2)】
L3(b,e)
(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFabdce對(duì)于第一個(gè)判斷:條件A>1取真為,取假為
條件B=0取真為,取假為條件覆蓋153對(duì)于第二個(gè)判斷:(A>1)and(B=0)(A=2154
判定-條件覆蓋判定-條件覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,使得判斷中每個(gè)條件的所有可能取值至少執(zhí)行一次,每個(gè)判斷中的每個(gè)分支至少執(zhí)行一次。154155
測(cè)試用例
覆蓋分支
條件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)(A=2)
and
(B=0)
or
(A>1)
and
(B=0)
and
(X>1)
not
(A>1)
andnot
(A=2)
andnot
(X>1)
ornot
(B=0)
and
not
(A=2)
andnot
(X>1)155測(cè)試用例 覆蓋分支 條件取值156
andorA>1TB=0TX=X/ATFFA=2TFX>1FX=X+1156 andorA>1TB=0TX=X/ATFFA=2TF157條件組合覆蓋條件組合覆蓋就是設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人店鋪?zhàn)赓U合同樣本(三篇)
- 2025年中學(xué)設(shè)備供貨合同(2篇)
- 2025年二手房買賣購(gòu)房合同樣本(2篇)
- 2025年個(gè)人房屋簡(jiǎn)易租賃合同樣本(4篇)
- 2025年代理記賬委托協(xié)議合同格式版(2篇)
- 2025年互聯(lián)網(wǎng)專線電路接入服務(wù)協(xié)議范文(2篇)
- 2025年人防工程施工合同樣本(三篇)
- 智能家居居間合同示例范本
- 互聯(lián)網(wǎng)創(chuàng)新基地居間協(xié)議
- 教育培訓(xùn)機(jī)構(gòu)站臺(tái)翻新合同
- 中國(guó)氫內(nèi)燃機(jī)行業(yè)發(fā)展環(huán)境、市場(chǎng)運(yùn)行格局及前景研究報(bào)告-智研咨詢(2024版)
- 《自然保護(hù)區(qū)劃分》課件
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 上海鐵路局招聘筆試沖刺題2025
- 《商用車預(yù)見性巡航系統(tǒng)技術(shù)規(guī)范》
- 國(guó)旗班指揮刀訓(xùn)練動(dòng)作要領(lǐng)
- 春季安全開學(xué)第一課
- 植物芳香油的提取 植物有效成分的提取教學(xué)課件
- 肖像繪畫市場(chǎng)發(fā)展現(xiàn)狀調(diào)查及供需格局分析預(yù)測(cè)報(bào)告
- 煤礦掘進(jìn)隊(duì)機(jī)電管理制度匯編
- 國(guó)家公務(wù)員考試(面試)試題及解答參考(2024年)
評(píng)論
0/150
提交評(píng)論