軟件技術算法程序語言軟件工程課件_第1頁
軟件技術算法程序語言軟件工程課件_第2頁
軟件技術算法程序語言軟件工程課件_第3頁
軟件技術算法程序語言軟件工程課件_第4頁
軟件技術算法程序語言軟件工程課件_第5頁
已閱讀5頁,還剩100頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 教學團隊:陽小華 劉志明 楚燕婷等 University of South China School of Computer Science&Software ()1軟件技術算法程序語言軟件工程學習內容1 概述2 算法3 程序設計4 軟件工程2軟件技術算法程序語言軟件工程School of Computer Science1 1 概概 述述School of Computer Science什么是計算機軟件?操作系統、操作系統、QQQQ、360360計算機系統計算機系統= =硬件硬件+ +軟件軟件School of Computer Sciencen 程序以及相關的文檔的集合。程序以及相關的

2、文檔的集合。程 序文檔1文檔2文檔3可執行部分不可執行部分School of Computer Science什么是文檔?n 文檔:記錄軟件開發活動和階段性成果,文檔:記錄軟件開發活動和階段性成果,理解軟件所必需的闡述性資料。理解軟件所必需的闡述性資料。 需求分析文檔需求分析文檔 軟件設計文擋等軟件設計文擋等n 編寫文檔目的編寫文檔目的 促進對軟件的開發、管理和維護;促進對軟件的開發、管理和維護; 便于各種人員便于各種人員(用戶、開發人員用戶、開發人員)的交流的交流School of Computer Science什么是程序? 程序一詞源于生活。做任何一件事情,都是有程序的。 例如,下面是某

3、一個學校頒獎大會的程序: 宣布大會開始 校長講話 宣布獲獎名單 頒獎 獲獎代表發言 宣布大會結束 按順序實施這些步驟就完成了該事情。School of Computer Science 用計算機完成某事情,就把事先設計用計算機完成某事情,就把事先設計好的計算機處理信息的步驟,用計算機能夠好的計算機處理信息的步驟,用計算機能夠識別的指令編寫出來,送入計算機。計算機識別的指令編寫出來,送入計算機。計算機按照指令執行,就能完成指定的工作。按照指令執行,就能完成指定的工作。 算法程序設計語言程序設計語言可以說程序就是用計算機語言表述的算法。School of Computer Science 為解決一

4、個問題而采取的方法和步驟,為解決一個問題而采取的方法和步驟,就稱為就稱為。什么是算法?什么是算法?School of Computer Science 一個農夫帶著一只狼、一只羊和一棵白一個農夫帶著一只狼、一只羊和一棵白菜,身處河南岸,要把東西全部運到北岸。菜,身處河南岸,要把東西全部運到北岸。約束條件是只有一條能容下他和一件物品的約束條件是只有一條能容下他和一件物品的小船,只有農夫能撐船。不能單獨留下羊和小船,只有農夫能撐船。不能單獨留下羊和白菜,也不能單獨留下羊和狼。白菜,也不能單獨留下羊和狼。例如:School of Computer Science農夫過河算法帶羊到對岸空手回本岸帶菜到

5、對岸帶羊回本岸帶狼到對岸空手回本岸帶羊到對岸帶羊到對岸空手回本岸帶狼到對岸帶羊回本岸帶菜到對岸空手回本岸帶羊到對岸或School of Computer Science 在使用計算機解題前,需要將解題方法在使用計算機解題前,需要將解題方法轉換成一系列具體的在計算機上可執行的轉換成一系列具體的在計算機上可執行的步驟,這些步驟能夠清楚的反映解題方法步驟,這些步驟能夠清楚的反映解題方法一步步一步步“怎么做怎么做”的過程,這個過程就是的過程,這個過程就是通常所說的算法。通常所說的算法。 算法:解題過程的準確、完整的描述稱解題過程的準確、完整的描述稱作解該問題的算法。作解該問題的算法。School of

6、 Computer Science什么是計算機語言? 人們想和計算機交流,用符號來表達。計算機通過事先約定好的符號與意義的對應關系,把人用符號表達的內容讀懂,再按照這些符號的意思去執行。怎樣維護交通秩序?音樂是怎樣表示的?School of Computer Science 用來表達這種關系的符號系統就是計算用來表達這種關系的符號系統就是計算機語言,也叫機語言,也叫“程序設計語言程序設計語言”。人與計。人與計算機交流使用的是算機交流使用的是“程序設計語言程序設計語言”。同。同人類語言一樣,人類語言一樣,程序設計語言也是由字、程序設計語言也是由字、詞和語法規則構成的一個系統詞和語法規則構成的一個

7、系統。School of Computer Science軟件的分類系統軟件系統軟件操作系統操作系統語言編譯和解釋系統語言編譯和解釋系統網絡軟件網絡軟件數據庫管理系統(數據庫管理系統(DBMS)各種服務程序各種服務程序應用軟件應用軟件業務軟件業務軟件科技計算軟件科技計算軟件個人計算機軟件個人計算機軟件人工智能軟件人工智能軟件School of Computer Science軟件開發過程?有一個工程:建一座橋梁。我們會怎么做?有一個工程:建一座橋梁。我們會怎么做? 了解橋梁的要求、用途了解橋梁的要求、用途設計設計維護維護開發大型軟件:開發大型軟件: 定義定義開發開發維護維護School of

8、Computer Science2 算 法n 算法的表示算法的表示n 算法的要素算法的要素n 算法的特點算法的特點n 算法的復雜度算法的復雜度n 常用算法常用算法主要內容School of Computer Science算法的表示 算法一般可以使用下面幾種類型的工具描述算法: 自然語言描述算法通俗易懂,但它有著難以克服的缺陷: (1)易產生歧義性 武松打死老虎 (2)語句繁瑣冗長,很難清楚地表達算法的邏輯流程 (3)不便于直接轉換成程序 School of Computer Science 例:求例:求1 12 23 34 45 5。 最原始方法:最原始方法: 步驟步驟1 1:先求:先求1

9、12 2,得到結果,得到結果2 2。 步驟步驟2 2:將步驟:將步驟1 1得到的乘積得到的乘積2 2乘以乘以3 3,得到結果得到結果6 6。 步驟步驟3 3:將:將6 6再乘以再乘以4 4,得,得2424。 步驟步驟4 4:將:將2424再乘以再乘以5 5,得,得120120。 這樣的算法雖然正確,但太繁。這樣的算法雖然正確,但太繁。School of Computer Science 改進的算法:改進的算法: S1: S1: 使使t=1t=1 S2: S2: 使使i=2i=2 S3: S3: 使使t ti, i, 乘積仍然放在在變量乘積仍然放在在變量t t中,中,可表示為可表示為t titi

10、t S4: S4: 使使i i的值的值+1+1,即,即i+1ii+1i S5: S5: 如果如果i5, i5, 返回重新執行步驟返回重新執行步驟S3S3以以及其后的及其后的S4S4和和S5S5;否則,算法結束。;否則,算法結束。 如果計算如果計算100100!只需將!只需將S5:S5:若若i5i5改成改成i100i100即可。即可。School of Computer Science常用的有流程圖、常用的有流程圖、PADPAD圖和圖和N-SN-S圖等圖等School of Computer Science流程圖描述School of Computer Science偽代碼偽代碼 為了便于轉換成

11、某種編程語言,一般采用為了便于轉換成某種編程語言,一般采用準程序設計語言作算法描述語言。準程序設計語言作算法描述語言。School of Computer Science偽代碼描述:BEGIN(算法開始算法開始) 1=t 2=i while i t i+1=i print tEND(算法結束算法結束)School of Computer Science算法兩要素n 算法的兩要素算法的兩要素算法由算法由操作操作與與控制結構控制結構兩要素組成。兩要素組成。1. .操作操作(1)(1)邏輯運算:邏輯運算:“與與”、“或或”、“非非”;(2)(2)算術運算:加、減、乘、除;算術運算:加、減、乘、除;(

12、3)(3)數據比較:大于、小于、等于、不等于;數據比較:大于、小于、等于、不等于;(4)(4)數據傳送:輸入、輸出、賦值。數據傳送:輸入、輸出、賦值。School of Computer Science2.控制結構 1)算法的控制結構,決定了各操作的執行次序。用流程圖流程圖可以形象地表示出算法的控制結構。 2)任何復雜的算法都可以用順序、選擇、循環順序、選擇、循環三種控制結構組合而成。School of Computer ScienceSchool of Computer Science 我們在構造一個算法的時候,也僅我們在構造一個算法的時候,也僅以這三種基本結構作為以這三種基本結構作為“建筑

13、單元建筑單元”,遵守三種基本結構的規范。基本結構之遵守三種基本結構的規范。基本結構之間可以并列、可以相互包含,但不允許間可以并列、可以相互包含,但不允許交叉。交叉。 正因為整個算法都由這三種基本結正因為整個算法都由這三種基本結構構成,所以結構清晰,易于驗證,易構構成,所以結構清晰,易于驗證,易于糾錯。這種方法就是于糾錯。這種方法就是結構化方法結構化方法。School of Computer Science算法的特征n 有窮性有窮性 一個算法必須總是在執行有窮步后結一個算法必須總是在執行有窮步后結束,且每一步都可在有窮時間內完成;束,且每一步都可在有窮時間內完成;n 確定性確定性 算法中的每一個

14、指令必須有明確的含算法中的每一個指令必須有明確的含義,不能有二義性;義,不能有二義性; 例:武松打死老虎例:武松打死老虎 歧義歧義 手舉過頭頂手舉過頭頂 單手單手? ?雙手?舉多高?雙手?舉多高?n 可行性可行性( (有效性有效性) ) 算法中描述的操作都是可通算法中描述的操作都是可通過已經實現的基本運算、執行有限次實現的;過已經實現的基本運算、執行有限次實現的; 例:例:a/b a/b 若若b=0b=0則無效則無效School of Computer Sciencen 輸入輸入 一個算法應有一個算法應有0 0個或多個輸入;個或多個輸入;n 輸出輸出 一個算法應有一個算法應有1 1個或多個輸出

15、。個或多個輸出。School of Computer Science算法的復雜度 求解一個問題可能有多種不同的算法,評價求解一個問題可能有多種不同的算法,評價算法的標準主要有:算法的標準主要有: 執行算法所耗費的時間,即執行算法所耗費的時間,即時間復雜度時間復雜度; 執行算法所耗費的存貯空間,主要是輔助執行算法所耗費的存貯空間,主要是輔助空間,即空間,即空間復雜度空間復雜度。School of Computer Science 思考:給出一組數12、13、26、27、38、49、55、60、67、86,查找某一個數x是否在這組數中的算法?算法1:順序查找算法2:二分法查找比較:的時間復雜度?S

16、chool of Computer Science常 用 算 法School of Computer Science 枚舉法是一種比較笨但卻很有效的算法,枚舉法是一種比較笨但卻很有效的算法,他針對問題所有的可能一一查看是不是符合他針對問題所有的可能一一查看是不是符合條件,條件, 一種情況他都不想落下,有寧可錯殺一種情況他都不想落下,有寧可錯殺一千,不可放過一個的作風。一千,不可放過一個的作風。 先依據題目的部分條件確定答案的大致范圍,在此范圍內對所有可能的情況逐一驗證逐一驗證,直到全部情況驗證完。 若某個情況使驗證符合題目的條件,則為本題的一個答案;若全部情況驗證完后均不符合題目的條件,則問題

17、無解。1.1.枚舉法枚舉法School of Computer Science 例:公雞每只五元,母雞每只三元,小例:公雞每只五元,母雞每只三元,小雞三只一元,問百元買百雞有幾種買法?雞三只一元,問百元買百雞有幾種買法? 假設公雞數為x,母雞數為y,則小雞數是100-x-y,也就有了下面的方程式: 3*x+5*y+(100-x-y)/3=100 從方程式中看出:公雞最多有33只,最少是沒有,即x的范圍是0-33;母雞,即y的范圍是0-20;有了公雞母雞,小雞數自然就是100-x-y只。School of Computer Science 可能的方案一共有可能的方案一共有3434* *2121種

18、,這些方案中,種,這些方案中,可能有一種或幾種正好符合相等的條件。我們可能有一種或幾種正好符合相等的條件。我們就將上述就將上述3434* *2121種方案全部過濾一遍,找出符種方案全部過濾一遍,找出符合百錢買百雞條件的(也即上式),只要符合,合百錢買百雞條件的(也即上式),只要符合,這就是我們要的輸出結果。這就是我們要的輸出結果。School of Computer Science2.遞推法 遞推法,就是找出和時間先后相聯系或和數的大小相聯系的步驟,上一步和下一步和數字的增大或減小有一定的聯系。我們要么從前向后(或從小到大)推導,也可從后向前(或從大到小)推導。由此得出兩種推導方法:順推法和倒

19、順推法和倒推法。推法。School of Computer Science 例:猴子分食桃子例:猴子分食桃子 一天,一只猴子采得一堆桃子,當天它一天,一只猴子采得一堆桃子,當天它吃掉一半多一個,第二天又吃了一半多一吃掉一半多一個,第二天又吃了一半多一個個一直到第七天,它就剩一個桃子了。一直到第七天,它就剩一個桃子了。那么那天它共采了多少個桃子呢?那么那天它共采了多少個桃子呢?School of Computer Science 找一下天數和桃子數的關系。如果從第找一下天數和桃子數的關系。如果從第1 1天天開始往第開始往第7 7天找,不好找,但如果從第天找,不好找,但如果從第7 7天到第天到第1

20、 1天去找,可得出下面的推導式:天去找,可得出下面的推導式: 第第N N天天 桃子數目桃子數目 7 s7=17 s7=1 6 s6=(s7+1) 6 s6=(s7+1)* *2 2 5 s5=(s6+1) 5 s5=(s6+1)* *2 2 1 s1=(s2+1) 1 s1=(s2+1)* *2 2School of Computer Science算法:算法: S1: S1: 使使s=1s=1 S2: S2: 使使t=7t=7 S3: S3: 使使(s+1)(s+1)2, 2, 結果仍然放在變量結果仍然放在變量s s中,可表示為中,可表示為(s+1)(s+1)2 s2 s S4: S4: 使

21、使t t的值的值-1-1,即,即t-1tt-1t S5: S5: 如果如果t=1, t=1, 返回重新執行步驟返回重新執行步驟S3S3以及其后的以及其后的S4S4和和S5S5;否則,算法結束。;否則,算法結束。School of Computer Science3.遞歸法 如果一個過程直接或間接地調用它自身,則如果一個過程直接或間接地調用它自身,則稱該過程是遞歸的。稱該過程是遞歸的。 遞歸就象我們講的那個故事:山上有座廟,廟里有個老和尚,老和尚在講故事,它講的故事是:山上有座廟,廟里有個老和尚,老和尚在講故事也就是直接或間接地調用了其自身。 例:求階乘。School of Computer S

22、cience算法:算法: S1: 如果n=1,返回結果1,結束。 s2: 保存當前階數n。 S2: n-1 n ,遞歸調用自己, S3: 取出當前階數,計算n*(n-1)! S4: 返回計算結果,結束School of Computer Science 例:有一個nm的棋盤(2=n=50,2=m0 then y=1elseif x=0 then y=0 else y=-1endif Print x,ySchool of Computer Sciencel幾種高級程序語言n FORTRAN(Formula Translator)1954n BASIC(Beginner All purpose S

23、ymbolic In struction Code)n Pascaln PROLO G(Programming in Logic)n C語言,語言,70年代初期年代初期n C+語言,語言,80年代年代n Java語言,語言,1995年年5月月,Eclipsen C#,C#3.0School of Computer Science云計算時代最具潛力的12種編程語言 n DART、Ceylon、GO、F#、OPA、Fantom、Zimbu、X10、Haxe、Chapel School of Computer Science2.2.常見的結構化程序控制常見的結構化程序控制School of Comp

24、uter Science程序設計方法School of Computer Science面向過程(Process-oriented)的程序設計 面向過程的程序設計強調面向過程的程序設計強調模塊化模塊化和和結構化結構化。采用自頂向下、逐步求精的程序設計方法;使采用自頂向下、逐步求精的程序設計方法;使用三種基本控制結構構造程序。遵循這種方法用三種基本控制結構構造程序。遵循這種方法的程序設計就是的程序設計就是面向過程的程序設計面向過程的程序設計。 School of Computer Science 面向過程的程序設計,在數據處理過程中,面向過程的程序設計,在數據處理過程中,采用自頂向下、分而治之的

25、方法,將整個程序按采用自頂向下、分而治之的方法,將整個程序按功能劃分為幾個可獨立編程的功能劃分為幾個可獨立編程的子過程子過程模塊,每一模塊,每一子模塊完成指定的子任務,并且提供一個清晰、子模塊完成指定的子任務,并且提供一個清晰、嚴格的調用界面,嚴格的調用界面,主過程主過程通過調用各子過程完來通過調用各子過程完來成全部處理工作。成全部處理工作。 常用軟件:常用軟件:C C,FORTRANFORTRAN,PASCALPASCAL等。等。 School of Computer Sciencen 程序分解實例:程序分解實例:School of Computer Science面向對象(Object-o

26、riented)的程序設計什么是對象?什么是對象? 現實世界中現實世界中, ,比如書、人、車都是對象。比如書、人、車都是對象。我們怎么區分它們呢?從組成以及他們的動作我們怎么區分它們呢?從組成以及他們的動作行為。行為。 比如:人比如:人 組成:一個腦袋組成:一個腦袋, ,兩條腿兩條腿, ,兩個胳臂兩個胳臂 動作行為:說話動作行為:說話, ,吃飯吃飯, ,跑步跑步, ,流淚流淚 School of Computer Science對象n 對象是存在的具體實體,具有明確定義的對象是存在的具體實體,具有明確定義的狀態和行為。狀態和行為。School of Computer Science類(Clas

27、s)“類是具有相同屬性和行為的類是具有相同屬性和行為的一組對象一組對象的集合的集合”School of Computer Science 在面向對象編程中,程序被看作是在面向對象編程中,程序被看作是相互協作的對象集合,通過消息來實現相互協作的對象集合,通過消息來實現對象間的通訊。對象間的通訊。 每個對象都是某個類的實例,所有每個對象都是某個類的實例,所有的類構成一個通過繼承關系相聯系的層的類構成一個通過繼承關系相聯系的層次結構。次結構。常用語言:Java、c+、VB.Net等。School of Computer Science 在結構化程序設計中可以用下面的式子表示程序:在結構化程序設計中可

28、以用下面的式子表示程序: 程序程序= =數據結構數據結構+ +算法算法+ +程序設計語言程序設計語言+ +語言環境語言環境 在面向對象程序設計中可以用下面的式子表示在面向對象程序設計中可以用下面的式子表示程序:程序: 程序程序= =對象對象+ +對象對象+對象對象 對象對象= =算法算法+ +數據結構數據結構+ +程序設計語言程序設計語言+ +語言環境語言環境School of Computer Science 面向過程:分析出解決問題所需要的步驟,面向過程:分析出解決問題所需要的步驟,用函數把這些步驟一步一步實現,使用的時候用函數把這些步驟一步一步實現,使用的時候一個一個依次調用。一個一個依

29、次調用。 面向對象:把構成問題事務分解成各個對面向對象:把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在解決問題中的行為。而是為了描敘某個事物在解決問題中的行為。School of Computer Science 例例1 1:有一臺如下流程的演出:主持人開場:有一臺如下流程的演出:主持人開場演員演員1 1表演表演演員演員2 2表演表演主持人總結。主持人總結。 用面向過程的思想來分析,就是先完成主持用面向過程的思想來分析,就是先完成主持人開場,再完成演員人開場,再完成演員1 1的表演,再完成演員的表演,再完成演員2

30、 2的表的表演,最后完成主持人的總結。演,最后完成主持人的總結。 如果用面向對象的思想來分析,就是:這個如果用面向對象的思想來分析,就是:這個演出由兩大部分組成:主持人、演員。與主持人演出由兩大部分組成:主持人、演員。與主持人相關的:開場、總結。與演員相關的:演員編號、相關的:開場、總結。與演員相關的:演員編號、所演的節目。然后這臺演出就可以這樣策劃:需所演的節目。然后這臺演出就可以這樣策劃:需要一個主持人要一個主持人a a,需要兩個演員,需要兩個演員b b、c c。演出的事。演出的事情可以表示為:情可以表示為:a a的開場的開場 b b、c c的編號和節的編號和節目目 a a的總結。的總結。

31、 School of Computer Science 例例2 2:下五子棋:下五子棋 面向過程的設計思路就是首先分析問題的面向過程的設計思路就是首先分析問題的步驟:步驟:1 1、開始游戲,、開始游戲,2 2、黑子先走,、黑子先走, 3 3、繪制畫面,、繪制畫面,4 4、判斷輸贏,、判斷輸贏, 5 5、輪到白子,、輪到白子,6 6、繪制畫面,、繪制畫面,7 7、判斷輸贏,、判斷輸贏,8 8、返回步驟、返回步驟2 2, 9 9、輸出最后結果。、輸出最后結果。 把上面每個步驟用分別的函數來實現,問把上面每個步驟用分別的函數來實現,問題就解決了。題就解決了。School of Computer Sc

32、ience 面向對象的設計思路是,整個五子棋可以分為:面向對象的設計思路是,整個五子棋可以分為: 1 1、黑白雙方,這兩方的行為是一模一樣的,、黑白雙方,這兩方的行為是一模一樣的,2 2、棋盤系統,負責繪制畫面,、棋盤系統,負責繪制畫面,3 3、規則系統,負責判定諸如犯規、輸贏等。、規則系統,負責判定諸如犯規、輸贏等。 第一類對象(玩家對象)負責接受用戶輸入,并第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,

33、同時利用第三類對象(規則系統)來對棋這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。局進行判定。 可以明顯地看出,面向對象是以可以明顯地看出,面向對象是以功能來劃分問題功能來劃分問題,而不是步驟。而不是步驟。School of Computer Science 功能上的統一保證了面向對象設計的可擴展性。功能上的統一保證了面向對象設計的可擴展性。 比如我要加入悔棋的功能,如果要改動面向過程比如我要加入悔棋的功能,如果要改動面向過程的設計,那么從輸入到判斷到顯示這一連串的步驟都的設計,那么從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的順序都要進行大規模調整。要改動,甚至步驟之間

34、的順序都要進行大規模調整。如果是面向對象的話,只用改動棋盤對象就行了,棋如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對對象功能而顯示和規則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的。的調用順序都沒有變化,改動只是局部的。School of Computer Science 再比如:把五子棋游戲改為圍棋游戲,如再比如:把五子棋游戲改為圍棋游戲,如果是面向對象的,只需要改寫規則對象就可以果是面向對象的,只需要改寫規則對象就可以刻;如果是面向過

35、程的,五子棋的規則分布在刻;如果是面向過程的,五子棋的規則分布在程序的每個角落,要改動還不如重寫。程序的每個角落,要改動還不如重寫。School of Computer Science面向過程方法的特點n 優點:優點:這種程序設計方法算法描述準確。這種程序設計方法算法描述準確。對每一子過程模塊容易進行程序正確性證明。對每一子過程模塊容易進行程序正確性證明。n 缺點:缺點:程序代碼可重用性差。程序中除少數標準庫函數程序代碼可重用性差。程序中除少數標準庫函數外,每設計一個程序時,程序員幾乎從零做起。外,每設計一個程序時,程序員幾乎從零做起。即使重用代碼,通常也是通過拷貝或編輯重新生即使重用代碼,通

36、常也是通過拷貝或編輯重新生成一份。成一份。維護程序的一致性困難。前一步修改了導致以后維護程序的一致性困難。前一步修改了導致以后步驟的修改。步驟的修改。School of Computer ScienceOOP方法的特點n OOPOOP以以“對象對象”或或“數據數據”為中心。由于對象自然地反為中心。由于對象自然地反映了應用領域的模塊性,因此具有相對穩定性,可以被映了應用領域的模塊性,因此具有相對穩定性,可以被用作一個組件去構成更復雜的應用,又由于對象一般封用作一個組件去構成更復雜的應用,又由于對象一般封裝的是某一實際需求的各種成分,因此,某一對象的改裝的是某一實際需求的各種成分,因此,某一對象的

37、改變對整個系統幾乎沒有影響。變對整個系統幾乎沒有影響。n 引入了引入了“類類”的概念。類與類以層次結構組織,屬于某的概念。類與類以層次結構組織,屬于某個類的對象除具有該類所描述的特性外,還具有層次結個類的對象除具有該類所描述的特性外,還具有層次結構中該類上層所有類描述的全部性質,構中該類上層所有類描述的全部性質,OOPOOP中稱這種機中稱這種機制為繼承。制為繼承。n OOPOOP方法的模塊性與繼承性,保證了新的應用程序設計方法的模塊性與繼承性,保證了新的應用程序設計可在原有對象的數據類型和功能的基礎上通過重用、擴可在原有對象的數據類型和功能的基礎上通過重用、擴展和細化來進行,而不必從頭做起或復

38、制原有代碼,這展和細化來進行,而不必從頭做起或復制原有代碼,這樣,大大減少了重新編寫新代碼的工作量。樣,大大減少了重新編寫新代碼的工作量。School of Computer Science面向對象的程序設計方法與面向過程的程序設計方法的比較 (1 1)以過程為中心構造應用程序,設計出)以過程為中心構造應用程序,設計出的程序可重用代碼少,且當代碼量增加時維護的程序可重用代碼少,且當代碼量增加時維護數據和代碼的一致性困難。數據和代碼的一致性困難。 (2 2)面向對象程序設計方法中,對象所具)面向對象程序設計方法中,對象所具有的封裝性和繼承性使得代碼重用成為可能,有的封裝性和繼承性使得代碼重用成為

39、可能,并大大減少了程序出錯的可能性。并大大減少了程序出錯的可能性。 (3 3)面向對象方法吸收了結構化程序設計)面向對象方法吸收了結構化程序設計方法的優點,同時引入了新概念、新機制并建方法的優點,同時引入了新概念、新機制并建立了比傳統方法更高層次的抽象。立了比傳統方法更高層次的抽象。School of Computer Science4 軟件工程 軟件工程是分析、設計、實現、與維護軟件軟件工程是分析、設計、實現、與維護軟件系統的一組規范,它指導著軟件開發人員以工程系統的一組規范,它指導著軟件開發人員以工程化的手段規范地開發高質量的軟件。化的手段規范地開發高質量的軟件。 軟件工程源于軟件危機軟件

40、工程源于軟件危機。 School of Computer Science軟件危機-軟件危機的表現成本高成本高美國空軍:1955年軟件占總費用(計算機系統)的18%,70年60%,85年達到85。美國全球軍事指揮控制系統,硬件1億美元,軟件高達7.2億美元。軟件和硬件費用比不斷增加軟件和硬件費用比不斷增加我國某軍艦計算機CPU運行850小時,故障120多次,其中軟件占70%。School of Computer Sciencen 軟件質量得不到保證軟件越來越多的應用于安全猶關軟件越來越多的應用于安全猶關(safety (safety critical)critical)的系統,對軟件質量提出更高

41、的要求的系統,對軟件質量提出更高的要求8080年代歐洲亞麗安娜火箭的發射失敗,原因是軟年代歐洲亞麗安娜火箭的發射失敗,原因是軟件錯誤件錯誤美國阿托拉斯火箭的發射失敗,原因是軟件故障美國阿托拉斯火箭的發射失敗,原因是軟件故障我國某型號導彈,由于軟件問題致使打靶失敗我國某型號導彈,由于軟件問題致使打靶失敗School of Computer Sciencen 進度難以控制項目延期比比皆是項目延期比比皆是由于進度問題而取消的軟件項目較常見由于進度問題而取消的軟件項目較常見只有一小部分的項目能夠按期完成只有一小部分的項目能夠按期完成n 維護非常困難軟件維護的多樣性軟件維護的多樣性軟件維護的復雜性軟件維

42、護的復雜性軟件維護的副作用軟件維護的副作用School of Computer Science產生軟件危機的根源n 復雜性高復雜性高邏輯產品,邏輯復雜性遠高于硬件復雜性邏輯產品,邏輯復雜性遠高于硬件復雜性軟件的復雜性隨規模呈指數級上升軟件的復雜性隨規模呈指數級上升n 規模大規模大應用擴大,代碼量,應用擴大,代碼量,10001000萬行,仍在不斷膨脹萬行,仍在不斷膨脹影響軟件生產率和質量的因素比較復雜影響軟件生產率和質量的因素比較復雜人員的能力和水平人員的能力和水平團隊合作團隊合作n 缺乏有效、系統原理、原則、方法和工具的缺乏有效、系統原理、原則、方法和工具的指導和輔助指導和輔助School o

43、f Computer ScienceSoftware Engineering vs. Software Engineering vs. Other Engineering FieldsOther Engineering Fields傳統工程傳統工程n Building blocks(構件,組件)構件,組件)n Role of tolerances(誤差:傳統工程(誤差:傳統工程允許誤差范圍,軟件只有正確與不正確之允許誤差范圍,軟件只有正確與不正確之分)分)n Metrics(度量:傳統工程度量可通過故(度量:傳統工程度量可通過故障的平均時間,而軟件不存在磨損)障的平均時間,而軟件不存在磨損)S

44、chool of Computer Science對軟件開發的深層次認識n 開發一個具有一定規模和復雜性的軟件系開發一個具有一定規模和復雜性的軟件系統與編寫一個簡單的程序不一樣。統與編寫一個簡單的程序不一樣。 正如建設狗窩和高樓大廈正如建設狗窩和高樓大廈n 大型、復雜軟件系統的開發是一項工程,大型、復雜軟件系統的開發是一項工程,必須按照工程化的方法組織軟件的生產和必須按照工程化的方法組織軟件的生產和管理,必須經過分析、設計、實現、測試、管理,必須經過分析、設計、實現、測試、維護等一系列軟件過程和活動。維護等一系列軟件過程和活動。School of Computer Science軟件工程的目標

45、 軟件工程目標:生產具有正確性、可用性軟件工程目標:生產具有正確性、可用性以及開銷合宜的產品。以及開銷合宜的產品。 正確性指軟件產品達到預期功能的程度。正確性指軟件產品達到預期功能的程度。 可用性指軟件基本結構、實現及文檔為用可用性指軟件基本結構、實現及文檔為用戶可用的程度。戶可用的程度。 開銷合宜是指軟件開發、運行的整個開銷開銷合宜是指軟件開發、運行的整個開銷滿足用戶要求的程度。滿足用戶要求的程度。School of Computer Science 軟件工程強調使用生存周期方法學和軟件工程強調使用生存周期方法學和各種結構分析及結構設計技術。各種結構分析及結構設計技術。 軟件工程方法軟件工程

46、方法 在完成生存周期每個階段的任務時,應該采用適合該階段任務特點的系統化的技術方法結構分析或結構設計技術。 生存周期方法學就指從時間角度對軟件開發和維護的復雜問題進行分解,把軟件生存的漫長周期依次劃分為若干個階段,每個階段有相對獨立的任務,然后逐步完成每個階段的任務。School of Computer Science 在每個階段結束之前都從技術和管理兩個在每個階段結束之前都從技術和管理兩個角度進行嚴格的審查,合格之后才開始下一階角度進行嚴格的審查,合格之后才開始下一階段的工作,這就使軟件開發工程的全過程以一段的工作,這就使軟件開發工程的全過程以一種有條不紊的方式進行,保證了軟件的質量,種有條

47、不紊的方式進行,保證了軟件的質量,特別是提高了軟件的可維護性。特別是提高了軟件的可維護性。 總之,采用軟件工程方法論可以大大提高總之,采用軟件工程方法論可以大大提高軟件開發的成功率,軟件開發的生產率也能明軟件開發的成功率,軟件開發的生產率也能明顯提高。顯提高。School of Computer Science軟件生命周期 某一軟件從被提出并著手開始實現,直到軟件某一軟件從被提出并著手開始實現,直到軟件完成其使命為止的全過程被劃分為一些階段,并稱完成其使命為止的全過程被劃分為一些階段,并稱這一全過程為軟件生命周期。這一全過程為軟件生命周期。 通常,軟件生命周期分三個階段:通常,軟件生命周期分三

48、個階段:軟件定義、軟件定義、軟件開發、運行維護。軟件開發、運行維護。School of Computer Science(1) (1) 可行性研究與計劃制定:確定開發目標和可行性研究與計劃制定:確定開發目標和總的要求,給出功能、可靠性等可能方案,制總的要求,給出功能、可靠性等可能方案,制定實施計劃。定實施計劃。 (2) (2) 需求分析:對軟件需求進行分析并給出詳需求分析:對軟件需求進行分析并給出詳細定義,編寫軟件規格說明書及初步的用戶手細定義,編寫軟件規格說明書及初步的用戶手冊,提交評審。冊,提交評審。 1 1 軟件定義軟件定義-軟件要軟件要“做什么做什么”School of Compute

49、r Science(3) (3) 系統設計:概要設計和詳細設計,給出軟件的系統設計:概要設計和詳細設計,給出軟件的結構、模塊和功能的劃分等。編寫概要設計、詳細結構、模塊和功能的劃分等。編寫概要設計、詳細設計說明書和測試計劃初稿。設計說明書和測試計劃初稿。 (4) (4) 詳細設計:源程序編碼,把軟件設計轉換成計詳細設計:源程序編碼,把軟件設計轉換成計算機可以接受的程序代碼。編寫用戶手冊、操作手算機可以接受的程序代碼。編寫用戶手冊、操作手冊和單元測試計劃。冊和單元測試計劃。(5)(5)編碼:編碼:(6)(6)測試:設計測試用例,檢驗軟件各個組成部分。測試:設計測試用例,檢驗軟件各個組成部分。編寫

50、測試分析報告。編寫測試分析報告。 2 2 軟件開發軟件開發軟件要軟件要“怎么做怎么做”School of Computer Science3 3 軟件運行軟件運行和維護和維護 (7) (7) 軟件投入運行,維護軟件投入運行,維護( (進行擴充和刪改進行擴充和刪改) )。 School of Computer ScienceTraditional Development PhaseTraditional Development Phase傳統開發階段傳統開發階段軟件生命周期的開發步驟軟件生命周期的開發步驟School of Computer ScienceAnalysisAnalysis分析分析

51、n A major goal of analysis is to identify what the proposed system should accomplishn Requirements(需求)(需求)l The needs of the potential usersl Stated in terms of the application rather than in the technical terminologyn Specifications(說明書)(說明書)l Technical descriptions of the requirementsSchool of Com

52、puter ScienceDesign設計n Design concentrates on how the system will accomplish the goals set in analysisn System structure is established in designn The best structure is a modular onen Modularity(模塊化)(模塊化)l Division of a software into manageable units, each performs only part of the overall taskn Mod

53、ular decomposition l Makes the implementation of large systems possiblel Allows changes to be made on a modular basisSchool of Computer ScienceImplementation and Testing實現和測試n Implementation involves the actual writing of programs, creation of data files, and development of databasen Each module is

54、normally tested as it is implementedn Stubs(樁模塊)(樁模塊)l Simplified versions of modules used to test a certain modulen Feature(功能)(功能) test and load testn Reliability growth test and certification testSchool of Computer Science軟件Development Models開發模型Recent Trends 趨勢nWaterfall(瀑布模型)(瀑布模型)lPerforms ana

55、lysis, design, implementation, and testing in a strictly mannernIncremental(迭代模型)(迭代模型)lSoftware system is constructed in incrementsnPrototyping(原型法)(原型法)lIncomplete versions of the proposed system (prototypes) are built and evaluatedlEvolutionary prototyping(演化式原型)(演化式原型)lEarly prototyping and throwaway prototyping(拋棄式原型)(拋棄式原型)School of Computer ScienceTesting Methodology Based on Pareto Testing Methodology Based on Pareto PrinciplePrinciple(基于(基于ParetoPareto法則的測試方法)法則的測試方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論