版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹“掃雷”案例的講解,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,生命周期方法學(xué):從時(shí)間角度對(duì)軟件開發(fā)和維護(hù)的復(fù)雜問題進(jìn)行分解,把軟件生命的漫長周期依次劃分為若干個(gè)階段,每個(gè)階段有相對(duì)獨(dú)立的任務(wù),然后逐步完成每個(gè)階段的任務(wù)。前一個(gè)階段任務(wù)的完成是開始進(jìn)行后一個(gè)階段工作的前提和基礎(chǔ),而后一階段任務(wù)的完成通常是使前一階段提出的解法更進(jìn)一步具體化,加進(jìn)了更多的實(shí)現(xiàn)細(xì)節(jié)。,第1章 大型
2、程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:生命周期方法學(xué),軟件生命周期每個(gè)階段及其解決的關(guān)鍵問題,第1章 大型程序的開發(fā)方法,瀑布模型,軟件工程開發(fā)方法的介紹:生命周期方法學(xué),第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,結(jié)構(gòu)化程序設(shè)計(jì)方法:是一種設(shè)計(jì)程序的技術(shù),采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的順序、選擇和循環(huán)三種基本控制結(jié)構(gòu)。它提出的原則可歸納為32字:“自頂向下,逐步細(xì)化;清晰第一,效率第二;書寫規(guī)范,縮進(jìn)格式;基
3、本結(jié)構(gòu),組合而成?!?第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,某學(xué)院為準(zhǔn)備參加網(wǎng)絡(luò)工程師認(rèn)證的人員開辦了相應(yīng)的培訓(xùn)課程。當(dāng)首批培訓(xùn)人員參加了認(rèn)證考試后,該學(xué)院自然想知道這些學(xué)生考得如何,以便調(diào)整教學(xué)方案和收費(fèi)標(biāo)準(zhǔn)?,F(xiàn)在需要編寫一個(gè)統(tǒng)計(jì)考試結(jié)果的程序,能夠顯示出通過和沒有通過的人數(shù),并且如果通過人數(shù)不低于總?cè)藬?shù)的70%,顯示提高學(xué)費(fèi)的建議。已知參加考試的人員有500名,并且已經(jīng)在通過者的名字旁邊標(biāo)注了1,
4、在未通過者的名字旁標(biāo)注了2。,應(yīng)用實(shí)例,問題描述,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,程序必須要處理500個(gè)應(yīng)試者的考試結(jié)果,所以要使用循環(huán);每個(gè)考試結(jié)果都是一個(gè)數(shù),即1或2。程序每次讀取一個(gè)結(jié)果后,必須確定該數(shù)是1還是2;使用兩個(gè)計(jì)數(shù)器。一個(gè)用于計(jì)算通過考試的人數(shù),另一個(gè)用于計(jì)算沒有通過的人數(shù);程序處理完所有結(jié)果后,必須判斷是否有70%以上的人員通過了認(rèn)證考試。,應(yīng)用實(shí)例,問題分析,第1章
5、大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,分析認(rèn)證考試的結(jié)果并決定培訓(xùn)費(fèi)是否提高,應(yīng)用實(shí)例,問題的頂層表示,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,初始化變量;輸入500個(gè)考試結(jié)果,統(tǒng)計(jì)通過和未通過 的人數(shù);打印統(tǒng)計(jì)結(jié)果,并決定培訓(xùn)費(fèi)是否提高。,應(yīng)用實(shí)例,第一次求精結(jié)果,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,“初始化變量”將變量p
6、asses初始化為0將變量failures初始化為0將變量counter初始化為1,應(yīng)用實(shí)例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,“輸入500個(gè)考試結(jié)果,統(tǒng)計(jì)通過和未通過的人數(shù) ” While人員計(jì)數(shù)器counter小于等于500 輸入下一個(gè)考試結(jié)果至變量result
7、 If此結(jié)果是通過 變量passes加1 Else 變量failures加1 人員計(jì)數(shù)器counter加1,應(yīng)用實(shí)例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,“打印統(tǒng)計(jì)結(jié)果,并決定培訓(xùn)費(fèi)是
8、否提高” 打印通過認(rèn)證的人數(shù) 打印未通過認(rèn)證的人數(shù) IF變量 passes的值除500大于等于0.7 打印“提高培訓(xùn)費(fèi)”,應(yīng)用實(shí)例,第二次求精的結(jié)果,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:結(jié)構(gòu)化程序設(shè)計(jì)方法,,求精結(jié)果
9、 源程序,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,三種描述設(shè)計(jì)的圖形工具: 層 次 圖——用來描述軟件層次結(jié)構(gòu) 程序流程圖——是歷史最悠久、使用最廣泛 的描述軟件設(shè)計(jì)的方法 盒 圖——是一種很好的支持結(jié)構(gòu)化程序 設(shè)計(jì)思想的圖形工具,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:描述設(shè)計(jì)的圖形工
10、具,應(yīng)用實(shí)例,正文加工系統(tǒng)的層次圖,,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹:描述設(shè)計(jì)的圖形工具,應(yīng)用實(shí)例,程序流程圖 相應(yīng)的盒圖,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時(shí)注意的問題: 全局變量——應(yīng)該“有限制地使用全局變量”。使用全局變量過多,會(huì)降低程序的清晰性;降低函數(shù)的通用性;濫用全局變量會(huì)造成程序的混亂函 數(shù)——“工欲善其事,必先利其器”。
11、我們?cè)诰帉懘笮统绦驎r(shí),要善于利用已有的函數(shù),以減少重復(fù)編寫程序段的工作量,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時(shí)注意的問題:風(fēng)格——全局變量使用具有說明性的名字 int totalMine; int table[ROW][COL];局部變量用短名字 int i; … for(i=0; i<10; i++ ) …,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)
12、方法的介紹,命名規(guī)則命名規(guī)則當(dāng)推Microsoft公司的"匈牙利"法該命名規(guī)則的主要思想是"在變量和函數(shù)名中加入前綴以增進(jìn)人們對(duì)程序的理解 變量名=屬性+類型+對(duì)象描述"匈牙利"法最大的缺點(diǎn)是煩瑣,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,規(guī)則標(biāo)識(shí)符應(yīng)當(dāng)直觀且可以拼讀,可望文知意,不必進(jìn)行"解碼"。 標(biāo)識(shí)符的長度應(yīng)當(dāng)符合"mi
13、n-length && max-information"原則命名規(guī)則/風(fēng)格盡量保持一致避免僅靠大小寫區(qū)分的相似的標(biāo)識(shí)符避免標(biāo)識(shí)符完全相同的局部變量和全局變量,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則6. 避免標(biāo)識(shí)符完全相同的局部變量和全局變量float value; float
14、0; oldValue; float newValue; 7. 全局函數(shù)的名字應(yīng)當(dāng)使用"動(dòng)詞"或者"動(dòng)詞+名詞"(動(dòng)賓詞組)int DrawTable(),第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則8. 用正確的反義詞組命名具有互斥意義的變量或相反動(dòng)作的函數(shù)int minValue;
15、int maxValue; int SetValue(…); int GetValue(…);,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則9. 宏定義/常量全大寫#define COL 16int MAX_TABLE 12,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,命名規(guī)則10. 靜態(tài)變量加前綴 s_ 全局變量加前綴 g_,第1章 大型程序的開發(fā)方法,軟件
16、工程開發(fā)方法的介紹,編碼時(shí)注意的問題:表達(dá)式的自然形式、分解復(fù)雜的表達(dá)式、當(dāng)心具有副作用的運(yùn)算符 ——神秘的數(shù)最好要命名,利用語言去計(jì)算對(duì)象的大小 ——除了定義符號(hào)常量外,最好避免使用宏 ——注釋時(shí)要注意不要大談明顯的東西,要給函數(shù)和全局?jǐn)?shù)據(jù)加注釋,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時(shí)注意的問題:表達(dá)式的自然形式、分解復(fù)雜的表達(dá)式*xp += (x=(2*k<(n-m)?c[k
17、+1]:d[k--]));x = 2*k < n-m ? c[k++] : d[k--];*xp += x;,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,編碼時(shí)注意的問題:當(dāng)心具有副作用的運(yùn)算符A[i++] = 5;#define isupper(c) (c=‘A’)while( isupper(getch() ) …,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:測試是在認(rèn)為程
18、序能工作的情況下,為發(fā)現(xiàn)其問題而進(jìn)行的一整套確定的系統(tǒng)化的實(shí)驗(yàn) ——白盒測試相當(dāng)于把程序看成裝在一個(gè)透明的白盒子里,也就是完全了解程序的結(jié)構(gòu)和處理方法。它根據(jù)程序內(nèi)部的邏輯來設(shè)計(jì)測試用例,檢查程序中的邏輯路徑是否都按預(yù)定的要求正確地工作。常用的技術(shù)包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋等。,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:測試是在認(rèn)為程序能工作的情況下,為
19、發(fā)現(xiàn)其問題而進(jìn)行的一整套確定的系統(tǒng)化的實(shí)驗(yàn) ——黑盒測試相當(dāng)于把程序看成一個(gè)黑盒子,不考慮內(nèi)部結(jié)構(gòu)和處理過程。它根據(jù)規(guī)定的功能來設(shè)計(jì)測試用例,檢查程序的功能是否符合要求。常用的技術(shù)包括等價(jià)類劃分和邊界值分析等。,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹,測試和調(diào)試方法:調(diào)試(即排錯(cuò))是在已知程序有問題時(shí)要做的事情 ——尋找熟悉的模式 ——檢查最近的改動(dòng) ——不要兩次犯同樣的錯(cuò)誤 —
20、—現(xiàn)在排除,而不是以后 ——把你的代碼解釋給別人 ——分而治之,搜索局部化,第1章 大型程序的開發(fā)方法,軟件工程開發(fā)方法的介紹“掃雷”案例的講解,,第1章 大型程序的開發(fā)方法,“掃雷”案例:選題,第1章 大型程序的開發(fā)方法,“掃雷”案例:分析,Windows掃雷游戲的游戲規(guī)則 :在“游戲”菜單上,單擊“開局”,出現(xiàn)的游戲界面中包括地雷計(jì)數(shù)器窗口、計(jì)時(shí)器窗口和雷區(qū)。開局后,單擊雷區(qū)中的任何一個(gè)方塊,便啟動(dòng)計(jì)時(shí)器。每標(biāo)
21、記一個(gè)地雷,地雷計(jì)數(shù)器減1;用鼠標(biāo)左鍵單擊某個(gè)方塊,可挖開它。若所揭方塊下有雷,則踩雷,此時(shí)所有含地雷的塊都標(biāo)記?,這局游戲失敗;如果方塊上出現(xiàn)數(shù)字,它代表在它周圍的八個(gè)方塊中共有多少顆地雷;用鼠標(biāo)右鍵單擊某個(gè)方塊,則標(biāo)記此塊下埋著地雷(實(shí)際上可能是誤標(biāo)),顯示為。每標(biāo)記一個(gè)地雷,地雷計(jì)數(shù)器減1;用鼠標(biāo)右鍵擊打某個(gè)方塊兩次,則在某塊上面標(biāo)一個(gè)問號(hào)(?),意味著沒有把握判定它是否有雷。標(biāo)記為?的塊可在恰當(dāng)?shù)臅r(shí)候再擊打鼠標(biāo)右鍵兩次或單
22、擊左鍵,將其標(biāo)記為地雷或挖開; 如果某個(gè)數(shù)字方塊周圍的地雷全都標(biāo)記完,可以同時(shí)單擊鼠標(biāo)左右鍵,將其剩下的方塊挖開。如果挨著這個(gè)方塊的地雷沒有全部標(biāo)記完,則未挖開的方塊將閃爍。,第1章 大型程序的開發(fā)方法,“掃雷”案例:分析,主要功能:規(guī)則1)隱含初始化新游戲的開局功能;規(guī)則2)隱含的挖雷功能;規(guī)則3)對(duì)應(yīng)的標(biāo)記地雷功能;規(guī)則4)對(duì)應(yīng)的標(biāo)記疑問功能;規(guī)則5)的自動(dòng)挖開功能。操作手段:鼠標(biāo),第1章 大型程序的開發(fā)方法,“掃雷”
23、案例:設(shè)計(jì),第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì),自頂向下逐步求精:繼續(xù)分析已有功能,精化出所有子功能,確定 模塊間接口;描述精化后每個(gè)模塊的處理過程;確定主要的數(shù)據(jù)及其數(shù)據(jù)結(jié)構(gòu);確定輸入輸出數(shù)據(jù)的內(nèi)外部形式;界面的設(shè)計(jì),第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——界面,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——操作方式,采用鍵盤:上,下,左,右鍵用來移動(dòng)光標(biāo)的位置;回車或者空格鍵用來挖開光標(biāo)當(dāng)前
24、指向的一個(gè)方塊;F, f 標(biāo)記當(dāng)前光標(biāo)指向的方塊有地雷;Q, q 在光標(biāo)指向方塊打一個(gè)問號(hào),表示可能有地雷;A , a 自動(dòng)挖開光標(biāo)周圍的方塊;ESC 退出游戲,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主要數(shù)據(jù),雷區(qū)界面數(shù)據(jù)# define ROW 16 /* 表示整個(gè)雷區(qū)的行數(shù)*/# define COL 16 /* 表示整個(gè)雷區(qū)的列數(shù)*/# define S
25、TARTX 50 /* 表示雷區(qū)在屏幕上的起始x坐標(biāo)*/# define STARTY 50 /* 表示雷區(qū)在屏幕上的起始y坐標(biāo)*/# define SIZEX 20 /* 表示一個(gè)方塊的長度*/# define SIZEY 20 /* 表示一個(gè)方塊的寬度*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主要數(shù)據(jù),雷區(qū)內(nèi)部數(shù)據(jù) int totalMine;
26、 /* 整個(gè)雷區(qū)所含的地雷總數(shù)*/int table[ROW][COL]; /* 數(shù)組table的每個(gè)元素值記錄了雷區(qū) 對(duì)應(yīng)方塊是否有雷:1有雷,0無雷*/int num[ROW][COL]; /* 數(shù)組num的每個(gè)元素值記錄了雷區(qū)
27、 對(duì)應(yīng)方塊周圍有多少個(gè)地雷*/int flag[ROW][COL]; /* 數(shù)組flag的每個(gè)元素值記錄了雷區(qū) 對(duì)應(yīng)方塊當(dāng)前的狀態(tài)*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主要數(shù)據(jù),方塊(i,j)的狀態(tài)取值 #define UNFLAG 0 /* 表示該方塊還沒有被打開或者
28、標(biāo)記*/#define FLAGED 1 /* 標(biāo)記該方塊有地雷*/#define QUESTION 20 /* 表示該方塊可能有地雷*/#define EXPLOD 30 /* 踩到地雷爆炸了*/#define OPEN 40 /* 一個(gè)沒有地雷的方塊被打開*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主要數(shù)據(jù),光標(biāo)當(dāng)前位置數(shù)據(jù) int pi,pj; /* 記錄光標(biāo)的當(dāng)
29、前位置,初始時(shí)光標(biāo)在(0,0)*/int di[8]={-1,-1,0,1,1,1,0,-1};int dj[8]={0,1,1,1,0,-1,-1,-1};/*相對(duì)于當(dāng)前方塊而言,di[8]和dj[8]分別表示了它周圍八個(gè) 方塊的行和列坐標(biāo)偏移量。它們與當(dāng)前光標(biāo)坐標(biāo)配合使用, 可表示周圍的方塊,如(-1+pi,0+pj)表示當(dāng)前方塊的 正上方方塊的坐標(biāo)。*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主
30、要數(shù)據(jù),游戲狀態(tài)數(shù)據(jù) int gameRes; /*記錄游戲結(jié)束的結(jié)果狀態(tài),是輸出數(shù)據(jù)的內(nèi)部形式。 值為0表示按esc鍵退出游戲;-1 表示游戲失??; 1表示游戲勝利。*/,第1章 大型程序的開發(fā)方法,“掃雷”案例:設(shè)計(jì)——主要數(shù)據(jù),功能鍵的鍵值 /*上,下,左,右鍵*/#define UP 0x4800#define DOWN 0x5000#define LEFT 0x4b00#define RIGHT 0x4d
31、00/*回車、空格鍵*/#define ENTER 0x1c0d#define SPACE 0x3920/*F, f */#define UPPERF 0x2146#define LOWERF 0x2166,/*Q, q*/#define UPPERQ 0x1051#define LOWERQ 0x1071/*A , a*/#define UPPERA 0x1e41#define LOWERA 0x1e61/*E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基礎(chǔ)技能訓(xùn)練高級(jí)軟件編程技術(shù)
- javaweb編程技術(shù)
- 電大《數(shù)控編程技術(shù)》題庫
- 數(shù)控編程技術(shù)作業(yè)答1
- 網(wǎng)絡(luò)編程技術(shù)課程研究
- 實(shí)驗(yàn)二、三jsp編程技術(shù)
- plc可編程技術(shù)題庫
- 外文翻譯--高級(jí)bash腳本編程指南一個(gè)對(duì)腳本編程技術(shù)的深入討論
- 數(shù)控編程技術(shù)畢業(yè)論文
- jsp應(yīng)用課件—web編程技術(shù)
- 面向網(wǎng)絡(luò)編程技術(shù)練習(xí)題
- 數(shù)控編程技術(shù)的現(xiàn)狀與發(fā)展
- 淺談圓管相貫線編程技術(shù)
- 畢業(yè)論文----cam數(shù)控編程技術(shù)
- 面向?qū)ο缶幊碳夹g(shù)作業(yè)題
- 談?wù)刬os網(wǎng)絡(luò)編程之socket編程技術(shù)及應(yīng)用
- vb數(shù)據(jù)庫編程技術(shù)實(shí)例
- 數(shù)控編程技術(shù)畢業(yè)論文(doc)
- 《caxa自動(dòng)編程技術(shù)》課程標(biāo)準(zhǔn)
- 電大數(shù)控編程技術(shù)考核答案
評(píng)論
0/150
提交評(píng)論