[轉載]軟體、軟體危機、軟體工程

出處:點空間

1、軟體及其特性

第一個寫軟體的人是Ada(Augusta Ada Lovelace),在1860年代他嘗試爲Babbage(Charles Babbage)的機械式電腦寫軟體。儘管他們的努力失敗了,但他們的名字永遠載入了電腦發展的史冊。

在1950年代,軟體伴隨著第一台電子電腦的問世誕生了。以寫軟體爲職業的人也開始出現,他們多是經過訓練的數學家和電子工程師。1960年代美國大學裏開始出現授予電腦專業的學位,教人們寫軟體。

本世紀中葉軟體產業從零開始起步,在短短的50年的時間裏迅速發展成爲推動人類社會發展的龍頭産業,並造就了一批百萬、億萬富翁。隨著資訊産業的發展,軟體對人類社會性越來越重要。

那麽,如何給軟體定義哪?軟體是什麽?

首先要說明的是,軟體對於人類而言是一個全新的東西,其發展歷史不過四、五十年。人們對軟體的認識經歷了一個由淺到深的過程。

在電腦系統發展的初期,硬體通常用來執行一個單一的程式,而 這個程式又是爲一個特定的目的而編制的。早期當通用硬體成爲平常事情的時候,軟體的通用性卻是很有限的。大多數軟體是由使用該軟體的個人或機構研製的,軟 體往往帶有強烈的個人色彩。早期的軟體發展也沒有什麽系統的方法可以遵循,軟體設計是在某個人的頭腦中完成的一個隱藏的過程。而且,除了程式代碼外往往欠 缺軟體規格書等文件。

從60年代中期到70年 代中期是電腦系統發展的第二個時期,在這一時期軟體開始作爲一種産品被廣泛使用,出現了專職的「軟體製作」以應別人的需求來寫作軟體。這一軟體發展的方 法,基本上仍然沿用早期的個體化軟體發展方式,但軟體的數量急劇膨脹,軟體需求日趨複雜,維護的難度越來越大,開發成本令人吃驚地高,而失敗的軟體發展專 案卻屢見不鮮。「軟體危機」就這樣開始了!

「軟體危機」使得人們開始對軟體及其特性進行更深一步的研 究,人們改變了早期對軟體的不正確看法。早期那些被認爲是優秀的程式常常很難被別人看懂,通常充滿了程式技巧。現在人們普遍認爲優秀的程式除了功能正確, 性能優良之外,還應該容易看懂、容易使用、容易修改和擴充。

現在,被普遍接受的軟體的定義是:

軟體(software)是電腦系統中與硬體(hardware)相互依存的另一部分,它包括程式(program)、相關資料(data)及其說明文件(document)

其中程式是按照事先設計的功能和性能要求執行的指令序列;資料是是程式能正常操縱資訊的資料結構;文件則是與程式開發維護和使用有關的各種圖文資料。

軟體同傳統的工業産品相比,有其獨特的特性:

1)軟體是一種邏輯實體,具有抽象性。這個特點使它與其他工程物件有著明顯的差異。人們可以把它記錄在紙上、記憶體、和磁片、光碟上,但卻無法看到軟體本身的形態,必須通過觀察、分析、思考、判斷,才能瞭解它的功能、性能等特性。

2)軟體沒有明顯的製造過程。一旦研製開發成功,就可以大量拷貝相同的內容至其副本。所以對軟體的品質控制,必須著重在軟體發展方面下工夫。

3)軟體在使用過程中,沒有磨損、老化的問題。軟體在生存周期後期不會因爲磨損而老化,但會爲了適應硬體、環境以及需求的變化而進行修改,而這些修改有不可避免的引入錯誤,導致軟體失效率升高,從而類似軟體退化的現象。當修改的成本變得難以接受時,軟體自然就被淘汰了。

4)軟體對硬體和環境有著不同程度的依賴性。這導致了軟體移植的問題。

5)軟體的開發至今尚未完全擺脫手工製作式的開發方式,生産效率低。

6)軟體是複雜的,而且以後會更加複雜。軟體是人類有史以來生産的複雜度最高的工業産品。軟體涉及人類社會的各行各業、各式各樣,軟體發展常常涉及其他領域的專門知識,這對軟體工程師提出了很高的要求。

7)軟體的成本相當昂貴。軟體發展需要投入大量、高強度的腦力勞動,成本非常高,風險也大。現在軟體的開銷已大大超過了硬體的開銷。

8)軟體工作牽涉到很多社會因素。許多軟體的開發和運行涉及機構、體制和管理方式等問題,還會設計到人們的觀念和心理。這些人的因素,常常成爲軟體發展的困難所在,直接影響到專案的成敗。

2、軟體危機及其原因

軟體危機指的是在電腦軟體的開發和維護過程中所遇到的一系列嚴重問題。

1968年北大西洋公約組織的電腦科學家在聯邦德國召開的國際學術會議上第一次提出了「軟體危機」(software crisis)這個名詞。

概括來說,軟體危機包含兩方面問題:一、如何開發軟體,以滿足不斷增長,日趨複雜的需求;二、如何維護數量不斷膨脹的軟體産品。

具體地說,軟體危機主要有以下表現:

(1)對軟體發展成本和進度的估計常常不準確。開發成本超出預算,實際進度比預定計劃一再拖延的現象並不罕見。

(2)用戶對「已完成」系統不滿意的現象經常發生。

(3)軟體産品的質量往往靠不住。Bug一大堆,Patch一個接一個。

(4)軟體的可維護程度非常之低。

(5)軟體通常沒有適當的文件資料。

(6)軟體的成本不斷提高。

(7)軟體發展生産率的提高趕不上硬體的發展和人們需求的增長。

軟體危機的原因,一方面是與軟體本身的特點有關;另一方面是由軟體發展和維護的方法不正確有關。

軟體的特點前面已經有一個簡單介紹。軟體發展和維護的不正確 方法主要表現爲忽視軟體發展前期的需求分析;開發過程沒有統一的、規範的方法論的指導,文件資料不齊全,忽視人與人的交流;忽視測試階段的工作,提交用戶 的軟體品質差;輕視軟體的維護。這些大多數都是軟體發展過程管理上的原因。

3、軟體工程

1968年秋季,NATO(北約)的科技委員會召集了近50名一流的程式工程人員、電腦科學家和工業界巨頭,討論和制定擺脫「軟體危機」的對策。在那次會議上第一次提出了軟體工程(software engineering)這個概念。到今年(1998),軟體工程整整走過了30年的歷程。

在這30年的發展中,人們針對軟體危機的表現和原因,經過不斷的實踐和總結,越來越體認到:按照工程化的原則和方法組織軟體發展工作,是擺脫軟體危機的一個主要出路。

今天,儘管「軟體危機」仍然並未被徹底解決,但軟體工程30年的發展仍可以說是碩果累累。

下面我們給出一個軟體工程的定義,然後簡單討論一下軟體工程所包括的內容:

軟體工程是一門研究如何用系統化、規範化、數量化等工程原則和方法去進行軟體的開發和維護的學科。

軟體工程包括兩方面內容:軟體發展技術和軟體專案管理。

軟體發展技術包括軟體發展方法學、軟體工具和軟體工程環境。

軟體專案管理包括軟體度量、專案估算、進度控制、人員組織、配置管理、專案計劃等。

統計資料表明,大多數軟體發展專案的失敗,並不是由於軟體發 展技術方面的原因。它們的失敗是由於不適當的管理造成的。遺憾的是,儘管人們對軟體專案管理重要性的認識有所提高,但在軟體管理方面的進步遠比在設計方法 學和實現方法學上的進步小,至今還提不出一套管理軟體發展的通用指導原則。

Waterbird供稿

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: