第1章-軟件工程概論_第1頁
第1章-軟件工程概論_第2頁
第1章-軟件工程概論_第3頁
第1章-軟件工程概論_第4頁
第1章-軟件工程概論_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程主講主講:張紅斌張紅斌Email: 使用教材:軟件工程(江西高校出版社)使用教材:軟件工程(江西高校出版社)參考教材:軟件工程導論(第五版)參考教材:軟件工程導論(第五版)清華大學出版社清華大學出版社八十年代初科學家的預言八十年代初科學家的預言lOsborne 1979 將迎來將迎來” 新的工業(yè)革命新的工業(yè)革命”lToffler 1980 微電子的發(fā)展是人類歷史上的微電子的發(fā)展是人類歷史上的”第三次浪潮第三次浪潮”l80年代初 美國商業(yè)周刊雜志在頭版刊登大標題:美國商業(yè)周刊雜志在頭版刊登大標題: “軟件:新的驅(qū)動力軟件:新的驅(qū)動力”! 當時人們還沒有意識到他們的預見是多么的正確。當時人

2、們還沒有意識到他們的預見是多么的正確。八十年代初科學家的預言八十年代初科學家的預言lNaisbitt 1982 人類社會將人類社會將“從工業(yè)社會向信息社會轉(zhuǎn)變從工業(yè)社會向信息社會轉(zhuǎn)變”lFeigenbaum 1983 計算機控制的信息和知識將成為計算機控制的信息和知識將成為20世紀表現(xiàn)能世紀表現(xiàn)能力的焦點力的焦點lStoll 1989 網(wǎng)絡和軟件產(chǎn)生的網(wǎng)絡和軟件產(chǎn)生的“電子社會電子社會”是實現(xiàn)全球是實現(xiàn)全球知識交流的關鍵。知識交流的關鍵。二十年后的現(xiàn)實二十年后的現(xiàn)實 1. 計算機的發(fā)展與普及計算機的發(fā)展與普及 2. 計算機軟件的發(fā)展與普及計算機軟件的發(fā)展與普及 3. 計算機網(wǎng)絡的發(fā)展與普及計算

3、機網(wǎng)絡的發(fā)展與普及觀察與思考觀察與思考因為普及了計算機、軟件和網(wǎng)絡因為普及了計算機、軟件和網(wǎng)絡迎來了信息化社會和知識經(jīng)濟。迎來了信息化社會和知識經(jīng)濟。軟件工程的重要性(軟件工程的重要性(為什么學為什么學? )l歷史角度歷史角度l社會角度社會角度l個人角度個人角度歷史角度歷史角度發(fā)展的必然發(fā)展的必然軟件危機軟件危機l 六十年代以來,隨著計算機應用需求的驅(qū)動,系統(tǒng)軟六十年代以來,隨著計算機應用需求的驅(qū)動,系統(tǒng)軟件和應用軟件有很大的發(fā)展,如操作系統(tǒng),編譯系統(tǒng)件和應用軟件有很大的發(fā)展,如操作系統(tǒng),編譯系統(tǒng)和大型應用軟件等。由于軟件生產(chǎn)的復雜性和高成本,和大型應用軟件等。由于軟件生產(chǎn)的復雜性和高成本,使

4、大型軟件的生產(chǎn)出現(xiàn)了很大的困難,即出現(xiàn)使大型軟件的生產(chǎn)出現(xiàn)了很大的困難,即出現(xiàn)軟件危軟件危機機。 l軟件工程正是為克服軟件危機而提出的一種概念,并軟件工程正是為克服軟件危機而提出的一種概念,并在實踐中不斷地探索它的原理,技術和方法。在此過在實踐中不斷地探索它的原理,技術和方法。在此過程中,人們研究和借鑒了工程學的某些原理和方法,程中,人們研究和借鑒了工程學的某些原理和方法,并形成了一門新的學科并形成了一門新的學科軟件工程學。軟件工程學。 社會角度社會角度 團隊協(xié)作的時代團隊協(xié)作的時代個人個人英雄主義時代的終結(jié)英雄主義時代的終結(jié)l中國的軟件英雄:吳曉軍(中國的軟件英雄:吳曉軍(2.13)、史玉柱

5、)、史玉柱(巨人漢巨人漢卡卡)、鮑岳橋(、鮑岳橋(UCDOS)、周志農(nóng))、周志農(nóng)(自然碼自然碼)、朱崇君、朱崇君(CCED)、求伯君、求伯君(WPS)、馬化騰、馬化騰(QQ)、劉旭、劉旭(瑞星瑞星)、王江民王江民(KV)、王文京、王文京(用友用友)、張小龍、張小龍(Foxmail)、丁磊、丁磊(163郵局)、洪以容(郵局)、洪以容(netants) 越來越少,越來越少,影響也越來越小。這些英雄如今不是銷聲匿跡,就是影響也越來越小。這些英雄如今不是銷聲匿跡,就是組成了自己的團隊。組成了自己的團隊。我們需要英雄,但是,如果只有我們需要英雄,但是,如果只有英雄,那么就只有軟件、而沒有軟件業(yè)了英雄,那

6、么就只有軟件、而沒有軟件業(yè)了。能夠支撐能夠支撐起民族軟件業(yè)的只能是靠工程化思想武裝起來的團隊、起民族軟件業(yè)的只能是靠工程化思想武裝起來的團隊、還要有幾只超級規(guī)模的團隊!還要有幾只超級規(guī)模的團隊! l 在個人英雄主義時代,對一般軟件從業(yè)者來講,會兩在個人英雄主義時代,對一般軟件從業(yè)者來講,會兩句句SQL,能寫個工資程序、打打報表就能生存,那個,能寫個工資程序、打打報表就能生存,那個時代已經(jīng)一去不復返了!時代已經(jīng)一去不復返了! 社會角度社會角度 團隊協(xié)作的時代團隊協(xié)作的時代個人英雄個人英雄主義時代的終結(jié)主義時代的終結(jié)l我國的軟件開發(fā)水平,單從編碼來看,我們擁有眾多我國的軟件開發(fā)水平,單從編碼來看,

7、我們擁有眾多的高水平程序員,絕不遜色于任何國家,但軟件開發(fā)的高水平程序員,絕不遜色于任何國家,但軟件開發(fā)管理水平與發(fā)達國家有很大差距,這也就是我們不能管理水平與發(fā)達國家有很大差距,這也就是我們不能開發(fā)出像開發(fā)出像Office、操作系統(tǒng)之類軟件的原因。我們從、操作系統(tǒng)之類軟件的原因。我們從單個程序員來說,能夠編寫出一流的代碼,漂亮的界單個程序員來說,能夠編寫出一流的代碼,漂亮的界面。但是卻去不能協(xié)調(diào)眾多程序員去開發(fā)一個項目面。但是卻去不能協(xié)調(diào)眾多程序員去開發(fā)一個項目(工程)軟件。在這一方面說我們(工程)軟件。在這一方面說我們中國程序員一個人中國程序員一個人是一條龍,十個人是一條蟲是一條龍,十個人

8、是一條蟲并不為過。并不為過。l 例:首都機場。印度人寫的一個模塊例:首都機場。印度人寫的一個模塊200多行,我們多行,我們程序員只用不到程序員只用不到50行,但人家的模塊同樣正確、而且行,但人家的模塊同樣正確、而且堅固、文檔清晰易懂。技術技巧固然重要,但堅固、文檔清晰易懂。技術技巧固然重要,但軟件開軟件開發(fā)中最大的問題已不是技術問題,而是管理問題!發(fā)中最大的問題已不是技術問題,而是管理問題! 個人角度個人角度 專業(yè)人員必備的個人素質(zhì)專業(yè)人員必備的個人素質(zhì)1) 基礎理論基礎理論:訓練分析解決問題的能力,深層研究的工具。:訓練分析解決問題的能力,深層研究的工具。數(shù)學分析訓練嚴密的邏輯思維。普通物理

9、和西方哲學史數(shù)學分析訓練嚴密的邏輯思維。普通物理和西方哲學史等教會你很多思維方式,比如:假說等教會你很多思維方式,比如:假說大膽假設、認大膽假設、認真求證。(真求證。(算法分析與設計算法分析與設計)2) 專業(yè)理論專業(yè)理論:數(shù)據(jù)庫理論、網(wǎng)絡基礎、編譯原理等。:數(shù)據(jù)庫理論、網(wǎng)絡基礎、編譯原理等。3) 專業(yè)技術專業(yè)技術:程序設計語言等。(:程序設計語言等。(很多人熱衷的很多人熱衷的)4) 工程技術工程技術:軟件工程,本、研教育中:軟件工程,本、研教育中唯一唯一涉及工程規(guī)范涉及工程規(guī)范與管理的課程,它象粘合劑,技術經(jīng)過它的粘合才能形與管理的課程,它象粘合劑,技術經(jīng)過它的粘合才能形成軟件產(chǎn)品?。ǔ绍浖a(chǎn)

10、品?。ê芏嘬浖O計者忽略了很多軟件設計者忽略了)5) 外語外語。多門語言多條路。(。多門語言多條路。(外包外包)6) 表達與交流能力表達與交流能力:團隊內(nèi)部、與客戶通訊的基本素質(zhì)。:團隊內(nèi)部、與客戶通訊的基本素質(zhì)。7) 法律常識與職業(yè)道德法律常識與職業(yè)道德:知識產(chǎn)權保護、行業(yè)特點的職業(yè):知識產(chǎn)權保護、行業(yè)特點的職業(yè)道德。道德。 個人角度個人角度 專業(yè)人員必備的個人素質(zhì)專業(yè)人員必備的個人素質(zhì)l程序員是一個吃青春飯的行當,也是英雄出少年的行程序員是一個吃青春飯的行當,也是英雄出少年的行當,就象運動員一樣。一個程序員,當,就象運動員一樣。一個程序員,10年以后很少再年以后很少再只寫代碼。只寫代碼。軟

11、件工程是你從程序員到高級程序員、系軟件工程是你從程序員到高級程序員、系統(tǒng)分析員,或項目經(jīng)理、部門經(jīng)理、統(tǒng)分析員,或項目經(jīng)理、部門經(jīng)理、CTO一步步邁進一步步邁進必備的知識,積累起來的經(jīng)驗也是你超越年輕人坐在必備的知識,積累起來的經(jīng)驗也是你超越年輕人坐在更高職位的資本。(更高職位的資本。(有志向者自己創(chuàng)業(yè)有志向者自己創(chuàng)業(yè))l軟件行業(yè)分工越來越細、一個團隊內(nèi)也有各種角色。軟件行業(yè)分工越來越細、一個團隊內(nèi)也有各種角色。軟件工程的知識可以使你結(jié)合自己的特點軟件工程的知識可以使你結(jié)合自己的特點準確定位準確定位自自己的發(fā)展方向。己的發(fā)展方向。課程學習的目標課程學習的目標l掌握基礎理論掌握基礎理論l樹立工程

12、化思想樹立工程化思想l培養(yǎng)國際標準的意識培養(yǎng)國際標準的意識l鍛煉團隊合作精神鍛煉團隊合作精神l加強交流與動手能力加強交流與動手能力兩個上升兩個上升u轉(zhuǎn)變對軟件的認識:轉(zhuǎn)變對軟件的認識: 上升上升 程序程序 系統(tǒng)系統(tǒng)u 轉(zhuǎn)變思維定式:轉(zhuǎn)變思維定式: 上升上升 程序員程序員 系統(tǒng)工程師系統(tǒng)工程師 ( (系統(tǒng)分析員系統(tǒng)分析員) )本章要點本章要點l背景知識背景知識l什么是軟件?什么是軟件?l什么是軟件工程?什么是軟件工程?l軟件工程研究什么?軟件工程研究什么?背景知識背景知識n軟件工程是學科軟件工程是學科n軟件工程知識結(jié)構(gòu)軟件工程知識結(jié)構(gòu)n軟件工程與一般工程的差異軟件工程與一般工程的差異n開發(fā)軟件不

13、僅僅是編程開發(fā)軟件不僅僅是編程n本課程與其他課程的區(qū)別本課程與其他課程的區(qū)別軟件工程是學科軟件工程是學科n軟件工程是軟件工程是一門學科一門學科,它用,它用科學的理論指導標準的軟件科學的理論指導標準的軟件系統(tǒng)開發(fā)。(系統(tǒng)開發(fā)。(二級學科二級學科)n單純的代碼編寫是軟件工程單純的代碼編寫是軟件工程的的前身前身,它只占用軟件工程,它只占用軟件工程中很少的一段空間和時間。中很少的一段空間和時間。比較爭議的地比較爭議的地方方軟件工程是一門交叉學科軟件工程是一門交叉學科軟件工程的主要研究內(nèi)容u軟件開發(fā)技術軟件開發(fā)技術: :軟件開發(fā)方法學軟件開發(fā)方法學 軟件開發(fā)過程軟件開發(fā)過程 軟件工具和軟件工程環(huán)境軟件工

14、具和軟件工程環(huán)境 u軟件工程管理軟件工程管理: :軟件管理學軟件管理學 軟件經(jīng)濟學軟件經(jīng)濟學 軟件心理軟件心理u軟件工程所包含的內(nèi)容不是一成不變的軟件工程所包含的內(nèi)容不是一成不變的, ,隨著隨著人們對軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解。人們對軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解。應用發(fā)展的眼光看待它。應用發(fā)展的眼光看待它。軟件工程知識結(jié)構(gòu)軟件工程知識結(jié)構(gòu)n 軟件需求軟件需求n 軟件設計軟件設計n 軟件構(gòu)造軟件構(gòu)造n 軟件測試軟件測試n 軟件維護軟件維護n 軟件配置管理軟件配置管理n 軟件工程管理軟件工程管理n 軟件工程過程軟件工程過程n 軟件工程工具軟件工程工具和方法和方法n 軟件質(zhì)量軟件質(zhì)量軟件工程與

15、一般工程的差異軟件工程與一般工程的差異n軟件是軟件是邏輯產(chǎn)品邏輯產(chǎn)品而不是實物產(chǎn)品而不是實物產(chǎn)品n軟件的功能依賴于硬件和軟件的運行環(huán)軟件的功能依賴于硬件和軟件的運行環(huán)境以及人們對它的操作境以及人們對它的操作n軟件軟件設計的復雜性設計的復雜性n智力密集及智力密集及知識產(chǎn)權保護知識產(chǎn)權保護開發(fā)軟件不僅僅是編程開發(fā)軟件不僅僅是編程開發(fā)開發(fā)維護維護設計設計編寫編寫模塊測試模塊測試聯(lián)合測試聯(lián)合測試分析分析說明什么?說明什么?“軟件工程軟件工程”課程課程 與其它軟件專業(yè)課的與其它軟件專業(yè)課的區(qū)別(尤其區(qū)別(尤其是語言類課)是語言類課)(1) 立足于系統(tǒng)的整體。立足于系統(tǒng)的整體。(2) 講授講授系統(tǒng)分析、系

16、統(tǒng)設計、測試、系統(tǒng)分析、系統(tǒng)設計、測試、管理、軟件工具及維護理論和方法管理、軟件工具及維護理論和方法。(3) 實踐中了解軟件過程中的各個重要實踐中了解軟件過程中的各個重要階段。階段。(4) 以以結(jié)構(gòu)化方法結(jié)構(gòu)化方法為主,為主,面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄗ鲆粋€做一個升華升華。什么是軟件什么是軟件n軟件的發(fā)展史軟件的發(fā)展史n究竟什么是軟件究竟什么是軟件n軟件的特點軟件的特點n軟件的分類軟件的分類n軟軟 件件 危危 機機軟件的發(fā)展軟件的發(fā)展n1950-1965 沒有系統(tǒng)的軟件開發(fā)方法和管理機制、沒有系統(tǒng)的軟件開發(fā)方法和管理機制、自定義軟件、批處理、有限分布。自定義軟件、批處理、有限分布。n1965-1

17、975 產(chǎn)生人機交互的新概念、新技術軟件產(chǎn)生人機交互的新概念、新技術軟件產(chǎn)品、多用戶、實時、數(shù)據(jù)庫。產(chǎn)品、多用戶、實時、數(shù)據(jù)庫。軟件的發(fā)展軟件的發(fā)展n1973-1988 微處理器的出現(xiàn)并廣泛應用微處理器的出現(xiàn)并廣泛應用 分布式系統(tǒng)、嵌入智能、低成本硬件、分布式系統(tǒng)、嵌入智能、低成本硬件、消費者的影響。消費者的影響。n1986-2000 廣域和局域網(wǎng)絡迅速普及廣域和局域網(wǎng)絡迅速普及 強大的桌面系統(tǒng)、面向?qū)ο蠹夹g、專家強大的桌面系統(tǒng)、面向?qū)ο蠹夹g、專家系統(tǒng)、人工智能、神經(jīng)網(wǎng)絡、并行計算、系統(tǒng)、人工智能、神經(jīng)網(wǎng)絡、并行計算、網(wǎng)絡計算機。網(wǎng)絡計算機。 早期早期 第二階段第二階段 第三階段第三階段 第四

18、階段第四階段面向批處理面向批處理 多用戶多用戶 分布式系統(tǒng)分布式系統(tǒng) 強大的桌面系統(tǒng)強大的桌面系統(tǒng)有限的分布有限的分布 實時實時 嵌入嵌入“智能智能” ” 面向?qū)ο蠹济嫦驅(qū)ο蠹夹g術自定義軟件自定義軟件 數(shù)據(jù)庫數(shù)據(jù)庫 低成本硬件低成本硬件 專家系專家系統(tǒng) 軟件產(chǎn)品軟件產(chǎn)品 消費者的影響消費者的影響 人工神經(jīng)網(wǎng)絡人工神經(jīng)網(wǎng)絡 并行計算并行計算 網(wǎng)絡計算機網(wǎng)絡計算機195019601970198019902000軟件的發(fā)展史軟件的發(fā)展史n軟件軟件是計算機系統(tǒng)中與硬件相互依存的是計算機系統(tǒng)中與硬件相互依存的另一部分,另一部分,它是包括程序,數(shù)據(jù)及其相它是包括程序,數(shù)據(jù)及其相關文檔的完整集合。關文檔的完

19、整集合。n程序程序是按事先設計的功能和性能要求執(zhí)行的指是按事先設計的功能和性能要求執(zhí)行的指令序列令序列n數(shù)據(jù)數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)(有有教材不把它作為軟件的一部分教材不把它作為軟件的一部分)n文檔文檔是與程序開發(fā),維護和使用有關的圖文材是與程序開發(fā),維護和使用有關的圖文材料料究竟什么是軟件?究竟什么是軟件?PCSource CodeDataResultDocument程序程序 = 算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)軟件的詳細描述軟件的詳細描述程序設計語言程序設計語言n面向機器面向機器 :匯編語言、機器語言等:匯編語言、機器語言等n面向過程面向過程 :Fo

20、rtran, Pascal, C等等n面向?qū)ο竺嫦驅(qū)ο?:C+, Java等等n面向問題面向問題 :結(jié)構(gòu)化查詢語言:結(jié)構(gòu)化查詢語言SQL等等軟件的詳細描述軟件的詳細描述數(shù)據(jù)數(shù)據(jù) 用程序設計語言要求的數(shù)據(jù)結(jié)構(gòu)表示用程序設計語言要求的數(shù)據(jù)結(jié)構(gòu)表示文檔文檔 規(guī)范規(guī)范 準確準確 清晰清晰 簡潔簡潔 無歧義無歧義 自然語言自然語言 結(jié)構(gòu)化英語結(jié)構(gòu)化英語 圖表圖表可讀可讀流行的說法:流行的說法:計算機世界的軟件計算機世界的軟件 軟件是能夠完成預定功能和性能,并對軟件是能夠完成預定功能和性能,并對相應數(shù)據(jù)進行加工的程序和描述程序及相應數(shù)據(jù)進行加工的程序和描述程序及其操作的文檔。其操作的文檔。 楊芙清院士的觀

21、點(數(shù)學的觀楊芙清院士的觀點(數(shù)學的觀點)點)n軟件是客觀世界中軟件是客觀世界中問題空間問題空間與與解空間解空間的具體描述的具體描述,是追求表達能力強、更符是追求表達能力強、更符合人類思維模式、具有易合人類思維模式、具有易構(gòu)造性構(gòu)造性和易和易演化性演化性的的計算模型計算模型。軟件的特點軟件的特點n軟件是一種軟件是一種邏輯實體邏輯實體,而不是具體,而不是具體的物理實體。因而它具有抽象性的物理實體。因而它具有抽象性n軟件的生產(chǎn)與硬件不同,在它的開軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中發(fā)過程中沒有明顯的制造過程沒有明顯的制造過程n在軟件的運行和使用期間,在軟件的運行和使用期間,沒有沒有硬硬件那樣的機

22、械磨損,件那樣的機械磨損,老化老化問題問題n軟件的開發(fā)和運行常受到計算機系軟件的開發(fā)和運行常受到計算機系統(tǒng)的限制,統(tǒng)的限制,對計算機系統(tǒng)有著不同對計算機系統(tǒng)有著不同程度的依賴性程度的依賴性n軟件的開發(fā)至今軟件的開發(fā)至今尚未完全擺脫手工尚未完全擺脫手工藝藝的開發(fā)方式的開發(fā)方式軟件的特點軟件的特點軟件特點軟件特點n目前,追求的終端目前,追求的終端用戶編程、模型用戶編程、模型驅(qū)動開發(fā)、隨需即取驅(qū)動開發(fā)、隨需即取等技術的出現(xiàn),等技術的出現(xiàn),其目的都是使軟件開發(fā)從手工向工其目的都是使軟件開發(fā)從手工向工業(yè)化生產(chǎn)方式變革。業(yè)化生產(chǎn)方式變革。n構(gòu)件技術構(gòu)件技術是最重要的軟件技術之一。是最重要的軟件技術之一。軟

23、件本身是復雜的軟件本身是復雜的1.1.實際問題的復雜性實際問題的復雜性2.2.程序邏輯結(jié)構(gòu)的復雜性程序邏輯結(jié)構(gòu)的復雜性 3.3.軟件成本相當昂貴軟件成本相當昂貴相當多的軟件工作涉及到社會因素相當多的軟件工作涉及到社會因素軟件的特點軟件的特點 Windows9595有有10001000萬行代碼萬行代碼 Windows20002000有有50005000萬行代碼萬行代碼Exchange2000和和 Windows20002000開發(fā)人員結(jié)構(gòu)開發(fā)人員結(jié)構(gòu)Exchange2000Windows20002000項目經(jīng)理項目經(jīng)理25人人約約250人人開發(fā)人員開發(fā)人員140人人約約1700人人測試人員測試人

24、員350人人約約3200人人說明什么?說明什么?軟件的分類軟件的分類n按軟件的功能進行劃分:按軟件的功能進行劃分:n 系統(tǒng)軟件系統(tǒng)軟件n 操作系統(tǒng)操作系統(tǒng)n 數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)n 設備驅(qū)動程序設備驅(qū)動程序n 通信處理程序等通信處理程序等軟件的分類軟件的分類軟件的分類軟件的分類n按軟件規(guī)模進行劃分:按軟件規(guī)模進行劃分:軟件的分類軟件的分類軟件的分類軟件的分類軟件的分類軟件的分類軟件的應用軟件的應用n典型的軟件比如有電子郵件,典型的軟件比如有電子郵件,嵌入式系嵌入式系統(tǒng)統(tǒng),人機界面人機界面,辦公套件辦公套件,操作系統(tǒng)操作系統(tǒng),編譯器編譯器,數(shù)據(jù)庫數(shù)據(jù)庫,游戲游戲等。等。 n各個行業(yè)幾乎都

25、有計算機軟件的應用,各個行業(yè)幾乎都有計算機軟件的應用,比如比如工業(yè)工業(yè),農(nóng)業(yè)農(nóng)業(yè),銀行銀行,航空航空,政府部政府部門門等。等。軟軟 件件 危危 機機n軟件軟件開發(fā)無計劃開發(fā)無計劃n軟件軟件需求不充分需求不充分n軟件軟件開發(fā)過程不規(guī)范開發(fā)過程不規(guī)范n軟件軟件產(chǎn)品無評測手段產(chǎn)品無評測手段n軟件軟件開發(fā)周期大大超過預算開發(fā)周期大大超過預算n軟件軟件開發(fā)成本嚴重超標開發(fā)成本嚴重超標n軟件軟件質(zhì)量難于保證質(zhì)量難于保證軟件不能滿足社會發(fā)展軟件不能滿足社會發(fā)展的需求,成為社會、經(jīng)的需求,成為社會、經(jīng)濟發(fā)展的制約因素濟發(fā)展的制約因素軟件危機代表軟件危機代表nIBM OS 360:Fred Brooks的人月神

26、的人月神話,動用話,動用1000多名程序員,經(jīng)歷數(shù)十年,多名程序員,經(jīng)歷數(shù)十年,花費數(shù)百萬美元;花費數(shù)百萬美元;n阿里亞娜火箭阿里亞娜火箭 :火箭導航的電腦軟件系統(tǒng)火箭導航的電腦軟件系統(tǒng)發(fā)生故障造成火箭爆炸;發(fā)生故障造成火箭爆炸;nTherac-25:一種輻射治療的機器。由于其一種輻射治療的機器。由于其軟件設計時的瑕疵軟件設計時的瑕疵, 致命地超過劑量設定導致命地超過劑量設定導致在致在1985年六月到年六月到1987年一月之間年一月之間, 六件六件已知的醫(yī)療事故中已知的醫(yī)療事故中, 患者死亡或嚴重輻射灼患者死亡或嚴重輻射灼傷傷 。什么是軟件工程什么是軟件工程n軟件工程的定義軟件工程的定義n軟件

27、工程技術的發(fā)展的里程軟件工程技術的發(fā)展的里程n我國軟件工程的發(fā)展歷程我國軟件工程的發(fā)展歷程n我國軟件產(chǎn)業(yè)存在的問題我國軟件產(chǎn)業(yè)存在的問題n軟件工程的本質(zhì)特性軟件工程的本質(zhì)特性n軟件工程的軟件工程的7條基本原理條基本原理軟件工程的定義軟件工程的定義美國電氣和電子工程師協(xié)會美國電氣和電子工程師協(xié)會軟件工程的定義軟件工程的定義n IEEE93 IEEE93:流行的定義:流行的定義:程序設計語言程序設計語言,數(shù)數(shù)據(jù)庫據(jù)庫,軟件開發(fā)工具軟件開發(fā)工具,系統(tǒng)平臺系統(tǒng)平臺,標準標準設計模式設計模式 楊芙清院士的觀點楊芙清院士的觀點n軟件工程是應用軟件工程是應用計算機科學理論計算機科學理論與與技術以及技術以及工

28、程管理工程管理原則與方法,按原則與方法,按照照預算與進度預算與進度,實現(xiàn)滿足用戶要求,實現(xiàn)滿足用戶要求的的軟件產(chǎn)品的定義軟件產(chǎn)品的定義、開發(fā)開發(fā)、發(fā)布發(fā)布和和維護維護的過程,或以之為研究對象的的過程,或以之為研究對象的學科。學科。軟件工程技術的發(fā)展的里程軟件工程技術的發(fā)展的里程軟件工程技術的發(fā)展的里程軟件工程技術的發(fā)展的里程n60年代,年代,手工作坊手工作坊方式是主流;方式是主流;n70年代,年代,結(jié)構(gòu)化結(jié)構(gòu)化分析與設計方法;分析與設計方法;n80年代,開始研制年代,開始研制CASE(Computer-Aided Software Engineering)工具與環(huán)工具與環(huán)境,面向?qū)ο蠓椒ㄩ_始流

29、行;境,面向?qū)ο蠓椒ㄩ_始流行;n90年代,軟件年代,軟件復用技術復用技術與與構(gòu)件技術構(gòu)件技術受到關受到關注。注。我國軟件工程的發(fā)展歷程我國軟件工程的發(fā)展歷程我國軟件產(chǎn)業(yè)存在的問題我國軟件產(chǎn)業(yè)存在的問題n基礎軟件所占分額小,在產(chǎn)業(yè)中的基石基礎軟件所占分額小,在產(chǎn)業(yè)中的基石作用未能凸顯;作用未能凸顯;n缺乏具有國際竟爭力的跨國軟件企業(yè);缺乏具有國際竟爭力的跨國軟件企業(yè);n軟件人才結(jié)構(gòu)性矛盾突出;軟件人才結(jié)構(gòu)性矛盾突出;n美國軟件業(yè)占全球美國軟件業(yè)占全球40%,人才,人才240萬;萬;n日本軟件業(yè)占全球日本軟件業(yè)占全球10%,人才,人才120萬;萬;n中國軟件業(yè)占全球中國軟件業(yè)占全球5.9%,人才,

30、人才50萬;萬;軟件工程的本質(zhì)特性軟件工程的本質(zhì)特性n軟件工程關注軟件工程關注大型程序大型程序的構(gòu)造;的構(gòu)造;n軟件工程的中心課題是軟件工程的中心課題是控制復雜性控制復雜性;n軟件經(jīng)常變化;軟件經(jīng)常變化;n開發(fā)軟件的效率非常重要;開發(fā)軟件的效率非常重要;n和諧地合作和諧地合作是開發(fā)軟件的關鍵;是開發(fā)軟件的關鍵;n軟件必須軟件必須有效地支持它的用戶有效地支持它的用戶;n軟件工程中由一種文化背景的人替另一軟件工程中由一種文化背景的人替另一種文化背景的人創(chuàng)造產(chǎn)品。種文化背景的人創(chuàng)造產(chǎn)品。軟件工程的軟件工程的7條基本原理條基本原理n用分階段的生命周期計劃嚴格管理;用分階段的生命周期計劃嚴格管理;n堅持

31、進行階段評審;堅持進行階段評審;n實行嚴格的產(chǎn)品控制;實行嚴格的產(chǎn)品控制;n采用現(xiàn)代程序設計技術;采用現(xiàn)代程序設計技術;n結(jié)果應能清楚審查;結(jié)果應能清楚審查;n開發(fā)小組的人員應該少而精;開發(fā)小組的人員應該少而精;n承認不斷改進軟件工程實踐的必要性;承認不斷改進軟件工程實踐的必要性;軟件工程研究什么?軟件工程研究什么?n軟件工程方法學軟件工程方法學n軟件工程過程軟件工程過程n軟件工程工具和環(huán)境軟件工程工具和環(huán)境n軟件工程管理軟件工程管理軟件開發(fā)技術軟件開發(fā)技術軟件工程經(jīng)濟學軟件工程經(jīng)濟學和軟件管理學和軟件管理學軟件工程方法學軟件工程方法學n傳統(tǒng)方法學傳統(tǒng)方法學n面向?qū)ο蠓椒▽W面向?qū)ο蠓椒▽Wn目前

32、流行的方法:目前流行的方法:n重量級:重量級:ISO9000,CMM和和RUPn輕量級:極限編程輕量級:極限編程(Extreme Programming XP)和敏捷流程和敏捷流程(Agile Process)強調(diào)以過程為中心強調(diào)以過程為中心強調(diào)以人為中心強調(diào)以人為中心軟件工程過程軟件工程過程-軟件生命期軟件生命期n軟件有一個孕育、誕生、成長、成軟件有一個孕育、誕生、成長、成熟、衰亡的生存過程。這個過程即熟、衰亡的生存過程。這個過程即為計算機軟件的生存期為計算機軟件的生存期n軟件生存期的六個步驟,即軟件生存期的六個步驟,即可行性可行性研究與計劃研究與計劃、需求分析需求分析、總體設計總體設計、詳

33、細設計詳細設計、實現(xiàn)實現(xiàn)、測試測試及及使用維護使用維護可行性研究與計劃可行性研究與計劃可行性研究與計劃可行性研究與計劃需求分析需求分析軟件設計軟件設計實實 現(xiàn)現(xiàn)測測 試試運行維護運行維護軟件生存期模型(軟件生存期模型(核心內(nèi)容核心內(nèi)容)n軟件生存期模型是跨越整個生存期的系軟件生存期模型是跨越整個生存期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的活動和任務的結(jié)構(gòu)框架結(jié)構(gòu)框架n 瀑布模型瀑布模型n 演化模型演化模型n 原型模型原型模型n 螺旋模型螺旋模型n 增量模型增量模型n 噴泉模型噴泉模型缺乏靈缺乏靈活性活性可行性研究與計劃可行性研究與計劃需求分析需

34、求分析設計設計編碼編碼運行維護運行維護測試測試定義定義階段階段開開發(fā)發(fā)階階段段維護階段維護階段瀑布模型瀑布模型(Waterfall Model)瀑布模型開發(fā)軟件的特點瀑布模型開發(fā)軟件的特點瀑布模型的優(yōu)點瀑布模型的優(yōu)點n軟件生命周期模軟件生命周期模型型,使軟件開發(fā)過程可以使軟件開發(fā)過程可以在分析、設計、編碼、測試和維護的框在分析、設計、編碼、測試和維護的框架下進行;架下進行;n軟件開發(fā)過程具有軟件開發(fā)過程具有系統(tǒng)性系統(tǒng)性、可控性可控性,克克服了軟件開發(fā)的隨意性服了軟件開發(fā)的隨意性 。瀑布模型的缺點瀑布模型的缺點n項目開始階段用戶項目開始階段用戶很難精確的提出產(chǎn)品很難精確的提出產(chǎn)品需求需求,由于技

35、術進步,用戶對系統(tǒng)深入,由于技術進步,用戶對系統(tǒng)深入的理解,修改需求十分普遍。的理解,修改需求十分普遍。n項目開發(fā)晚期才能得到程序的運行版本,項目開發(fā)晚期才能得到程序的運行版本,這時修改軟件需求和開發(fā)中的錯誤代價這時修改軟件需求和開發(fā)中的錯誤代價很大。很大。n采用線性模型組織項目開發(fā)經(jīng)常發(fā)生開采用線性模型組織項目開發(fā)經(jīng)常發(fā)生開發(fā)小組人員發(fā)小組人員“堵塞狀態(tài)堵塞狀態(tài)”,特別是項目特別是項目的開始和結(jié)束。的開始和結(jié)束。演化模型演化模型n在項目開發(fā)的初始階段人們對軟件在項目開發(fā)的初始階段人們對軟件的需求認識常常的需求認識常常不夠清晰不夠清晰,使得開,使得開發(fā)項目難于做到一次開發(fā)成功,出發(fā)項目難于做到

36、一次開發(fā)成功,出現(xiàn)返工再開發(fā)在所難免現(xiàn)返工再開發(fā)在所難免n第一次只是第一次只是試驗開發(fā)試驗開發(fā),其目標只是,其目標只是在于探索可行性,弄清軟件需求在于探索可行性,弄清軟件需求n第二次則在此基礎上獲得較為滿意第二次則在此基礎上獲得較為滿意的的軟件產(chǎn)品軟件產(chǎn)品通過原型克服瀑布通過原型克服瀑布模型的缺點模型的缺點原型模型(快速原型模型)原型模型(快速原型模型)原型范型原型范型用戶測試用戶測試運行原型運行原型建造建造/ /修改修改 原型原型 聽取用聽取用 戶意見戶意見 初 步 需 求初 步 需 求分析分析 快速設計快速設計 建造原型建造原型 用戶評估原用戶評估原型(新需求)型(新需求) 對原型加工對原

37、型加工 開發(fā)產(chǎn)品開發(fā)產(chǎn)品 開始開始 結(jié)束結(jié)束 原型模型(快速原型模型)原型模型(快速原型模型)原型模型的優(yōu)點原型模型的優(yōu)點n原型模型原型模型支持軟件需求開發(fā)支持軟件需求開發(fā),幫助用戶和開發(fā)人,幫助用戶和開發(fā)人員理解需求,是軟件需求工程的關鍵。員理解需求,是軟件需求工程的關鍵。n它產(chǎn)生的正式需求文擋,是軟件開發(fā)的基礎。它產(chǎn)生的正式需求文擋,是軟件開發(fā)的基礎。n如果開發(fā)的原型是可運行的,它的若干高質(zhì)量的如果開發(fā)的原型是可運行的,它的若干高質(zhì)量的程序片段和開發(fā)工具可用于工作程序的開發(fā)。程序片段和開發(fā)工具可用于工作程序的開發(fā)。n原型的開發(fā)和評審是系統(tǒng)分析員和用戶原型的開發(fā)和評審是系統(tǒng)分析員和用戶/客戶共客戶共同參予的迭代過程,每個迭代循環(huán)都是線性過程。同參予的迭代過程,每個迭代循環(huán)都是線性過程??蓮陀每蓮陀迷湍P偷娜秉c原型模型的缺點n對于對于大型軟件項目大型軟件項目,原型模型原型模型需要足夠的需要足夠的人力資源以建立足夠的人力資源以建立足夠的原型原型組。組。n原型模型原型模型要求開發(fā)者和客戶在一段時間內(nèi)要求開發(fā)者和客戶在一段時間內(nèi)共同完成共同完成原型原型系統(tǒng)的開發(fā),系統(tǒng)的開發(fā),如果任何一方如果任何一方?jīng)]有實現(xiàn)承諾,會導致沒有實現(xiàn)承諾,會導致原型原型開發(fā)的失敗開發(fā)的失敗。n如果系統(tǒng)難以模塊化,建造如果系統(tǒng)難以模塊化,建造原型原型所需構(gòu)件

溫馨提示

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

評論

0/150

提交評論