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

1.2 軟件危機

本節講述軟件危機的表現與原因,以及軟件危機的啟示。

1.2.1 軟件危機的表現與原因

軟件危機是指人們在開發軟件和維護軟件過程中所遇到的一系列的問題。在20世紀60年代中期,隨著軟件規模的擴大、復雜性的增加、功能的增強,高質量的軟件開發變得越來越困難。在軟件開發的過程中,會經常出現一些不能按時完成任務、產品質量得不到保證、工作效率低下和開發經費嚴重超支等現象。這些情況逐漸使人們意識到軟件危機的存在及其影響。計算機軟件的開發、維護和應用過程中普遍出現的一些嚴重的問題,主要表現如下。

●開發出來的軟件產品不能滿足用戶的需求,即產品的功能或特性與需求不符。這主要是由于開發人員與用戶之間不能充分有效地進行交流造成的,使得開發人員對用戶需求的理解存在著差異。

●相比越來越廉價的硬件,軟件成本過高。

●軟件質量難以得到保證,且難以發揮硬件潛能。開發團隊缺少完善的軟件質量評審體系以及科學的軟件測試規程,使得最終的軟件產品存在著諸多缺陷。

●難以準確估計軟件開發、維護的費用以及開發周期。軟件產品往往不能在預算范圍之內按照計劃完成開發。很多情況下,軟件產品的開發周期或經費會大大超出預算。

●難以控制開發風險,開發速度趕不上市場變化。

●軟件產品修改與維護困難,集成遺留系統更困難。

●軟件文檔不完備,并且存在文檔內容與軟件產品不符的情況。軟件文檔是計算機軟件的重要組成部分,它為軟件開發人員之間以及開發人員與用戶之間的信息共享提供了重要的平臺。軟件文檔不完整和不一致的問題會給軟件的開發和維護等工作帶來很多麻煩。

這些問題嚴重影響了軟件產業的發展,制約著計算機的應用。為了形象地描述軟件危機,OS/360操作系統的開發經常被作為一個典型的案例。20世紀60年代初期,IBM公司組織了OS/360操作系統的開發,這是一個超大型的軟件項目,參與的程序員有1000人左右。在經歷了數十年的開發之后,極度復雜的軟件項目甚至產生了一套不包括在原始設計方案之中的工作系統。Fred Brooks是這個項目的管理者,他在自己的著作《人月神話》中曾經承認,自己犯了一個價值數百萬美元的錯誤。

軟件危機的出現和日益嚴重的趨勢充分暴露了軟件產業在早期的發展過程中存在的各種各樣的問題。可以說,人們對軟件產品認識的不足以及對軟件開發內在規律的理解偏差是軟件危機出現的本質原因。具體來說,軟件危機出現的原因可以概括為以下幾點。

●忽視軟件開發前期的需求分析。

●開發過程缺乏統一的、規范化的方法論的指導。軟件開發是一項復雜的工程,人們需要用科學的、工程化的思想來組織和指導軟件開發的各個階段。而這種工程學的視角正是很多軟件開發人員所沒有的,他們往往簡單地認為軟件開發就是程序設計。

●文檔資料不齊全或不準確。軟件文檔的重要性沒有得到軟件開發人員和用戶的足夠重視。軟件文檔是軟件開發團隊成員之間交流和溝通的重要平臺,還是軟件開發項目管理的重要工具。如果人們不能充分重視軟件文檔的價值,勢必會給軟件開發帶來很多不便。

●忽視與用戶之間、開發組成員之間的交流。

●忽視測試的重要性。

●不重視維護或由于上述原因造成維護工作的困難。由于軟件的抽象性和復雜性,軟件在運行之前,對開發過程的進展情況很難估計。再加上軟件錯誤的隱蔽性和改正的復雜性,這些都使得軟件的開發和維護在客觀上比較困難。

●從事軟件開發的專業人員對這個產業認識不充分,缺乏經驗。軟件產業相對于其他工業產業而言,是一個比較年輕、發展不成熟的產業,人們在對它的認識上缺乏深刻性。

●沒有完善的質量保證體系。完善的質量保證體系的建立需要有嚴格的評審制度,同時還需要有科學的軟件測試技術及質量維護技術。軟件的質量得不到保證,使得開發出來的軟件產品往往不能滿足人們的需求,同時人們還可能需要花費大量的時間、資金和精力去修復軟件的缺陷,從而導致了軟件質量的下降和開發預算超支等后果。

1.2.2 軟件危機的啟示

軟件危機給人們的最大啟示,是使人們更加深刻地認識到軟件的特性以及軟件產品開發的內在規律。

●軟件產品是復雜的人造系統,具有復雜性、不可見性和易變性,難以處理。

●個人或小組在開發小型軟件時使用到的非常有效的編程技術和過程,在開發大型、復雜系統時難以發揮同樣的作用。

●從本質上講,軟件開發的創造性成分很大,發揮的余地也很大,很接近于藝術。它介于藝術與工程之間的某一點,并逐步向工程一段漂移,但很難發展成完全的工程。

●計算機和軟件技術的快速發展,提高了用戶對軟件的期望,促進了軟件產品的演化,為軟件產品提出了新的、更多的需求,難以在可接受的開發進度內保證軟件的質量。

●幾乎所有的軟件項目都是新的,而且是不斷變化的。項目需求在開發過程中會發生變化,而且很多原來預想不到的問題也會出現,對設計和實現手段進行適當的調整是不可避免的。

●“人月神化”現象——生產力與人數并不成正比。

為了解決軟件危機,人們開始嘗試用工程化的思想去指導軟件開發,于是軟件工程應運而生。

主站蜘蛛池模板: 溧水县| 剑河县| 玉门市| 广饶县| 浙江省| 山丹县| 沙湾县| 沧源| 克山县| 九江县| 峨边| 武宣县| 九江市| 万源市| 虞城县| 雅安市| 连江县| 房山区| 临夏市| 哈巴河县| 东兰县| 柳河县| 永仁县| 蕉岭县| 江阴市| 黔江区| 涞源县| 昭觉县| 法库县| 边坝县| 澳门| 桐庐县| 长武县| 原阳县| 综艺| 闽清县| 德兴市| 鄱阳县| 祁东县| 平塘县| 丰都县|