軟件工程的內容和方法_第1頁
軟件工程的內容和方法_第2頁
軟件工程的內容和方法_第3頁
軟件工程的內容和方法_第4頁
軟件工程的內容和方法_第5頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、實用軟件工實用軟件工程程(第第3版版)第第1章章 軟件工程的內容與方法軟件工程的內容與方法 本章對軟件、軟件工程、軟件工程學科體系、軟本章對軟件、軟件工程、軟件工程學科體系、軟件工程課程進行了定義。件工程課程進行了定義。 本章提出了本章提出了“面向面向過程過程方法、面向方法、面向對象對象方法、面方法、面向向元數據元數據方法、方法、形式化形式化方法方法”的的軟件工程方法論軟件工程方法論,以及以及“面向面向流程流程分析、面向分析、面向元數據元數據設計、面向設計、面向對對象象實現、面向實現、面向功能功能測試、面向測試、面向過程過程管理管理”的的“五五個面向個面向”軟件工程實踐論軟件工程實踐論。 本章

2、還簡介了本章還簡介了ISO9001、CMMI、軟件企業文化、軟件企業文化、信息系統的定義與案例分析。信息系統的定義與案例分析。 本章既是軟件工程課程的緒論,又是軟件工程課本章既是軟件工程課程的緒論,又是軟件工程課程的總結。程的總結。 第第1章章 學習要求學習要求要要 求求具具 體體 內內 容容了了 解解 1 1)軟件與軟件危機)軟件與軟件危機 2 2)軟件工程的定義與作用)軟件工程的定義與作用 3 3)軟件工程研究的內容)軟件工程研究的內容理理 解解 1 1)軟件工程方法論)軟件工程方法論 2 2)軟件工程實踐論)軟件工程實踐論 3 3)CMMI、ISO9001、微軟企業文化、敏捷文化、微軟企

3、業文化、敏捷文化現象現象關關 注注 1 1)軟件工程的最新發展)軟件工程的最新發展 2 2)CASE工具與軟件工程環境工具與軟件工程環境 3 3)軟件業務基礎平臺)軟件業務基礎平臺第第1章章 軟件工程的內容與方法軟件工程的內容與方法 1.1 軟件的定義軟件的定義 1.2 軟件工程的定義軟件工程的定義 1.3 軟件工程在軟件行業中的應用軟件工程在軟件行業中的應用 1.4 軟件工程方法論軟件工程方法論 1.5 軟件工程實踐論軟件工程實踐論 1.6 軟件支持過程軟件支持過程 1.7 軟件管理過程軟件管理過程 1.8 實例分析實例分析1.1 軟件定義軟件定義 1計算機硬件與軟件計算機硬件與軟件 計算機

4、計算機(Computer)由硬件()由硬件(Hardware)和軟)和軟件(件(Software)組成。)組成。 硬件硬件是看得見、摸得著的電子機械設備塊,如機是看得見、摸得著的電子機械設備塊,如機箱、主板、硬盤、光盤、箱、主板、硬盤、光盤、U盤、電源、顯示器、盤、電源、顯示器、鍵盤、鼠標、打印機、電纜等等。鍵盤、鼠標、打印機、電纜等等。 軟件軟件是依附在硬件上面的程序、數據和文檔的集是依附在硬件上面的程序、數據和文檔的集合,是指揮控制計算機系統(包括硬件和軟件)合,是指揮控制計算機系統(包括硬件和軟件)工作的神經中樞。工作的神經中樞。 如果將硬件比做人的身體,那么軟件就相當于人如果將硬件比做

5、人的身體,那么軟件就相當于人的神經中樞和知識才能。的神經中樞和知識才能。 軟件分類軟件分類 按功能分:按功能分: (1) 系統軟件系統軟件 ;(2) 支撐軟件;支撐軟件;(3) 應用軟件。應用軟件。 按規模分:按規模分: (1) 小型軟件小型軟件(1-5人年人年); (2) 中型軟件中型軟件(5-50人年人年) (3) 大型軟件大型軟件(50人年以上人年以上)。 按工作方式分:按工作方式分: (1) 實時軟件;實時軟件;(2) 分時軟件;分時軟件;(3) 交互式軟件;交互式軟件; (4) 批處理軟件;批處理軟件;(5) 嵌入式軟件。嵌入式軟件。 按服務對象分:按服務對象分: (1) 項目軟件;

6、項目軟件;(2) 產品軟件。產品軟件。 計算機工程計算機工程(Computer Engineering)由硬件)由硬件工程(工程(Hardware Engineering)和軟件工程)和軟件工程(Software Engineering)組成。)組成。 硬件工程硬件工程是研究硬件生產和硬件管理的工程科學,是研究硬件生產和硬件管理的工程科學,其內容包括計算機及網絡硬件的分析、設計、生其內容包括計算機及網絡硬件的分析、設計、生產、采購、驗收、安裝、培訓、維護。產、采購、驗收、安裝、培訓、維護。 軟件工程軟件工程是研究軟件生產和軟件管理的工程科學,是研究軟件生產和軟件管理的工程科學,其內容包括市場調

7、研、正式立項、需求分析、項其內容包括市場調研、正式立項、需求分析、項目策劃、概要設計、詳細設計、編程、測試、試目策劃、概要設計、詳細設計、編程、測試、試運行、產品發布、用戶培訓、產品復制、實施、運行、產品發布、用戶培訓、產品復制、實施、系統維護、版本升級。系統維護、版本升級。 【例例1-1】請讀者規劃、設計、安裝一個校園網。請讀者規劃、設計、安裝一個校園網。這是一個硬件工程,工作內容包括:制定設計方這是一個硬件工程,工作內容包括:制定設計方案,網絡設備的選型、配置、采購、驗貨、布線、案,網絡設備的選型、配置、采購、驗貨、布線、安裝、調試、運行和交付。在安裝和調試中,又安裝、調試、運行和交付。在

8、安裝和調試中,又要安裝和調試許多軟件,如網絡操作系統、數據要安裝和調試許多軟件,如網絡操作系統、數據庫管理系統、教學軟件系統、辦公自動化系統、庫管理系統、教學軟件系統、辦公自動化系統、防火墻及殺毒軟件等。防火墻及殺毒軟件等。 由于有這么多軟件也需要選型、配置、采購、安由于有這么多軟件也需要選型、配置、采購、安裝、調試,所以在今天,除了生產硬件的廠商之裝、調試,所以在今天,除了生產硬件的廠商之外,純粹的外,純粹的“硬件工程硬件工程”幾乎不存在,大多數硬幾乎不存在,大多數硬件工程都與軟件有關,于是就出現了一個新名詞件工程都與軟件有關,于是就出現了一個新名詞“網絡工程網絡工程”,它是介于硬件工程和軟

9、件工程之,它是介于硬件工程和軟件工程之間的系統工程,有時也稱它為間的系統工程,有時也稱它為“系統集成工程系統集成工程”。 2軟件定義軟件定義 為了弄清軟件工程的概念,首先要了解程為了弄清軟件工程的概念,首先要了解程序和軟件的概念。程序是計算機為完成特序和軟件的概念。程序是計算機為完成特定任務而執行的指令的有序集合。站在應定任務而執行的指令的有序集合。站在應用的角度可以更通俗地理解為:用的角度可以更通俗地理解為: 面向過程的程序面向過程的程序 = 算法算法 + 數據結構數據結構 面向對象的程序面向對象的程序 = 對象對象 + 消息消息 面向構件的程序面向構件的程序 = 構件構件 + 構架構架 通

10、常,軟件有以下定義:通常,軟件有以下定義: 軟件軟件 = 程序程序 + 數據數據 + 文檔文檔 這里的這里的“程序程序”,是對計算機任務的處理對象和,是對計算機任務的處理對象和處理規則的描述;這里的處理規則的描述;這里的“文檔文檔”,是為了理解,是為了理解程序所需的詳細描述性資料;這里的程序所需的詳細描述性資料;這里的“數據數據”,主要是軟件系統賴以運行的初始化數據。主要是軟件系統賴以運行的初始化數據。 上述定義來之不易。表上述定義來之不易。表1-3列出了美國人對軟件列出了美國人對軟件定義的認識過程。直到今天,仍然有少數人認為:定義的認識過程。直到今天,仍然有少數人認為:“軟件就等于程序軟件就

11、等于程序”。這些人在軟件開發的過程。這些人在軟件開發的過程中,上來就寫程序,而不是寫文檔。軟件工程大中,上來就寫程序,而不是寫文檔。軟件工程大師師Roger S Pressman對這些人提出了尖銳的批對這些人提出了尖銳的批評:評:“越早開始寫代碼的人,就是越遲完成代碼越早開始寫代碼的人,就是越遲完成代碼的人的人”。 年年 代代美國人美國人對軟件定義的認識對軟件定義的認識20世紀世紀50年代年代 軟件就等于程序,軟件系統就是程序系統軟件就等于程序,軟件系統就是程序系統20世紀世紀60年代年代 軟件等于程序加文檔。這里的文檔,是指軟件開軟件等于程序加文檔。這里的文檔,是指軟件開發過程中的分析、設計

12、、實現、測試、維護文檔,發過程中的分析、設計、實現、測試、維護文檔,還不包括管理文檔還不包括管理文檔20世紀世紀70年代年代 軟件等于程序加文檔再加數據,這里的數據不僅軟件等于程序加文檔再加數據,這里的數據不僅包括初始化數據、測試數據,而且包括研發數據、包括初始化數據、測試數據,而且包括研發數據、運行數據、維護數據,也包括軟件企業積累的項運行數據、維護數據,也包括軟件企業積累的項目工程數據和項目管理數據中的大量決策原始記目工程數據和項目管理數據中的大量決策原始記錄數據錄數據 至于對管理文檔的全面認識,那就更晚了。至于對管理文檔的全面認識,那就更晚了。 1974年年,美國人才開始認識到軟件需要管

13、理。,美國人才開始認識到軟件需要管理。 1984年年,美國人開始認識到軟件管理是一個過程,美國人開始認識到軟件管理是一個過程管理,或是一個管理過程。管理,或是一個管理過程。 1991年年,出現了軟件過程能力成熟度模型,出現了軟件過程能力成熟度模型CMM (Capability Maturity Model for Software)1.0版,人們研究了軟件過程管理的具體內容與版,人們研究了軟件過程管理的具體內容與方法,并將軟件開發和管理中產生的各種文檔叫方法,并將軟件開發和管理中產生的各種文檔叫做做“軟件工作產品軟件工作產品”,而將最后交付給用戶使用,而將最后交付給用戶使用的軟件工作產品叫做的

14、軟件工作產品叫做“軟件產品軟件產品”。 1996年年,出現了統一建模語言,出現了統一建模語言UML 0.9版,稱軟版,稱軟件管理文檔為件管理文檔為“管理制品管理制品”,稱軟件開發文檔為,稱軟件開發文檔為“技術制品技術制品”,兩者合稱為,兩者合稱為“制品制品(Artifact)”。 3文檔的重要性文檔的重要性 文檔在軟件工程中特別重要,文檔是否規范與齊文檔在軟件工程中特別重要,文檔是否規范與齊全,是衡量軟件企業是否成熟的重要標志之一。全,是衡量軟件企業是否成熟的重要標志之一。 軟件文檔分為軟件文檔分為開發文檔開發文檔和和管理文檔管理文檔兩大類。開發兩大類。開發文檔主要由項目組書寫,用于指導軟件開

15、發與維文檔主要由項目組書寫,用于指導軟件開發與維護;管理文檔主要由軟件工程管理部門書寫,用護;管理文檔主要由軟件工程管理部門書寫,用于指導軟件管理和決策。于指導軟件管理和決策。 軟件工程規定:軟件工程規定:文檔必須指揮程序文檔必須指揮程序,而決不允許,而決不允許程序指揮文檔;文檔與程序必須保持高度一致,程序指揮文檔;文檔與程序必須保持高度一致,而決不允許程序脫離開文檔。而決不允許程序脫離開文檔。 開發文檔本身具有嚴格的開發文檔本身具有嚴格的層次關系層次關系和和依賴關系依賴關系,這種關系反映在如下的這種關系反映在如下的覆蓋關系覆蓋關系之中,即有:之中,即有: (1)目標程序目標程序覆蓋覆蓋源程序

16、源程序; (2)源程序源程序覆蓋覆蓋詳細設計說明書詳細設計說明書; (3)詳細設計說明書詳細設計說明書覆蓋覆蓋概要設計說明概要設計說明書書; (4)概要設計說明書概要設計說明書覆蓋覆蓋需求分析規格需求分析規格說明書說明書; (5)需求分析規格說明書需求分析規格說明書覆蓋覆蓋用戶需求用戶需求報告報告; (6)用戶需求報告用戶需求報告覆蓋覆蓋軟件合同軟件合同/軟軟件任務書件任務書。 管理文檔本身具有嚴格的管理文檔本身具有嚴格的時序關系時序關系,這種,這種時序關系反映在如下的軟件過程之中,而時序關系反映在如下的軟件過程之中,而過程由一系列的時間序列所組成的:過程由一系列的時間序列所組成的: (1)需

17、求分析過程管理文檔;)需求分析過程管理文檔; (2)軟件策劃過程管理文檔;)軟件策劃過程管理文檔; (3)軟件設計過程管理文檔;)軟件設計過程管理文檔; (4)軟件實現過程管理文檔;)軟件實現過程管理文檔; (5)軟件測試過程管理文檔;)軟件測試過程管理文檔; (6)軟件維護過程管理文檔;)軟件維護過程管理文檔; (7)軟件過程改進管理文檔。)軟件過程改進管理文檔。 4軟件最新定義軟件最新定義 軟件軟件 = 知識知識+程序程序+數據數據+文檔文檔 定義中增加了定義中增加了“知識知識”。對這一定義的討。對這一定義的討論正在進行。論正在進行。 正方正方認為:因為軟件是知識在網絡上的體認為:因為軟件

18、是知識在網絡上的體現,所以這個定義非常好。現,所以這個定義非常好。 反方反方認為:程序、數據、文檔本身就是知認為:程序、數據、文檔本身就是知識的載體與表現,所以這個定義是畫蛇添識的載體與表現,所以這個定義是畫蛇添足。足。 1.2 軟件工程定義軟件工程定義 1軟件危機軟件危機 軟件工程來源于軟件危機,即先有軟件危軟件工程來源于軟件危機,即先有軟件危機,后有軟件工程。機,后有軟件工程。 二十世紀六十年代中期,在美國就出現了二十世紀六十年代中期,在美國就出現了軟件危機(軟件危機(Software Crisis),這種危機),這種危機表現在研發大型軟件時,軟件開發的成本表現在研發大型軟件時,軟件開發的

19、成本增大、進度延期、維護困難和質量得不到增大、進度延期、維護困難和質量得不到保障。保障。 所謂軟件危機,就是在軟件開發和維護過所謂軟件危機,就是在軟件開發和維護過程中所遇到一系列難以控制的問題。程中所遇到一系列難以控制的問題。 2軟件工程定義軟件工程定義 1993年,權威雜志年,權威雜志IEEE對軟件工程的定義對軟件工程的定義是:軟件工程是將系統化的、嚴格約束的、是:軟件工程是將系統化的、嚴格約束的、可量化的方法,應用于軟件開發、運行和可量化的方法,應用于軟件開發、運行和維護中去。維護中去。 2001年,軟件工程大師年,軟件工程大師Roger S Pressman 對軟件工程的定義是:軟件工對

20、軟件工程的定義是:軟件工程是一個過程、一組方法和一系列工具。程是一個過程、一組方法和一系列工具。 由于軟件技術是飛速發展的,所以軟件工由于軟件技術是飛速發展的,所以軟件工程的定義也要與時俱進。下面,根據當前程的定義也要與時俱進。下面,根據當前軟件技術的進展狀況,給出現代軟件工程軟件技術的進展狀況,給出現代軟件工程的最新定義。的最新定義。 【定義定義1-1】軟件工程是研究軟件工程是研究軟件開發軟件開發和和軟件管軟件管理理的一門的一門工程學科工程學科。 這里,一是強調開發,二是強調管理,三是強調這里,一是強調開發,二是強調管理,三是強調工程,四是強調學科。工程,四是強調學科。 開發和管理是一個問題

21、的相輔相成的兩個方面。開發和管理是一個問題的相輔相成的兩個方面。許多軟件項目的失敗,不是在開發技術上出了問許多軟件項目的失敗,不是在開發技術上出了問題,而是在管理過程上出了問題。題,而是在管理過程上出了問題。 要將軟件的開發當作一項工程,既要按照工程的要將軟件的開發當作一項工程,既要按照工程的辦法去開發,又要按照工程的辦法去管理。辦法去開發,又要按照工程的辦法去管理。 時至今日,軟件工程不只是一門課程,而是一個時至今日,軟件工程不只是一門課程,而是一個學科體系,即軟件工程知識體系。學科體系,即軟件工程知識體系。 3軟件工程學科體系軟件工程學科體系 軟件工程作為一個學科體系,到本世紀初軟件工程作

22、為一個學科體系,到本世紀初才初步形成。才初步形成。 2001年年4月月18日,美國發布了軟件工程知日,美國發布了軟件工程知識體系指南識體系指南SWEBOK(Guide to the Software Engineering Body of Knowledge) 0.95版。版。 2004年,軟件工程學科體系的內容才基本年,軟件工程學科體系的內容才基本確立,就在這一年,美國確立,就在這一年,美國ACM和和IEEE-CS聯合制訂聯合制訂SWEBOK 2004年版,它將軟件年版,它將軟件工程學科體系的知識劃分為如下工程學科體系的知識劃分為如下10個知識個知識域:域: (1)軟件需求軟件需求(Soft

23、ware Requirements)。 軟件需求是真實世界問題而必須展示的特性。軟件需求是真實世界問題而必須展示的特性。 軟件需求知識域有七個子域:需求基礎、需軟件需求知識域有七個子域:需求基礎、需求過程、需求獲取、需求分析、需求規格說求過程、需求獲取、需求分析、需求規格說明、需求確認和實踐考慮。明、需求確認和實踐考慮。 (2 )軟件設計軟件設計(Software Design)。 軟件設計既是定義一個系統的體系結構、軟件設計既是定義一個系統的體系結構、組件、接口和其他特征的過程,又是這個組件、接口和其他特征的過程,又是這個過程的結果。過程的結果。 軟件設計知識域有六個子域:軟件設計基軟件設計

24、知識域有六個子域:軟件設計基礎、軟件設計關鍵問題、軟件結構與體系礎、軟件設計關鍵問題、軟件結構與體系結構、軟件設計質量的分析與評價、軟件結構、軟件設計質量的分析與評價、軟件設計符號、軟件設計的策略與方法。設計符號、軟件設計的策略與方法。 (3)軟件構造軟件構造( Software Construction)。 它指通過編碼、驗證、單元測試、集成測它指通過編碼、驗證、單元測試、集成測試和排錯的組合,具體創建一個可以工作試和排錯的組合,具體創建一個可以工作的、有意義的軟件。的、有意義的軟件。 其知識域有三個子域:軟件構造基礎、管其知識域有三個子域:軟件構造基礎、管理構造、實際考慮。理構造、實際考慮

25、。 (4)軟件測試軟件測試(Software Testing)。 它是由在有限測試用例集合上,根據期望它是由在有限測試用例集合上,根據期望的行為,對程序的行為進行的動態驗證組的行為,對程序的行為進行的動態驗證組成,成, 測試用例是實際上無限的執行域中適測試用例是實際上無限的執行域中適當選擇出來的。當選擇出來的。 軟件測試域有五個子域:軟件測試基礎和軟件測試域有五個子域:軟件測試基礎和測試級別、測試技術、需求分析、與測試測試級別、測試技術、需求分析、與測試相關的度量、測試過程。相關的度量、測試過程。 (5)軟件維護軟件維護(Software Maintenance)。 軟件一旦投入運行,就可能出

26、現異常,運軟件一旦投入運行,就可能出現異常,運行環境可能發生改變,用戶會提出新的需行環境可能發生改變,用戶會提出新的需求。求。 生命周期軟件維護,從軟件交付時開始。生命周期軟件維護,從軟件交付時開始。軟件維護的知識域有四個子域:軟件維護軟件維護的知識域有四個子域:軟件維護基礎、軟件維護的關鍵問題、維護過程、基礎、軟件維護的關鍵問題、維護過程、維護技術。維護技術。 (6)軟件配置管理軟件配置管理(Software Configuration Management)。 軟件配置是為了系統地控制配置的變更和軟件配置是為了系統地控制配置的變更和維護在整個系統生命周期中的完整性及可維護在整個系統生命周期

27、中的完整性及可追蹤性,而標志軟件在時間上不同點的配追蹤性,而標志軟件在時間上不同點的配置的學科。置的學科。 軟件配置管理域有六個子域:軟件配置管軟件配置管理域有六個子域:軟件配置管理過程管理、軟件配置標志、軟件配置控理過程管理、軟件配置標志、軟件配置控制、軟件配置狀態統計、軟件配置審核、制、軟件配置狀態統計、軟件配置審核、軟件發行管理和交付。軟件發行管理和交付。 (7)軟件工程管理軟件工程管理(Software Engineering Management)。 處理軟件工程的管理與度量,雖然度量是處理軟件工程的管理與度量,雖然度量是所有知識域的一個重要方面,但是這里涉所有知識域的一個重要方面,

28、但是這里涉及的是度量程序的專題。及的是度量程序的專題。 軟件工程管理域有六個子域:啟動和范圍軟件工程管理域有六個子域:啟動和范圍定義、軟件項目計劃、軟件項目實施、評定義、軟件項目計劃、軟件項目實施、評審與評價、關閉、軟件工程度量。前五個審與評價、關閉、軟件工程度量。前五個覆蓋軟件過程工程管理,第六個描述軟件覆蓋軟件過程工程管理,第六個描述軟件度量的程序。度量的程序。 (8)軟件工程過程軟件工程過程(Software Engineering Process)。 涉及軟件工程過程本身的定義、實現、評涉及軟件工程過程本身的定義、實現、評定、度量、管理、變更和改進。定、度量、管理、變更和改進。 軟件工

29、程過程域有四個子域:過程實施與軟件工程過程域有四個子域:過程實施與改變、過程定義、過程評定、過程和產品改變、過程定義、過程評定、過程和產品度量。度量。 (9)軟件工程工具和方法軟件工程工具和方法(Software Engineering Tool and Method)。 有軟件工程工具、軟件工程方法兩個子域。有軟件工程工具、軟件工程方法兩個子域。 (10)軟件質量軟件質量(Software Quality)。 處理跨越軟件生命周期過程的軟件質量的考慮,處理跨越軟件生命周期過程的軟件質量的考慮,由于軟件質量在軟件工程中無處不在,其他知識由于軟件質量在軟件工程中無處不在,其他知識域也涉及質量問題

30、。域也涉及質量問題。 軟件質量域有三個子域:軟件質量基礎、軟件質軟件質量域有三個子域:軟件質量基礎、軟件質量過程、實踐考慮。量過程、實踐考慮。 在上述軟件工程學科體系中,在上述軟件工程學科體系中,前五個知識域是講前五個知識域是講軟件開發軟件開發,后五個知識域是講軟件管理后五個知識域是講軟件管理。由此可。由此可見,軟件工程知識體系包括軟件開發和軟件管理見,軟件工程知識體系包括軟件開發和軟件管理兩大部分,所以軟件工程的定義也應該包括軟件兩大部分,所以軟件工程的定義也應該包括軟件開發和軟件管理兩項內容。開發和軟件管理兩項內容。 4軟件工程課程研究的內容軟件工程課程研究的內容 軟件工程課程與軟件工程學

31、科體系是有區軟件工程課程與軟件工程學科體系是有區別的:前者是一門課程,或是大學的軟件別的:前者是一門課程,或是大學的軟件工程教科書,后者是一個知識體系;前者工程教科書,后者是一個知識體系;前者是一個局部,后者是一個整體。是一個局部,后者是一個整體。 作為一門軟件工程課程,它的研究的內容作為一門軟件工程課程,它的研究的內容至今沒有統一的說法。可以這么認為,軟至今沒有統一的說法。可以這么認為,軟件工程課程研究的內容,應該涵蓋件工程課程研究的內容,應該涵蓋“軟件軟件生命周期模型、軟件開發方法、軟件支持生命周期模型、軟件開發方法、軟件支持過程、軟件管理過程過程、軟件管理過程”這四個方面,如表這四個方面

32、,如表1-4所示。所示。 序號序號研究方面研究方面具體內容具體內容1軟件生命周期模型軟件生命周期模型 如:瀑布模型、增量模型、原型模型、如:瀑布模型、增量模型、原型模型、迭代模型、迭代模型、XP模型模型2軟件開發方法軟件開發方法 如:面向過程的方法、面向元數據的如:面向過程的方法、面向元數據的方法、面向對象的方法方法、面向對象的方法3軟件支持過程軟件支持過程 如:如:CASECASE工具工具RoseRose、北大青鳥系統、北大青鳥系統、Power DesignerPower Designer、ER winER win4軟件管理過程軟件管理過程 如:如:CMMICMMI、軟件企業文化、敏捷、軟件

33、企業文化、敏捷(XP)(XP)文化現象文化現象 5軟件工程基本原理軟件工程基本原理 習慣上,人們常常把軟件工程的方法(開習慣上,人們常常把軟件工程的方法(開發方法)、工具(支持方法的工具)、過發方法)、工具(支持方法的工具)、過程(管理過程)稱為程(管理過程)稱為軟件工程三要素軟件工程三要素。而。而把美國著名的軟件工程專家把美國著名的軟件工程專家B.W Boehm于于1983年提出的年提出的7條原理條原理,作為軟件工程的,作為軟件工程的基本原理。基本原理。 (1)用分階段的生命周期計劃嚴格管理軟)用分階段的生命周期計劃嚴格管理軟件開發。階段劃分為計劃、分析、設計、件開發。階段劃分為計劃、分析、

34、設計、編程、測試和運行維護。編程、測試和運行維護。 (2)堅持進行階段評審。上一階段評審不通過,)堅持進行階段評審。上一階段評審不通過,就不能進入下一階段開發。就不能進入下一階段開發。 (3)實行嚴格的產品版本控制。)實行嚴格的產品版本控制。 (4)采用現代程序設計技術。)采用現代程序設計技術。 (5)結果應能清楚地審查。因此,對文檔要有)結果應能清楚地審查。因此,對文檔要有嚴格要求。嚴格要求。 (6)開發小組的成員要少而精。)開發小組的成員要少而精。 (7)要不斷地改進軟件工程實踐的經驗和技術,)要不斷地改進軟件工程實踐的經驗和技術,要與時俱進。要與時俱進。 上述七條原理,雖然是在面向過程的

35、程序設計時上述七條原理,雖然是在面向過程的程序設計時代(結構化時代)提出來的。但是,直到今天,代(結構化時代)提出來的。但是,直到今天,在面向元數據和面向對象的程序設計新時代,它在面向元數據和面向對象的程序設計新時代,它仍然有效。仍然有效。 根據根據“與時俱進與時俱進”的原則,還有一條基本原理在的原則,還有一條基本原理在軟件的開發和管理中特別重要,需要補充進去,軟件的開發和管理中特別重要,需要補充進去,作為軟件工程的第八條基本原理。作為軟件工程的第八條基本原理。 (8)二八定律二八定律。對軟件項目進度和工作量的估。對軟件項目進度和工作量的估計:一般人主觀上認為已經完成了計:一般人主觀上認為已經

36、完成了80%,但實際,但實際上只完成了上只完成了20%;對程序中存在問題的估計:;對程序中存在問題的估計:80%的問題存在于的問題存在于20%的程序之中;對模塊功能的程序之中;對模塊功能的估計:的估計:20%的模塊,實現了的模塊,實現了80%的功能;對人的功能;對人力資源的估計:力資源的估計:20%的人,解決了軟件中的人,解決了軟件中80%的的問題;對投入資金的估計:企業信息系統中問題;對投入資金的估計:企業信息系統中80%的問題,可以用的問題,可以用20%的資金來解決。的資金來解決。 研究二八定律的現實意義,在于指導軟件研究二八定律的現實意義,在于指導軟件開發計劃的制訂與執行。開發計劃的制訂

37、與執行。 如果事先掌握了二八定律,就能自覺地用如果事先掌握了二八定律,就能自覺地用二八定律去制訂、跟蹤與執行軟件開發計二八定律去制訂、跟蹤與執行軟件開發計劃。劃。 也就是說,計劃中要用開始的也就是說,計劃中要用開始的20%時間,時間,去完成去完成80%的開發進度;剩下的開發進度;剩下20%的進度,的進度,要留下要留下80%的時間去完成。只有這樣,項的時間去完成。只有這樣,項目的開發計劃與項目的開發進度才能吻合。目的開發計劃與項目的開發進度才能吻合。 6軟件工程在中國軟件工程在中國 1982年,軟件工程的創始人、美藉華人葉祖堯博年,軟件工程的創始人、美藉華人葉祖堯博士士,帶著自己開創的帶著自己開

38、創的“軟件工程學軟件工程學”理論來到中國,理論來到中國,成為當時中國政府計算機領導小組的顧問。成為當時中國政府計算機領導小組的顧問。 1984年,國家科委在北京召開年,國家科委在北京召開“軟件工程軟件工程”大會。大會。會議其間,國防科技大學陳火旺院士與孟慶余教會議其間,國防科技大學陳火旺院士與孟慶余教授,宴請了美國軟件工程專家葉祖堯博士。席間,授,宴請了美國軟件工程專家葉祖堯博士。席間,時任美國馬里蘭大學計算機系主任的葉祖堯博士時任美國馬里蘭大學計算機系主任的葉祖堯博士說:說:“軟件工程,只有你們長沙軟件工程,只有你們長沙(國防科技大學國防科技大學)并行機的研究搞的最好!并行機的研究搞的最好!

39、” 巨型機銀河機系列與天河機系列的歷史證明:葉巨型機銀河機系列與天河機系列的歷史證明:葉祖堯的話是對的祖堯的話是對的。1.3 軟件工程作用軟件工程作用 軟件工程是軟件行業的一門管理科學,也軟件工程是軟件行業的一門管理科學,也是系統分析員和項目經理以上人員必備的是系統分析員和項目經理以上人員必備的一種領導藝術,為了將我國的軟件產業搞一種領導藝術,為了將我國的軟件產業搞上去,使軟件產業成為國民經濟的支柱產上去,使軟件產業成為國民經濟的支柱產業,使中國早日成為一個軟件大國與軟件業,使中國早日成為一個軟件大國與軟件強國,對于軟件工程的作用,在軟件界怎強國,對于軟件工程的作用,在軟件界怎么強調也不過分。

40、么強調也不過分。 為了說明軟件工程的作用,先來看一個例為了說明軟件工程的作用,先來看一個例子。子。 【例例1-3】20世紀世紀90年代初,有兩個軟件團年代初,有兩個軟件團隊,一個較大(隊,一個較大(10多人),一個較小(多人),一個較小(6人),都在開發財務系統。人),都在開發財務系統。 煙臺的較大的那個團隊,工作不規范,沒煙臺的較大的那個團隊,工作不規范,沒有文檔,沒有評審,也沒有團隊協作精神,有文檔,沒有評審,也沒有團隊協作精神,結果開發出來的產品可維護性差,沒有打結果開發出來的產品可維護性差,沒有打開市場,沒有產生經濟效益和社會效益,開市場,沒有產生經濟效益和社會效益,致使產品與團隊最后

41、同歸于盡。致使產品與團隊最后同歸于盡。 北京的較小的那個團隊,同舟共濟,工作北京的較小的那個團隊,同舟共濟,工作規范,有正規文檔,有階段評審,分工明規范,有正規文檔,有階段評審,分工明確:確: 一人負責原始憑證和輸出報表的收集、歸類和整一人負責原始憑證和輸出報表的收集、歸類和整理,這實際上是做需求分析;一人負責科目和數理,這實際上是做需求分析;一人負責科目和數據字典(代碼表),這實際上是做信息的標準化據字典(代碼表),這實際上是做信息的標準化與規范化;一人負責記賬憑證的錄入和修改,這與規范化;一人負責記賬憑證的錄入和修改,這實際上是做數據庫的設計和加載工作;一人負責實際上是做數據庫的設計和加載

42、工作;一人負責日記賬、明細賬和總賬之間的平衡與對賬,這實日記賬、明細賬和總賬之間的平衡與對賬,這實際上是做數據處理;一人負責統計、報表和查詢,際上是做數據處理;一人負責統計、報表和查詢,這實際上是做數據輸出工作;一人負責總體設計這實際上是做數據輸出工作;一人負責總體設計和項目管理,這就是項目經理的工作。和項目管理,這就是項目經理的工作。 較小的那個團隊,后來發展成為巨大的較小的那個團隊,后來發展成為巨大的用友軟件用友軟件公司公司。 因為軟件工程來自于軟件企業,又服務于因為軟件工程來自于軟件企業,又服務于軟件企業,所以討論它的作用,主要是討軟件企業,所以討論它的作用,主要是討論它在軟件企業中的作

43、用。論它在軟件企業中的作用。 從歷史上講從歷史上講,軟件工程的作用,是為了克,軟件工程的作用,是為了克服上個世紀服上個世紀60年代出現的軟件危機。年代出現的軟件危機。 從當前來講從當前來講,軟件工程的作用,就是告訴,軟件工程的作用,就是告訴人們怎樣去開發軟件和管理軟件。具體地人們怎樣去開發軟件和管理軟件。具體地講,它表現在與軟件開發和管理有關的人講,它表現在與軟件開發和管理有關的人員和過程上。為了說明這個問題,首先,員和過程上。為了說明這個問題,首先,來分析一下軟件企業的人才結構,看看這來分析一下軟件企業的人才結構,看看這些人員的工作與軟件工程有什么關系。些人員的工作與軟件工程有什么關系。 (

44、1)高層管理人員高層管理人員。他們應具備的基本條件是:。他們應具備的基本條件是:軟件專業宏觀知識、軟件工程管理知識,加上商軟件專業宏觀知識、軟件工程管理知識,加上商業與資本運作知識。他們要用軟件工程的理論和業與資本運作知識。他們要用軟件工程的理論和方法,來管理整個公司的軟件業務。方法,來管理整個公司的軟件業務。 (2)中層項目經理和軟件工程師中層項目經理和軟件工程師。他們應具備。他們應具備的基本條件是:系統分析知識、系統設計知識,的基本條件是:系統分析知識、系統設計知識,加上項目管理知識。他們要用軟件工程的理論和加上項目管理知識。他們要用軟件工程的理論和方法,來管理項目組的軟件開發。他們的個人

45、奮方法,來管理項目組的軟件開發。他們的個人奮斗目標是軟件管理專家、分析設計專家、開發技斗目標是軟件管理專家、分析設計專家、開發技術專家。這兩部分人員,他們是軟件工程的擁有術專家。這兩部分人員,他們是軟件工程的擁有者和實踐者。者和實踐者。 (3)軟件藍領工人軟件藍領工人。他們應具備的基本條件是:。他們應具備的基本條件是:掌握閱讀文檔的技能、程序設計的技巧,加上軟掌握閱讀文檔的技能、程序設計的技巧,加上軟件測試的知識。他們要用軟件工程的理論和方法,件測試的知識。他們要用軟件工程的理論和方法,來實現軟件項目的軟件功能、性能、接口、界面。來實現軟件項目的軟件功能、性能、接口、界面。 (4)軟件營銷人員

46、軟件營銷人員。他們應具備的基本條件是:。他們應具備的基本條件是:營銷知識、售前知識,加上軟件工程基本知識。營銷知識、售前知識,加上軟件工程基本知識。他們要用軟件工程的基本思路,來與客戶進行溝他們要用軟件工程的基本思路,來與客戶進行溝通,以贏得客戶的信任。通,以贏得客戶的信任。 (5)軟件實施和維護人員軟件實施和維護人員。他們應具備的基本。他們應具備的基本條件是:軟件客戶化及安裝、運行、維修技術。條件是:軟件客戶化及安裝、運行、維修技術。他們要用軟件工程的基本方法,來實現軟件功能、他們要用軟件工程的基本方法,來實現軟件功能、性能與接口的實施和維護。性能與接口的實施和維護。 (6)軟件售前人員軟件

47、售前人員。他們是軟件公司的產品形。他們是軟件公司的產品形象代表,其奮斗目標是:既要成為某個行業領域象代表,其奮斗目標是:既要成為某個行業領域的產品專家,又要成為該產品的實現顧問。只有的產品專家,又要成為該產品的實現顧問。只有這樣,他們才能看懂招標書、寫好投標書、講好這樣,他們才能看懂招標書、寫好投標書、講好投標書。投標書。 在制作和宣講投標書的過程中,有許多與軟件工在制作和宣講投標書的過程中,有許多與軟件工程相關的知識和內容,如項目開發方法、開發工程相關的知識和內容,如項目開發方法、開發工具、開發環境、運行環境、管理方法、質量和進具、開發環境、運行環境、管理方法、質量和進度控制方法,只有把這些

48、方法寫清講透,用戶才度控制方法,只有把這些方法寫清講透,用戶才能相信認可,投標才有成功把握。這些知識和內能相信認可,投標才有成功把握。這些知識和內容,離不開軟件工程知識的學習和教育。容,離不開軟件工程知識的學習和教育。 從軟件項目團隊來講從軟件項目團隊來講,軟件工程的作用在于:在,軟件工程的作用在于:在規定的時間內,按照規定的成本,完成預期質量規定的時間內,按照規定的成本,完成預期質量目標(軟件的功能、性能和接口達到需求報告標目標(軟件的功能、性能和接口達到需求報告標準)的軟件。準)的軟件。 從軟件企業本身來講從軟件企業本身來講,軟件工程的作用在于:持,軟件工程的作用在于:持續地規范軟件開發過

49、程和軟件管理過程,不斷地續地規范軟件開發過程和軟件管理過程,不斷地優化軟件組織的個人素質和集體素質,從而逐漸優化軟件組織的個人素質和集體素質,從而逐漸增強軟件企業的市場競爭實力。增強軟件企業的市場競爭實力。 從軟件大國與強國來講從軟件大國與強國來講,軟件工程的作用在于:,軟件工程的作用在于:它在一個國家的計算機界及軟件界的普及與推廣,它在一個國家的計算機界及軟件界的普及與推廣,可以使這一個國家變為一個軟件大國,進而變為可以使這一個國家變為一個軟件大國,進而變為一個軟件強國。一個軟件強國。 從軟件發展進程來講從軟件發展進程來講,軟件工程的作用在,軟件工程的作用在于:克服軟件危機,控制軟件進度,節

50、約于:克服軟件危機,控制軟件進度,節約開發成本,提高軟件質量。開發成本,提高軟件質量。 從軟件開發的前景來講從軟件開發的前景來講,由于軟件開發的,由于軟件開發的前景如同開發大海與開發藍天,潛力無限前景如同開發大海與開發藍天,潛力無限無垠,所以軟件工程的前景也無限無垠。無垠,所以軟件工程的前景也無限無垠。由于軟件工程的作用越來越大,它的地位由于軟件工程的作用越來越大,它的地位也越來越高。以前,軟件工程只是作為一也越來越高。以前,軟件工程只是作為一門課程或一本書。現在,它作為一個學科門課程或一本書。現在,它作為一個學科體系,設立了軟件工程專業和軟件工程學體系,設立了軟件工程專業和軟件工程學位,產生

51、了有軟件工程碩士和博士學位。位,產生了有軟件工程碩士和博士學位。 1.4 軟件工程方法論軟件工程方法論1.4.1 軟件工程方法論的提出軟件工程方法論的提出 長期以來,人們將軟件開發方法與軟件生命周期長期以來,人們將軟件開發方法與軟件生命周期模型混為一體,甚至將軟件開發方法與軟件過程模型混為一體,甚至將軟件開發方法與軟件過程改進模型也混為一體,因而誤認為軟件生命周期改進模型也混為一體,因而誤認為軟件生命周期模型或軟件過程改進模型就是軟件開發方法。模型或軟件過程改進模型就是軟件開發方法。 例如,他們將迭代模型例如,他們將迭代模型RUP(Rational Unified Process)和過程改善模

52、型和過程改善模型CMMI(Capability Maturity Model Integration)誤認為是軟件開發誤認為是軟件開發方法或軟件工程方法論,這就是有力的證據。方法或軟件工程方法論,這就是有力的證據。 事實上,軟件開發方法與軟件生命周期模型是不事實上,軟件開發方法與軟件生命周期模型是不同的,軟件開發方法與軟件過程改進模型就更不同的,軟件開發方法與軟件過程改進模型就更不相同了。相同了。軟件開發方法學來自于程序設計語言方軟件開發方法學來自于程序設計語言方法學法學,而軟件生命周期模型或軟件過程改進模型而軟件生命周期模型或軟件過程改進模型與程序設計語言方法學無關與程序設計語言方法學無關。

53、 【定義定義1-2】軟件生命周期模型是指在整個軟件軟件生命周期模型是指在整個軟件生命周期中,軟件開發過程應遵循的生命周期中,軟件開發過程應遵循的開發路線圖開發路線圖。或者說,軟件生命周期模型是軟件開發全部過程、或者說,軟件生命周期模型是軟件開發全部過程、活動和任務的結構框架。活動和任務的結構框架。 例如,瀑布模型、增量模型、螺旋模型、噴泉模例如,瀑布模型、增量模型、螺旋模型、噴泉模型、型、XP模型、原型模型和模型、原型模型和RUP迭代模型,它們迭代模型,它們都有各自清晰的開發路線圖,規定了各自的開發都有各自清晰的開發路線圖,規定了各自的開發過程、活動和任務的結構框架。過程、活動和任務的結構框架

54、。 【定義定義1-3】軟件開發方法是指在軟件開發路線圖軟件開發方法是指在軟件開發路線圖中,開發人員對軟件需求、設計、實現、維護所采中,開發人員對軟件需求、設計、實現、維護所采用的開發思想、開發技術、描述方法、支持工具等。用的開發思想、開發技術、描述方法、支持工具等。 在軟件工程方法學方面,大體可分為程序設計方法在軟件工程方法學方面,大體可分為程序設計方法學和軟件開發方法學,前者是關于小規模程序的設學和軟件開發方法學,前者是關于小規模程序的設計方法學,后者是關于大規模軟件的開發方法學。計方法學,后者是關于大規模軟件的開發方法學。 在程序設計方法學中最基本的方法有:有面向過程在程序設計方法學中最基

55、本的方法有:有面向過程程序設計方法,面向對象程序設計方法,面向元數程序設計方法,面向對象程序設計方法,面向元數據(據(Meta-data)程序設計方法。)程序設計方法。 在軟件開發方法學中最基本的方法有:有面向過程在軟件開發方法學中最基本的方法有:有面向過程方法、面向對象方法、面向元數據方法、形式化方方法、面向對象方法、面向元數據方法、形式化方法,它們就是軟件開發方法,它們都有各自的開發法,它們就是軟件開發方法,它們都有各自的開發思想、開發技術、描述方法、支持工具等。思想、開發技術、描述方法、支持工具等。 1.4.2 面向過程方法面向過程方法 面向過程方法面向過程方法(Procedure-or

56、iented method),來自于面向過程的程序設計語,來自于面向過程的程序設計語言,如匯編語言、言,如匯編語言、C語言。語言。 面向過程方法包括面向過程需求分析、面面向過程方法包括面向過程需求分析、面向過程設計、面向過程編程、面向過程測向過程設計、面向過程編程、面向過程測試、面向過程維護、面向過程管理。試、面向過程維護、面向過程管理。 【定義定義1-4】軟件工程中軟件開發方法的集軟件工程中軟件開發方法的集合,稱為合,稱為軟件工程方法論軟件工程方法論。 現在的問題是:到目前為止,軟件工程方現在的問題是:到目前為止,軟件工程方法論中,到底包括哪幾種最基本的軟件開法論中,到底包括哪幾種最基本的軟

57、件開發方法?這幾種開發方法,到底存在什么發方法?這幾種開發方法,到底存在什么關系?下面將回答這些問題。關系?下面將回答這些問題。 面向過程方法,習慣上稱為傳統軟件工程面向過程方法,習慣上稱為傳統軟件工程開發方法,或結構化方法。開發方法,或結構化方法。 它包括結構化分析、結構化設計、結構化它包括結構化分析、結構化設計、結構化編程、結構化測試、結構化維護。面向過編程、結構化測試、結構化維護。面向過程的方法,有時又稱面向功能的方法,即程的方法,有時又稱面向功能的方法,即面向功能分析、面向功能設計、面向功能面向功能分析、面向功能設計、面向功能編程、面向功能測試、面向功能維護。編程、面向功能測試、面向功

58、能維護。 由此可見,面向過程方法、面向功能方法、由此可見,面向過程方法、面向功能方法、結構化方法,三者是同一個意思。結構化方法,三者是同一個意思。 曾經出現過的面向過程方法有:曾經出現過的面向過程方法有: (1).面向結構化數據系統的開發方法面向結構化數據系統的開發方法DSSD(Data Structured Systems Development);); (2).面向可維護性和可靠性設計的面向可維護性和可靠性設計的Parnas方法;方法; (3).面向數據結構設計的面向數據結構設計的Jackson方法;方法; (4).面向問題設計的面向問題設計的PAM方法;方法; (5).面向數據流方法。面

59、向數據流方法。 上述五種方法的詳細內容,利用百度或上述五種方法的詳細內容,利用百度或Google搜索,都可以在網上查到。搜索,都可以在網上查到。 但是,不管在方法名字上如何稱呼,這五種方法但是,不管在方法名字上如何稱呼,這五種方法在宏觀上都屬于面向過程方法,支持這些方法的在宏觀上都屬于面向過程方法,支持這些方法的是面向過程的結構化編程語言。是面向過程的結構化編程語言。 面向過程方法,設計時強調面向過程方法,設計時強調模塊化模塊化的思想,的思想,采用采用“自頂向下,逐步求精自頂向下,逐步求精”的技術對系的技術對系統進行劃分,統進行劃分,分解和抽象分解和抽象是它的兩個基本是它的兩個基本手段。手段。

60、 面向過程方法編程時采用面向過程方法編程時采用單入口單出口單入口單出口的的控制結構,并且只包含控制結構,并且只包含順序、選擇和循環順序、選擇和循環三種結構三種結構,目標之一是使程序的控制流程,目標之一是使程序的控制流程線性化,即程序的線性化,即程序的動態執行順序符合靜態動態執行順序符合靜態書寫結構書寫結構。 在面向過程的五種具體方法中,在面向過程的五種具體方法中,面向數據面向數據流方法最具有代表性流方法最具有代表性。 面向過程的方法,面向過程的方法,來自于來自于20世紀世紀6070年年代流行的面向過程的程序設計語言代流行的面向過程的程序設計語言,例如,例如,ALGOL,PASCAL,BASIC

溫馨提示

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

評論

0/150

提交評論