《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
5.1 結(jié)構(gòu)化程序設(shè)計(jì)由于軟件開(kāi)發(fā)和維護(hù)中存在的一系列嚴(yán)重由于軟件開(kāi)發(fā)和維護(hù)中存在的一系列嚴(yán)重問(wèn)題,于問(wèn)題,于2020世紀(jì)世紀(jì)6060年代爆發(fā)了軟件危機(jī)。年代爆發(fā)了軟件危機(jī)。為了克服軟件危機(jī),引發(fā)了程序設(shè)計(jì)的一為了克服軟件危機(jī),引發(fā)了程序設(shè)計(jì)的一場(chǎng)革命,誕生了場(chǎng)革命,誕生了結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法。5.1 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)的概念與原則結(jié)構(gòu)化程序設(shè)計(jì)的概念與原則最早由最早由E.W.DijkstraE.W.Dijkstra提出提出;建議從高級(jí)語(yǔ)言中取建議從高級(jí)語(yǔ)言中取消消GOTOGOTO語(yǔ)句;語(yǔ)句;19661966年,年,BohmBohm和和JacopiniJacopini證明:只用三種基本的證明:只用三種基本的控制結(jié)構(gòu)控制結(jié)構(gòu)“順序順序”、“選擇選擇”和和“循環(huán)循環(huán)”就能實(shí)就能實(shí)現(xiàn)任何單入口和單出口的沒(méi)有現(xiàn)任何單入口和單出口的沒(méi)有“死循環(huán)死循環(huán)”的程序。的程序。5.1 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的概念結(jié)構(gòu)程序設(shè)計(jì)的概念如果一個(gè)程序的代碼塊僅僅通過(guò)順序、選擇和循如果一個(gè)程序的代碼塊僅僅通過(guò)順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱(chēng)這個(gè)程序是結(jié)塊只有一個(gè)入口和一個(gè)出口,則稱(chēng)這個(gè)程序是結(jié)構(gòu)化的。構(gòu)化的。5.1 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則結(jié)構(gòu)程序設(shè)計(jì)的主要原則(1)(1)使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯。制結(jié)構(gòu)表示程序邏輯。(2)(2)選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口。選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口。(3)(3)程序語(yǔ)句組成容易識(shí)別的塊(程序語(yǔ)句組成容易識(shí)別的塊(BlockBlock),每塊只),每塊只有一個(gè)入口和一個(gè)出口。有一個(gè)入口和一個(gè)出口。(4)(4)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來(lái)實(shí)復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來(lái)實(shí)現(xiàn)。現(xiàn)。(5)(5)語(yǔ)言中沒(méi)有的控制結(jié)構(gòu),可用一段等價(jià)的程序段語(yǔ)言中沒(méi)有的控制結(jié)構(gòu),可用一段等價(jià)的程序段模擬,模擬,但要求該程序段在整個(gè)系統(tǒng)中應(yīng)前后一致。但要求該程序段在整個(gè)系統(tǒng)中應(yīng)前后一致。5.1 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則結(jié)構(gòu)程序設(shè)計(jì)的主要原則(6)(6)嚴(yán)格控制嚴(yán)格控制GOTOGOTO語(yǔ)句,僅在下列情形才可使用:語(yǔ)句,僅在下列情形才可使用:用非結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言去實(shí)現(xiàn)結(jié)構(gòu)化的構(gòu)用非結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言去實(shí)現(xiàn)結(jié)構(gòu)化的構(gòu)造。造。若不使用若不使用GOTOGOTO語(yǔ)句就會(huì)使程序功能模糊。語(yǔ)句就會(huì)使程序功能模糊。在某種可以改善而不是損害程序可讀性的情況在某種可以改善而不是損害程序可讀性的情況下。例如,在查找結(jié)束時(shí),文件訪(fǎng)問(wèn)結(jié)束時(shí),下。例如,在查找結(jié)束時(shí),文件訪(fǎng)問(wèn)結(jié)束時(shí),出現(xiàn)錯(cuò)誤情況要從循環(huán)中轉(zhuǎn)出時(shí),使用布爾變出現(xiàn)錯(cuò)誤情況要從循環(huán)中轉(zhuǎn)出時(shí),使用布爾變量和條件結(jié)構(gòu)來(lái)實(shí)現(xiàn)就不如用量和條件結(jié)構(gòu)來(lái)實(shí)現(xiàn)就不如用GOTOGOTO語(yǔ)句來(lái)得簡(jiǎn)語(yǔ)句來(lái)得簡(jiǎn)潔易懂。潔易懂。5.1 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的主要原則結(jié)構(gòu)程序設(shè)計(jì)的主要原則(7)(7)在程序設(shè)計(jì)過(guò)程中,盡量采用自頂向下在程序設(shè)計(jì)過(guò)程中,盡量采用自頂向下(Top(TopDown)Down)、逐步細(xì)化、逐步細(xì)化(Stepwise Refinement)(Stepwise Refinement)的原則,的原則,由粗到細(xì),一步步展開(kāi)。由粗到細(xì),一步步展開(kāi)。5.1 結(jié)構(gòu)化程序設(shè)計(jì)自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程 主要包括兩個(gè)方面:主要包括兩個(gè)方面:一是將復(fù)雜問(wèn)題的解法分解和細(xì)化成由若干個(gè)模一是將復(fù)雜問(wèn)題的解法分解和細(xì)化成由若干個(gè)模塊組成的層次結(jié)構(gòu);塊組成的層次結(jié)構(gòu);二是將每個(gè)模塊的功能逐步分解細(xì)化為一系列的二是將每個(gè)模塊的功能逐步分解細(xì)化為一系列的處理。處理。5.1 結(jié)構(gòu)化程序設(shè)計(jì)自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程 在處理較大的復(fù)雜任務(wù)時(shí),常采取在處理較大的復(fù)雜任務(wù)時(shí),常采取“模塊化模塊化”的的方法,即在程序設(shè)計(jì)時(shí)不是將全部?jī)?nèi)容都放在同方法,即在程序設(shè)計(jì)時(shí)不是將全部?jī)?nèi)容都放在同一個(gè)模塊中,而是分成若干個(gè)模塊,每個(gè)模塊實(shí)一個(gè)模塊中,而是分成若干個(gè)模塊,每個(gè)模塊實(shí)現(xiàn)一個(gè)功能?,F(xiàn)一個(gè)功能。模塊分解完成后,下一步的任務(wù)就是將每個(gè)模塊模塊分解完成后,下一步的任務(wù)就是將每個(gè)模塊的功能逐步分解細(xì)化為一系列的處理。的功能逐步分解細(xì)化為一系列的處理。5.1 結(jié)構(gòu)化程序設(shè)計(jì)自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程自頂向下、逐步細(xì)化的設(shè)計(jì)過(guò)程 在概要設(shè)計(jì)階段,我們已經(jīng)采用自頂向下、逐步在概要設(shè)計(jì)階段,我們已經(jīng)采用自頂向下、逐步細(xì)化的方法,把復(fù)雜問(wèn)題的解法分解和細(xì)化成了細(xì)化的方法,把復(fù)雜問(wèn)題的解法分解和細(xì)化成了由許多功能模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。由許多功能模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。在詳細(xì)設(shè)計(jì)和編碼階段,我們還應(yīng)當(dāng)采取自頂向在詳細(xì)設(shè)計(jì)和編碼階段,我們還應(yīng)當(dāng)采取自頂向下、逐步求精的方法,把模塊的功能逐步分解,下、逐步求精的方法,把模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而翻譯成一系列用細(xì)化為一系列具體的步驟,進(jìn)而翻譯成一系列用某種程序設(shè)計(jì)語(yǔ)言寫(xiě)成的程序。某種程序設(shè)計(jì)語(yǔ)言寫(xiě)成的程序。5.1 結(jié)構(gòu)化程序設(shè)計(jì)自頂向下、逐步細(xì)化方法舉例自頂向下、逐步細(xì)化方法舉例 用篩選法求用篩選法求100100以?xún)?nèi)的素?cái)?shù)。以?xún)?nèi)的素?cái)?shù)。所謂的篩選法,就是從所謂的篩選法,就是從2 2到到100100中去掉中去掉2,3,5,72,3,5,7的倍的倍數(shù),剩下的就是數(shù),剩下的就是100100以?xún)?nèi)的素?cái)?shù)。以?xún)?nèi)的素?cái)?shù)。5.1 結(jié)構(gòu)化程序設(shè)計(jì)l l首先按程序功能寫(xiě)出一個(gè)框架首先按程序功能寫(xiě)出一個(gè)框架main main main main()()()()建立建立2 2到到100100的數(shù)組的數(shù)組A A,其中,其中AiAi i i;-1-1 建立建立2 2到到1010的素?cái)?shù)表的素?cái)?shù)表B B,存放,存放2 2到到1010以?xún)?nèi)的素?cái)?shù);以?xún)?nèi)的素?cái)?shù);-2-2 若若AiAi i i是是B B 中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除AiAi;-3-3 輸出輸出A A 中所有沒(méi)有被剔除的數(shù);中所有沒(méi)有被剔除的數(shù);-4-4 5.1 結(jié)構(gòu)化程序設(shè)計(jì)l l上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化成一個(gè)循環(huán)語(yǔ)句上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化成一個(gè)循環(huán)語(yǔ)句上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化成一個(gè)循環(huán)語(yǔ)句上述框架中每一個(gè)加工語(yǔ)句都可進(jìn)一步細(xì)化成一個(gè)循環(huán)語(yǔ)句 main main main main()()()()/*/*/*/*建立建立建立建立2 2 2 2到到到到100100100100的數(shù)組的數(shù)組的數(shù)組的數(shù)組A A A A,其中,其中,其中,其中AiAiAiAi i*/i*/i*/i*/-1 -1 -1 -1 for for for for(i=2i=2i=2i=2;i=100i=100i=100i=100;i+i+i+i+)AiAiAiAi=i=i=i=i;/*/*/*/*建立建立建立建立2 2 2 2到到到到10101010的素?cái)?shù)表的素?cái)?shù)表的素?cái)?shù)表的素?cái)?shù)表B B B B,存放,存放,存放,存放2 2 2 2到到到到10101010以?xún)?nèi)的素?cái)?shù)以?xún)?nèi)的素?cái)?shù)以?xún)?nèi)的素?cái)?shù)以?xún)?nèi)的素?cái)?shù)*/-2 -2 -2 -2 B1=2 B1=2 B1=2 B1=2;B2=3B2=3B2=3B2=3;B3=5B3=5B3=5B3=5;B4=7B4=7B4=7B4=7;/*/*/*/*若若若若AiAiAiAi i i i i是是是是B B B B 中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除中任一數(shù)的倍數(shù),則剔除AiAiAiAi*/*/*/*/-3 -3 -3 -3 for for for for(j=1j=1j=1j=1;j=4j=4j=4j=4;j+j+j+j+)檢查檢查檢查檢查A A A A 所有的數(shù)能否被所有的數(shù)能否被所有的數(shù)能否被所有的數(shù)能否被BjBjBjBj 整除并將能被整除的數(shù)從整除并將能被整除的數(shù)從整除并將能被整除的數(shù)從整除并將能被整除的數(shù)從AAAA中剔除;中剔除;中剔除;中剔除;/*/*/*/*輸出輸出輸出輸出A A A A 中所有沒(méi)有被剔除的數(shù)中所有沒(méi)有被剔除的數(shù)中所有沒(méi)有被剔除的數(shù)中所有沒(méi)有被剔除的數(shù)*/-4 -4 -4 -4 for for for for(i=2i=2i=2i=2;i=100i=100i=100i=0&char=0&char=9)5.4 程序設(shè)計(jì)風(fēng)格輸入輸入/輸出規(guī)范化輸出規(guī)范化 輸入輸入/輸出信息是與用戶(hù)的使用直接相關(guān)的。輸入輸出信息是與用戶(hù)的使用直接相關(guān)的。輸入/輸出的方式和格式應(yīng)當(dāng)盡可能方便用戶(hù)的使用。輸出的方式和格式應(yīng)當(dāng)盡可能方便用戶(hù)的使用。輸入輸入/輸出的風(fēng)格隨著人工干預(yù)程度的不同而有所輸出的風(fēng)格隨著人工干預(yù)程度的不同而有所不同。不同。5.4 程序設(shè)計(jì)風(fēng)格輸入輸入/輸出的原則輸出的原則(1)(1)對(duì)所有的輸入數(shù)據(jù)都進(jìn)行檢驗(yàn),從而識(shí)別錯(cuò)誤的輸入,對(duì)所有的輸入數(shù)據(jù)都進(jìn)行檢驗(yàn),從而識(shí)別錯(cuò)誤的輸入,以保證每個(gè)數(shù)據(jù)的有效性。以保證每個(gè)數(shù)據(jù)的有效性。(2)(2)檢查輸入項(xiàng)的各種重要組合的合理性,必要時(shí)報(bào)告輸入檢查輸入項(xiàng)的各種重要組合的合理性,必要時(shí)報(bào)告輸入狀態(tài)信息。狀態(tài)信息。(3)(3)使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸入格式。格式。(4)(4)輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入。輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入。(5)(5)應(yīng)允許默認(rèn)值。應(yīng)允許默認(rèn)值。(6)(6)輸入一批數(shù)據(jù)時(shí),最好使用輸入結(jié)束標(biāo)志,而不要由用輸入一批數(shù)據(jù)時(shí),最好使用輸入結(jié)束標(biāo)志,而不要由用戶(hù)指定輸入數(shù)據(jù)數(shù)目。戶(hù)指定輸入數(shù)據(jù)數(shù)目。5.4 程序設(shè)計(jì)風(fēng)格輸入輸入/輸出的原則輸出的原則(7)(7)在以交互式輸入在以交互式輸入/輸出方式進(jìn)行輸入時(shí),要在屏輸出方式進(jìn)行輸入時(shí),要在屏幕上使用提示符明確提示交互輸入的請(qǐng)求,指幕上使用提示符明確提示交互輸入的請(qǐng)求,指明可使用選擇項(xiàng)的種類(lèi)和取值范圍。同時(shí),在明可使用選擇項(xiàng)的種類(lèi)和取值范圍。同時(shí),在數(shù)據(jù)輸入的過(guò)程中和輸入結(jié)束時(shí),也要在屏幕數(shù)據(jù)輸入的過(guò)程中和輸入結(jié)束時(shí),也要在屏幕上給出狀態(tài)信息。上給出狀態(tài)信息。(8)(8)當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入當(dāng)程序設(shè)計(jì)語(yǔ)言對(duì)輸入/輸出格式有嚴(yán)格要求時(shí),輸出格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式與輸入語(yǔ)句要求的一致性。應(yīng)保持輸入格式與輸入語(yǔ)句要求的一致性。(9)(9)給所有的輸出加注解,并設(shè)計(jì)輸出報(bào)表格式。給所有的輸出加注解,并設(shè)計(jì)輸出報(bào)表格式。5.5 程序復(fù)雜程度度量程序復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。它直接程序復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。它直接關(guān)系到軟件的開(kāi)發(fā)成本、開(kāi)發(fā)周期和軟件內(nèi)部潛關(guān)系到軟件的開(kāi)發(fā)成本、開(kāi)發(fā)周期和軟件內(nèi)部潛伏錯(cuò)誤的多少。伏錯(cuò)誤的多少。它也是軟件可理解性的另一種度量。它也是軟件可理解性的另一種度量。度量的價(jià)值在于可以用于估算軟件中錯(cuò)誤的數(shù)量度量的價(jià)值在于可以用于估算軟件中錯(cuò)誤的數(shù)量及軟件開(kāi)發(fā)的工作量,也可以用來(lái)比較兩個(gè)不同及軟件開(kāi)發(fā)的工作量,也可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或算法的優(yōu)劣。的設(shè)計(jì)或算法的優(yōu)劣。本節(jié)介紹如何使用本節(jié)介紹如何使用McCabe方法及方法及Halstead方法方法度量程序的復(fù)雜程度。度量程序的復(fù)雜程度。5.5 程序復(fù)雜程度度量McCabe方法方法McCabeMcCabe方法基于程序或算法的控制流圖來(lái)計(jì)算其方法基于程序或算法的控制流圖來(lái)計(jì)算其環(huán)路復(fù)雜性,環(huán)路復(fù)雜性,使用這種方法時(shí)需要先畫(huà)出使用這種方法時(shí)需要先畫(huà)出控制流圖控制流圖,然后再計(jì),然后再計(jì)算控制流圖中算控制流圖中環(huán)路環(huán)路的個(gè)數(shù)。的個(gè)數(shù)。5.5 程序復(fù)雜程度度量 控制流圖控制流圖可以將控制流圖看做是退化的程序流程圖。即將可以將控制流圖看做是退化的程序流程圖。即將程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)結(jié)點(diǎn),程序流程圖中每個(gè)處理符號(hào)都退化成一個(gè)結(jié)點(diǎn),原來(lái)連接不同處理符號(hào)的流線(xiàn)變成連接不同結(jié)點(diǎn)原來(lái)連接不同處理符號(hào)的流線(xiàn)變成連接不同結(jié)點(diǎn)的有向弧,這樣得到的的有向弧,這樣得到的有向圖有向圖稱(chēng)為稱(chēng)為控制流圖控制流圖。控制流圖僅描述程序內(nèi)部的控制流程,完全不表控制流圖僅描述程序內(nèi)部的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作,以及分支和循環(huán)的具體條現(xiàn)對(duì)數(shù)據(jù)的具體操作,以及分支和循環(huán)的具體條件。件。5.5 程序復(fù)雜程度度量控制流圖的結(jié)構(gòu)控制流圖的結(jié)構(gòu)在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)在選擇或多分支結(jié)構(gòu)中,分支的匯聚處應(yīng)有一個(gè)匯聚結(jié)點(diǎn)。匯聚結(jié)點(diǎn)。邊和結(jié)點(diǎn)圈定的區(qū)域叫做邊和結(jié)點(diǎn)圈定的區(qū)域叫做區(qū)域區(qū)域,當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),當(dāng)對(duì)區(qū)域計(jì)數(shù)時(shí),圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。圖形外的區(qū)域也應(yīng)記為一個(gè)區(qū)域。5.5 程序復(fù)雜程度度量控制流圖舉例控制流圖舉例5.5 程序復(fù)雜程度度量復(fù)合條件的分解復(fù)合條件的分解 如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(如果判斷中的條件表達(dá)式是由一個(gè)或多個(gè)邏輯運(yùn)算符(OROR,ANDAND,)連接的復(fù)合條件表達(dá)式,則需改為一系列只)連接的復(fù)合條件表達(dá)式,則需改為一系列只有單個(gè)條件的嵌套的判斷,如圖所示。有單個(gè)條件的嵌套的判斷,如圖所示。5.5 程序復(fù)雜程度度量程序的環(huán)路復(fù)雜性程序的環(huán)路復(fù)雜性 對(duì)于給定的控制流圖對(duì)于給定的控制流圖G G,環(huán)路復(fù)雜性,環(huán)路復(fù)雜性V(G)V(G)的計(jì)算方的計(jì)算方法如下。法如下。(1)(1)環(huán)路復(fù)雜性定義為控制流程圖中的區(qū)域數(shù)。環(huán)路復(fù)雜性定義為控制流程圖中的區(qū)域數(shù)。(2)(2)設(shè)設(shè)E E為控制流圖的邊數(shù),為控制流圖的邊數(shù),N N為圖中的結(jié)點(diǎn)數(shù)為圖中的結(jié)點(diǎn)數(shù) V V(G G)=E=E N+2 N+2(3)(3)設(shè)設(shè)P P為控制流圖中的判定結(jié)點(diǎn)數(shù)為控制流圖中的判定結(jié)點(diǎn)數(shù) V V(G G)=P+1=P+15.5 程序復(fù)雜程度度量環(huán)路復(fù)雜性的應(yīng)用環(huán)路復(fù)雜性的應(yīng)用 程序的環(huán)路復(fù)雜性給出了程序基本路徑集中的程序的環(huán)路復(fù)雜性給出了程序基本路徑集中的獨(dú)獨(dú)立路徑條數(shù)立路徑條數(shù),這是確保程序中每個(gè)可執(zhí)行語(yǔ)句至,這是確保程序中每個(gè)可執(zhí)行語(yǔ)句至少執(zhí)行一次所必需的測(cè)試用例數(shù)目。少執(zhí)行一次所必需的測(cè)試用例數(shù)目。一條獨(dú)立路徑是至少包含有一條在其他獨(dú)立路徑一條獨(dú)立路徑是至少包含有一條在其他獨(dú)立路徑中從未有過(guò)的邊的路徑。中從未有過(guò)的邊的路徑。5.5 程序復(fù)雜程度度量環(huán)路復(fù)雜性的應(yīng)用環(huán)路復(fù)雜性的應(yīng)用 在右圖所示的控制流在右圖所示的控制流圖中,一組獨(dú)立的路圖中,一組獨(dú)立的路徑是:徑是:路徑路徑 path1path1,path2path2,path3path3,path4path4組成了控制流圖的一個(gè)基組成了控制流圖的一個(gè)基本路徑集。本路徑集。5.5 程序復(fù)雜程度度量Halstead方法方法 HalsteadHalstead方法是根據(jù)程序中運(yùn)算符和操作數(shù)的總方法是根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜度。數(shù)來(lái)度量程序的復(fù)雜度。5.5 程序復(fù)雜程度度量實(shí)際的的Halstead長(zhǎng)度度 令令N1N1為程序中運(yùn)算符出現(xiàn)的總次數(shù);為程序中運(yùn)算符出現(xiàn)的總次數(shù);N2N2為操作數(shù)出現(xiàn)的總次數(shù);為操作數(shù)出現(xiàn)的總次數(shù);實(shí)際的實(shí)際的HalsteadHalstead長(zhǎng)度長(zhǎng)度N N定義為定義為 N=N1+N2N=N1+N25.5 程序復(fù)雜程度度量預(yù)測(cè)的的Halstead長(zhǎng)度度 詳細(xì)設(shè)計(jì)之后,假設(shè)程序中使用的不同運(yùn)算符的詳細(xì)設(shè)計(jì)之后,假設(shè)程序中使用的不同運(yùn)算符的個(gè)數(shù)為個(gè)數(shù)為n1n1;不同操作數(shù)的個(gè)數(shù)為不同操作數(shù)的個(gè)數(shù)為n2n2;則預(yù)測(cè)的則預(yù)測(cè)的HalsteadHalstead長(zhǎng)度公式如下:長(zhǎng)度公式如下:H=n1H=n1 log2n1+n2 log2n1+n2 log2n2 log2n25.5 程序復(fù)雜程度度量程序的潛在錯(cuò)誤程序的潛在錯(cuò)誤 HalsteadHalstead度量可以用來(lái)預(yù)測(cè)程序中的錯(cuò)誤??梢远攘靠梢杂脕?lái)預(yù)測(cè)程序中的錯(cuò)誤??梢哉J(rèn)為程序中可能存在的差錯(cuò)應(yīng)與程序的長(zhǎng)度或復(fù)認(rèn)為程序中可能存在的差錯(cuò)應(yīng)與程序的長(zhǎng)度或復(fù)雜度相關(guān)。雜度相關(guān)。若設(shè)若設(shè)B B為該程序的錯(cuò)誤數(shù),則出錯(cuò)數(shù)的預(yù)測(cè)公式為為該程序的錯(cuò)誤數(shù),則出錯(cuò)數(shù)的預(yù)測(cè)公式為 B=NB=Nlog2log2(n1n1n2n2)/3000/3000小結(jié)在傳統(tǒng)方法中,詳細(xì)設(shè)計(jì)也稱(chēng)為過(guò)程設(shè)計(jì)。在傳統(tǒng)方法中,詳細(xì)設(shè)計(jì)也稱(chēng)為過(guò)程設(shè)計(jì)。過(guò)程設(shè)計(jì)的任務(wù)是設(shè)計(jì)實(shí)現(xiàn)每個(gè)模塊功能的詳細(xì)過(guò)程設(shè)計(jì)的任務(wù)是設(shè)計(jì)實(shí)現(xiàn)每個(gè)模塊功能的詳細(xì)步驟,即算法。步驟,即算法。過(guò)程設(shè)計(jì)工具可分為圖形、表格和語(yǔ)言過(guò)程設(shè)計(jì)工具可分為圖形、表格和語(yǔ)言3 3類(lèi)。類(lèi)。這這3 3類(lèi)工具各有所長(zhǎng),讀者應(yīng)該根據(jù)需要選用適當(dāng)類(lèi)工具各有所長(zhǎng),讀者應(yīng)該根據(jù)需要選用適當(dāng)?shù)墓ぞ?。的工具。編碼是在對(duì)軟件進(jìn)行了總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)之后編碼是在對(duì)軟件進(jìn)行了總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)之后進(jìn)行的,它只不過(guò)是將軟件設(shè)計(jì)的結(jié)果翻譯成用進(jìn)行的,它只不過(guò)是將軟件設(shè)計(jì)的結(jié)果翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。
收藏
編號(hào):65494723
類(lèi)型:共享資源
大小:6.60MB
格式:ZIP
上傳時(shí)間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開(kāi)閱讀全文
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶(hù)自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶(hù)書(shū)面授權(quán),請(qǐng)勿作他用。