?? 184.txt
字號:
日月光華 -- SE精華區文章閱讀
--------------------------------------------------------------------------------
發信人: jiachong (甲蟲), 信區: SE
標 題: [轉載]1.軟件工程的發展歷史 jiachong
發信站: 日月光華 (2003年04月09日12:47:31 星期三), 站內信件
【 以下文字轉載自 SE 討論區 】
【 原文由 jiachong 所發表 】
軟件工程的發展歷史
1.世界上第一個計算機程序員
第一個寫軟件的人是Ada(Augusta Ada Lovelace),在1860年代她嘗試為
Babbage(Charles Babbage)的機械式計算機寫軟件。盡管他們的努力失敗了,
但他們的名字永遠載入了計算機發展的史冊。她的父親就是那個狂熱的,不趨
炎附勢的激進詩人和冒險家拜倫。她本身也是一個光彩照人的人物--數學尖子
和某種程度上的賭徒。她最重要的貢獻來自于與發明家Charles Babbage的合作
,從而設計出世界上首批大型計算機--Difference Engine和Analytical
Engine。她甚至認為如果有正確的指令,Babbage的機器可以用來作曲,這是
一個多么瘋狂的想法,因為當時大多數人只把它看成是一個機械化算盤,而她
卻有渲染力和感召力來傳播她的思想。
2.現代計算機軟件的出現
20世紀50年代,軟件伴隨著第一臺電子計算機的問世誕生了。以寫軟件為職
業的人也開始出現,他們多是經過訓練的數學家和電子工程師。1960年代美國大
學里開始出現授予計算機專業的學位,教人們寫軟件。
在計算機系統發展的初期,硬件通常用來執行一個單一的程序,而這個程序
又是為一個特定的目的而編制的。早期當通用硬件成為平常事情的時候,軟件的
通用性卻是很有限的。大多數軟件是由使用該軟件的個人或機構研制的,軟件往
往帶有強烈的個人色彩。早期的軟件開發也沒有什么系統的方法可以遵循,軟件
設計是在某個人的頭腦中完成的一個隱藏的過程。而且,除了源代碼往往沒有軟
件說明書等文檔。
3.軟件危機
從60年代中期到70年代中期是計算機系統發展的第二個時期,在這一時期軟
件開始作為一種產品被廣泛使用,出現了“軟件作坊”專職應別人的需求寫軟件。
這一軟件開發的方法基本上仍然沿用早期的個體化軟件開發方式,但軟件的數量急
劇膨脹,軟件需求日趨復雜,維護的難度越來越大,開發成本令人吃驚地高,而失
敗的軟件開發項目卻屢見不鮮。“軟件危機”就這樣開始了!
“軟件危機”使得人們開始對軟件及其特性進行更深一步的研究,人們改變了
早期對軟件的不正確看法。早期那些被認為是優秀的程序常常很難被別人看懂,通
篇充滿了程序技巧。現在人們普遍認為優秀的程序除了功能正確,性能優良之外,
還應該容易看懂、容易使用、容易修改和擴充。
1968年北大西洋公約組織的計算機科學家在聯邦德國召開的國際學術會議上第
一次提出了“軟件危機”(software crisis)這個名詞。 概括來說,軟件危機包含
兩方面問題:一、如何開發軟件,以滿足不斷增長,日趨復雜的需求;二、如何維
護數量不斷膨脹的軟件產品。
4.軟件工程的提出
1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算
機科學家和工業界巨頭,討論和制定擺脫“軟件危機”的對策。在那次會議上第一
次提出了軟件工程(software engineering)這個概念。
軟件工程是一門研究如何用系統化、規范化、數量化等工程原則和方法去進行
軟件的開發和維護的學科。軟件工程包括兩方面內容:軟件開發技術和軟件項目管
理。軟件開發技術包括軟件開發方法學、軟件工具和軟件工程環境。軟件項目管理
包括軟件度量、項目估算、進度控制、人員組織、配置管理、項目計劃等。
5.傳統軟件工程
為迎接軟件危機的挑戰,人們進行了不懈的努力。這些努力大致上是沿著兩個
方向同時進行的。
一是從管理的角度,希望實現軟件開發過程的工程化。這方面最為著名的成果
就是提出了大家都很熟悉的“瀑布式”生命周期模型。它是在60年代末“軟件危機”
后出現的第一個生命周期模型。如下所示:
分析 → 設計 → 編碼 → 測試 → 維護
后來,又有人針對該模型的不足,提出了快速原型法、螺旋模型、噴泉模型等
對“瀑布式”生命周期模型進行補充。現在,它們在軟件開發的實踐中被廣泛采用。
這方面的努力,還使人們認識到了文檔的標準以及開發者之間、開發者與用戶
之間的交流方式的重要性。一些重要文檔格式的標準被確定下來,包括變量、符號
的命名規則以及原代碼的規范格式。
軟件工程發展的第二個方向,側重與對軟件開發過程中分析、設計的方法的研
究。這方面的重要成果就是在70年代風靡一時的結構化開發方法,即PO(面向過程
的開發或結構化方法)以及結構化的分析、設計和相應的測試方法。
軟件工程的目標是研制開發與生產出具有良好的軟件質量和費用合算的產品。
費用合算是指軟件開發運行的整個開銷能滿足用戶要求的程度,軟件質量是指該軟
件能滿足明確的和隱含的需求能力有關特征和特性的總和。軟件質量可用六個特性
來作評價,即功能性、可靠性、易使用性、效率、維護性、易移植性。
6.現代軟件工程
軟件不是純物化的東西,其中包含著人的因素,于是就有很多變動的東西,不
可能像理想的物質生產過程,基于物理學等的原理來做。早期的軟件開發僅考慮人
的因素,傳統的軟件工程強調物性的規律,現代軟件工程最根本的就是人跟物的關
系,就是人和機器(工具、自動化)在不同層次的不斷循環發展的關系。
面向對象的分析、設計方法(OOA和OOD)的出現使傳統的開發方法發生了翻天
覆地的變化。隨之而來的是面向對象建模語言(以UML為代表)、軟件復用、基于組
件的軟件開發等新的方法和領域。
與之相應的是從企業管理的角度提出的軟件過程管理。即關注于軟件生存周期
中所實施的一系列活動并通過過程度量、過程評價和過程改進等涉及對所建立的軟
件過程及其實例進行不斷優化的活動使得軟件過程循環往復、螺旋上升式地發展。
其中最著名的軟件過程成熟度模型是美國卡內基梅隆大學軟件工程研究所(SEI)
建立的CMM(Capability Maturity Model),即能力成熟度模型。此模型在建立和
發展之初,主要目的是為大型軟件項目的招投標活動提供一種全面而客觀的評審依
據,而發展到后來,又同時被應用于許多軟件機構內部的過程改進活動中。
--jiachong整理
--
這個世界總會有點不公正
但是我們總能用心去平衡
※來源:·日月光華 bbs.fudan.edu.cn·FROM:[甲蟲窩]
※ 修改:·jiachong 於 03月04日20:48:46 修改本文·[FROM: 218.79.59.90]
--
※ 轉載:·日月光華 bbs.fudan.edu.cn·[FROM: 61.170.202.109]
--------------------------------------------------------------------------------
[返回上一頁] [本討論區]
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -