版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2課程的性質(zhì)、目的與任務(wù)課程的性質(zhì)、目的與任務(wù) 軟件工程是本專業(yè)的一門必修課程軟件工程是本專業(yè)的一門必修課程。 通過本課程的學習,使學生能從中了解軟件開發(fā)的整個過通過本課程的學習,使學生能從中了解軟件開發(fā)的整個過程,掌握相關(guān)理論和指導思想。為了讓學生真正得以實踐程,掌握相關(guān)理論和指導思想。為了讓學生真正得以實踐,結(jié)合實際軟件開發(fā)項目,讓學生從問題定義開始,經(jīng)過,結(jié)合實際軟件開發(fā)項目,讓學生從問題定義開始,經(jīng)過可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、編碼直到可行性研究、需求分析、概要設(shè)計、詳細設(shè)計、編碼直到最后要對自己開發(fā)的軟件還要進行測試,這樣一個軟件開最后要對自己開發(fā)的軟件還要進行測試,這
2、樣一個軟件開發(fā)過程,從而使學生掌握軟件開發(fā)的基本技能,培養(yǎng)團隊發(fā)過程,從而使學生掌握軟件開發(fā)的基本技能,培養(yǎng)團隊精神及勾通與協(xié)作能力,鍛煉文檔編寫能力,提高獨立的精神及勾通與協(xié)作能力,鍛煉文檔編寫能力,提高獨立的工作能力,通過本課程的學習,為學生后期的畢業(yè)設(shè)計環(huán)工作能力,通過本課程的學習,為學生后期的畢業(yè)設(shè)計環(huán)節(jié)奠定基礎(chǔ)。節(jié)奠定基礎(chǔ)。3課程主要內(nèi)容課程主要內(nèi)容本課程比較全面、系統(tǒng)地介紹軟件工本課程比較全面、系統(tǒng)地介紹軟件工程的概念、技術(shù)與方法學。程的概念、技術(shù)與方法學。 主要內(nèi)容包括:軟件工程概述、軟件生主要內(nèi)容包括:軟件工程概述、軟件生存周期及軟件需求分析、軟件設(shè)計方法、存周期及軟件需求分析
3、、軟件設(shè)計方法、軟件測試技術(shù)等。軟件測試技術(shù)等。45 5How do we learn?1 1、注重對基本概念、原理和方法的理解。、注重對基本概念、原理和方法的理解。2 2、通過不斷的實踐,提高應(yīng)用知識解決實、通過不斷的實踐,提高應(yīng)用知識解決實際問題的能力。際問題的能力。3 3、注重提高溝通能力和文檔寫作能力。、注重提高溝通能力和文檔寫作能力。4 4、學會從專業(yè)的角度思考問題。、學會從專業(yè)的角度思考問題。5 5、學習別人的經(jīng)驗。、學習別人的經(jīng)驗。6課程安排課程安排1. 課程安排:課程安排: 課堂教學:(48學時) 課程設(shè)計:以開發(fā)小組為單位進行(3-5人一組)(時間: 7-8節(jié)課地點:J13-
4、對應(yīng)實驗室)2. 關(guān)于考試:關(guān)于考試: 筆試:80分,作業(yè):10分,考勤:10分7教材教材軟件工程軟件工程錢樂秋,趙文耘,牛軍鈺編著 出版社 清華大學出版社 8主要參考書和參考網(wǎng)站主要參考書和參考網(wǎng)站軟件工程軟件工程方法與實踐方法與實踐. . 許家許家珆珆 主編主編. 電子工業(yè)出版社電子工業(yè)出版社 2007軟件工程軟件工程實踐者的研究方法實踐者的研究方法. . Roger S.pressman著,黃柏素,梅著,黃柏素,梅宏等譯,機械工業(yè)出版社,宏等譯,機械工業(yè)出版社,1999實用軟件工程實用軟件工程. . 趙池龍編著,電子工業(yè)出版社趙池龍編著,電子工業(yè)出版社UMLUML面向?qū)ο蠹夹g(shù)與實踐面向?qū)?/p>
5、象技術(shù)與實踐. . 宋波等,宋波等, 科學出版社,科學出版社,2005面向?qū)ο笙到y(tǒng)分析與設(shè)計面向?qū)ο笙到y(tǒng)分析與設(shè)計. . Joey George等著,龔曉慶等譯,清華等著,龔曉慶等譯,清華大學出版社,大學出版社,200891 1 概概 述述101. 軟件?軟件的特點?軟件的分類?計算軟件?軟件的特點?軟件的分類?計算機軟件的發(fā)展機軟件的發(fā)展2. 軟件危機?表現(xiàn)?原因?克服的方法?軟件危機?表現(xiàn)?原因?克服的方法?3. 軟件工程?七條基本原理?軟件工程?七條基本原理?4. 軟件的生命周期?軟件過程?軟件的生命周期?軟件過程?5. 軟件過程模型?軟件過程模型?6. 軟件開發(fā)方法軟件開發(fā)方法7. 軟
6、件工具與軟件開發(fā)環(huán)境軟件工具與軟件開發(fā)環(huán)境內(nèi)容摘要內(nèi)容摘要111 軟件軟件一、什么是軟件?一、什么是軟件? ComputerComputer:由硬件和軟件組成。由硬件和軟件組成。硬件:硬件:是看得見、摸得著的電子機械設(shè)備塊。是看得見、摸得著的電子機械設(shè)備塊。軟件:軟件:是依附在硬件上面的是依附在硬件上面的程序、數(shù)據(jù)和文檔程序、數(shù)據(jù)和文檔的集合,是指的集合,是指揮控制計算機系統(tǒng)揮控制計算機系統(tǒng)( (包括硬件和軟件包括硬件和軟件) )工作的神經(jīng)思維工作的神經(jīng)思維中樞。中樞。如果將硬件比作人的身體,那么軟件就相當于如果將硬件比作人的身體,那么軟件就相當于人的神經(jīng)中樞和知識才能。人的神經(jīng)中樞和知識才能
7、。12軟件軟件 = = 程序程序 + + 數(shù)據(jù)數(shù)據(jù) + + 文檔文檔 1.數(shù)據(jù):數(shù)據(jù):程序加工處理的對象。包括數(shù)據(jù)的表示、組織與程序加工處理的對象。包括數(shù)據(jù)的表示、組織與存儲。存儲。數(shù)據(jù)數(shù)據(jù) = = 初始化數(shù)據(jù)初始化數(shù)據(jù) + + 測試數(shù)據(jù)測試數(shù)據(jù)2.文檔文檔(document) :開發(fā)、使用和維護程序所需的圖:開發(fā)、使用和維護程序所需的圖文資料文資料 。1 1)文檔)文檔 = = 開發(fā)文檔開發(fā)文檔 + + 管理文檔管理文檔 + + 用戶文檔。用戶文檔。一、什么是軟件?一、什么是軟件?計算機軟件產(chǎn)品開發(fā)文件編制指南計算機軟件產(chǎn)品開發(fā)文件編制指南GB 8567-88.doc13軟件文檔軟件文檔用戶
8、文檔用戶文檔用戶手冊用戶手冊操作手冊操作手冊維護修改建議維護修改建議軟件需求(規(guī)格)說明書軟件需求(規(guī)格)說明書開發(fā)文檔開發(fā)文檔項目開發(fā)計劃項目開發(fā)計劃可行性研究報告可行性研究報告軟件需求(規(guī)格)說明書軟件需求(規(guī)格)說明書數(shù)據(jù)需求說明書數(shù)據(jù)需求說明書概要設(shè)計說明書概要設(shè)計說明書詳細設(shè)計說明書詳細設(shè)計說明書管理文檔管理文檔測試計劃測試計劃項目開發(fā)計劃項目開發(fā)計劃測試報告測試報告開發(fā)進度月報開發(fā)進度月報開發(fā)總結(jié)報告開發(fā)總結(jié)報告圖圖 軟件文檔分類軟件文檔分類142 2)管理文檔具有嚴格的時序關(guān)系:因為管理是一個過程。)管理文檔具有嚴格的時序關(guān)系:因為管理是一個過程。 19741974年,美國人認識
9、到軟件需要管理。年,美國人認識到軟件需要管理。 19841984年,美國人認識到軟件管理是一個過程管理,或是一個年,美國人認識到軟件管理是一個過程管理,或是一個管理過程。管理過程。 19911991年,出現(xiàn)了軟件過程能力成熟度模型年,出現(xiàn)了軟件過程能力成熟度模型CMM (Capability CMM (Capability Maturity Model)Maturity Model)版。版。3 3)開發(fā)文檔具有嚴格的層次關(guān)系:)開發(fā)文檔具有嚴格的層次關(guān)系:(1)(1)目標程序目標程序覆蓋覆蓋源程序源程序;(2)(2)源程序源程序覆蓋覆蓋詳細設(shè)計說明書詳細設(shè)計說明書;(3)(3)詳細設(shè)計說明書詳
10、細設(shè)計說明書覆蓋覆蓋概要設(shè)計說明書概要設(shè)計說明書;(4)(4)概要設(shè)計說明書概要設(shè)計說明書覆蓋覆蓋需求規(guī)格說明書需求規(guī)格說明書;(5)(5)需求規(guī)格說明書需求規(guī)格說明書覆蓋覆蓋用戶需求報告用戶需求報告;(6)(6)用戶需求報告用戶需求報告覆蓋覆蓋軟件合同軟件合同。15文檔的作用文檔的作用(1)提高軟件開發(fā)過程的能見度。把開發(fā)過程中發(fā)生的事件以某種可閱讀)提高軟件開發(fā)過程的能見度。把開發(fā)過程中發(fā)生的事件以某種可閱讀的形式記錄在文檔中。管理人員可把這些記載下來的材料作為檢查軟件的形式記錄在文檔中。管理人員可把這些記載下來的材料作為檢查軟件開發(fā)進度和開發(fā)質(zhì)量的依據(jù),實現(xiàn)對軟件開發(fā)的工程管理。開發(fā)進度
11、和開發(fā)質(zhì)量的依據(jù),實現(xiàn)對軟件開發(fā)的工程管理。(2)提高開發(fā)效率。軟件文檔的編制,使得開發(fā)人員對各個階段的工作都)提高開發(fā)效率。軟件文檔的編制,使得開發(fā)人員對各個階段的工作都進行周密思考、并且可及早發(fā)現(xiàn)錯誤,便于及時加以糾正。進行周密思考、并且可及早發(fā)現(xiàn)錯誤,便于及時加以糾正。(3)作為開發(fā)人員在一定階段的工作成果和結(jié)束標志。)作為開發(fā)人員在一定階段的工作成果和結(jié)束標志。(4)記錄開發(fā)過程中有關(guān)信息,便于協(xié)調(diào)以后的軟件開發(fā)、使用和維護。)記錄開發(fā)過程中有關(guān)信息,便于協(xié)調(diào)以后的軟件開發(fā)、使用和維護。(5)提供對軟件的運行、維護和培訓的有關(guān)信息,便于管理人員、開發(fā)人)提供對軟件的運行、維護和培訓的有
12、關(guān)信息,便于管理人員、開發(fā)人員、操作人員、用戶之間協(xié)作、交流和了解,使軟件開發(fā)活動更科學有員、操作人員、用戶之間協(xié)作、交流和了解,使軟件開發(fā)活動更科學有效。效。(6)便于潛在用戶了解軟件的功能、性能等各項指標,為選購符合自己需)便于潛在用戶了解軟件的功能、性能等各項指標,為選購符合自己需要的軟件提供依據(jù)。要的軟件提供依據(jù)。16軟件文檔的寫作要求軟件文檔的寫作要求 (1)針對性:)針對性:分清讀者,適應(yīng)需求。(2)精確性:)精確性:行文確切,避免多義。(3)清晰性:)清晰性:力求簡明,運用圖表。(4)完整性:)完整性:自成體系,避免引用。(5)靈活性:)靈活性:大的擴展,小的合并。(6)可追溯性
13、:)可追溯性:逐步擴展,前后照應(yīng)。173.程序(程序(program) :能完成預定功能和性能的指令集合。能完成預定功能和性能的指令集合。程序設(shè)計語言三種類型:程序設(shè)計語言三種類型: 1)機器語言、匯編語言:依賴于機器,面向機器)機器語言、匯編語言:依賴于機器,面向機器 2)高級語言:獨立于機器,面向過程或面向?qū)ο螅└呒壵Z言:獨立于機器,面向過程或面向?qū)ο?3)面向問題語言:獨立于機器,非過程式語言()面向問題語言:獨立于機器,非過程式語言(4GL)(1).(1).面向過程的程序面向過程的程序 = = 算法算法 + + 數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)。(2).(2).面向?qū)ο蟮某绦蛎嫦驅(qū)ο蟮某绦?= =
14、對象對象 + + 消息。消息。(3).(3).面向數(shù)據(jù)的程序面向數(shù)據(jù)的程序 = = 數(shù)據(jù)庫表數(shù)據(jù)庫表 + + 在表上的操作在表上的操作( (如存貯過程、觸發(fā)如存貯過程、觸發(fā)器或視圖器或視圖) )。(4).(4).面向構(gòu)件的程序面向構(gòu)件的程序 = = 構(gòu)件構(gòu)件 + + 構(gòu)架。構(gòu)架。 優(yōu)秀的程序優(yōu)秀的程序( (或模塊或模塊) ),必須滿足,必須滿足“高內(nèi)聚、低耦合高內(nèi)聚、低耦合”的性質(zhì)。所謂的性質(zhì)。所謂高內(nèi)聚,就是程序高內(nèi)聚,就是程序( (或模塊或模塊) )內(nèi)部結(jié)構(gòu)緊湊,凝聚力和向心力強。所內(nèi)部結(jié)構(gòu)緊湊,凝聚力和向心力強。所謂低耦合,就是程序謂低耦合,就是程序( (或模塊或模塊) )之間彼此依賴關(guān)
15、系很低。之間彼此依賴關(guān)系很低。18軟件開發(fā):軟件開發(fā):既非常艱苦(因為軟件設(shè)計思想與開發(fā)工具不斷更新),又無限快樂(因為軟件成果是人類智慧與藝術(shù)的結(jié)晶)。從認識論的角度看軟件開發(fā):從認識論的角度看軟件開發(fā): 軟件開發(fā)是對問題求解的過程,從認識論的角度看,整個軟件開發(fā)過程可歸納成兩類活動交互循環(huán)迭代的過程。1)對問題的認識:對問題域存在的客觀事物以及要解決的問題產(chǎn)生正確的認識和理解。包括弄清楚事物的屬性、行為及其彼此間的關(guān)系,并找出解決問題的方法。2)基于認識的描述:用一種語言把對問題域的認識描述出來,當然最終的描述必須是用計算機語言。3)軟件開發(fā)的每個階段都包括了認識和描述的活動語言的鴻溝語言
16、的鴻溝: 問題域和實現(xiàn)域采用的描述語言存在很大的差距,這種差距被稱為語言的鴻溝。實際就是認識和描述的鴻溝。從自然語言過渡到計算機語言沒有一種準確可靠的技術(shù)。19問題域自然語言實現(xiàn)域計算機語言語言的過渡(人)語言的鴻溝語言的鴻溝20問題域自然語言計算機機器語言匯編語言非OO高級語言O(shè)O高級語言語言的鴻溝語言的鴻溝214.軟件和程序的區(qū)別軟件和程序的區(qū)別 程序只是完整軟件產(chǎn)品的一部分。程序只是完整軟件產(chǎn)品的一部分。 編寫程序只是軟件開發(fā)過程數(shù)據(jù)中的一個階段,一般編寫程序只是軟件開發(fā)過程數(shù)據(jù)中的一個階段,一般來說,其工作量僅僅是軟件開發(fā)全部工作量的來說,其工作量僅僅是軟件開發(fā)全部工作量的1020 今
17、天仍然有人認為:軟件等于程序。這些人一上來就今天仍然有人認為:軟件等于程序。這些人一上來就寫程序。寫程序。Roger S.Pressman說:說:“越早開始寫代碼越早開始寫代碼的人,就是越遲完成代碼的人的人,就是越遲完成代碼的人”。 對管理文檔的全面認識,那就更晚了。對管理文檔的全面認識,那就更晚了。221 軟件軟件二、軟件的特點二、軟件的特點 抽象性:邏輯實體??捎涗?。但看不到(抽象性:邏輯實體??捎涗?。但看不到(Intangible),),開發(fā)過程可視化程度低,開發(fā)結(jié)果難以直觀表示。開發(fā)過程可視化程度低,開發(fā)結(jié)果難以直觀表示。 可復制性:與開發(fā)成本相比,復制成本很低可復制性:與開發(fā)成本相比
18、,復制成本很低 無折舊無折舊 受硬件制約受硬件制約 未完全擺脫手工工藝未完全擺脫手工工藝 開發(fā)費用高開發(fā)費用高231 軟件軟件三、軟件分類三、軟件分類1.按適用范圍分:按適用范圍分: 定制軟件(定制軟件(Custom Software)()(項目軟件)項目軟件):滿足:滿足特定客戶的特定需要的軟件。例如網(wǎng)站、特定客戶的特定需要的軟件。例如網(wǎng)站、MIS系統(tǒng)等。系統(tǒng)等。 通用軟件(通用軟件(Generic Software)()(產(chǎn)品軟件)產(chǎn)品軟件):滿足:滿足市場潛在客戶的通用需求的商業(yè)成品軟件。例如:市場潛在客戶的通用需求的商業(yè)成品軟件。例如:Office、Windows等等242.按軟件功能
19、分:按軟件功能分:系統(tǒng)軟件:管理計算機自身的資源、提高計算機系統(tǒng)軟件:管理計算機自身的資源、提高計算機的使用效率并為計算機用戶提供各種服務(wù)的基礎(chǔ)的使用效率并為計算機用戶提供各種服務(wù)的基礎(chǔ)軟件。系統(tǒng)軟件與機器有關(guān),是支撐其它應(yīng)用軟軟件。系統(tǒng)軟件與機器有關(guān),是支撐其它應(yīng)用軟件運行的平臺。例如件運行的平臺。例如OS、DBMS等等應(yīng)用軟件:解決某一具體領(lǐng)域的實際問題的軟件。應(yīng)用軟件:解決某一具體領(lǐng)域的實際問題的軟件。種類繁多,例如科學和工程計算軟件、種類繁多,例如科學和工程計算軟件、CAD、CAM、CAI、MIS、GIS、ERP、CRM、CASE等等支撐軟件:支撐軟件:協(xié)助用戶開發(fā)的工具軟件,如編輯協(xié)
20、助用戶開發(fā)的工具軟件,如編輯程序、程序庫、圖形軟件包等。程序、程序庫、圖形軟件包等。253.按軟件體系結(jié)構(gòu)分按軟件體系結(jié)構(gòu)分 桌面軟件:全部工作由在單一機器上的一個桌面軟件:全部工作由在單一機器上的一個軟件系統(tǒng)完成。軟件系統(tǒng)完成。 分布式軟件:由多個軟件協(xié)調(diào)工作來完成任分布式軟件:由多個軟件協(xié)調(diào)工作來完成任務(wù)。例如務(wù)。例如C/S、B/S軟件軟件 并行軟件:基于多并行軟件:基于多CPU環(huán)境能完成并行計算環(huán)境能完成并行計算的軟件的軟件264.按規(guī)模分:按規(guī)模分:(1) (1) 小型軟件小型軟件(1-5(1-5人年人年) );(2) (2) 中型軟件中型軟件(5-50(5-50人年人年) )(3)
21、(3) 大型軟件大型軟件(50(50人年以上人年以上) )。5.按工作方式分:按工作方式分:(1) (1) 實時軟件;實時軟件;(2) (2) 分時軟件;分時軟件;(3) (3) 交互式軟件;交互式軟件;(4) (4) 批處理軟件;批處理軟件;(5) (5) 嵌入式軟件嵌入式軟件(Embedded Software):運行于特定硬件設(shè)備中的軟件。例):運行于特定硬件設(shè)備中的軟件。例如:手機、汽車等中的軟件。如:手機、汽車等中的軟件。271 軟件軟件四、計算機軟件發(fā)展的三個時期四、計算機軟件發(fā)展的三個時期1. 早期時代(早期時代(60年代中期之前)年代中期之前)程序設(shè)計階段程序設(shè)計階段硬件通用,
22、軟件專用;程序規(guī)模小,編寫者和使用者硬件通用,軟件專用;程序規(guī)模小,編寫者和使用者為同一人(同組人)。為同一人(同組人)。2. 第二代(第二代(60年代中期年代中期-70年代中期)年代中期)程序系統(tǒng)階段程序系統(tǒng)階段出現(xiàn)出現(xiàn)“軟件作坊軟件作坊”、產(chǎn)品軟件;、產(chǎn)品軟件;“個體化個體化”開發(fā)方法。開發(fā)方法。3. 第三代(第三代(70年代中期之后)年代中期之后)軟件工程階段軟件工程階段軟件開發(fā)成為一門新興的工程學科軟件開發(fā)成為一門新興的工程學科軟件工程。軟件工程。28計算機軟件發(fā)展的三個時期及特點程程序序設(shè)設(shè)計計 程程序序系系統(tǒng)統(tǒng) 軟軟件件工工程程軟軟 件件 的的 范范疇疇程序程 序 及 說 明書產(chǎn)品
23、軟件(項目軟件)主主 要要 程程 序序設(shè)設(shè)計計語語言言匯 編 及 機 器語言高級語言高級語言系統(tǒng)、程序設(shè)計語言軟軟 件件 工工 作作范范圍圍程序編寫包 括 設(shè) 計 和測試軟件生存期需需求求者者程 序 設(shè) 計 者本人少數(shù)用戶市場用戶29計算機軟件發(fā)展的三個時期及特點程程序序設(shè)設(shè)計計 程程序序系系統(tǒng)統(tǒng) 軟軟件件工工程程維維護護 責責任任者者程序設(shè)計者開發(fā)小組專職維護人員硬硬件件特特征征價 高 、 存 儲小 、 可 靠 性差降價;速度、容 量 、 可 靠性明顯提高向超高速、大容量、微型化發(fā)展軟軟件件特特征征完 全 不 受 重視軟件技術(shù)的發(fā)展不滿足需要,出現(xiàn)軟件危機開發(fā)技術(shù)有進步,但未獲得突破性進展,
24、軟 件 危 機 未 完 全 擺 脫30一、軟件危機的產(chǎn)生一、軟件危機的產(chǎn)生 2020世紀世紀6060年代中期以后,一些開發(fā)大型軟件系統(tǒng)的要求提了出來。年代中期以后,一些開發(fā)大型軟件系統(tǒng)的要求提了出來。然而軟件技術(shù)的進步一直未能滿足形勢發(fā)展的需要,在大型軟件的開然而軟件技術(shù)的進步一直未能滿足形勢發(fā)展的需要,在大型軟件的開發(fā)過程中出現(xiàn)了復雜程度高、研制周期長、正確性難以保證的三大難發(fā)過程中出現(xiàn)了復雜程度高、研制周期長、正確性難以保證的三大難題。題。遇到的問題找不到解決辦法,致使問題堆積起來,形成了人們難以控遇到的問題找不到解決辦法,致使問題堆積起來,形成了人們難以控制的局面,出現(xiàn)了所謂的制的局面,
25、出現(xiàn)了所謂的“軟件危機軟件危機”。例如例如: : 2 軟件危機軟件危機(Software crisis)31 IBM公司的公司的 OS/360OS/360,共約,共約100100萬條指令,花費了萬條指令,花費了50005000個人年;個人年;經(jīng)費達數(shù)億美圓,而結(jié)果卻令人沮喪,錯誤多達經(jīng)費達數(shù)億美圓,而結(jié)果卻令人沮喪,錯誤多達20002000個以上,系統(tǒng)個以上,系統(tǒng)根本無法正常運行。根本無法正常運行。 OS/360OS/360系統(tǒng)的負責人系統(tǒng)的負責人BrooksBrooks這樣描述開發(fā)過這樣描述開發(fā)過程的困難和混亂:程的困難和混亂:“像巨獸在泥潭中作垂死掙扎,掙扎得越猛,像巨獸在泥潭中作垂死掙扎
26、,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運。泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運?!?19631963年,美國用于控制火星探測器的計算機軟件中的一年,美國用于控制火星探測器的計算機軟件中的一個個“,”號被誤寫為號被誤寫為“. .”,而致使飛往火星的探測器發(fā)生爆,而致使飛往火星的探測器發(fā)生爆炸,造成高達數(shù)億美元的損失。炸,造成高達數(shù)億美元的損失。 19671967年蘇聯(lián)年蘇聯(lián)“聯(lián)盟一號聯(lián)盟一號”載人宇宙飛船在返航時,由于軟件忽略載人宇宙飛船在返航時,由于軟件忽略一個小數(shù)點,導至在進入大氣層時因打不開降落傘而燒毀。一個小數(shù)點,導至在進入大氣層時因
27、打不開降落傘而燒毀。322 軟件危機軟件危機二、軟件危機的定義二、軟件危機的定義 軟件危機是指在計算機軟件的開發(fā)和維護過程中所軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。遇到的一系列嚴重問題。主要是兩個問題主要是兩個問題:1. 如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求。如何開發(fā)軟件,怎樣滿足對軟件的日益增長的需求。2. 如何維護數(shù)量不斷膨脹的已有軟件如何維護數(shù)量不斷膨脹的已有軟件332 軟件危機軟件危機三、軟件危機的主要表現(xiàn)三、軟件危機的主要表現(xiàn)1. 對軟件開發(fā)成本和進度的估計不準確對軟件開發(fā)成本和進度的估計不準確,甚至開發(fā)過程甚至開發(fā)過程就夭折就夭折2. 不滿足需求
28、不滿足需求,用戶不滿意的現(xiàn)象經(jīng)常發(fā)生用戶不滿意的現(xiàn)象經(jīng)常發(fā)生3. 軟件質(zhì)量不高、可靠性差軟件質(zhì)量不高、可靠性差4.缺乏適當?shù)奈臋n資料缺乏適當?shù)奈臋n資料,軟件常常不可維護、錯誤難以改軟件常常不可維護、錯誤難以改正。正。5. 軟件成本占系統(tǒng)總成本的比例逐年上升軟件成本占系統(tǒng)總成本的比例逐年上升6. 軟件開發(fā)速度跟不上計算機發(fā)展速度,軟件生產(chǎn)率低,軟件開發(fā)速度跟不上計算機發(fā)展速度,軟件生產(chǎn)率低,不能滿足需要。不能滿足需要。342 軟件危機軟件危機四、產(chǎn)生軟件危機的原因四、產(chǎn)生軟件危機的原因 軟件是邏輯產(chǎn)品,開發(fā)進度、成本難以估計軟件是邏輯產(chǎn)品,開發(fā)進度、成本難以估計 缺乏或不完整、不一致的文檔給維護
29、帶來困難缺乏或不完整、不一致的文檔給維護帶來困難 用戶對軟件需求的描述往往不夠精確,有遺漏,有二用戶對軟件需求的描述往往不夠精確,有遺漏,有二義義 軟件開發(fā)人員對需求的理解與用戶的本來愿望有差異軟件開發(fā)人員對需求的理解與用戶的本來愿望有差異,在軟件開發(fā)過程中,或多或少地采用了錯誤的方法和在軟件開發(fā)過程中,或多或少地采用了錯誤的方法和技術(shù)。對用戶需求沒有完整準確的認識,就匆忙著手技術(shù)。對用戶需求沒有完整準確的認識,就匆忙著手編寫程序。編寫程序。 大型軟件項目需多人協(xié)同完成,缺乏管理經(jīng)驗大型軟件項目需多人協(xié)同完成,缺乏管理經(jīng)驗 缺乏有力的方法學和工具的支持缺乏有力的方法學和工具的支持 軟件項目的特
30、殊性和人類智力的局限性軟件項目的特殊性和人類智力的局限性352 軟件危機軟件危機五、解決軟件危機的途徑五、解決軟件危機的途徑1. 技術(shù)措施技術(shù)措施消除錯誤的概念和做法消除錯誤的概念和做法使用更好的軟件開發(fā)方法和開發(fā)工具使用更好的軟件開發(fā)方法和開發(fā)工具2. 組織管理措施組織管理措施 軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的同完成的工程工程項目。項目。363 軟件工程軟件工程 軟件工程(軟件工程(Software Engineering)是在克服是在克服6
31、0年代末所年代末所出現(xiàn)的出現(xiàn)的“軟件危機軟件危機”的過程中逐漸形成與發(fā)展的。的過程中逐漸形成與發(fā)展的。 為了克服軟件危機,人們從其他產(chǎn)業(yè)的工業(yè)化生產(chǎn)得到啟為了克服軟件危機,人們從其他產(chǎn)業(yè)的工業(yè)化生產(chǎn)得到啟示,于是在示,于是在1968年北大西洋公約組織(年北大西洋公約組織(NATO)在聯(lián)邦)在聯(lián)邦德國召開的的軟件可靠性會議上,首次提出了德國召開的的軟件可靠性會議上,首次提出了“軟件工程軟件工程”的概念。的概念。 提出了在軟件生產(chǎn)中采用提出了在軟件生產(chǎn)中采用工程化工程化的方法,采用一系列科學的方法,采用一系列科學的、現(xiàn)代化的方法技術(shù)來開發(fā)軟件。這種工程化的思想貫的、現(xiàn)代化的方法技術(shù)來開發(fā)軟件。這種
32、工程化的思想貫穿到軟件開發(fā)和維護的全過程。穿到軟件開發(fā)和維護的全過程。373 軟件工程軟件工程一、什么是軟件工程一、什么是軟件工程l軟件工程是指導計算機軟件開發(fā)和維護的工程學科。軟件工程是指導計算機軟件開發(fā)和維護的工程學科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟它采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來。得到的最好的技術(shù)方法結(jié)合起來。l軟件工程是一門涉及軟件計劃、需求分析、設(shè)計、編軟件工程是一門涉及軟件計劃、需求分析、設(shè)計、編碼、測試和維護的原理、方法及工
33、具的研究和應(yīng)用的學碼、測試和維護的原理、方法及工具的研究和應(yīng)用的學科???。l 1983年年IEEE給出的定義為:給出的定義為:“軟件工程是開發(fā)、運軟件工程是開發(fā)、運行、維護和修復軟件的系統(tǒng)方法行、維護和修復軟件的系統(tǒng)方法”。38二、軟件工程的目標二、軟件工程的目標3 軟件工程軟件工程軟件工程的目標是在給定成本、軟件工程的目標是在給定成本、進度的前提下,開發(fā)出具有可修改進度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、性、有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性可移植性、可追蹤性和可互操作性并滿足用戶需求的軟件
34、產(chǎn)品。并滿足用戶需求的軟件產(chǎn)品。39二、軟件工程的目標二、軟件工程的目標可修改性可修改性(modifiability)允許對軟件系統(tǒng)進行修改而不增加其復雜性允許對軟件系統(tǒng)進行修改而不增加其復雜性.它支持它支持軟件調(diào)試與維護。軟件調(diào)試與維護。有效性有效性(efficiency)指軟件系統(tǒng)的時間和空間效率。這是一個應(yīng)當努力追指軟件系統(tǒng)的時間和空間效率。這是一個應(yīng)當努力追求的重要目標。求的重要目標??煽啃钥煽啃裕╮eliability)是指在給定的時間間隔內(nèi),程序成功運行的概率??墒侵冈诮o定的時間間隔內(nèi),程序成功運行的概率??煽啃允呛饬寇浖|(zhì)量的一個重要目標??啃允呛饬寇浖|(zhì)量的一個重要目標??衫斫?/p>
35、性可理解性(understandability)指系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求??芍赶到y(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求??衫斫庑杂兄诳刂栖浖到y(tǒng)的復雜性,并支持軟理解性有助于控制軟件系統(tǒng)的復雜性,并支持軟件的維護、移植和重用。件的維護、移植和重用??删S護性可維護性(maintainability)是指軟件產(chǎn)品交付使用后,在實現(xiàn)改正潛伏的錯誤、是指軟件產(chǎn)品交付使用后,在實現(xiàn)改正潛伏的錯誤、改進性能等屬性、適應(yīng)環(huán)境變化等方面工作的難改進性能等屬性、適應(yīng)環(huán)境變化等方面工作的難易程度。易程度。40可重用性可重用性(reusability)是指軟部件可以在多種場合使用的程度。是指軟部
36、件可以在多種場合使用的程度??蛇m應(yīng)性可適應(yīng)性(adaptability)是指軟件在不同的系統(tǒng)約束條件下,使用戶需求得到是指軟件在不同的系統(tǒng)約束條件下,使用戶需求得到滿足的難易程度。滿足的難易程度??梢浦残钥梢浦残裕╬ortability)是指軟件從一個計算機系統(tǒng)或環(huán)境移植到另一個上去是指軟件從一個計算機系統(tǒng)或環(huán)境移植到另一個上去的難易程度。的難易程度??勺粉櫺钥勺粉櫺裕╰raceability)是指根據(jù)軟件需求對軟件設(shè)計、程序進行正向追蹤,是指根據(jù)軟件需求對軟件設(shè)計、程序進行正向追蹤,或根據(jù)程序、軟件設(shè)計對軟件需求進行逆向追蹤或根據(jù)程序、軟件設(shè)計對軟件需求進行逆向追蹤的能力。軟件開發(fā)各階段的文
37、檔和程序的完整性、的能力。軟件開發(fā)各階段的文檔和程序的完整性、一致性、可理解性支持軟件的可追蹤性。一致性、可理解性支持軟件的可追蹤性??苫ゲ僮餍钥苫ゲ僮餍裕╥nteroperability)是指多個軟件元素相互通信并協(xié)同完成任務(wù)的能力。是指多個軟件元素相互通信并協(xié)同完成任務(wù)的能力。二、軟件工程的目標二、軟件工程的目標41二、軟件工程的目標二、軟件工程的目標低開發(fā)成本低開發(fā)成本易于維護易于維護高可靠性高可靠性高性能高性能按時交付按時交付互斥互補可見,軟件工程所追求的目標是:可見,軟件工程所追求的目標是: 42軟件工程的發(fā)展已經(jīng)歷了四個重要階段:軟件工程的發(fā)展已經(jīng)歷了四個重要階段:三、軟件工程的發(fā)
38、展三、軟件工程的發(fā)展3 軟件工程軟件工程43軟件工程的發(fā)展已經(jīng)歷了四個重要階段:軟件工程的發(fā)展已經(jīng)歷了四個重要階段: 6060年代末到年代末到7070年代為了年代為了克 服克 服 “ 軟 件 危 機軟 件 危 機 ” (Software crisis)(Software crisis)提出提出“軟件工程軟件工程”的名詞的名詞, , 將軟將軟件開發(fā)納入工程化的軌道,件開發(fā)納入工程化的軌道,基本形成軟件工程的概念、基本形成軟件工程的概念、框架、技術(shù)和方法。稱為框架、技術(shù)和方法。稱為傳傳統(tǒng)統(tǒng)的軟件工程的軟件工程44軟件工程的發(fā)展已經(jīng)歷了四個重要階段:軟件工程的發(fā)展已經(jīng)歷了四個重要階段: 8080年代
39、中到年代中到9090年代,面向?qū)ο竽甏?,面向?qū)ο蟮姆椒ㄅc技術(shù)得到發(fā)展,研究的重的方法與技術(shù)得到發(fā)展,研究的重點轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,點轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,演化為一種完整的軟件開發(fā)方法和演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系,稱為對象工程。系統(tǒng)的技術(shù)體系,稱為對象工程。45軟件工程的發(fā)展已經(jīng)歷了四個重要階段:軟件工程的發(fā)展已經(jīng)歷了四個重要階段: 8080年代中開始,年代中開始,人們在軟件開發(fā)人們在軟件開發(fā)的實踐過程中認識到:提高軟件生產(chǎn)的實踐過程中認識到:提高軟件生產(chǎn)率,保證軟件質(zhì)量的關(guān)鍵是率,保證軟件質(zhì)量的關(guān)鍵是“軟件過軟件過程程”,是軟件開發(fā)和維護中的管理和,是軟件開發(fā)和
40、維護中的管理和支持能力,逐步形成軟件過程工程。支持能力,逐步形成軟件過程工程。46軟件工程的發(fā)展已經(jīng)歷了四個重要階段:軟件工程的發(fā)展已經(jīng)歷了四個重要階段: 90年代起,基于構(gòu)件(年代起,基于構(gòu)件(Component)的開發(fā)方法取得重要進展,軟件系統(tǒng)的的開發(fā)方法取得重要進展,軟件系統(tǒng)的開發(fā)可開發(fā)可通過使用現(xiàn)成的可復用構(gòu)件組裝通過使用現(xiàn)成的可復用構(gòu)件組裝完成,而無需從頭開始構(gòu)造,以此達到完成,而無需從頭開始構(gòu)造,以此達到提高效率和質(zhì)量,降低成本的目的。稱提高效率和質(zhì)量,降低成本的目的。稱為為構(gòu)件工程。構(gòu)件工程。47四、軟件工程研究的范疇四、軟件工程研究的范疇3 軟件工程軟件工程軟件工程所包含的內(nèi)容
41、不是一成不變的,隨著人們對軟件系統(tǒng)的軟件工程所包含的內(nèi)容不是一成不變的,隨著人們對軟件系統(tǒng)的研制開發(fā)和生產(chǎn)的理解。應(yīng)用發(fā)展的眼光看待它。研制開發(fā)和生產(chǎn)的理解。應(yīng)用發(fā)展的眼光看待它。參見軟件工程知識體系圖參見軟件工程知識體系圖48493 軟件工程軟件工程五、軟件工程的本質(zhì)特性五、軟件工程的本質(zhì)特性 關(guān)注大型程序的構(gòu)造關(guān)注大型程序的構(gòu)造 中心課題是控制軟件固有的復雜性中心課題是控制軟件固有的復雜性 應(yīng)對需求變更應(yīng)對需求變更 提高軟件開發(fā)和維護的效率提高軟件開發(fā)和維護的效率 提倡有紀律的過程提倡有紀律的過程 最終目的是使客戶滿意最終目的是使客戶滿意 難點是對問題域的認識和描述難點是對問題域的認識和描
42、述503 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理 目前有目前有100多條關(guān)于軟件工程的準則,其中最出名的多條關(guān)于軟件工程的準則,其中最出名的是著名軟件工程專家是著名軟件工程專家B.W.Boehm在在1983年提出的年提出的7條基本原理。條基本原理。1. 用分階段的生命周期計劃嚴格管理用分階段的生命周期計劃嚴格管理 經(jīng)統(tǒng)計表明,不成功的軟件項目中有一半左右是由經(jīng)統(tǒng)計表明,不成功的軟件項目中有一半左右是由于計劃不周造成的。于計劃不周造成的。 Boehm認為,在軟件的整個生命周期中應(yīng)制定并嚴認為,在軟件的整個生命周期中應(yīng)制定并嚴格執(zhí)行六類計劃:項目概要計劃、里程碑計劃、項格執(zhí)行
43、六類計劃:項目概要計劃、里程碑計劃、項目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護目控制計劃、產(chǎn)品控制計劃、驗證計劃、運行維護計劃。計劃。513 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理2. 堅持進行階段評審堅持進行階段評審 大部分錯誤是在編碼之前造成的大部分錯誤是在編碼之前造成的 錯誤發(fā)現(xiàn)與改正得越晚,所需付出的代價越高。錯誤發(fā)現(xiàn)與改正得越晚,所需付出的代價越高。因此,在每個階段都進行嚴格的評審,以便盡早發(fā)現(xiàn)因此,在每個階段都進行嚴格的評審,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程的錯誤在軟件開發(fā)過程的錯誤523 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理3. 實行嚴
44、格的產(chǎn)品控制實行嚴格的產(chǎn)品控制 在軟件開發(fā)過程中不要隨意改變需求,因為改變某項需在軟件開發(fā)過程中不要隨意改變需求,因為改變某項需求往往需要付出較高的代價,但在實踐中用戶往往會提求往往需要付出較高的代價,但在實踐中用戶往往會提出需求變更,因此需要采取科學的產(chǎn)品控制技術(shù)。出需求變更,因此需要采取科學的產(chǎn)品控制技術(shù)。 目前主要實行目前主要實行基準配置管理基準配置管理:基準配置是指經(jīng)過階段評:基準配置是指經(jīng)過階段評審后的軟件配置成分,如各個階段產(chǎn)生的文檔或程序代審后的軟件配置成分,如各個階段產(chǎn)生的文檔或程序代碼。碼。 對涉及基準配置的修改,必須經(jīng)過嚴格的評審,通過后對涉及基準配置的修改,必須經(jīng)過嚴格的
45、評審,通過后才能實施修改。才能實施修改。533 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理4. 采用現(xiàn)代程序設(shè)計技術(shù)采用現(xiàn)代程序設(shè)計技術(shù) 實踐表明:采用先進的技術(shù)既可提高軟件開實踐表明:采用先進的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護的效率。發(fā)的效率,又可提高軟件維護的效率。 80年代及之前:結(jié)構(gòu)化分析、設(shè)計技術(shù)年代及之前:結(jié)構(gòu)化分析、設(shè)計技術(shù) 90年代:面向?qū)ο蠓治?、設(shè)計技術(shù)年代:面向?qū)ο蠓治觥⒃O(shè)計技術(shù)543 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理5. 結(jié)果應(yīng)能清楚地審查結(jié)果應(yīng)能清楚地審查 軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,開軟件產(chǎn)品是看不見、
46、摸不著的邏輯產(chǎn)品,開發(fā)過程難以評價和管理。發(fā)過程難以評價和管理。 根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)定開發(fā)組織的責任和產(chǎn)品標準,使所得的結(jié)定開發(fā)組織的責任和產(chǎn)品標準,使所得的結(jié)果能夠清楚地審查果能夠清楚地審查553 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理6. 開發(fā)小組的人員應(yīng)該少而精開發(fā)小組的人員應(yīng)該少而精 開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。質(zhì)量和開發(fā)效率的重要因素。 開發(fā)小組人員數(shù)目的增加,使相互交流復雜、開發(fā)小組人員數(shù)目的增加,使相互交流復雜、費用增加。費用增
47、加。563 軟件工程軟件工程六、軟件工程的基本原理六、軟件工程的基本原理7. 承認不斷改進軟件工程實踐的必要性承認不斷改進軟件工程實踐的必要性 遵循前遵循前6條基本原理,就能夠按照當代軟件條基本原理,就能夠按照當代軟件工程基本原理實現(xiàn)軟件的工程化生產(chǎn),但不工程基本原理實現(xiàn)軟件的工程化生產(chǎn),但不能保證趕上時代前進的步伐。能保證趕上時代前進的步伐。 積極主動采納新的軟件技術(shù),且不斷總結(jié)經(jīng)積極主動采納新的軟件技術(shù),且不斷總結(jié)經(jīng)驗。驗。57一、軟件生存周期一、軟件生存周期4 軟件生存周期與軟件過程軟件生存周期與軟件過程l 軟件也有一個孕育、誕生、成長、成熟、衰亡的生軟件也有一個孕育、誕生、成長、成熟、
48、衰亡的生存過程。存過程。這個過程即為計算機軟件的生存周期l 軟件的生存周期軟件的生存周期(Software Life Cycle):軟件產(chǎn)品或軟件產(chǎn)品或軟件系統(tǒng)從設(shè)計、投入使用到被淘汰的全過程。軟件系統(tǒng)從設(shè)計、投入使用到被淘汰的全過程。l 軟件生存周期一般分為:軟件生存周期一般分為:軟件定義軟件定義(問題定義、可(問題定義、可行性研究、需求分析)、行性研究、需求分析)、軟件開發(fā)軟件開發(fā)(總體設(shè)計、詳細設(shè)(總體設(shè)計、詳細設(shè)計、編碼和單元測試、綜合測試)、計、編碼和單元測試、綜合測試)、軟件維護軟件維護等三個時等三個時期。期。58軟件生存周期軟件生存周期(各階段的工作小結(jié)各階段的工作小結(jié))階段階段
49、關(guān)鍵問題關(guān)鍵問題結(jié)束標準結(jié)束標準問題定義問題定義問題是什么?問題是什么?關(guān)于規(guī)模和目標的報告書關(guān)于規(guī)模和目標的報告書可行性研究可行性研究有可行的解嗎?有可行的解嗎?系統(tǒng)的高層邏輯模型:系統(tǒng)流程圖、系統(tǒng)的高層邏輯模型:系統(tǒng)流程圖、數(shù)據(jù)流圖、成本效益分析數(shù)據(jù)流圖、成本效益分析需求分析需求分析系統(tǒng)必須做什么?系統(tǒng)必須做什么?系統(tǒng)的邏輯模型:系統(tǒng)的邏輯模型:數(shù)據(jù)流圖、數(shù)據(jù)字典、算法描述數(shù)據(jù)流圖、數(shù)據(jù)字典、算法描述總體設(shè)計總體設(shè)計概括地說,應(yīng)該如何解概括地說,應(yīng)該如何解決這個問題?決這個問題?推薦的系統(tǒng)結(jié)構(gòu):層次圖或結(jié)構(gòu)圖推薦的系統(tǒng)結(jié)構(gòu):層次圖或結(jié)構(gòu)圖詳細設(shè)計詳細設(shè)計怎樣具體地實現(xiàn)這個系怎樣具體地實現(xiàn)這
50、個系統(tǒng)?統(tǒng)?編碼規(guī)格說明:編碼規(guī)格說明:HIPOHIPO圖或圖或 PDLPDL編碼編碼/ /單元測試單元測試正確的程序模塊正確的程序模塊源程序清單;單元測試方案和結(jié)果源程序清單;單元測試方案和結(jié)果綜合測試綜合測試符合要求的軟件符合要求的軟件綜合測試方案和結(jié)果;完整一致的軟件綜合測試方案和結(jié)果;完整一致的軟件配置配置維護維護持久地滿足用戶需要的持久地滿足用戶需要的軟件軟件完整準確的維護記錄完整準確的維護記錄4 軟件生存周期與軟件過程軟件生存周期與軟件過程59問 題 域自然語言計算機語言需求分析總體設(shè)計詳細設(shè)計計 算 機編 程測試4 軟件生存周期與軟件過程軟件生存周期與軟件過程60二、軟件過程(二
51、、軟件過程(Software process) 軟件過程:軟件過程:是軟件生存周期中的一系列相關(guān)的過程。過程是活動的集合,活動是任務(wù)的集合。它規(guī)定了完成各項任務(wù)的步驟。 不存在適合所有軟件項目的通用過程,軟件規(guī)模、種不存在適合所有軟件項目的通用過程,軟件規(guī)模、種類和質(zhì)量要求不同,過程就不同。類和質(zhì)量要求不同,過程就不同。 科學有效的軟件過程要定義一組適合項目特點的任務(wù)科學有效的軟件過程要定義一組適合項目特點的任務(wù)集合集合4 軟件生存周期與軟件過程軟件生存周期與軟件過程61 軟件過程有三層含義:軟件過程有三層含義:個體含義,即指軟件產(chǎn)品或系統(tǒng)在生存周期中的某一個體含義,即指軟件產(chǎn)品或系統(tǒng)在生存周
52、期中的某一類活動的集合,如軟件開發(fā)過程,軟件管理過程等;類活動的集合,如軟件開發(fā)過程,軟件管理過程等;整體含義,即指軟件產(chǎn)品或系統(tǒng)在所有上述含義下的整體含義,即指軟件產(chǎn)品或系統(tǒng)在所有上述含義下的軟件過程的總體;軟件過程的總體;工程含義,即指解決軟件過程的工程,它應(yīng)用軟件工工程含義,即指解決軟件過程的工程,它應(yīng)用軟件工程的原則、方法來構(gòu)造軟件過程模型,并結(jié)合軟件產(chǎn)程的原則、方法來構(gòu)造軟件過程模型,并結(jié)合軟件產(chǎn)品的具體要求進行實例化,以及在用戶環(huán)境下的運作,品的具體要求進行實例化,以及在用戶環(huán)境下的運作,以此進一步提高軟件生產(chǎn)率,降低成本。以此進一步提高軟件生產(chǎn)率,降低成本。二、軟件過程(二、軟件
53、過程(Software process)4 軟件生存周期與軟件過程軟件生存周期與軟件過程62ISO/IEC 12207軟件生存周期過程 ISO/IEC(International Organization for ISO/IEC(International Organization for standardization/International electrotechnical standardization/International electrotechnical commissioncommission國際電工委員會國際電工委員會 ) 12207) 12207標準把軟件生存周標準把
54、軟件生存周期中可以開展的活動分為期中可以開展的活動分為5 5個基本過程,個基本過程,8 8個支持過程和個支持過程和4 4個組織過程。每一個過程劃分為一組活動,每項活動個組織過程。每一個過程劃分為一組活動,每項活動進一步劃分為一組任務(wù)。進一步劃分為一組任務(wù)。63能力成熟度模型CMMCMM(Capability Maturity Model)即能力成熟度模型,)即能力成熟度模型,是美國卡耐基梅隆大學軟件工程研究所(是美國卡耐基梅隆大學軟件工程研究所(SEI)在美國國防)在美國國防部資助下于二十世紀八十年代末建立的,用于評價軟件機構(gòu)部資助下于二十世紀八十年代末建立的,用于評價軟件機構(gòu)的的軟件過程能力
55、成熟度軟件過程能力成熟度的模型。的模型。此模型在建立和發(fā)展之初,主要目的在于此模型在建立和發(fā)展之初,主要目的在于提供一種評價軟提供一種評價軟件承接方能力的方法,件承接方能力的方法,為大型軟件項目的招投標活動提供一為大型軟件項目的招投標活動提供一種全面而客觀的評審依據(jù)。而發(fā)展到后來,又同時被種全面而客觀的評審依據(jù)。而發(fā)展到后來,又同時被軟件組軟件組織用于織用于改進其軟件過程。改進其軟件過程。64軟件組織的成熟與不成熟 1. 不成熟的軟件組織不成熟的軟件組織 軟件過程一般并不預先計劃,而是在項目進行中由實際工作人員及管理軟件過程一般并不預先計劃,而是在項目進行中由實際工作人員及管理員臨時計劃員臨時
56、計劃 有時,即使軟件過程已計劃好,仍不按計劃執(zhí)行有時,即使軟件過程已計劃好,仍不按計劃執(zhí)行 沒有一個客觀的基準來判斷產(chǎn)品質(zhì)量,或解決產(chǎn)品和過程中的問題沒有一個客觀的基準來判斷產(chǎn)品質(zhì)量,或解決產(chǎn)品和過程中的問題 對軟件過程步驟如何影響軟件質(zhì)量,一無所知,產(chǎn)品質(zhì)量得不到保證。對軟件過程步驟如何影響軟件質(zhì)量,一無所知,產(chǎn)品質(zhì)量得不到保證。而且,一些提高質(zhì)量的環(huán)節(jié),如檢查、測試等經(jīng)常由于要趕進度而減少而且,一些提高質(zhì)量的環(huán)節(jié),如檢查、測試等經(jīng)常由于要趕進度而減少或取消或取消 產(chǎn)品在交付前,對客戶來說,一切都是不可見的產(chǎn)品在交付前,對客戶來說,一切都是不可見的 沒有長遠目標,管理員通常只關(guān)注解決任何當前
57、的危機沒有長遠目標,管理員通常只關(guān)注解決任何當前的危機 由于沒有實事求是地估計進度、預算,因此他們經(jīng)常超支、超時。當最由于沒有實事求是地估計進度、預算,因此他們經(jīng)常超支、超時。當最后期限臨近,他們往往在功能性和質(zhì)量上妥協(xié),或以加班加點方式趕進后期限臨近,他們往往在功能性和質(zhì)量上妥協(xié),或以加班加點方式趕進度度652. 成熟的軟件組織成熟的軟件組織 具有全面而充分的組織和管理軟件開發(fā)和維護過程的能力具有全面而充分的組織和管理軟件開發(fā)和維護過程的能力 管理員監(jiān)視軟件產(chǎn)品的質(zhì)量以及生產(chǎn)這些產(chǎn)品的過程管理員監(jiān)視軟件產(chǎn)品的質(zhì)量以及生產(chǎn)這些產(chǎn)品的過程 制定了一系列客觀基準來判別產(chǎn)品質(zhì)量,并分析產(chǎn)品和過程中的
58、問題制定了一系列客觀基準來判別產(chǎn)品質(zhì)量,并分析產(chǎn)品和過程中的問題 進度和預算可以按照以前積累的經(jīng)驗來制定,結(jié)果可行。預期的成本、進度和預算可以按照以前積累的經(jīng)驗來制定,結(jié)果可行。預期的成本、進度、功能與性能和質(zhì)量都能實現(xiàn),并達到目的進度、功能與性能和質(zhì)量都能實現(xiàn),并達到目的 能準確及時地向工作人員通報實際軟件過程,并按照計劃有規(guī)則地能準確及時地向工作人員通報實際軟件過程,并按照計劃有規(guī)則地(前前后一致,不互相矛盾后一致,不互相矛盾)工作工作,凡規(guī)定的過程都編成文檔凡規(guī)定的過程都編成文檔 軟件過程和實際工作方法相吻合。必要時,過程定義會及時更新,通過軟件過程和實際工作方法相吻合。必要時,過程定義
59、會及時更新,通過測試,或者通過成本測試,或者通過成本-效益分析來改進過程。效益分析來改進過程。 全體人員普遍地、積極地參與改進軟件過程的活動。在組織內(nèi)部的各項全體人員普遍地、積極地參與改進軟件過程的活動。在組織內(nèi)部的各項目中,每人在軟件過程中的職責都十分清晰而明確,每人各守其責,協(xié)目中,每人在軟件過程中的職責都十分清晰而明確,每人各守其責,協(xié)同工作,有條不紊,甚至能預見和防范問題的發(fā)生。同工作,有條不紊,甚至能預見和防范問題的發(fā)生。66軟件過程成熟度等級 CMM定義了定義了5個軟件過程成熟度等級,如圖:個軟件過程成熟度等級,如圖:5.5.優(yōu)化級優(yōu)化級4.4.已管理級已管理級3.3.已定義級已定
60、義級2.2.可重復級可重復級1.1.初始級初始級標 準 、 一標 準 、 一致的過程致的過程有紀律有紀律的過程的過程可預測的過程可預測的過程持續(xù)改進的過程持續(xù)改進的過程軟件過程成熟度軟件過程成熟度的的5 5個等級個等級67軟件過程成熟度等級軟件過程成熟度等級 CMM提供了一個成熟度等級框架:提供了一個成熟度等級框架: 1級級-初始級、初始級、 2級級-可重復級、可重復級、 3級級-已定義級、已定義級、 4級級-已管理級和已管理級和5級級-優(yōu)化級。優(yōu)化級。 1.初始(初始(initial)級:)級: 軟件過程的特點是無秩序的,甚至是混亂的。幾乎沒軟件過程的特點是無秩序的,甚至是混亂的。幾乎沒有什
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業(yè)法律風險之合同履行過程中應(yīng)注意的事項
- 2025湖南潭邵高速邵陽東互通第合同段施組
- 2025戶外廣告牌出租合同樣本
- 班主任德育工作總結(jié)
- 課題申報參考:孿生數(shù)據(jù)驅(qū)動的退役產(chǎn)品人機協(xié)同拆解動態(tài)優(yōu)化與自適應(yīng)評估研究
- 課題申報參考:聯(lián)合教研提升農(nóng)村中小學科學教師跨學科素養(yǎng)的機制與策略研究
- 自我驅(qū)動學習培養(yǎng)學生自主能力的策略與實踐案例
- 科技在提升個人防護裝備舒適度中的應(yīng)用
- 2024年家畜轉(zhuǎn)基因胚胎項目資金需求報告代可行性研究報告
- 物聯(lián)網(wǎng)時代下嵌入式系統(tǒng)的多層防護策略
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護導體
- 計劃合同部部長述職報告范文
- 人教版高一地理必修一期末試卷
- GJB9001C質(zhì)量管理體系要求-培訓專題培訓課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購投標方案(技術(shù)方案)
- 五年級上冊小數(shù)除法豎式計算練習300題及答案
- 語言規(guī)劃講義
- 生活用房設(shè)施施工方案模板
- 上海市楊浦區(qū)2022屆初三中考二模英語試卷+答案
- GB/T 9755-2001合成樹脂乳液外墻涂料
評論
0/150
提交評論