軟件工程第一講教案_第1頁
軟件工程第一講教案_第2頁
軟件工程第一講教案_第3頁
軟件工程第一講教案_第4頁
軟件工程第一講教案_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

教案首頁

周次.................日期課時序

課題軟件工程概述

教學目的了解軟件工程相關概念

要求

重點軟件危機、軟件工程

難點軟件危機、軟件工程、軟件開辟模型

教學過程第一章軟件工程概述(2*459

設計第一節軟件(30')

及第二節軟件工程概念(30')

時間分配第三節軟件生存周期與軟件開辟模型(30')

教學場所使用

或者教學方教具

課后記

授課教師..................

1

第一章軟件工程概述

1.1牛

軟件是一種產品,同時又是開辟和運行產品的載體。作為一種產品,表達了

由計算機硬件體現的計算潛能。不管它是駐留在設備中,還是在主機中,軟件是

一個信息轉換器,能夠產生、管理、獲取、修改、顯示或者轉換信息。這些信息

可以很簡單,如一個bit,也可以很復雜,如多媒體信息。作為開辟運行產品

的載體,軟件是計算機工作的基礎、信息通信的基礎,也是創建和控制其他程

序的基礎。

信息是21世紀最重要的產品,軟件充分地體現了這一點,軟件處理數據,

使得這些數據更為實用;軟件管理商業信息增強了商業競爭力;它不僅提供了通

往全球信息網絡的途徑;而且也提供了以各種形式獲取信息的手段。

1.1.1軟件的產生與發展

1.程序設計階段

在計算機發展早期階段(20世紀50年代初期至20世紀60年代中期)為

程序設計階段。在這個階段硬件已經通用化,而軟件的生產卻是個體化的。這時,

由于程序規模小,幾乎沒有什么系統化的標準方法可遵循。對軟件的開辟沒有任

何管理方法,一旦任務超時或者成本提高,程序員才開始彌補。在通用的硬件已

經非常普遍的時候,軟件卻相反,對每一類應用均需自行再設計,應用范圍很有

限。軟件產品處在初級階段,大多數軟件都是由使用者自己開辟,例如書寫軟件,

使其運行,如果有問題,需要解決等等,因為是個人化的軟件環境。設計往往僅

是人們頭腦中的一種含糊想法,而根本就不存在文檔。

2.程序系統階段

計算機系統發展的第二階段(20世紀60年代中期到70年代末期)為程

序系統階段。多道程序設計、多用戶系統引入了人機交互的新概念。交互技術打

開了計算機應用的新世界和硬件和軟件配合的新層次,浮現了實時系統和第一代

數據庫管理系統。這個階段另一個特點就是軟件產品的使用和軟件作坊的浮現。

開辟出軟件可以在較寬廣的范圍中應用。主機和微機上的程序能夠有數百甚至上

千的用戶。

在軟件的使用中,當發現錯誤時需要糾正程序源代碼;當用戶需求發生變化

時需要修改;當硬件環境變化時需要適應,將這些活動統稱為軟件維護。在軟件

維護上所花費的精力以驚人的速度消耗資源。更為嚴重的是,許多程序的個人化

特性使得根本不能維護它們。于是“軟件危機”浮現了。

3.軟件工程階段

2

計算機系統發展的第三階段始于20世紀70年代中期并跨越了近十年,

稱為軟件工程階段。在這一階段,以軟件的產品叱、系列化、工程化、標準化為

特征的軟件產業發展起來,打破了軟件生產的個體化特征,有了軟件工程化的設

計原則、方法、標準可以遵循。在分布式系統中,各臺計算機同時地執行某些功

能,并與其他計算機通訊,極大地提高了計算機系統的復雜性。廣域網、局域網、

高帶寬數字通信以及對即時數據訪問需求的增加都對軟件開辟提出了更高的要

求。

4.第四階段

計算機發展的第四階段已經再也不著重于單臺計算機系統和程序,而是面向

計算機和軟件的綜合影響。由復雜的操作系統控制的強大的桌面機、廣域網絡

和局域網絡,配以先進的軟件應用已成為標準。計算機體系結構迅速地從集中

的主機環境轉變為分布的客戶/服務器環境。世界范圍的信息網提供了一個基本

結構,信息高速公路卻網際空間連通已成為令人關注的熱點問題。事實上,

Internet可以看做是能夠被單個用戶訪問的軟件,計算機發展正朝著社會信息

化和軟件產業化方向發展,從技術的軟件工程階段過渡到社會信息化的計算機

系統。隨著第四階段的發展,一些新技術開始浮現。面向對象技術將在許多領

域中迅速取代傳統軟件開辟方法。

表1-1給出了四個發展階段典型技術的比較。

表1-1四個階段典型技術”

?

階段3第一階段一第二階段“第三階段,第四階段一

3AP

yPP

典”?面向批處理?,多用戶?分布式系統P?強大的桌面系統,

型“?有限的分布.?實時/?嵌入“智能”。?面向對象技術

技―?自定義軟件??數據庫,?低成本硬件/?專家索林?

?軟件產品,?消費者的影響,?人工神經網絡“

dy?并行計算,

p?網絡計其2

1.1.2軟件定義

計算機系統是通過運行程序來實現各種不同的應用。把各種不同功能的程

序,包括用戶為自己的特定目的編寫的程序、檢查和診斷機器系統的程序、支持

用戶應用程序運行的系統程序、管理和控制機器系統資源的程序等通常稱為軟

件。它是計算機系統中與硬件相互依存的另一部份,與硬件合為一體完成系統功

能。軟件定義如下:

(1)在運行中能提供所希翼的功能和性能的指令集(即程序);

(2)使程序能夠正確運行的數據結構;

3

(3)描述程序硼制過程、方法所用的文檔。

隨著計算機應用的日益普及,軟件變得越來越復雜,規模也越來越大,這就

使得人與人、人與機器間相互溝通,保證軟件開辟與維護工作的順利進行顯得特

別重要,因此,文檔(即各種報告、說明、手冊的總稱)是不可缺少的。特殊是

在軟件日益成為產品的今天,文檔的作用就更加重要。

1.1.3軟件的特點

在計算機系統中,軟件是一個邏輯部件,而硬件是一個物理部件。因此,軟

件相對硬件而言有許多特點。為了能全面、正確地理解計算機軟件及軟件工程

的重要性,必需了解軟件的特點。軟件的特點可歸納如下。

1.軟件是一種邏輯實體,而不是具體的物理實體,于是它具有抽象性。這

個特點使它與計算機硬件、或者其他.匚程對象有著明顯的差別。人們可以把它

記錄在介質上,但卻無法看到軟件的形態,而必須通過測試、分析、思量、

判斷去了解它的功能、性能及其他特性。

2.軟件是通過人們的智力活動,把知識與技術轉化成信息的一種產品,是

在研制、開辟中被創造出來的。一旦某一軟件項目研制成功,以后就可以大量

地復制同一內容的副本。即其研制成本遠遠大于其生產成本。軟件故障往往是

在開辟時產生而在測試時沒有被發現的問題。所以要保證軟件的質量,必須著

重于軟件開辟過程,加強管理和減少故障。

3.在軟件的運行和使用期間,沒有硬件那樣的機械磨損、老化問題。軟件

維護比硬件維護要復雜得多,與硬件的維護有著本質的差別,參閱圖1-k圖

1-2和圖1-3o圖1-1所示的是硬件的故障率隨時間變化的曲線,圖1-2所示的

是在理想情況下軟件故障率隨時間變化的曲線,圖1-3所示的是軟件的實際故

障率曲線。

4.軟件的開辟和運行時常受到計算機系統的限制,對計算機系統有著不同

程度的依賴關系。在軟件的開辟和運行中必須以硬件提供的條件為基礎。為了

消除這種依賴關系,在軟件開辟中提出了軟件移植的問題,并且把軟件的可移

植性作為衡量軟件質量的因素之一。

5.軟件的開辟尚未徹底擺脫手工的開辟方式。由于傳統的手工開辟方式仍

然占領統治地位,軟件開辟的效率受到很大的限制。因此,應促進軟件技術發

展,提出和采用新的開辟方法。例如近年來浮現的充分利用現有軟件的復用技

術、自動生成技術和其它一些有效的軟件開辟工具或者軟件開辟環境,既方便

了軟件開辟的質量控制,還提高了軟件的開辟效率。

6.軟件的開辟費月越來越高,成本相當昂貴。軟件的研制工作需要投入大

量的、復雜的、高強度的腦力勞動,需要較高的成本。

7.軟件的開辟是一個復雜的過程,于是管理是軟件開辟過程中必不可少內

4

容。

圖17硬件的故障率隨時間變化的曲線「

時間?

圖1-2理想情況下的軟件故障率隨時間變化的曲線

5

圖1-3軟件的實際故障率曲線〃

1.1.4軟件的分類

在工作和學習中,時常接觸到各式各樣的軟件。那末這些數量眾多的軟件究

竟歸為哪種類型,這就需要考慮對計算機軟件進行分類的依據。但事實上由于人

們與軟件的關系各不相同且所關心軟件的側重點也不相同,所以要給出計算機軟

件一個科學的、統一的嚴格分類標準是不現實的。但對軟件的類型進行必要的劃

分對于根據不同類型的工程對象采用不同的開辟和維護方法是很有價值的,因此

有必要從不同角度對計算機軟件做適當的分類。

1.基于軟件的功能劃分

(1)系統軟件:是與計算機硬件密切配合以使計算機的各個部件與相關軟件

及數據協調、高效工作的軟件。例如:操作系統、數據庫管理系統等。系統軟件

在工作時頻繁地與硬件交往,以便為用戶服務,共享系統資源,在這中間伴有著

復雜的進程管理和復雜的數據結構的處理。系統軟件是計算機系統必不可少的重

要組成部份。

(2)支撐軟件:它是協助用戶開辟軟件的工具性軟件,包括匡助程序人員開

發軟件產品的工具和匡助管理人員控制開辟的進程的工具。可劃分為:

?普通類型:包括文本編輯程序、文件格式化程序、程序庫系統等。

?支持需求分析:包括PSL/PSA問題描述語言、問題描述分析器、關系數

據庫系統、一致性檢驗程序等。

6

?支持設計:包括圖形軟件包、結構化流程圖繪圖程序、設計分析程序、程

序結構圖編輯程序等。

?支持實現:包括編譯程序、交叉編譯程序、預編譯程序、連接編譯程序等。

?支持測試:包括靜態分析程序、符號執行程序、摹擬程序、測試覆蓋檢驗

程序等。

?支持管理:包括PERT進度計劃評審方法、繪圖程序、標準檢驗程序和庫

管理程序等。

(3)應用軟件:是在特定領域內開辟的,為特定目的服務的一類軟件。現

在兒乎所有的國民經濟領域都使用了計算機,為這些計算機應用領域服務的應用

軟件種類繁多。其中商業數據處理軟件是占比例最大的一類,工程與科學計算軟

件大多屬于數值計算問題。應用軟件還包括計算機輔助設計/計算機輔助創造

(CAD/CAM)>系統仿真、智能產品嵌入軟件(如汽車油耗控制、儀表盤數字

顯示、剎車系統),以及人工智能軟件(如專家系統、模式識別)等,此外,在

事務管理、辦公自動化,中文信息處理、計算機輔助教學(CAI)等方面的軟件

也得到了迅速發展,產生了驚人的生產效率和巨大的經濟效益。

2.基于軟件工作方式劃分

?實時處理軟件:指在事件或者數據產生時,即將處理,并及時反饋信號,

控制需要監測和控制的過程的軟件。主要包括數據采集、分析、輸出三部份,

其處理時間是應嚴格限定的,如果在任何時間超出了這一限制,都將造成事故。

?分時軟件:允許多個聯機用戶同時使用計算機。系統把處理機時間輪流分

配給各聯機用戶,使各用戶都感到只是自己在使用計算機的軟件。

?交互式軟件,能實現人機通信的軟件。這種軟件接收用戶給出的信息,但

在時間上沒有嚴格的限定,這種工作方式賦予用戶很大的靈便性。

?批處理軟件:把一組輸入作業或者一批數據以成批處理的方式一次運行,

按順序逐個處理的軟件。

3.基于軟件規模的劃分

根據開辟軟件所需的人力、時間以及完成的源程序行數,可劃分為下述六種

不同規模的軟件。

?微型軟件:指一個人在幾天之內完成的、程序不超過500行語句且僅供個

人專用的軟件。通常這種軟件沒有必要做嚴格的分析,也不必要有完整的設計、

測試資料。

?小型軟件:一個人半年之內完成的2000行以內的程序。這種程序通常沒

有與其他程序的接口。但需要按一定的標準化技術、正規的資料書寫以及定期的

7

系統審查,只是沒有大題目那樣嚴格。

?中型軟件:5個人以內在一年多時間里完成的5000、50000行的程序。中

型軟件開始浮現了軟件人員之間、軟件人員與用戶之間的聯系、協調的配合關系

問題。于是計劃、資料書寫以及技術審查需要比較嚴格地進行。在開辟中使用系

統的軟件工程方法是徹底必要的,這對提高軟件產品質量和程序人員的工作效率

起著重要的作用。

?大型軟件:510個人在兩年多的時間里完成的50000^100000萬行的程

序。參加工作的軟件人員需要按二級管理。在任務完成過程中,人員調整往往不

可避免。因此會浮現對新手的培訓和逐步熟悉工作的問題。對于這樣規模的軟件,

采用統一的標準,實行嚴格的審瓷是絕對必要的。由于軟件的規模龐大以及問題

的復雜性,往往在開辟的過程中浮現一些事先難于做出估計的不測事件。

?甚大型軟件:100?1000人參加用4~5年時間完成的具有100萬行程序

的軟件項目。這種甚大型項目可能會劃分成若干個子項目,每一個子項目都是一

個大型軟件。子項目之間具有復雜的接口。例如,實時處理系統、遠程通信系統、

多任務系統、大型操作系統、大型數據庫管理系統通常有這樣的規模。很顯然,

如果這種問題沒有軟件工程方法的支持,它的開辟工作是不可想象的。

?極大型軟件:2000^5000人參加,10年內完成的1000萬行以內的程序。

這種軟件很少見,往往是軍事指揮、彈道導彈謹防系統等。

可以看出,規模大、時間長、不少人參加的軟件項目,其開辟工作必須要有

軟件工程的知識做指導。而規模小、時間短、參加人員少的軟件項目也得用到軟

件工程概念,遵循一定的開辟規范,其基本原則是一樣的。

4.基于軟件失效的影響進行劃分

工作在不同領域的軟件,在運行中對可靠性乜有不同的要求。事實上,隨著

計算機進入國民經濟等各個重要領域,其軟件的可靠性越來越顯得重要。人們一

般稱這種軟件為關鍵軟件,其特點在于:

(1)可靠性質量要求高;

(2)常與完成重要功能的大系統的處理部件相聯;

(3)含有的程序可能對人員、公眾、設備或者設施的安全造成影響。還可

影響到環境的質量和關系到國家的安全和機密。

5.基于軟件服務對象的范圍劃分

軟件工程項目完成后可以有兩種情況提供給用戶:

.定制軟件:是受某個特定客戶(或者少數客戶)的委托,由一個或者多個

軟件開辟機構在合同的約束下開辟出來的軟件。

8

.產品軟件,是由軟件開辟機構開辟出來直接提供給市場,或者是為千百個

用戶服務的軟件。

1.2軟件工程概念

由于微電子學技術的進步,計算機硬件的性能有了很大的提高,而且質量穩

步提高;然而,計算機軟件成本卻不斷上升,質量的保證也不盡如人意,軟件的

開辟的生產率也遠遠不能滿足計算機應用的要求。軟件已經成為限制計算機系統

進一步發展的關鍵因素。

更為嚴重的是計算機系統發展的早期所形成的一系列錯誤概念和做法,已經

嚴重地妨礙了計算機軟件的開辟,甚至有的大型軟件根本無法維護,只能提前報

廢,造成大量人力、物力的浪費,從而導致軟件危機。為了研究解決軟件危機的

方法,計算機科學技術領域中的一門新興的學科逐步形成為了,這就是計算機軟

件工程學。

1.2.1軟件危機與軟件工程定義

1.軟件危機

軟件危機指的是軟件開辟和維護過程中遇到的一系列嚴重問題。軟件危機包

含下述兩方面的問題:如何開辟軟件,怎樣滿足對軟件的日益增長的需求;如何

維護數量不斷膨脹的已有軟件。具體地說,軟件危機主要有下列表現:

?產品不符合用戶的實際需要。因為軟件開辟人員對用戶需求沒有深入準確

的了解,甚至對所要解決的問題還沒有正確認識,就著手編寫程序,而且軟件開

發人員和用戶之間的信息交流往往很不充分,導致用戶對軟件產品不滿意的現象

發生。

?軟件開辟生產率提高的速度遠遠不能滿足客觀需要,軟件的生產率遠遠低

于硬件生產率和計算機應用的增長速度,使人們不能充分利用現代計算機硬件提

供的巨大潛力。

?軟件產品的質量差。軟件可靠性和質量保證的定量概念剛剛浮現不久,軟

件質量保證技術(審查、復審和測試)沒有貫通到軟件開辟的全過程中,這些都

導致軟件產品發生質量問題。

?對軟件開辟成本和進度的估計往往不許確。實際成本比估計成本有可能高

出一個數量級,實際進度比預期進度遲延幾個月甚至幾年。這種現象降低了軟件

開辟者的信譽。而為了趕進度和節約成本所采取的一些權宜之計又往往降低了軟

件產品的質量,從而不可避免地會引起用戶的不滿。

?軟件的可維護性差。不少程序中的錯誤是難以改正的,實際上不能使這些

程序適應硬件環境的改變,也不能根據用戶的需要在原有程序中增加一些新的功

能。沒能實現軟件的可重用,人們仍然在重復開辟功能類似的軟件。

9

?軟件文檔資料通常既不完整也不合格。計算機軟件不僅包括程序,還應該

包括一整套文檔資料,這些文檔資料應該是在軟件開辟過程中產生出來的,而且

應該和程序代碼徹底一致。軟件開辟的管理人員可以用這些文檔資料來管理和評

價軟件開辟過程的發展狀況;軟件開辟人員可以利用它們作為通信工具,在軟件

開辟過程中準確地交流信息;對于軟件維護人員而言,這些文檔資料更是至關重

要和必不可少的。因為缺乏必要的文檔資料或者文檔資料不合格,必然給軟件開

發和維護帶來許多嚴重的艱難和問題。

?軟件的價格昂貴,軟件成本在計算機系統總成本中所占的比例逐年上升。

由于微電子學技術的進步和生產自動化程度不斷提高,導致硬件成本逐年下降,

然而軟件開辟需要大量人力,軟件成本上升。

2.軟件工程的定義

首先,采用工程化方法和途徑來開辟與維護軟件。軟件開辟是一種組織良好、

管理嚴密、各類人員協同配合、共同完成的工程項目。必須充分吸取和借鑒人類

長期以來從事各種工程項目所積累的行之有效的原理、概念、技術和方法。應該

推廣使用在實踐中總結出來的開辟軟件的成功技術和方法,并旦研究探索更好更

有效的技術和方法,盡快消除在計算機系統早期發展階段形成的一些錯誤概念和

做法。將軟件的生成問題在時間上分成若干階段以便于分步而有計劃的分工合

作,在結構上簡化若干邏輯模塊。把軟件作為工程產品來處理,按計劃、分析、

設計、實現、測試、維護的周期來進行生產。

其次,應該開辟和使用更好的軟件工具。在軟件開辟的每一個階段都有許多

繁瑣重復的工作需要做,在適當的軟件工具輔助下,開辟人員可以把這種工作

做得既快又好。如果把各個階段使用的軟件工具有機地集合成一個整體,支持

軟件開發的全過程,則稱為軟件工程支撐環境。

最后,采取必要的管理措施。軟件產品是把思線、概念、算法、組織、流程、

效率、質量等多方面問題融為一體的產品。但它本身是無形的,所以有不同于一

般的工程項目的管理。它必須通過人員組織管理,項目計劃管理,配置管理等來

保證軟件按時高質量完成。

總之,為了解決軟件危機,既要有技術措施]包括方法和工具),又要有必

要的組織管理措施。軟件工程正是從管理和技術兩方面研究如何更好地開辟和維

護計算機軟件的一門新興學科。

軟件工程是指導計算機軟件開辟和維護的一門工程學科。采用工程的概念、

原理、技術和方法來開辟與維護軟件,把經過時間考驗而證明正確的管理技術和

當前能夠得到的最好的技術方法結合起來,這就是軟件工程。

1968年在聯邦德國召開的國際會議上正式提出并使用了軟件工程這個術

語,運用工程學的基本原理和方法來組織和管理軟件生產。后來還發展了與軟件

有關的心理學、生理學和經濟學等方面的學科。在這期間,研究軟件工程的專家

學者們陸續提出了100多條關于軟件工程的準則。這100多條軟件工程準則可以

10

概括為下述六條基本原則。

(1)用分階段的生存周期計劃嚴格管理

一個軟件從定義、開辟、使用和維護,直到最終被廢棄,要經歷一個漫長的

時期,通常把軟件經歷的這個漫長的時期稱為生存周期。在軟件開辟與維護的漫

長過程中,需要完成許多不同性質的工作,所以應把軟件生存周期劃分為若干個

階段,并相應的制定出可行的計劃然后按照這個計劃對軟件的開辟與維護工作進

行管理。不同層次的管理人員都必須嚴格按照計劃各盡其職地管理軟件開辟與維

護工作,絕不能受客戶或者上級人員的影響而擅自背離預定計劃。

(2)堅持進行階段評審

軟件的質量保證工作不能等到編碼階段結束之后再進行。其理由是:①大部

分錯誤是在編碼之前造成的,例如,根據統計,設計錯誤占軟件錯誤的63%,

編碼錯誤僅占37%;②錯誤發現與改正得越晚,所需付出的代價也越高。因此,

在每一個階段都進行嚴格的評審,以便及早發現在軟件開辟過程中所犯的錯誤,

是一條必須遵循的重要原則。

(3)實行嚴格的產品控制

在軟件開辟過程中不應隨意改變需求,因為改變一項需求往往需要付出較高

的代價。但是,在軟件開辟過程中改變需求又是難免的,由于外部環境的變化,

相應地改變用戶需求是一種客觀需要,顯然不能硬性禁止客戶提出改變需求的要

求,而只能依靠科學的產品控制技術來順應這種要求。也就是說,當改變需求時,

為了保持軟件各個配置成份的一致性,必須實行嚴格的產品控制,其中主要是實

行基準配置管理。所謂基準配置又稱為基線配置,它們是經過階段評審后的軟件

配置成份(各個階段產生的文檔或者程序代碼)。基準配置管理由稱為變動控制:

一切有關修改軟件的建議,特殊是涉及到對基準配置的修改建議,都必須按照嚴

格的規程進行評審,獲得批準以后才干實施修改,絕對不能隨意進行修改。

(4)采用現代程序設計技術

從提出軟件工程的概念開始,人們向來把主要精力用于研究各種新的程序設

計技術。20世紀60年代末提出的結構程序設計技術,其風格為清晰第一,效率

第二,已經成為絕大多數人公認的先進的程序設計技術。以后又進一步發展出各

種結構分析(SA)與結構設計(SD)技術。實踐表明,采用先進的技術既可提

高軟件開辟的效率,又可提高軟件維護的效率。

(5)應能清晰地審查結果

軟件產品不同于普通的物理產品,它是看不見摸不著的邏輯產品。軟件開辟

人員(或者開辟小組)的工作發展情況可見性差,難以準確度量,從而使得軟

件產品的開辟過程比普通產品的開辟過程更難于評價和管理。為了提高軟件開

辟過程的可見性,更好地進行管理,應該根據軟件開辟項目的總目標及完成期限,

規定

11

開辟組織的責任和產品標準,從而使得所得到的結果能夠清晰地被審查。

(6)合理安排軟件開辟小組的人員

軟件開辟小組的人員合理安排的原則是人員應該少而精,即小組的組成人員

的素質應該好,而人數不應過多。高素質的人員會大大提高軟件的開辟效率,且

明顯減少軟件中的錯誤。止匕外,隨著開辟開小組人員數目的增加,因交流問題和

討論情況而造成的通信開消也急劇增加,所以要保證軟件開辟小組人員少而精。

最后要強調的足:必須不斷靈便改進軟件工程實踐。要按照軟件工程的基本

原理實現軟件的工程化生產,僅遵循上述這六條基本原則是不夠的。因為,這樣

并不能保證軟件開辟的過程跟上時代的前進和技術的進步,因此必須不斷靈便改

進軟件工程實踐。按照這個要求,就要積極主動的采用新的軟件技術,而且要注

意不斷總結經驗。例如:采集出錯類型和問題報告等數據,這些數據不僅可以用

來評價軟件技術的效果,而且也可以用來指明必須重點開辟的軟件工具和應該優

先研究的技術。

1.2.2軟件工程研究的基本內容與目標

從內容上劃分,軟件工程學可分為理論,結構,方法,工具,環境,管理,

規范等。理論與結構是軟件開辟的技術基礎,包括程序正確性證明理論,軟件可

靠性理論,軟件成本估算模型,軟件開辟模型,模塊劃分原理等。軟件開辟技術

包括軟件開辟方法學,軟件工具和軟件開辟環境。良好的軟件工具可促進方法的

研制,而先進的軟件開辟方法能改進工具。軟件工具的集成構成軟件開辟環境。

管理技術是提高開辟質量的保證,軟件工程管理包括軟件開辟管理和軟件經濟管

理,前者包括人員分配,制定計劃,確定標準與配置,而后者的主要內容有成本

估算和質量評價。

軟件工程學研究的基本目標:

(1)定義面向計?劃、開辟維護整個軟件生存周期的良好的方法學。

(2)確定的軟件成份,記錄軟件生存周期每一步的軟件文件資料,按步顯

示軌跡。

(3)可預測的結果,在生存周期中,每隔一定時間可以進行復審。

軟件工程學的最終目的,是以較少投資獲得易維護、易理解、可靠、高效率

的軟件產品。軟件工程學是研究軟件結構、軟件設計與維護方法、軟件工具與環

境、軟件工程標準與規范、軟件開辟技術與管理技術的相關理論。

1.2.3軟件工程的原則

為了開辟出低成本高質量的軟件產品,軟件工程學應遵守以下基本原見。

1.分解

12

分解是人類分析解決復雜問題的重要手段和基本原則,其基本思想是從時間

上或者是從空間上將一個復雜抽象問題分成若干個較小的、相對獨立的、容易求

解的子問題,然后分別求解。軟件瀑布模型,結構化分析方法,結構化設計方

法,Jackson方法,模塊化設計都運用了分解的原則。

2.抽象和信息隱蔽

盡量將可變因素隱敏在一個模塊內,將怎樣做的細節隱臧在下層,而將做什

么抽象到上一層做簡化,從而保證模塊的獨立性。這就是軟件設計獨立性要遵守

的基本原則。模塊化和局部性的設計過程使用了抽象和信息隱蔽的原則。

3.一致性

研究軟件工程方法的目的之一,就是要使開辟過程標準化,使軟件產品設計

有共同遵循的原則。要求軟件文件格式一致,工作流程一致,軟件開辟過程要標

準化,統一化。

4.確定性

軟件開辟過程要用確定的形式表達需求,表達的軟件功能應該是可預測的,

用可測試性,易維護性,易理解性,高效率的指標來具體度量軟件質量。

組織實施軟件工程項目,從技術和管理上采取了多項措施后,項目的成功

主要要達到的目標有:開辟成本較低,軟件功能能達到用戶要求并具有較好的性

能,軟件具有良好的可移植性,易于維護且維護費用較低,軟件的開辟工作能按

時完成及時交付實用。

1.3軟件生存周期與軟件開辟模型

軟件工程采用的生存周期方法就是從時間角度對軟件的開辟與維護這個復

雜問題進行分解,將軟件生存漫長的時期分為若干階段,每一個階段都有其相對

獨立的任務,然后逐步完成各個階段的任務。

1.3.1軟件生存周期

軟件生存周期就是從提出軟件產品開始,直到該軟件產品被淘汰的全過程。

研究軟件生存周期是為了更科學地、有效地組織和管理軟件的生產,從而使軟件

產品更可靠、更經濟。采用軟件生存周期來劃分軟件的工程化開辟,是軟件開辟

分階段挨次進行。前一個階段任務的完成是后一個階段的前提和基礎,而后一個

階段通常是將前一個階段提出的方案進一步具體化。每一個階段的開始與結束都

有嚴格的標準。前一個階段結束的標準就是與其相鄰的后一個階段開始的標準。

每一個階段結束之前都要接受嚴格的技術和管理評審。不能通過評審時,就要重

復前一階段的工作直至通過上述評審后才干結束。采用軟件生存周期的劃分方

法,是每一階段的任務相對獨立,有利于簡化整個問題且便于不同人員分工協作。

而且其嚴格而科學的評審制度保證了軟件的質量,提高了軟件的可維護性。從而

13

大大提高了軟件開辟的成功率和生產率。

軟件生存周期普通可分為以下階段:

S1:問題定義

S2:可行性研究

S3:需求分析

S4:概要設計

S5:詳細設計

S6:編碼

S7:測試

S8:運行與維護

在軟件的研制和開辟過程中':①要了解和分析用戶的問題,以及經濟、技

術和時間等方面的可行性。②將用戶的需求規范化、形式化。編寫成需求說明書

及初步的系統用戶手冊,提交評審。③將軟件需求設計為軟件過程描述,即設計

人員將以確定的各項需求轉化成一個相應的體系結構。結構的每一組成部份都是

意義明確的模塊,每一個模塊都與某些需求相對應(概要設計)。然后對每一個

模塊的具體任務進行具體的描述(詳細設計)。④編代碼,就是把過程描述編

為機器可執行的代碼。⑤測試,發現錯誤,進行改正。⑥維護,包括故障的排

除以及為適應使用環境的變化和用戶對軟件提出新的要求所作的修改。

軟件生存期也可以分為三個大的階段:計劃階段。開辟階段和維護階段。

⑴計劃階段

這里又可分兩步:軟件計劃和需求分析。第一步,因為軟件是計算機系統中

一個子系統,這樣非但要從確定的軟件子系統出發,確定工作域,即確定軟件總

的目標、功能等;開辟這樣的軟件系統需要哪些資源(人力和設備)。作出成本

估算,面且還要求作出可行性分析,即在現有資源與技術的條件下能否實現這樣

的目標;最后要提出進度安排,并寫出軟件計劃文檔。上述問題都要進行管理評

審。第二步,在管理評審通過以后,要確定系統定義和有效性標準(軟件驗收標

準),寫出軟件需求說明書。還要開辟一個初步用戶手冊,這里要進行技術評審。

技術評審通過以后。再進行一次對軟件計劃的評審,因為這時對問題有了進一步

的了解。而計劃制定時,數據較少,且經驗不足,所以對制定的計劃需要進行多

次修改,以盡量滿足各種要求,然后再進入到開辟階段。

⑵開辟階段

14

開辟階段要經三個步驟:設計、編礙和測試。首先對軟件進行結構設計,定義

接口,建立數據結構,規定標記。接著對每一個模塊進行過程設計、編碼和單元

測試。最后進行組合測試和有效性測試,對每一個測試用例和結果都要進行評

審。

(3)維護階段

首先要做的工作,就是配置評審,檢查軟件文檔利代碼是否齊全,兩者是否

一致,是否可以維護、確定維護組織和職責,并定義表明系統錯誤和修改報告的

格式等。維護可分為改正性維護、完善性維護和適應性維護等。維護內容廣泛,

有人把維護看成是第二次開辟。要適應環境的變化,就要擴充和改進,但不是建

立新系統。維護的內容應該通知用戶,要得到用戶的認可。然后則可進入修改,

修改不只是代碼修改,必須要有齊全的修改計劃、詳細過程以及測試等文檔。

以上簡要的介紹了軟件生存周期各個階段的主要任務和評審標準。以后本書

將環繞軟件生存周期的各個階段詳細講述其所要完成的任務、完成這些任務所需

的技術方法和輔助工具、軟件開辟和維護的主要管理技術。

1.3.2軟件開辟模型

為了反映軟件生存周期內各種工作應如何組織及周期各個階段應如何銜接,

需要用軟件開辟模型給出直觀的圖示表達。軟件開辟模型是軟件工程思想的具體

化,是實施于過程模型中的軟件開辟方法和工具,是在軟件開辟實踐中總結出來

的軟件開辟方法和步驟。總的說來,軟件開辟模型是跨越整個軟件生存周期的系

統開辟、運作、維護所實施的全部工作和任務的結構框架。

1.瀑布模型

瀑布模型乂稱生存周期模型,由B.M.Boehm提出,是軟件工程的基礎模型。

其核心思想是按工序將問題化簡,將功能的實現與設計分開,便于分工協作。采

用結構化的分析與設計方法,將邏輯實現與物理實現分開。瀑布模型規定了各項

軟件工程活動,包括:制定開辟計劃,進行需求分析和說明,軟件設計,程序編

碼,測試及運行維護。并且規定了軟件生存周期的各個階段如同瀑布流水,逐級

下落,自上而下、相互銜接的固定次序。參閱圖1-4,每項開辟活動均應具有下

述特征。

(1)從上一項活動接收該項活動的工作對象,作為輸入;

(2)利用這一輸入實施該項活動應完成的內容;

(3)給出該項活動的工作結果,作為輸出傳給下一項活動;

(4)對該項活動實施的工作進行評審。若其工作得到確認,則繼續進行下

一項活動,否則返回前項,甚至更前項的活動進行返工。

15

圖1-4瀑布模型。

瀑布模型為軟件開辟和軟件維護提供了一種有效的管理圖式。根據這一圖式

制定開辟計劃、進行成本預算、組織開辟力量,以項目的階段評審和文檔控制為

手段有效地對整個開辟過程進行指導,從而保證了軟件產品及時交付,并達到預

期的質量要求。與此同時,瀑布模型在大量的軟件開辟實踐中也逐漸暴露出它的

嚴重缺點。其中最為突出的缺點是該模型缺乏靈便性,特殊是無法解決軟件需求

不明確或者不許確的問即。這些問題的存在對軟件開辟會帶來嚴重影響,最終可

能導致開辟出的軟件并非用戶真正需要的軟件,并且,由于瀑布開辟模型具有

順序性和相關性,凡后一階段浮現的問題需要通過前一階段的重新確認來解決,

所以這一點在開辟過程完成后才有所察覺,因此其代價十分高昂。而且,隨著

軟件開辟項目規模的口益龐大,由于瀑布模型不夠靈便等缺點引起出的上述問

題顯得更為嚴重。軟件開辟需要人們合作完成,因這人員之間的通訊和軟件工

具之間的聯系以及開辟工作之間的并行和串行等都是必要的,但瀑布模型中并

沒有體現出這一點。

2.螺旋模型

為克服瀑布模型的不足,近年來已經提出了多種其他模型。對于復雜的大型

軟件,開辟一個原型往往達不到要求。螺旋模型將瀑布模型與演化模型結合起來,

并且加入兩種模型均忽略了的風險分析,彌補了兩者的不足。

軟件風險是普遍存在于任何軟件開辟項目中的實際問題。對于不同的項目,

其差別只是風險有大有小而已,在制定軟件開辟計劃時,系統分析員必須回答:

項目的需求是什么,需要投入多少資源以及如何安排開辟進度等一系列問題。然

而,要他們當即給出準確無誤的回答是不容易的,甚至幾乎是不可能的。但系統

分析員又不可能徹底叵避這一問題。憑借經驗的估計出發給出初步的設想便難免

帶來一定風險。實踐表明,項目規模越大,問題越復雜。資源、成本、進度等因

16

素的不確定性越人,承擔項目所冒的風險也越人。總之,風險是軟件開辟不可忽

視的潛在不利因素,它可能在不同程度上傷害到軟件開辟過程或者軟件產品的

質量。軟件風險駕馭的目標是在造成危害之前及時對風險進行識別、分析,采

取對策,進而消除或者減少風險的傷害。螺旋模型沿著螺線旋轉,如圖1?5

所示,在笛卡爾坐標的四個象限上分別表達了四個方面的活動,即:

⑴制]定計劃:確定軟件目標,選定實施方案,弄清項目開辟的限制條件;

(2)風險分析:分析所選方案,考慮如何識別和消除風險;

(3)實施工程:實施軟件開辟;

(4)客戶評估:評價開辟工作,提出修正建議。

初的需求索集

與項罰計"

荔于用戶

度里的計

、初始軟件用型

唱戶畀俗4

二”原

工程最統

圖1-5螺旋模型

沿螺線自內向外每旋轉一圈便開辟出更為完善的一個新的軟件版本。例如,

在第一圈,確定了初步的目標、方案和限制條件以后,轉入右上象限,對風險進

行識別和分析。如果風險分析表明,需求有不確定性,那末在右下的工程象限內,

所建的原型會匡助開辟人員和客戶,考慮其他開辟模型,并對需求做進一步修正。

客戶對工程成果做出評吩之后,給出修正建議。在此基礎上需再次計劃,并進行

風險分析。在每一圈螺線上,做出風險分析的終點是否繼續下去的判斷。假如風

險過大,開辟者和用戶無法承受,項目有可能終止。多數情況下沿螺線的活動會

繼續下去,自內向外,逐步延伸,最終得到所期望的系統。

如果軟件開辟人員對所開辟項目的需求已有了較好的理解或者較大的把握,

則無需開辟原型可采用普通的瀑布模型,這在螺旋模型中可認為是單圈螺線。

與此相反,如果對所開辟項目需求理解較差,則需要開辟原型,甚至需要不止

一個原型的匡助,那就需要經歷多圈螺線。在種情況下,外圈的開辟包含了更多

的活動。也可能某些開辟采用了不同的模型。

螺旋模型適合于大型軟件的開辟,應該說它是最為實際的方法,它吸收了軟

件工程“演化”既念,使得開辟人員和客戶對每一個演化層浮現的風險有所了解,

繼而做出應有的反映。螺旋模型的優越性比起其他模型來說是明顯的,但并非

17

絕對的。要求許多客戶接受和相自化方法并不容易。這個模型的使用需要具有相

當豐富的風險評估經驗和專門知識,如果目風險較大,又未能及時發現,勢必造

成重大損失。此外,螺旋模型是浮現較晚的新模型,遠矚瀑布模型普及,要讓廣

大軟件人員和用戶充分肯定它,還有待于更多的實踐。

3.第四代技術模型

第四代技術(4GT)包含了一系列的軟件工具,它們的共同點是:能使軟件

設計者在較高級別上說明軟件的某些特征。然后軟件工具根據說明自動生成源代

碼。在越高的級別上說明軟件,就能越快地構造出程序。軟件工程的笫四代技術

模型的應用關鍵在于軟件描述的能力,它用一種特定的語言來完成或者以一種用

戶可以理解的問題描述方法來描述須解決的問題。

目前,一個支持第四代技術模型的軟件開辟環境及工具如下:數據庫查詢的

非過程語言,報告生成器,數據控制,屏幕交互及定義,以及代碼生成;高級圖

形功能;電子表格功能。最初,上述的許多工具僅能用于特定應用領域,但今天,

第四代技術環境已經擴展,能夠滿足許多軟件應用領域的需要。

像其他模型一樣,第四代技術模型也是從需求分析開始,理想情況下,用戶

能夠描述出需求,而且這些需求能被直接轉換成可操作原型。但這是不現實的,

因為用戶可能不能確定需要什么;在說明已知的事實時;可能浮現二義性;可能

不能夠或者是不愿意采用一個第四代技術工具可以理解的形式來說明信息,因此,

其他模型中所描述的用戶對話方式在第四代技術模型中仍是一個必要的組成部

分。

對于較小型的應用軟件,使用一個非過程的第四代語言有可能直接從需求分

析過渡到實現。但對于較大的應用軟件,就有必要制訂一個系統的設計策略。對

于較大項目,如果沒有很好地設計,即使使用笫四代技術也會產生不用任何方法

來開辟軟件所遇到的同樣的問題,這些問題包括:低質量、差的可維護性、難以

被用戶接受等。

應用第四代技術的生成功能使得軟件開辟者能夠以一種方式表示期望的輸

出,這種方式使得可以自動生成產生該輸出的代碼。很顯然,相關信息的數據結

構必須已經存在,且能夠被第四代技術訪問。

要將一個第四代技術模型生成的功能變成最終產品,開辟者還必須進行測

試,寫出故意義的文檔,并完成其他軟件工程模型中同樣要求的所有集成活動。

此外,采用第四代技術開辟的軟件還必須考慮維護是否能夠迅速實現。

像其他所有軟件工程模型一樣,第四代技術模型也有優點和缺點。其優點是

極大地降低了軟件的開辟時間,并顯著提高了構迨軟件的生產率。缺點是目前的

第四代技術并不比程序設計語言更容易使用,而且這種工具生成的結果源代碼是

,氐效的”,使用第四代技術開辟的大型軟件系統的可維護性是令人懷疑的,

綜上所述,概括如下:

18

(1)在過去十余年中,第四代技術模型的使用發展得很快,且目前已成為

合用于多個不同的應用領域的方法。與計算機輔助軟件工程(CASE)工具和代

碼生成器結合起來,第四代技術為許多軟件問題提供了可靠的解決方案。

(2)從使用第四代技術模型的公司采集來的數據表明:在小型和中型的應

用軟件開辟中,它使軟件的生產所需的時間大大降低,且使小型應用軟件的分析

和設計所需的時間也降低了。

(3)在大型軟件項目中使用第四代技術,需要同樣的甚至更多的分析、設

計和測試才干獲得實際的時間節省。主要是通過編碼量的減少獲得時間的節省。

因此,第四代技術模型已經成為軟件開辟的一個重要方法。

4.原型模型

原型模型如圖1-6所示,從需求分析開始。軟件開辟者和用戶在一起定義軟

件的總目標,說明需求,并規劃出定義的區域。然后快速設計軟件中對用戶/客

戶可見部份的表示。快速設計導致了原形的建造,原形由用戶/客戶評估,并進

一步求精待開辟軟件的需求。逐步調整原形使之滿足用戶需,這個過程是迭代的。

原型模型的優點和缺點如下所述。

(1)優點

?原型模型法在得到良好的需求定義上比傳統生存周期法好得多,不僅可以處

理含糊需求,而且開辟者和用戶可充分通信。

?原型模型系統可作為培訓環境,有利于用戶培訓和開辟同步,開辟過程也是

學習過程。

?原型模型給用戶以機會更改心中原先設想的、不盡合理的最終系統。

?原型模型可以低風險開辟柔性較大的計算機系統。

?原型模型使系統更易維護、對用戶更友好的機會。

?原型模型使總的開辟費用降低,時間縮短。

19

(2)缺點

?“模型效應”或者“管中窺豹”。對于開辟者不熟悉的領域把次要部份當做主

要框架,做出不切題的原型。

?原型迭代不收斂于開辟者預先的目標。為了消除錯誤,每次更改,次要部份

越來越大,“淹沒”了主要部份。

-原型過快收斂于需求集合,而忽略了一些基本點。

?資源規劃和管理較為艱難,隨時更新文檔也帶來麻煩。

?長期在原型環境二開辟,只注意得到滿意的原型,容易“遺忘”用戶環境和

原型環境的差異。

(3)合用范圍

?特殊合用需求分析與定義規格說明

?設計人機界面

?充作同步培訓工具

?“一次性”的應用

20

?低風險引入新技術

(4)不合用范圍

?嵌入式軟件

?實時控制軟件

?科技數值計算軟件

(5)步驟

S1:弄清用戶/設計者的基本信息需求,本步驟的目標是:

?討論構造原型的過程

-寫出簡明的框架式說明性報告,反映用戶/設計者的信息需求方面的基本看

法和要求。

?列出數據元素和它們之間的關系

?確定所需數據的可用性

?概括出業務原型的任務并估計其成本

?考慮業務原型的可能使用

用戶/設計者的基本責任是根據系統的輸出來清嘶地描述自己的基本需要。

設計者和構造者共同偵責來規定系統的范圍,確定數據的口」用性。系統/構造者

的基本責任是確定現實的設計者期望,估價開辟原型的成本。這個步驟的中心是

設計者和構造者定義基本的信息需求。討論的焦點是數據的提取、過程摹擬。

S2:開辟初始原型系統

目標:建立一個能運行的交互式應用系統來滿足用戶/設計者的基本信息需

求。

在這一步驟中設計者沒有責任,由構造者去負責建立一個初始原型,其中包

括與設計者的需求及能力相適應的對話,還包括采集設計者對初始原型的反映的

設施。

主要工作包括:

?邏輯設計所需的數據庫

?構造數據變換或者生成模塊

21

?開辟和安裝原型數據庫

?建立合適的菜單或者語言對話來提高友好的用戶輸入/輸出接口。

?裝配或者編寫所需的應用程序模塊

?把初始原型交付給用戶/設計者,并且演示如何工作、確定是否滿足設計者

的基本需求、解釋接口和特點、確定用戶/設計者是否能很舒適地使用系統。

本步驟的原則:

?建立模型的速度是關鍵因素,而不是運行的效率。

?初始原型必須滿足用戶/設計者的基本需求。

?初始原型不求完善,它只響應設計者的基本已知需求。

?設計者使用原型必須要很舒適

?裝配和修改模塊,構造者不應編寫傳統的程序

?構造者必須利用可用的技術

?用戶與系統接口必須盡可能簡單,使設計者在用初始原型工作時不致于受

礙。

S3:用原型系統完善用戶/設計者的需求

目標:

?讓用戶/設計者能獲得有關系統的親身經驗,必須使之更好地理解實際內信

息需求和最能滿足這些需要的系統種類。

?掌握設計者做什么,更重要的是掌握設計者對原型系統不滿意些什么。

?確定設計者是否滿足于現有的原型

原則:

?對實際系統的親身經驗能產生對系統的真實理解。

?用戶/設計者總會找到系統第一個版本的問題

?讓用戶/設計者確定什么時候更改是必需的,并控制總開辟時間。

?如果用戶/設計者在一定時間里(比如說一個月)沒有和構造者聯系,那末

22

用戶可能是對系統表示滿意,也可能是遇到某些麻煩,構造者應該與用戶/設計

者聯系。

責任劃分:

系統/構造者在這一步中沒有什么責任,除非設計者需要匡助或者需要信息,

或者設計者在一個相當長的時間里沒有和構造者接觸。用戶/設計者負責把那些

不適合的地方,不合要求的特征和他在現有系統中看到所缺少的信息建立文檔。

這一步驟的關鍵是得到用戶/設計者關于系統的想法,有兒種技術可達到這一

目的:

?讓用戶/設計者鍵入信息,使用原型本身來得到他們的想法。

?利用系統特點,來鍵入信息

?使用日記來記錄信息

當設計者認為進行某些更改是適當的時候,他就與構造者聯系,安排一次會

議來討論所需要的更改。

S4:修改和完善原型系統

目的:

修改原型以便糾正那些由用戶/設計者指出的不需要的或者錯誤的信息。

原則:

?裝配和修改程序模塊,而不是編寫程序。

?如果模塊更改很艱難,則把它拋卻并重新編寫模塊。

?不改變系統的作用范圍,除非業務原型的成本估計有相應的改變。

?修改并把系統返回給用戶/設計者的速度是關鍵。

?如果構造者不能進行任何所需要的更改,如必須即將與用戶/設計者進行對

話。

?設計者必須能很舒適地使用改進的原型。

責任劃分同步驟S2

5.構件組裝模型

23

構件組裝模型導致了軟件的復

溫馨提示

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

評論

0/150

提交評論