第1章 軟件工程的內容與方法
本章導讀
本章首先對軟件、軟件工程、軟件工程學科體系、軟件工程課程進行了定義與解釋,然后提出“面向過程方法、面向對象方法、面向元數據方法、形式化方法”的軟件工程方法論,以及“面向流程分析、面向元數據設計、面向對象實現、面向功能測試、面向過程管理”的“五個面向”軟件工程實踐論,該方法論與實踐論不但適用于信息系統的開發,也適用于其他軟件系統的開發。本章最后簡要介紹了ISO 9001、CMMI、軟件企業文化、信息系統的定義與案例分析。因此,本章是軟件工程課程的緒論。表1-1列出了讀者在本章學習中要了解、理解和關注的主要內容。
表1-1 本章對讀者的要求

1.1 軟件的定義
1.計算機硬件與軟件
計算機(Computer)由硬件(Hardware)和軟件(Software)組成,硬件是看得見、摸得著的電子機械設備,如機箱、主板、硬盤、光盤、U盤、電源、顯示器、鍵盤、鼠標、打印機、電纜等。軟件是依附在硬件上面的程序、數據和文檔的集合,是指揮控制計算機系統(包括硬件系統和軟件系統)工作的神經中樞。如果將硬件比作人的身體,那么軟件就相當于人的神經中樞和知識才能。軟件的分類比較復雜。分類方法不同,內容也不同。表1-2從5個不同角度對軟件進行了分類。
表1-2 軟件的分類

計算機工程(Computer Engineering)由硬件工程(Hardware Engineering)和軟件工程(Software Engineering)組成。硬件工程是研究硬件生產和硬件管理的工程學科,其內容包括計算機及網絡硬件的分析、設計、生產、采購、驗收、安裝、培訓、維護。軟件工程是研究軟件生產和軟件管理的工程學科,其內容包括市場調研、正式立項、需求分析、項目策劃、概要設計、詳細設計、編程、測試、試運行、產品發布、用戶培訓、產品復制、實施、系統維護、版本升級。由于軟件的生產和管理比硬件復雜,積累的經驗不如硬件那么豐富,所以軟件工程的研究成為一個長期的熱點。
【例1-1】 請讀者根據自身環境,規劃、設計、安裝一個校園網。這是一個硬件工程,其中要完成的工作內容包括:制定設計方案,網絡設備的選型、配置、采購、驗貨、布線、安裝、調試、運行和交付。在安裝和調試中,又要安裝和調試許多軟件,如網絡操作系統、數據庫管理系統、教學軟件系統、辦公自動化系統、防火墻及殺毒軟件等。
由于有這么多軟件也需要選型、配置、采購、安裝、調試,所以在今天,除了生產硬件的廠商之外,純粹的“硬件工程”幾乎不存在,大多數硬件工程都與軟件有關,于是就出現了一個新名詞“網絡工程”,它是介于硬件工程和軟件工程之間的系統工程,人們有時也稱它為“系統集成工程”。
2.軟件定義
為了弄清軟件工程的概念,首先要了解程序和軟件的概念。一般認為,程序是計算機為完成特定任務而執行的指令的有序集合。站在應用的角度可以更通俗地理解為
面向過程的程序 = 算法 + 數據結構
面向對象的程序 = 對象 + 消息
面向構件的程序 = 構件 + 構架
通常,軟件有以下定義:
軟件 = 程序 + 數據 + 文檔
這里的“程序”,是對計算機任務的處理對象和處理規則的描述;這里的“文檔”,是為了理解程序所需的詳細描述性資料;這里的“數據”,主要是軟件系統賴以運行的初始化數據。
上述定義看起來很簡單,實際上卻來之不易。表1-3列出了美國人對軟件定義的認識過程。直到今天,仍然有少數人認為:“軟件就等于程序”。這些人在軟件開發過程中,上來就寫程序,而不是寫文檔。軟件工程大師Roger S Pressman對這些人提出了尖銳的批評:“越早開始寫代碼的人,就是越遲完成代碼的人”。
表1-3 美國人對軟件定義的認識過程

至于對管理文檔的全面認識,那就更晚了。直到1974年,美國人才開始認識到軟件需要管理。1984年,美國人開始認識到軟件管理是一個過程管理,或是一個管理過程。1991年,出現了軟件過程能力成熟度模型CMM(Capability Maturity Model for Software)1.0版,人們研究了軟件過程管理的具體內容與方法,并將軟件開發和管理中產生的各種文檔叫做“軟件工作產品”,而將最后交付給用戶使用的軟件工作產品叫做“軟件產品”。1996年,出現了統一建模語言UML 0.9版,稱軟件管理文檔為“管理制品”,稱軟件開發文檔為“技術制品”,兩者合稱為“制品(Artifact)”。
3.文檔的重要性
文檔在軟件工程中特別重要,文檔是否規范與齊全,是衡量軟件企業是否成熟的重要標志之一。軟件文檔分為開發文檔和管理文檔兩大類。開發文檔主要由項目組書寫,用于指導軟件開發與維護;管理文檔主要由軟件工程管理部門書寫,用于指導軟件管理和決策。兩類文檔的標準、規范和編制模板,全公司范圍內要統一,這一工作由軟件工程管理部門完成。開發文檔是指導軟件開發與維護的文檔,開發與維護中所有的程序,都是按照開發文檔的要求編寫與實現的。軟件工程規定:文檔必須指揮程序,而決不允許程序指揮文檔;文檔與程序必須保持高度一致,而決不允許程序脫離開文檔。
開發文檔本身具有嚴格的層次關系和依賴關系,這種關系反映在如下的覆蓋關系之中,即有
(1)《目標程序》覆蓋《源程序》;
(2)《源程序》覆蓋《詳細設計說明書》;
(3)《詳細設計說明書》覆蓋《概要設計說明書》;
(4)《概要設計說明書》覆蓋《需求分析規格說明書》;
(5)《需求分析規格說明書》覆蓋《用戶需求報告》;
(6)《用戶需求報告》覆蓋《軟件合同》/《軟件任務書》。
管理文檔本身具有嚴格的時序關系,這種時序關系反映在如下的軟件過程之中,而過程由一系列的時間序列所組成:
(1)需求分析過程管理文檔;
(2)軟件策劃過程管理文檔;
(3)軟件設計過程管理文檔;
(4)軟件實現過程管理文檔;
(5)軟件測試過程管理文檔;
(6)軟件維護過程管理文檔;
(7)軟件過程改進管理文檔。
成熟的軟件企業,都有一套自己的開發文檔和管理文檔編寫標準或編寫模板,在企業內部嚴格執行。
4.軟件的最新定義
軟件 = 知識+程序+數據+文檔
定義中增加了“知識”。對這一定義的討論正在進行。正方認為:因為軟件是知識在網絡上的體現,所以這個定義非常好。反方認為:程序、數據、文檔本身就是知識的載體與表現,所以這個定義有些畫蛇添足的意味。
- 史鐵強《大學俄語(7)(東方新版)》學習指南【詞匯短語+課文精解+全文翻譯+練習答案】
- 揚州大學外國語學院357英語翻譯基礎[專業碩士]歷年考研真題及詳解
- 大學網球教程
- 2020年安徽公務員錄用考試專項教材:資料分析【考點精講+典型題(含歷年真題)詳解】
- 中級財務會計教程與案例
- 莊繹傳《英漢翻譯簡明教程》筆記和課后習題詳解
- 2019年安徽省選聘高校畢業生到村任職考試《行政職業能力測試》考點精講及典型題(含歷年真題)詳解
- Visual FoxPro數據庫與程序設計方法
- 于春遲《出版管理學》筆記和課后習題(含典型題)詳解
- 知識協同工作流建模、服務規劃與服務組合
- 中南大學外國語學院211翻譯碩士英語[專業碩士]歷年考研真題及詳解
- 虛擬現實技術基礎與應用
- 對外經濟貿易大學英語學院761基礎英語歷年考研真題及詳解
- 數字電路與邏輯設計
- 印刷質量與標準化