官术网_书友最值得收藏!

第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.軟件的最新定義

軟件 = 知識+程序+數據+文檔

定義中增加了“知識”。對這一定義的討論正在進行。正方認為:因為軟件是知識在網絡上的體現,所以這個定義非常好。反方認為:程序、數據、文檔本身就是知識的載體與表現,所以這個定義有些畫蛇添足的意味。

主站蜘蛛池模板: 辽阳市| 合水县| 屏山县| 鄂托克旗| 垦利县| 连云港市| 儋州市| 武功县| 宜良县| 九龙坡区| 凤庆县| 额尔古纳市| 绵竹市| 察哈| 宕昌县| 西贡区| 龙游县| 交城县| 师宗县| 肥西县| 广州市| 永平县| 长春市| 邻水| 元阳县| 赣榆县| 句容市| 温泉县| 怀宁县| 贵阳市| 昭苏县| 三原县| 腾冲县| 勐海县| 松潘县| 广德县| 保康县| 鄄城县| 微山县| 奉新县| 沅陵县|