軟體、軟體危機、軟體工程 (轉)

worldblog發表於2007-12-04
軟體、軟體危機、軟體工程 (轉)[@more@]

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)軟體產品的質量往往靠不住。一大堆,Patch一個接一個。

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

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

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

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

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

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

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

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

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

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

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

  軟體工程包括兩方面內容:軟體開發技術和軟體。

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

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

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

 




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-988130/,如需轉載,請註明出處,否則將追究法律責任。

相關文章