九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

7程序設(shè)計和軟件工程基礎(chǔ)

上傳人:無*** 文檔編號:253377605 上傳時間:2024-12-12 格式:PPT 頁數(shù):81 大小:421KB
收藏 版權(quán)申訴 舉報 下載
7程序設(shè)計和軟件工程基礎(chǔ)_第1頁
第1頁 / 共81頁
7程序設(shè)計和軟件工程基礎(chǔ)_第2頁
第2頁 / 共81頁
7程序設(shè)計和軟件工程基礎(chǔ)_第3頁
第3頁 / 共81頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《7程序設(shè)計和軟件工程基礎(chǔ)》由會員分享,可在線閱讀,更多相關(guān)《7程序設(shè)計和軟件工程基礎(chǔ)(81頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、,,,,,,,西北師范大學(xué)計算中心,81,第,7,,章,,程序設(shè)計 和軟件工程基礎(chǔ),7.1,程序設(shè)計風(fēng)格,,7.2,結(jié)構(gòu)化程序設(shè)計,,7.3,面向?qū)ο蟪绦蛟O(shè)計,,7.4,軟件工程基礎(chǔ),7,程序設(shè)計和軟件工程基礎(chǔ),隨著計算機應(yīng)用范圍的不斷擴大和硬件環(huán)境的不斷完善,軟件的規(guī)模也越來越大,復(fù)雜性不斷增加,,如何保證軟件的正確性,驗證軟件的正確性成為突出問題。為此在軟件設(shè)計領(lǐng)域涌現(xiàn)出結(jié)構(gòu)化程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計等技術(shù),同時將工程化引入到軟件開發(fā)中,像處理工程一樣處理軟件研制的全過程,,本章主要介紹,:,,,◇,結(jié)構(gòu)化程序設(shè)計,,,◇,面向?qū)ο蟪绦蛟O(shè)計,,,◇,軟件工程,7.1,程序設(shè)計風(fēng)格,

2、____,程序與程序設(shè)計,,◆,程序,是為計算機解決某一問題而編寫的指令序列,,從計算機角度來說,程序是用某種計算機所能理解并執(zhí)行的計算機語言描述解決問題的方法步驟,,程序,=,算法,+,數(shù)據(jù)結(jié)構(gòu),,◆,程序設(shè)計,是編寫程序的過程,,◆,程序設(shè)計語言,是用于描述計算機所執(zhí)行操作的語言,,◆,程序設(shè)計,主要經(jīng)歷了四個階段:,機器語言程序設(shè)計階段,,高級語言程序設(shè)計階段,,結(jié)構(gòu)化程序設(shè)計階段,,面向?qū)ο蟪绦蛟O(shè)計階段,7.1,程序設(shè)計風(fēng)格,____,語言與程序設(shè)計語言,◆,,程序設(shè)計語言的,發(fā)展,:,,,◇,,低級語言,→,高級語言,,,◇,,具體算法,→,程序設(shè)計方法學(xué),,,◇,,順序程序設(shè)計,→

3、,并發(fā)、并行、分布式程序設(shè)計,,,◇,,非結(jié)構(gòu)化程序設(shè)計,→,結(jié)構(gòu)化程序設(shè)計,,,◇,,過程式程序設(shè)計,→,邏輯式、函數(shù)式、對象式以及可視化程序設(shè)計,,階段,年 限,語 言,程 序 標(biāo) 準(zhǔn),一,1946,年,~,1956,年,機器語言或匯編語言,功效、時間短、占用空間小,二,1956,年,~,1968,年,高級語言,易讀性、易維護性,三,,1968,年,~,現(xiàn)代高級語言,結(jié)構(gòu)良好性,易讀、易維護,◆,,程序設(shè)計語言的,發(fā)展趨勢,:,,,◇,,模塊化,,◇,,簡明性,,◇,,形式化,,◇,,并行化,,◇,,可視化,7.1,程序設(shè)計風(fēng)格,____,面向機器的語言,,◆,,機器指令,,是計算機可

4、以理解并執(zhí)行的操作命令,有完整含義,,,指令格式:,,操作碼+地址碼,,◇,操作碼,是指明該指令要完成的操作,如加、減、傳送、輸入等,,,◇,,操作數(shù),是指參加運算的數(shù)或者數(shù)所在的單元地址,,,◆,,機器語言,,直接用二進制代碼表示指令系統(tǒng)的語言。用機器語言所編寫的程序可以被計算機直接識別和執(zhí)行,,,◆,,匯編語言,,用一些特定的助記符形式來表示所要進行的操作和數(shù)據(jù),又被稱為,“,符號語言,”,。例如:,MOV AX,1,;,MOV BX,1,;,ADD AX,BX,,,匯編語言編寫的程序還需要通過匯編程序,“,翻譯,”,成機器指令后才能執(zhí)行,,在不同的計算機上提供了不同的機器語言或匯編語言,

5、所編寫的程序一般只能在同類型的計算機上運行,所以機器語言和匯編語言被稱為,“,面向機器的語言,”,,相對于高級語言又被成為,“,低級語言,”,操作碼,地址碼,7.1,程序設(shè)計風(fēng)格,____,面向過程的語言,,◆,,高級語言,使用了人類的自然語言,采用了數(shù)學(xué)的公式描述方法;同時又能脫離對機器的要求,能在任何計算機上運行。如:,,IF B^2-4*a*c>=0 THEN PRINT (-B+SQR(B^2-4*A*C))/(2*A),,,◆,,匯編語言或高級語言編寫的程序稱為“,源程序,”,源程序不能在計算機上直接運行,必須將其“翻譯”成擊機器指令的“,目標(biāo)程序,”,,,◆,,編譯方式,,,◇,,

6、編譯,,整個翻譯,整體執(zhí)行,,◇,,解釋,,逐條翻譯,逐條執(zhí)行,源程序,結(jié)果,解釋程序,,(解釋執(zhí)行),源程序,目標(biāo)文件,,.,obj,編譯程序,結(jié)果,連接程序,可執(zhí)行文件,,.exe,執(zhí)行,7.1,程序設(shè)計風(fēng)格,____,程序示例,,以,A=7+8,的計算為例,比較機器、匯編和高級語言不同的表達方式,,,◇,IBM-PC,機的,機器語言程序,:,,,1011 0000,0000,0111,: 把,7,放入累加器,A,中,,,0010 1100 0000 1000,:,8,與累加器,A,中的值相加,結(jié)果仍放入,A,中,,,1111 0100,: 停機,,◇,,IBM-PC,機的,匯編程序,,,

7、ORG 00H,:,設(shè)置程序起始地址,,,MOV A,7,: 把,7,放入累加器,A,中,,,ADD A,8,:,8,與累加器,A,中的值相加,結(jié)果仍放入,A,中,,,HALT,:,停機,,◇,,高級語言程序,(,FORTRAN,),,,A=7+8,:,7,與,8,相加的結(jié)果放入變量,A,中,,,WRITE(*,*)A,:,在顯示器上輸出變量,A,的值,,,END,:,結(jié)束程序,7.1,程序設(shè)計風(fēng)格,____,常用,程序設(shè)計語言,語言,特 點,FORTRAN,第一個計算機高級語言。面向過程,適合于科學(xué)計算,ALGOL,算法語言。面向過程,以子程序結(jié)構(gòu)為基礎(chǔ),COBOL,

8、一種用于事務(wù)數(shù)據(jù)處理的通用程序設(shè)計語言,LISP,一種用于處理“表”的函數(shù)式程序設(shè)計語言,BASIC,一種交互式程序設(shè)計語言,簡單易學(xué)、小巧靈活、使用方便,PASCAL,一種結(jié)構(gòu)化程序設(shè)計語言,簡明性和結(jié)構(gòu)化,適于描述算法,PROLOG,一種處理邏輯問題的邏輯程序設(shè)計語言,C,一種通用程序設(shè)計語言,中級語言,主要用于系統(tǒng)程序設(shè)計,Ads,一種通用的模塊化程序設(shè)計語言,主要特征是強類型化和模塊化,C++,一種以,C,語言為基礎(chǔ)、支持數(shù)據(jù)抽象和面向?qū)ο蠹夹g(shù)的通用程序設(shè)計語言,Java,一種簡捷的、面向?qū)ο蟮?、用于網(wǎng)絡(luò)環(huán)境的、可分布執(zhí)行的程序設(shè)計語言,7.1,程序設(shè)計風(fēng)格,____,面向?qū)ο蟮恼Z言,

9、,◆,,面向?qū)ο蟮挠嬎銠C語言,是一種非過程化語言或陳述性語言。使用時只要提出問題,計算機就能自動給出計算步驟或結(jié)果,,,◆,,Visual Basic,、,Visual FoxPro,、,C++,、,Java,、,Object Pascal,等,,,◆,,面向?qū)ο笥嬎銠C語言的,優(yōu)點,,,◇,,與人類的思維方法一致,,,,◇,,穩(wěn)定性好,,,◇,,可重用性好,,,◇,,可維護性好,,,◇,,易于開發(fā)大型軟件產(chǎn)品,7.1,程序設(shè)計風(fēng)格,程序設(shè)計風(fēng)格,是指編寫程序時所表現(xiàn)出的特點、習(xí)慣和邏輯思路,,,程序設(shè)計風(fēng)格會極大地影響軟件的質(zhì)量和可維護性,良好的程序設(shè)計風(fēng)格可以使程序結(jié)構(gòu)清晰合理,使程序代碼便

10、于維護。因此總體而言應(yīng)該強調(diào)程序簡單和清晰,并且是可以理解的,,著名的,“,清晰第一,,,效率第二,”,論點已成為當(dāng)今主導(dǎo)的程序設(shè)計風(fēng)格,,,形成良好的程序設(shè)計的風(fēng)格,需要注意以下幾個方面:,,,◇,,程序文檔與使用的符號名應(yīng)具有一定的實際含義,以便對程序功能的理解,,,◇,,數(shù)據(jù)的說明次序要規(guī)范,數(shù)據(jù)總體說明次序固定,可以使數(shù)據(jù)的屬性容易查找,有利于測試、排錯和維護,,,◇,,程序簡單易懂,語句構(gòu)造簡單直接,不應(yīng)該為了提高效率而把語句復(fù)雜化,,,◇,,輸入和輸出方式和格式應(yīng)盡可能方便用戶的使用,7.2,,結(jié)構(gòu)化程序設(shè)計,7.2.1,結(jié)構(gòu)化程序設(shè)計的原則,,7.2.2,結(jié)構(gòu)化程序的基本結(jié)構(gòu)與特

11、點,,7.2.3,結(jié)構(gòu)化程序設(shè)計原則和方法的應(yīng)用,7.2.1,結(jié)構(gòu)化程序設(shè)計的原則,結(jié)構(gòu)化程序設(shè)計方法,是一種程序設(shè)計的技術(shù),采用自頂向下、逐步求精的方法和單入口,/,單出口的控制結(jié)構(gòu),,程序設(shè)計時,應(yīng)先考慮總體,后考慮細節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo),將一個復(fù)雜的,問題解法逐步細化成若干個簡單的問題,采用模塊化組織,再進一步分解為具體的處理步驟,每個處理步驟可以使用單一入口的控制結(jié)構(gòu),,結(jié)構(gòu)化程序設(shè)計的,主要原則,:,,,◇,,自頂向下,,,◇,逐步求精,,,,◇,,模塊化,,,◇,,限制使用,goto,語句,,,,采用結(jié)構(gòu)化程序設(shè)計方法編寫程序,可使程序結(jié)構(gòu)良好、易讀、易理解、易維護;

12、提高了編程工作的效率,降低了軟件開發(fā)成本,7.2.2,結(jié)構(gòu)化程序的基本結(jié)構(gòu)與特點,,◆,,結(jié)構(gòu)化程序設(shè)計基本結(jié)構(gòu),,,◇,,順序結(jié)構(gòu),。按照程序語句行的自然順序,一條語句一條語句地執(zhí)行程序。順序結(jié)構(gòu)是一種最基本、最常用的程序設(shè)計結(jié)構(gòu),,◇,,選擇結(jié)構(gòu),(分支結(jié)構(gòu),),。包括簡單選擇和多分支選擇結(jié)構(gòu),這種結(jié)構(gòu)可以根據(jù)設(shè)定的條件,判斷應(yīng)該選擇哪一條分支來執(zhí)行相應(yīng)的語句序列,,◇,,循環(huán)結(jié)構(gòu),(重復(fù)結(jié)構(gòu),),。根據(jù)給定條件,判斷是否需要重復(fù)執(zhí)行某一相同的或類似的程序段。循環(huán)結(jié)構(gòu)對應(yīng)兩類:對先判斷后執(zhí)行循環(huán)體的稱為當(dāng)型循環(huán)結(jié)構(gòu)。對先執(zhí)行循環(huán)體后判斷的稱為直到型循環(huán)結(jié)構(gòu),,使用這三種基本控制結(jié)構(gòu)就能表達

13、出各種其它形式結(jié)構(gòu)的程序設(shè)計方法,A,B,條件,A,B,T,F,條件,A,F,T,條件,A,T,F,條件,F,A,T,順序結(jié)構(gòu) 對稱選擇結(jié)構(gòu) 非對稱選擇結(jié)構(gòu) 當(dāng)型循環(huán)結(jié)構(gòu) 直到型循環(huán)結(jié)構(gòu),7.2.3,結(jié)構(gòu)化程序設(shè)計原則和方法的應(yīng)用,,◆,,結(jié)構(gòu)化程序設(shè)計原則,,,基于對結(jié)構(gòu)化程序設(shè)計原則、方法以及結(jié)構(gòu)化程序基本構(gòu)成結(jié)構(gòu)的掌握和了解,在結(jié)構(gòu)化程序設(shè)計的具體實施中,要注意把握如下要素:,,,◇,,使用程序設(shè)計語言中的順序、選擇、循環(huán)等有限的控制結(jié)構(gòu)表示程序的控制邏輯,,,◇,,選用的控制結(jié)構(gòu)只準(zhǔn)許有一個入口和一個出口,,,,◇,,每個程序塊

14、只有一個入口和一個出口,,,,◇,,復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)的嵌套、組合來實現(xiàn),,,,◇,,嚴(yán)格控制,GOTO,語句的使用,7.3,,面向?qū)ο蟪绦蛟O(shè)計,,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,,7.3.2,面向?qū)ο蟮某绦蛟O(shè)計,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,,雖然結(jié)構(gòu)化程序設(shè)計方法曾經(jīng)給計算機軟件業(yè)帶來了巨大進步。但是,,20,世紀(jì),80,年代末期以來,人們注意到把結(jié)構(gòu)化程序設(shè)計方法應(yīng)用到大型軟件開發(fā)時很少取得成功。到,20,世紀(jì),90,年代前半期,面向?qū)ο蟮脑O(shè)計方法已經(jīng)成為人們開發(fā)軟件時的首選技術(shù)。今天,面向?qū)ο蠹夹g(shù)是一種非常流行的軟件開發(fā)技術(shù),,所謂面向?qū)ο缶褪侵敢粋€軟件系統(tǒng)使用對

15、象、類、繼承、通信等,4,個概念設(shè)計和實現(xiàn)的,一個面向?qū)ο蟮某绦虻拿恳唤M成部分都是對象,計算是通過建立新的對象與對象之間的通信來執(zhí)行的。即,,面向?qū)ο?=,對象,+,類,+,繼承,+,通信,,,下面分別介紹面向?qū)ο蠓椒ㄖ袔讉€重要的基本概念,這些概念是理解和使用面向?qū)ο蠓椒ǖ年P(guān)鍵和基礎(chǔ),7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,對象、屬性和方法,,對象是面向?qū)ο蠓椒ㄖ凶罨镜母拍?。面向?qū)ο蟪绦蛟O(shè)計方法中涉及的,對象是系統(tǒng)中用來描述客觀事物的一個實體,,是構(gòu)成系統(tǒng)的基本單位,它由一組表示靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成,,組成對象的三要素:,,屬性,用于描述對象的一組特征,,事件,是對

16、象上所發(fā)生的事情,是預(yù)先定義好的、能夠被對象識別的動作,,,方法,是對象要執(zhí)行的操作,,,對象具有惟一性、分類性、封裝性和模塊獨立性較好等特點,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,封裝性,操作描述了對象執(zhí)行的功能,若通過消息傳遞,還可以為其他對象使用。操作的過程對外是封閉的,即用戶只能看到這一操作實施后的結(jié)果。這相當(dāng)于事先已經(jīng)設(shè)計好的各種過程,只需要調(diào)用就可以了,用戶不必關(guān)心這一過程是如何編寫的,,也就是說,把對象的屬性和方法結(jié)合成一個獨立的系統(tǒng)單位,并盡可能隱蔽對象的細節(jié),這個過程已經(jīng)封裝在對象中,用戶也看不到。對象的這一特性,就是,對象的封裝性,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本

17、概念,____,類和實例,類是具有共同屬性、共同方法的對象的集合,。所以,類是對象的抽象,它描述了屬于該對象類型的所有對象的性質(zhì),而,一個對象則是其對應(yīng)類的一個實例,,實例是指一個具體的對象,,例如:,Integer,是一個整型類,它描述了所有整數(shù)的性質(zhì)。因此任何整數(shù)都是整數(shù)類的對象,而一個具體的整數(shù),“,123,”,是類,Integer,的一個實例,,由類的定義可知,,類是關(guān)于對象性質(zhì)的描述,,它同對象一樣,包括一組數(shù)據(jù)屬性和數(shù)據(jù)上的合法操作,,例如,顯示一個半徑,3cm,紅顏色的圓,一個半徑,4cm,綠顏色的圓和一個半徑,1cm,黃顏色的圓。這三個圓的圓心位置、半徑大小,,和顏色均不相同,

18、是三個不同的對象。但它們有相,,同的屬性(圓心坐標(biāo)、半徑、顏色)和相同的操作,,(顯示、放大縮小半徑、在屏幕上移動位置等等)。,,因此,可以用,“,Circle,類,”,來定義,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,消息,,面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協(xié)助進行,這樣的機制稱為,“,消息,”,,,消息是一個實例與另一個實例之間傳遞的信息,,它請求對象執(zhí)行某一處理或回答要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流,,消息中只包含傳遞者的要求,它告訴接受者需要做哪些處理,但并不指示接受者如何完成這些處理。消息完全由接受者解釋,接受者獨立決定

19、采用什么方式完成所需的處理,發(fā)送者對接受者不起任何控制作用,,一個對象能夠接受不同形式、不同內(nèi)容的多個消息;相同形式的消息可以送往不同的對象,不同的對象對于形式相同的消息可以有不同的解釋,能夠做出不同的反映。一個對象可以同時往多個對象傳遞信息,兩個對象也可以同時向某個對象傳遞消息,傳遞對象,消息,接口,接受對象,,操作名、參數(shù),,,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,消息,通常,一個消息由接受消息的對象的名稱、消息標(biāo)識符,(,也稱為消息名,),、零個或多個參數(shù)三部分組成,,例如,,MyCircle,是一個半徑,4cm,、,圓心位于,(100,200),的,Circle,類的對象,也

20、就是,Circle,類的一個實例,當(dāng)要求它以綠顏色在屏幕上顯示自己時,在,C++,語言中應(yīng)該向它發(fā)下列消息:,,,MyCircle,.Show(Green),,,其中,,MyCircle,是接受消息的對象的名字,,Show,是消息名,,Green,是消息的參數(shù),發(fā)送對象,消息,接口,接受對象,,操作名、參數(shù),,,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,繼承性,,繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征。,繼承是使用已有的類定義新類的定義技術(shù),。已有的類可當(dāng)作基類來引用,則新類相應(yīng)地可當(dāng)作派生類來引用。廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們,,面向?qū)ο筌浖夹g(shù)的許多

21、強有力的功能和突出的優(yōu)點,都來源于把類組成一個層次結(jié)構(gòu)的系統(tǒng):一個類的上層可以有父類,下層可以有子類。這種層次結(jié)構(gòu)系統(tǒng)的一個重要性質(zhì)是繼承性,一個類直接繼承其父類的描述(數(shù)據(jù)和操作)或特性,子類自動地共享基類中定義的數(shù)據(jù)和方法,,繼承具有傳遞性,如果類,C,繼承,,類,B,,類,B,繼承類,A,,,則類,C,繼承類,A,。,,因此,一個類實際上繼承了它上層,,的全部基類的特性,也就是說,屬,,于某類的對象除了具有該類所定義,,的特性外,還具有該類上層全部基,,類定義的特性,類A,,A,類實例,a1,A,類操作,,類A,A,的變量,,A,的實例變量,,,,類,B:A,的子類,,B,的實例,b1,

22、從,A,的繼承性,,類B,B,類操作,,繼承來的,A,的實例變量,B,的變量,,B,的實例變量,7.3.1,面向?qū)ο蟪绦蛟O(shè)計基本概念,____,多態(tài)性,,對象的,多態(tài)性,是指在一般類中定義的屬性、方法被特殊類繼承后,可以具備不同的數(shù)據(jù)類型或表現(xiàn)不同的行為,使對象的同一個屬性或方法名在一般類及其各個特殊類中具有不同的語義,7.3.2,面向?qū)ο蟮某绦蛟O(shè)計,____,對象方法的主要優(yōu)點,◇,,面向?qū)ο蠓椒ê图夹g(shù),以對象為核心,。對象由數(shù)據(jù)和操作組成的封裝體,對象之間通過傳遞消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系,使用現(xiàn)實世界的概念抽象地理解思考問題從而自然地解決問題,,,◇,,面向?qū)ο?/p>

23、方法,基于對象模型,。當(dāng)對系統(tǒng)的功能需求變化時并不會引起軟件結(jié)構(gòu)的整體變化,往往僅需作一些局部性的修改,,◇,,面向?qū)ο蠓椒?可重用性好,。軟件重用是指在不同的軟件開發(fā)過程中重復(fù)使用相同或相似軟件的過程。可以利用可重用的軟件成分構(gòu)造新的系統(tǒng),,◇,,用面向?qū)ο蠓椒ㄩ_發(fā)軟件時,可以把一個大型產(chǎn)品看作是一系列本質(zhì)上相互獨立的小產(chǎn)品來處理,這樣不僅降低了開發(fā)的技術(shù)難度和成本,而且使得對開發(fā)工作的管理變得容易,軟件整體質(zhì)量也大大提高,,◇,,面向?qū)ο蟮姆椒ㄩ_發(fā)的,軟件可維護性好,,,軟件穩(wěn)定性比較好,,比較容易修改,容易理解,易于測試和調(diào)試,7.4,,軟件工程基礎(chǔ),,7.4.1,軟件工程基本概念,,7

24、.4.2,結(jié)構(gòu)化分析與設(shè)計方法,,7.4.3,軟件測試,,7.4.4,程序調(diào)試,7.4.1,軟件工程基本概念,____,軟件特點,,計算機軟件,包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其特點是:,,◇,,軟件是一種邏輯部件,不是硬件部件,具有很高的抽象性,,◇,,軟件生產(chǎn)沒有明顯的制作過程,一旦研制開發(fā)成功,可以大量拷貝同一內(nèi)容的副本,所以對軟件的質(zhì)量控制,必須著重在軟件開發(fā)方面下功夫,,◇,,軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題,,◇,,軟件復(fù)雜性高,成本昂貴,軟件涉及人類社會的各行各業(yè),開發(fā)常常涉及其他領(lǐng)域的專門知識,開發(fā)需要投入大量、高強度的腦力

25、勞動,成本高,風(fēng)險大,,◇,,軟件開發(fā)涉及諸多的社會因素,許多軟件的開發(fā)和運行涉及軟件用戶的機構(gòu)設(shè)置,體制問題以及管理方式等,甚至涉及到人們的觀念和心理,軟件知識產(chǎn)權(quán)及法律等問題,7.4.1,軟件工程基本概念,____,軟件危機,,隨著計算機技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大,軟件規(guī)模越來越大,復(fù)雜程度不斷增加,軟件成本逐年上升,質(zhì)量沒有可靠的保證,軟件已成為計算機科學(xué)發(fā)展的,“,瓶頸,”,,所謂,軟件危機,是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題。實際上,幾乎所有的軟件都不同程度地存在這個問題,,具體地說,在軟件開發(fā)和維護過程中,軟件危機主要表現(xiàn)在:,,◇,,軟件需求的增長得不到滿足

26、,,◇,,軟件開發(fā)的進度無法控制,,◇,,軟件質(zhì)量難以保證,,◇,軟件不可維護或維護程度非常低,,◇,軟件的成本不斷提高,,◇,軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長,,總之,可以將軟件危機歸結(jié)為成本、質(zhì)量、生產(chǎn)率等問題,7.4.1,軟件工程基本概念,____,軟件工程,,在軟件開發(fā)和維護過程中,之所以存在這些嚴(yán)重的問題,一方面,與軟件本身的特點有關(guān),,例如,在軟件運行前,軟件開發(fā)過程的進展難衡量,質(zhì)量難以評價,因此管理和控制軟件開發(fā)過程相當(dāng)困難;在軟件運行過程中,軟件維護意味著改正或修改原來的設(shè)計;另外,軟件的顯著特點是規(guī)模龐大,復(fù)雜度超線性增長,在開發(fā)大型軟件時,要保證高質(zhì)量

27、,極端復(fù)雜困難,不僅涉及技術(shù)問題(如分析方法、設(shè)計方法、版本控制),更重要的是必須有嚴(yán)格而科學(xué)的管理。另一方面,與軟件開發(fā)和維護方法不正確有關(guān),,這是主要原因,,為了消除軟件危機,通過認真研究解決軟件危機的方法,認識到軟件工程是使計算機軟件走向工程科學(xué)的途徑,逐步形成了軟件工程的概念,開辟了工程學(xué)的新興領(lǐng)域,——,軟件工程學(xué),,,軟件工程,就是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護計算機軟件的有關(guān)技術(shù)及管理方法,7.4.1,軟件工程基本概念,____,軟件工程,,軟件工程的進步是近幾十年軟件產(chǎn)業(yè)迅速發(fā)展的重要原動力,,軟件工程的核心思想是把軟件產(chǎn)品看作是一個工程產(chǎn)品來處理,,把需求計劃、

28、可行性研究、工程審核、質(zhì)量監(jiān)督等工程化的概念引入到軟件生產(chǎn)當(dāng)中,以期達到工程項目的三個基本要素:,進度,、,經(jīng)費,和,質(zhì)量,的目標(biāo)。同時,軟件工程針對軟件的特點提出了許多有別于一般工業(yè)工程技術(shù)的一些技術(shù)方法。代表性的有結(jié)構(gòu)化方法、面向?qū)ο蠓椒ê蛙浖_發(fā)模型及軟件開發(fā)過程等,,特別地,從經(jīng)濟學(xué)的意義上來說,考慮到軟件龐大的維護費用遠比軟件開發(fā)費用要高,因而開發(fā)軟件不能只考慮開發(fā)期間的費用,而且應(yīng)該考慮軟件生命周期內(nèi)的全部費用。因此,軟件生命周期的概念就變得特別重要。在考慮軟件費用時,不僅僅要降低開發(fā)成本,更要降低整個軟件生命周期的總成本,7.4.1,軟件工程基本概念,____,軟件生命周期,,為

29、了有效、科學(xué)地組織和管理軟件生產(chǎn),根據(jù)某一軟件從被提出并著手開始實現(xiàn),直到軟件完成其使命為止的全過程稱為,軟件生命周期,,通常,軟件生命周期包括問題定義、可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、軟件編碼、軟件測試及運行維護,八個階段,,為使各時期的任務(wù)更明確,將,軟件生命周期,劃分為以下三個時期:,,,◇,軟件定義期,,,◇,軟件開發(fā)期,,,◇,軟件維護期,軟件定義期,問題定義,,,,可行性研究,,,,需求分析,,,軟件開發(fā)期,,,概要設(shè)計,,,,詳細設(shè)計,,,,軟件編碼,,,,軟件測試,,,軟件,,維護期,,,運行維護,7.4.1,軟件工程基本概念,____,軟件生命周期,,◆,,軟件定義

30、期,問題定義,理解用戶要求,劃清工作范圍,提交書面報告給用戶及使用部門負責(zé)人進行審查,,,可行性研究,復(fù)查系統(tǒng)的目標(biāo)和規(guī)模,研究當(dāng)前系統(tǒng),導(dǎo)出系統(tǒng)邏輯模型;分析物理系統(tǒng)的可行性,推薦一個可行方案,提出可行性分析報告,,,需求分析,從數(shù)據(jù)流程圖出發(fā),對目標(biāo)系統(tǒng)提出清晰、準(zhǔn)確和具體的要求。確定對系統(tǒng)的綜合要求;分析系統(tǒng)數(shù)據(jù)要求;推導(dǎo)出系統(tǒng)的詳細模型系統(tǒng);建立模型系統(tǒng),軟件定義期階段提交的文檔內(nèi)容包括:系統(tǒng)的功能說明;系統(tǒng)對數(shù)據(jù)的要求;用戶系統(tǒng)描述,7.4.1,軟件工程基本概念,____,軟件生命周期,,◆,,軟件開發(fā)期,概要設(shè)計,進行系統(tǒng)的邏輯設(shè)計,劃分出構(gòu)成系統(tǒng)的各物理元素,設(shè)計出軟件的結(jié)構(gòu)。提

31、出可選擇方案;選擇合理方案;推薦最佳方案;功能分解;設(shè)計軟件結(jié)構(gòu);制定測試計劃;提交文檔,,,詳細設(shè)計,進行系統(tǒng)模塊的設(shè)計,對系統(tǒng)作出精確的描述,以便在編碼階段可直接將這一描述用程序設(shè)計語言編制成程序。通常用層次圖加輸入,/,處理,/,輸出圖或過程描述語言來描述,,,軟件編碼,該概要設(shè)計和詳細設(shè)計階段中的結(jié)果翻譯成用某種程序設(shè)計語言書寫的程序。以文檔形式提交程序、數(shù)據(jù)和詳細注釋,,,軟件測試,是保證軟件可靠性的主要手段,是軟件開發(fā)過程中最艱巨、最繁重的工作。測試的目的是查找程序中的錯誤,但決不能證明程序中沒有錯誤,7.4.1,軟件工程基本概念,____,軟件生命周期,◆,,軟件維護期,,,軟件

32、維護通常有以下四類:,,改正性維護,為糾正使用中出現(xiàn)的錯誤而進行,,適應(yīng)性維護,為適應(yīng)環(huán)境變化而進行,,完善性維護,為改進原有軟件而進行,,預(yù)防性維護,為將來的可維護和可靠而進行,7.4.1,軟件工程基本概念,____,軟件工程的目標(biāo)與原則,,軟件工程的,目標(biāo),是在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可操作性且滿足用戶需求的產(chǎn)品,,基于上述目標(biāo),軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括,軟件開發(fā)技術(shù),和,軟件工程管理,,為了達到軟件工程目標(biāo),在軟件開發(fā)過程中,,必須遵循軟件工程的基本原則,,這些原則適用于所有的軟件項目。這些基本原

33、則包括抽象、信息隱蔽、模塊化、局部化、一致性、完備性和可驗證性,7.4.1,軟件工程基本概念,____,軟件開發(fā)工具與軟件開發(fā)環(huán)境,,現(xiàn)代軟件工程方法之所以得以實施,其,重要的保證是軟件開發(fā)工具和環(huán)境的保證,,使軟件在開發(fā)效率、工程質(zhì)量等多方面得到改善,,工具和環(huán)境的使用進一步提高了軟件的開發(fā)效率、維護效率和軟件質(zhì)量,,◇,,軟件開發(fā)工具,是為支持軟件人員開發(fā)和維護活動而使用的軟件,軟件開發(fā)工具的發(fā)展從單項工具的開發(fā)逐步向集成工具發(fā)展,為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。同時,軟件開發(fā)方法的有效應(yīng)用也必須得到相應(yīng)工具的支持,,◇,,軟件開發(fā)環(huán)境,或稱軟件工程環(huán)境是全面支持開發(fā)全過

34、程的軟件工具集合。這些軟件工具按照一定的方法或模式組合起來,支持軟件生命周期內(nèi)的各個階段和各項任務(wù)的完成,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,結(jié)構(gòu)化分析方法是結(jié)構(gòu)化程序設(shè)計理論在軟件需求分析階段的運用,其目的是幫助弄清用戶對軟件的需求,,結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化自然語言、判定表和判定樹等工具,來建立一種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標(biāo)文檔。其實質(zhì)是著眼于數(shù)據(jù)流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型,,結(jié)構(gòu)化分析的常用工具,:,,,◇,,數(shù)據(jù)流圖,,,◇,,數(shù)據(jù)字典,,,◇,,判定樹,,,◇,,判定

35、表,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,◆,,數(shù)據(jù)流圖,,,數(shù)據(jù)流圖是描述數(shù)據(jù)處理過程的工具,是需求理解的邏輯模型的圖形表示,直接支持系統(tǒng)的功能建模,從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程,,加工,(,轉(zhuǎn)換,),。輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出,,數(shù)據(jù)流,。沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名,,存儲文件,(,數(shù)據(jù)源,),。表示處理過程中存放各種數(shù)據(jù)的文件,,源,。表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體,研究生業(yè)務(wù)活動數(shù)據(jù)流圖,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,數(shù)據(jù)流圖是對實際(已有的或要設(shè)計的)信息處理系統(tǒng)

36、的抽象。具體畫數(shù)據(jù)流圖的方法有很多,常用的有以下兩種方法:,,◇,,自頂向下逐步分解,,對于一個大型的軟件系統(tǒng)來說,直接畫出一張數(shù)據(jù)流圖是很困難的,但如果自頂向下分成若干層,再對每一層的數(shù)據(jù)來描述就簡單了,分層的數(shù)據(jù)流圖一般由頂層、中層和底層組成,頂層圖說明系統(tǒng)的邊界,即系統(tǒng)的輸入和輸出,底層有一些不再分解的加工組成,中間層還可以分為若干層,最后就將這三層的數(shù)據(jù)流圖并為一張的總的數(shù)據(jù)流圖,,◇,,由外向里逐步深化,,用這種方法畫數(shù)據(jù)流圖時,首先畫出系統(tǒng)的輸入和輸出數(shù)據(jù)流 ,然后再考慮系統(tǒng)的內(nèi)部。在畫加工時,同樣畫出它們的輸入和輸出,再考慮這個加工的內(nèi)部,在數(shù)據(jù)流的組成或發(fā)生變化地方應(yīng)畫上一個,

37、“,加工,”,,以便實現(xiàn)這一變化,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,◆,,數(shù)據(jù)字典,,,數(shù)據(jù)字典是結(jié)構(gòu)化分析方法的核心。,數(shù)據(jù)字典,是對所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對于輸入、輸出、存儲成分和中間計算結(jié)果有共同的理解。數(shù)據(jù)字典把不同的需求文檔和分析模型緊密地結(jié)合在一起,與各模型的圖形表示配合,能清楚地表達數(shù)據(jù)處理的要求,,通常數(shù)據(jù)字典包含的信息有:名稱、別名、何處使用,/,如何使用、內(nèi)容描述、補充信息等,,數(shù)據(jù)字典是給數(shù)據(jù)流圖中的每一個數(shù)據(jù)流名、文件名及加工名建立一個目錄,在這些條目中給出各名字的定義。而在每

38、一個目錄下又可建立子目錄,直到每一個組成部分不能再分為止,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,在數(shù)據(jù)字典中,通常有四種類型的條目:,,◇,,數(shù)據(jù)流條目,:數(shù)據(jù)流條目給出某個數(shù)據(jù)流的定義,其形式為列出組成數(shù)據(jù)流的數(shù)據(jù)項。如數(shù)據(jù)流,“,課程目錄,”,(由文件流出)由課程名、學(xué)時、學(xué)分、教員等數(shù)據(jù)項組成,在數(shù)據(jù)字典中表示為:課程目錄,=,課程名,+,學(xué)時,+,學(xué)分,+,教員,+,課表,而,“,課表,”,又可以列為一個子條目,表示為:課表,=,星期幾,+,第幾節(jié),+,教室,,◇,,文件條目,:文件條目給出某個文件的定義,它的形式與數(shù)據(jù)流條目基本相同。例如,上述數(shù)據(jù)流條目實際上

39、也是,“,課程目錄,”,文件的條目,,◇,,數(shù)據(jù)項條目,:數(shù)據(jù)項條目給出某個數(shù)據(jù)單項的定義,通常是數(shù)據(jù)項值的類型、允許值范圍等。如學(xué)生,“,年齡,”,這個數(shù)據(jù)項值是,16,~,30,之間的任意整數(shù),則在數(shù)據(jù)字典中表示成:年齡,=16,~,30,,◇,,加工條目,:加工條目實際上是對數(shù)據(jù)流圖中的每個基本加工給出精細的描述,所有加工條目的綜合就是整個系統(tǒng)的說明,每一個加工條目對應(yīng)系統(tǒng)的一個模塊的處理描述,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,,◆,,判定樹,,,使用判定樹進行描述時,應(yīng)先從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結(jié)論,根據(jù)描述材料中的連接詞找出判

40、定條件之間的從屬關(guān)系、并列關(guān)系、選擇關(guān)系,根據(jù)它們構(gòu)造判定樹,,例如,某貨物托運管理系統(tǒng)中,對發(fā)貨情況的處理要依賴檢查發(fā)貨單,檢查發(fā)貨單受貨物托運金額、欠款等條件的約束,可以使用類似分段函數(shù)的形式來描述這些約束和處理。對這種約束條件的描述,如果使用自然語言,表達易出現(xiàn)不準(zhǔn)確和不清晰。如果使用判定樹來描述,則簡捷清晰,檢查發(fā)貨單,欠款,>$500,欠款,>60———,不發(fā)出批準(zhǔn)書,,,欠款≤,60———,發(fā)出批準(zhǔn)書、發(fā)貨單,,欠款≤,$500,欠款,>60———,發(fā)出批準(zhǔn)書、發(fā)貨單及賒欠報告,,,欠款≤,60———,發(fā)出批準(zhǔn)書、發(fā)貨單,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化分析方法,

41、,◆,,判定表,,,判定表與判定樹相似,當(dāng)數(shù)據(jù)流圖中的加工要依賴于多個邏輯條件的取值,即完成該加工的一組動作是由于某一組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。判定表由四部分組成:,,①,基本條件,列出了各種可能的條件,,②,條件項,列出了各種可能的條件組合,,③,基本動作項,列出了所有的操作,,④,動作項,列出在對應(yīng)的條件組合下所選的操作,其中,“,√,”,表示滿足對應(yīng)條件項時執(zhí)行的操作,,,1,2,3,4,條件,發(fā)貨單金額,>$500,>$500,≤,$500,≤,$500,,賒欠情況,>,60,天,≤,60,天,>60,天,≤,60,天,操 作,不,發(fā)出批準(zhǔn)書,√,,,,,發(fā)出

42、批準(zhǔn)書,,√,√,√,,發(fā)出發(fā)貨單,,√,√,√,,發(fā)出賒欠報告,,,√,,① 基本條件,③ 基本動作項,② 條件項,④ 動作項,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,軟件設(shè)計是軟件工程的重要階段,是一個把軟件需求轉(zhuǎn)換為軟件表示的過程。軟件設(shè)計的,基本目標(biāo),是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè)計是確定系統(tǒng)的物理模型,,,從技術(shù)觀點來看,,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計。其中,結(jié)構(gòu)是定義軟件系統(tǒng)各主要部件之間的關(guān)系;數(shù)據(jù)設(shè)計是將分析時創(chuàng)建的模塊轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口設(shè)計是描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間

43、如何通信;過程設(shè)計則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)化為軟件的過程性描述,,,從工程管理角度來看,,軟件設(shè)計分兩步來完成:概要設(shè)計和詳細設(shè)計。概要設(shè)計(又稱結(jié)構(gòu)設(shè)計)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)、確定系統(tǒng)級接口、全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式;詳細設(shè)計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié),7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,軟件設(shè)計階段通常分為兩步:,,◇,,系統(tǒng)的總體設(shè)計,(概要設(shè)計),,以確定軟件系統(tǒng)結(jié)構(gòu),,◇,,系統(tǒng)的詳細設(shè)計,,即模塊內(nèi)部的具體設(shè)計。一般過程是先進行高層次的結(jié)構(gòu)設(shè)計,后進行低層次的過程設(shè)計,穿插進行數(shù)據(jù)設(shè)計和接口設(shè)計,,,與結(jié)構(gòu)

44、化需求分析方法相對應(yīng)的是結(jié)構(gòu)化設(shè)計方法,,,結(jié)構(gòu)化設(shè)計,是采用可能的最佳方法設(shè)計系統(tǒng)的各個組成部分以及各成分之間的內(nèi)部聯(lián)系的技術(shù),,,結(jié)構(gòu)化設(shè)計的基本思想,是將軟件設(shè)計成由相對獨立、單一功能的模塊組成的結(jié)構(gòu),7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◆,,概要設(shè)計,設(shè)計軟件系統(tǒng)結(jié)構(gòu),將需求分析階段的層次結(jié)構(gòu)進一步分解、劃分為模塊以及模塊的層次結(jié)構(gòu)。,劃分的具體過程,為:,①,將系統(tǒng)按功能劃分成模塊;,②,確定每個模塊的功能;,③,確定模塊之間的調(diào)用關(guān)系;,④,確定模塊之間的接口,即模塊之間傳遞的信息;,⑤,評價模塊結(jié)構(gòu)的質(zhì)量,數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計,,(,數(shù)據(jù)設(shè)計,),實現(xiàn)數(shù)

45、據(jù)對象的邏輯表示。數(shù)據(jù)設(shè)計的,具體任務(wù),是:,①,確定輸入、輸出文件的詳細數(shù)據(jù)結(jié)構(gòu);,②,結(jié)合算法設(shè)計,確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作;,③,確定對邏輯數(shù)據(jù)結(jié)構(gòu)操作的程序模塊,限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍;,④,需要和操作系統(tǒng)或調(diào)度程序接口所必需的控制表進行數(shù)據(jù)交換時,確定其詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則;,⑤,數(shù)據(jù)的防衛(wèi)性、一致性、冗余性設(shè)計,編寫概要設(shè)計文檔,編寫,①,概要設(shè)計說明書、,②,數(shù)據(jù)庫說明書、,③,集成測試計劃等,概要設(shè)計文檔評審,對,①,設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求,,②,設(shè)計方案的可行性,,③,關(guān)鍵的處理及內(nèi)部接口定義的正確性,,④,各部分之

46、間的一致性等都要進行評審,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◆,,詳細設(shè)計,,,詳細設(shè)計是為每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。表達工具可以由設(shè)計人員自由選擇,但它應(yīng)該具有描述過程細節(jié)的能力,而且能夠使程序員在編程時便于直接翻譯成程序設(shè)計語言的源程序。常見的設(shè)計工具有:,,◇,,圖形工具,:程序流程圖,,N-S,圖,,PAD,,,HIPO,,◇,,表格工具,:判定表,,◇,,語言工具,:,PDL,(,偽代碼),,,在過程設(shè)計階段,要對每個模塊規(guī)定的功能以及算法的設(shè)計,給出適當(dāng)?shù)乃惴枋觯创_定模塊內(nèi)部詳細執(zhí)行過程,包括

47、局部數(shù)據(jù)組織、控制流、每一步具體處理要求和各種實現(xiàn)細節(jié)等。其目的是確定應(yīng)該怎樣來具體實現(xiàn)所要求的系統(tǒng),7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◇,,程序流程圖,,,程序流程圖是一種傳統(tǒng)的、應(yīng)用廣泛的軟件過程設(shè)計表示工具,通常也稱為程序框圖,程序流程圖表達直觀、清晰、易于學(xué)習(xí)掌握,且獨立于任何一種程序設(shè)計語言。程序流程圖雖然簡單易學(xué),但若程序員不受任何約束,隨意轉(zhuǎn)移控制,會破壞結(jié)構(gòu)化設(shè)計原則,而且程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu),起止框 輸入輸出框 判斷框 處理框 流程線 連接點 注釋框,A,B,條件,A,B,T,F,條件,A,F,T,條件,

48、A,T,F,條件,F,A,T,順序結(jié)構(gòu) 對稱選擇結(jié)構(gòu) 非對稱選擇結(jié)構(gòu) 當(dāng)型循環(huán)結(jié)構(gòu) 直到型循環(huán)結(jié)構(gòu),7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,【,程序流程圖示例,】,簡單托運貨物運費計算的問題。設(shè)貨物重量,x,,,客戶信息,y,輸入,X,Y,0<,X≤15,X>15,公式,1,計算,公式,2,計算,I=0,I<3,記賬、輸出,I=I+1,結(jié)束,T,T,T,F,F,F,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◇,,N-S,圖,,,為避免流程圖在描述程序邏輯時的隨意性,通常使用,N-S,圖,,,N-

49、S,圖的特征為:每個構(gòu)件具有明確的功能域;控制轉(zhuǎn)移必須遵守結(jié)構(gòu)化設(shè)計要求;易于確定局部數(shù)據(jù)和(或)全局數(shù)據(jù)的作用域;易于表達嵌套關(guān)系和模塊的層次結(jié)構(gòu),A,,,T,,F,B,,A,B,當(dāng)P1,,,A,,,A,,,,,,,直到,P2,,P0,,◇,,偽代碼,不用圖形符號,,用介于自然語言和計算機語言之間的文字和符號來描述算法,S1,:,C←A,(,將變量,A,的值賦給變量,C),;,,S2,:,A←B,(,將變量B的值賦給變量,A),;,,S3,:,B←C,(,將變量,C,的值賦給變量,B),。,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◇,,PAD,圖,,,PAD,圖(問題分

50、析圖)是繼程序流程圖和方框圖之后,提出的一種主要用于描述軟件詳細設(shè)計的圖形表示工具,,,PAD,圖結(jié)構(gòu)清晰,結(jié)構(gòu)化程度高;易于閱讀;最左端的縱線是程序主干線,對應(yīng)程序的第一層結(jié)構(gòu),每增加一層,PAD,圖向右擴展一條縱線,故程序是縱線數(shù)等于程序?qū)哟螖?shù);程序執(zhí)行:從,PAD,圖最左主干線上端結(jié)點開始,自上而下,自左而右依次執(zhí)行,程序終止于最左主干線,7.4.2,結(jié)構(gòu)化分析與設(shè)計方法,____,結(jié)構(gòu)化設(shè)計方法,,◇,,PDL,,,PDL,(,過程設(shè)計語言)是一種混合語言,采用英語的詞匯和結(jié)構(gòu)化程序設(shè)計語言的語法,類似編程語言,C,,,用,PDL,表示的基本控制結(jié)構(gòu)的常用詞匯如下:,,條件:,IF/T

51、HEN/ELSE/ENDIF,,,循環(huán):,DO WHILE/ENDO,、,REPEAT UNTIL/ENDREPEAT,,,分支:,CASE_OF/WHEN/,,SELECT/WHEN/SELECT/ENDCASE,/*,計算運費 *,/,,count ( );,,{,輸入,x;,輸出,y;,,if (o15) {,公式,2,計算,;call sub;},,},,sub ( );,,{ for(i=1,3,i++) do {,記賬;輸出;,},,},7.4.3,軟件測試,,提高程序的可靠性是每一個

52、軟件工作者的愿望,也是用戶對軟件開發(fā)人員的要求。雖然有效的軟件設(shè)計方法可以提高軟件的可靠性,但是,由于各種各樣的原因,軟件產(chǎn)品中的缺陷總是難免的。為了保證軟件產(chǎn)品的質(zhì)量,提高每一個程序的可靠性,必須對軟件進行測試,,測試具有以下特點:,,◇,,測試的挑剔性,,,◇,,完全測試的不可能性,,,◇,,測試的經(jīng)濟性,7.4.3,軟件測試,____,軟件測試的目的、準(zhǔn)則,,◆,,軟件測試的目的,,,軟件測試就是使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別,,,◆,,軟件測試的準(zhǔn)則,,◇,,軟件測試的目的是發(fā)現(xiàn)錯誤,而最嚴(yán)重的錯誤不

53、外乎是導(dǎo)致程序無法滿足用戶需求的錯誤。因此,所有測試都應(yīng)追溯到需求,,,◇,,軟件測試應(yīng)當(dāng)制定明確的測試計劃并按照計劃執(zhí)行,嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性,,,◇,,為了達到好的測試效果,應(yīng)該由第三方來構(gòu)造測試,應(yīng)避免程序員自己檢查程序,,,◇,,即使規(guī)模較小的程序,其路徑排列數(shù)也相當(dāng)大,在實際測試過程中不可能窮舉每一種組合,測試只能證明程序中有錯誤,不能證明程序中沒有錯誤,7.4.3,軟件測試,____,軟件測試的過程,靜態(tài)測試、動態(tài)測試和自動測試是程序的測試的三種方式進行,也是。測試的過程,即先進行靜態(tài)分析,然后進行動態(tài)測試,在某些特殊情況下,又可以借助自動測試工具對程序進行查錯,靜態(tài)

54、測試,是指不執(zhí)行程序,而只由人工對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。大約,30,~,70%,的邏輯設(shè)計錯誤和編碼錯誤可以通過靜態(tài)分析檢查出來,動態(tài)測試,是使用測試用例在計算機上運行程序,使程序在運行過程中暴露錯誤,自動測試,自動測試工具通常有靜態(tài)分析工具、動態(tài)分析工具、綜合測試評估工具幾種,7.4.3,軟件測試,____,軟件測試的層次,,◆,,模塊測試,(單元測試),,大型程序是由許多模塊按層次結(jié)構(gòu)組織在一起的。因此,首先要對組成程序的各個模塊進行測試,其,目標(biāo),是發(fā)現(xiàn)局部模塊的邏輯與功能上的錯誤和缺陷。它主要對以下幾個方面進行測試:,,◇,,模塊接口,。主要測試穿過

55、模塊的數(shù)據(jù)流,,◇,,局部數(shù)據(jù)結(jié)構(gòu),。數(shù)據(jù)結(jié)構(gòu)通常是錯誤的藏身之地。這些錯誤主要包括數(shù)據(jù)引用錯和數(shù)據(jù)說明錯。除了對局部變量進行測試外,有時還需要測試全局變量對模塊的影響,,◇,,重要路徑,。選擇適當(dāng)?shù)臏y試用例,對模塊中的重要執(zhí)行路徑進行測試,從而暴露程序中的錯誤,,◇,,錯誤處理能力,。有意識地給出不合理的輸入,以檢查程序?qū)﹀e誤的處理能力,,◇,,I/O,錯,。對含有,I/O,功能的模塊,還應(yīng)測試,I/O,方面的有關(guān)錯誤,如文件屬性是否正確、,OPEN,語句是否正確、格式說明是否正確等,7.4.3,軟件測試,____,軟件測試的層次,由于模塊不是一個獨立的程序,不能單獨運行,因此,在進行模塊測

56、試時,還應(yīng)為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊。其中,驅(qū)動模塊,的作用是將測試數(shù)據(jù)傳給被測試模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果;,承接模塊,的作用是模擬被測試模塊的下層模塊,,通常,承接模塊有若干個,,,驅(qū)動模塊,,,,,,,,,,,,,,被測試模塊,,,,,,,,,,,,承接模塊,,,…,承接模塊,,,7.4.3,軟件測試,____,軟件測試的層次,,◆,,整體測試,,,當(dāng)各模塊的獨立測試完成之后,還要將各模塊連接起來進行整體測試。整體測試的目標(biāo)在于暴露模塊測試時不能暴露的結(jié)構(gòu)錯誤,如一個模塊是否破壞另外一個模塊的功能,數(shù)據(jù)通過接口時是否會丟失,能否產(chǎn)生主功能,誤差是否有積

57、累等。整體測試分為漸增式和非漸增式兩種:,,◇,,非漸增式的整體測試,是將經(jīng)過單獨測試的所有模塊連接到一起進行測試,,◇,,漸增式的整體測試,往往是與模塊測試同步進行的,即在對模塊逐步裝配的過程中同時進行的。這種測試方式可以減少模塊測試時要設(shè)計的驅(qū)動模塊或承接模塊數(shù),又可以及時、準(zhǔn)確地發(fā)現(xiàn)結(jié)構(gòu)錯誤的位置。漸增式的整體測試一般又可以分為,“,由頂向下,”,和,“,由底向上,”,兩種,7.4.3,軟件測試,____,軟件測試的層次,,◆,,高級測試,功能測試,有效性測試主要用黑箱法測試軟件功能是否與用戶要求一致,,,系統(tǒng)測試,把軟件元素與硬件元素結(jié)合在一起進行測試,,,驗收測試,主要檢查程序的操作

58、與原設(shè)計要求及用戶要求是否一致,,,安裝測試,主要檢查軟件在安裝時產(chǎn)生的問題,以上四種測試統(tǒng)稱為高級測試。進行這四種測試,往往要求測試人員有比較深入的知識和豐富的經(jīng)驗,7.4.3,軟件測試,____,軟件測試技術(shù),,對程序進行測試需要使用一些數(shù)據(jù),通常稱為一個,“,測試用例,”,。由于完全測試的不可能性,用有限的測試用例去發(fā)現(xiàn)更多的錯誤就顯得非常重要。設(shè)計和使用測試用例有以下幾個基本原則:,,,◇,,設(shè)計測試用例應(yīng)同時確定程序運行的預(yù)期結(jié)果,,,◇,,測試用例不僅要選用合理的輸入數(shù)據(jù),也要選用不合理的輸入數(shù)據(jù),,,◇,,除了需要檢查程序是否做了應(yīng)該做的事,還要檢查程序是否做了不應(yīng)該做的事,,,

59、◇,,千萬不要幻想程序是正確的,,,◇,,保留有用的測試用例,以便再測試時使用,,,◇,,測試用例要系統(tǒng)地進行設(shè)計,不可隨意湊合,,,下面分別介紹用白箱法和黑箱法測試時其測試用例的設(shè)計,7.4.3,軟件測試,____,軟件測試技術(shù),,◆,,白箱法,(邏輯覆蓋測試),,白箱測試是根據(jù)對程序內(nèi)部邏輯結(jié)構(gòu)的分析來選取測試用例。由于測試用例對程序邏輯覆蓋的程度決定了測試完全性的程度,,白箱測試用例的設(shè)計準(zhǔn)則有:,,◇,,語句覆蓋,。企圖用足夠多的測試用例,使程序中的每個語句都執(zhí)行一遍,以盡可能多地發(fā)現(xiàn)程序中的錯誤,,◇,,分支覆蓋,(,判定覆蓋準(zhǔn)則,),。它要求通過足夠多的測試用例,使程序中的每個分支

60、至少通過一次,,◇,,條件覆蓋,。通過執(zhí)行足夠多的測試用例,使每個判定中的每個條件都能取到兩種不同的結(jié)果(,“,真,”,與,“,假,”,),,◇,,組合條件覆蓋,。條件覆蓋并不能完全滿足分支覆蓋。例如,上述條件覆蓋所使用的兩個測試用例不能使第一個判定框為,“,真,”,,也不能使第二個判定框為,“,假,”,。于是,人們便提出組合條件覆蓋準(zhǔn)則,要求通過足夠多的測試用例,使每個判定中各條件的各種可能組合至少出現(xiàn)一次,7.4.3,軟件測試,____,軟件測試技術(shù),,◆,,黑箱法,,,黑箱測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測試用例。常用的黑箱測試有等價分類法、邊值分析法、

61、因果圖法和錯誤推測法,,◇,,等價分類法,。等價分類法是把所有可能的輸入數(shù)據(jù)(有效的和無效的)劃分成若干等價類,使每一類中的一個典型數(shù)據(jù)在測試中的作用與這類中所有其它數(shù)據(jù)的作用相同。因此,在實際進行測試時,可以從每個等價類中只取一組數(shù)據(jù)作為測試用例,,等價分類法分為兩步:一是劃分等價類(包括有效等價類和無效等價類);二是從每個等價類中選取測試用例,,劃分等價類的基本方法是:根據(jù)程序的功能說明,找出所有的輸入條件,然后為每一個輸入條件劃分等價類,7.4.3,軟件測試,____,軟件測試技術(shù),◇,,邊值分析法,。邊值分析不是從等價類中隨便選一個例子作為代表,而是著眼于使該等價類的邊界情況成為測試的

62、主要目標(biāo)來選取測試用例,并且邊值分析不僅考慮輸入條件,還要考慮輸出條件。采用邊值分析設(shè)計測試的原則為:如果輸入條件規(guī)定了值的范圍,則要對這個范圍的邊界情況以及稍超出范圍的無效情況進行測試;如果輸入條件規(guī)定了值的個數(shù),則要分別對值的最大個數(shù)、最小個數(shù)、稍多于最大個數(shù)及稍少于最小個數(shù)的情況進行測試,,◇,,因果圖法,。設(shè)計測試用例的一種系統(tǒng)方法,有助于測試人員系統(tǒng)地選擇高效的測試用例。其基本思想是把輸入條件視為,“,因,”,,輸出條件視為,“,果,”,,把黑箱視為從因到果的邏輯網(wǎng)絡(luò)圖。通過因果圖可以得到一張判定表,然后為判定表的每一列設(shè)計測試用例,,◇,,錯誤推測法,(猜錯法),無一定之規(guī)可循,在

63、很大程度上是憑經(jīng)驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫測試用例,7.4.3,軟件調(diào)試,,程序調(diào)試,也稱排錯,它是一個與測試有聯(lián)系又有區(qū)別的概念,調(diào)試與測試的關(guān)系體現(xiàn)在以下幾個方面:,,,◇,,測試的目的是暴露錯誤,評價程序的可靠性;而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤,,,◇,,測試是機械的、強制的、嚴(yán)格的、也是可預(yù)測的,,,◇,,經(jīng)測試發(fā)現(xiàn)錯誤后,可以立即進行調(diào)試并改正錯誤;經(jīng)過調(diào)試的程序還需要進行回歸測試,以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引進新的錯誤,,,◇,,調(diào)試用例與測試用例可以一致,也可以不一致,7.4.3,軟件調(diào)試,,調(diào)試的關(guān)鍵在于推斷程序內(nèi)部的錯誤

64、位置及原因。軟件調(diào)試可以分為靜態(tài)調(diào)試和動態(tài)調(diào)試。軟件測試中討論的靜態(tài)分析方法同樣適用靜態(tài)調(diào)試。靜態(tài)調(diào)試主要指通過人的思維來分析源程序代碼和排錯,是主要的調(diào)試手段,而動態(tài)調(diào)試是輔助靜態(tài)調(diào)試的,,主要的調(diào)試方法可以采用:,,◇,,強行排錯法,,,作為傳統(tǒng)的調(diào)試方法,其過程可概括為,:,設(shè)置斷點、程序暫停、觀察程序狀態(tài)、繼續(xù)運行程序。這是目前使用較多、效率較低的調(diào)試方法。涉及的調(diào)試技術(shù)主要是設(shè)置斷點和監(jiān)視表達式。例如:通過內(nèi)存全部打印來排錯、在程序特定部位設(shè)置打印語句(斷點法)、自動調(diào)試工具等。應(yīng)用以上任何一種技術(shù)之前,都應(yīng)當(dāng)對錯誤的征兆進行全面徹底的分析,得出對出錯位置及錯誤性質(zhì)的推測,再使用一種

65、適當(dāng)?shù)呐佩e方法來檢驗推測的正確性,7.4.3,軟件調(diào)試,,◇,,回溯法,,,該方法適合于小規(guī)模程序的排錯。即一旦發(fā)現(xiàn)了錯誤,先分析錯誤征兆,確定最先發(fā)現(xiàn),“,癥狀,”,的位置。然后,從發(fā)現(xiàn),“,癥狀,”,的地方開始,沿程序的控制流程,逆向跟蹤源程序代碼,直到找到錯誤根源或確定錯誤產(chǎn)生的范圍?;厮莘▽τ谛〕绦蚝苡行?,往往能把錯誤范圍縮小到程序中的一小段代碼,仔細分析這段代碼不難確定出錯的準(zhǔn)確位置。但隨著源代碼行數(shù)的增加,潛在的回溯路徑數(shù)目很多,回溯會變得很困難,而且實現(xiàn)這種回溯的開銷大,7.4.3,軟件調(diào)試,,◇,,原因排除法,,通過演繹、歸納和二分法來實現(xiàn),,○,,演繹法,一種從一般原理或前提

66、出發(fā),推導(dǎo)出結(jié)論的思考方法。首先測試人員根據(jù)已有的測試用例,設(shè)想及枚舉出所有可能出錯的原因作為假設(shè),然后再用原始測試數(shù)據(jù)或新的測試,從中逐個排除不可能正確的假設(shè),最后,再用測試數(shù)據(jù)驗證余下的假設(shè)確定出錯的原因,,○,,歸納法,一種從特殊推斷出一般的系統(tǒng)化思考方法。從一些線索(錯誤征兆或與錯誤發(fā)生有關(guān)的數(shù)據(jù))著手,通過分析尋找潛在的原因,從而找出錯誤,,○,,二分法,已知每個變量在程序中若干個關(guān)鍵點的正確值時,使用賦值語句、輸入語句等定值語句在程序中的某點附近給這些變量賦值,然后運行程序并檢查程序的輸出。如果輸出結(jié)果是正確的,則錯誤原因在程序的前半部分;反之,錯誤原因在程序的后半部分。對錯誤原因所在的部分重復(fù)使用這種方法,直到將出錯范圍縮小到容易診斷的程度為止,7.4.3,軟件調(diào)試,上面的每一種方法都可以使用調(diào)試工具來輔助完成。例如,可以使用帶調(diào)試功能的編譯器、動態(tài)調(diào)試器、自動測試用例生成器以及交叉引用工具等,,,需要注意的一個實際問題是,調(diào)試的結(jié)果是排錯,為了修改程序中錯誤,往往會采用,“,補丁程序,”,來實現(xiàn),而這種做法會引起整個程序質(zhì)量的下降,但是從目前程序設(shè)計發(fā)展的狀況看,對大規(guī)

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!