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

1.2 軟件危機(jī)

本節(jié)講述軟件危機(jī)的表現(xiàn)與原因,以及軟件危機(jī)的啟示。

1.2.1 軟件危機(jī)的表現(xiàn)與原因

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

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

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

●軟件質(zhì)量難以得到保證,且難以發(fā)揮硬件潛能。開發(fā)團(tuán)隊缺少完善的軟件質(zhì)量評審體系以及科學(xué)的軟件測試規(guī)程,使得最終的軟件產(chǎn)品存在著諸多缺陷。

●難以準(zhǔn)確估計軟件開發(fā)、維護(hù)的費(fèi)用以及開發(fā)周期。軟件產(chǎn)品往往不能在預(yù)算范圍之內(nèi)按照計劃完成開發(fā)。很多情況下,軟件產(chǎn)品的開發(fā)周期或經(jīng)費(fèi)會大大超出預(yù)算。

●難以控制開發(fā)風(fēng)險,開發(fā)速度趕不上市場變化。

●軟件產(chǎn)品修改與維護(hù)困難,集成遺留系統(tǒng)更困難。

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

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

軟件危機(jī)的出現(xiàn)和日益嚴(yán)重的趨勢充分暴露了軟件產(chǎn)業(yè)在早期的發(fā)展過程中存在的各種各樣的問題。可以說,人們對軟件產(chǎn)品認(rèn)識的不足以及對軟件開發(fā)內(nèi)在規(guī)律的理解偏差是軟件危機(jī)出現(xiàn)的本質(zhì)原因。具體來說,軟件危機(jī)出現(xiàn)的原因可以概括為以下幾點(diǎn)。

●忽視軟件開發(fā)前期的需求分析。

●開發(fā)過程缺乏統(tǒng)一的、規(guī)范化的方法論的指導(dǎo)。軟件開發(fā)是一項復(fù)雜的工程,人們需要用科學(xué)的、工程化的思想來組織和指導(dǎo)軟件開發(fā)的各個階段。而這種工程學(xué)的視角正是很多軟件開發(fā)人員所沒有的,他們往往簡單地認(rèn)為軟件開發(fā)就是程序設(shè)計。

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

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

●忽視測試的重要性。

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

●從事軟件開發(fā)的專業(yè)人員對這個產(chǎn)業(yè)認(rèn)識不充分,缺乏經(jīng)驗(yàn)。軟件產(chǎn)業(yè)相對于其他工業(yè)產(chǎn)業(yè)而言,是一個比較年輕、發(fā)展不成熟的產(chǎn)業(yè),人們在對它的認(rèn)識上缺乏深刻性。

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

1.2.2 軟件危機(jī)的啟示

軟件危機(jī)給人們的最大啟示,是使人們更加深刻地認(rèn)識到軟件的特性以及軟件產(chǎn)品開發(fā)的內(nèi)在規(guī)律。

●軟件產(chǎn)品是復(fù)雜的人造系統(tǒng),具有復(fù)雜性、不可見性和易變性,難以處理。

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

●從本質(zhì)上講,軟件開發(fā)的創(chuàng)造性成分很大,發(fā)揮的余地也很大,很接近于藝術(shù)。它介于藝術(shù)與工程之間的某一點(diǎn),并逐步向工程一段漂移,但很難發(fā)展成完全的工程。

●計算機(jī)和軟件技術(shù)的快速發(fā)展,提高了用戶對軟件的期望,促進(jìn)了軟件產(chǎn)品的演化,為軟件產(chǎn)品提出了新的、更多的需求,難以在可接受的開發(fā)進(jìn)度內(nèi)保證軟件的質(zhì)量。

●幾乎所有的軟件項目都是新的,而且是不斷變化的。項目需求在開發(fā)過程中會發(fā)生變化,而且很多原來預(yù)想不到的問題也會出現(xiàn),對設(shè)計和實(shí)現(xiàn)手段進(jìn)行適當(dāng)?shù)恼{(diào)整是不可避免的。

●“人月神化”現(xiàn)象——生產(chǎn)力與人數(shù)并不成正比。

為了解決軟件危機(jī),人們開始嘗試用工程化的思想去指導(dǎo)軟件開發(fā),于是軟件工程應(yīng)運(yùn)而生。

主站蜘蛛池模板: 金坛市| 淮北市| 民乐县| 扎囊县| 鄂温| 彰武县| 绥中县| 余干县| 唐山市| 宕昌县| 竹山县| 兴安县| 红桥区| 永嘉县| 中卫市| 浦城县| 崇州市| 榆中县| 天门市| 天水市| 长白| 元朗区| 霞浦县| 饶河县| 清新县| 济阳县| 肇州县| 南通市| 宁安市| 宜春市| 海安县| 博湖县| 年辖:市辖区| 米林县| 长泰县| 凉山| 虹口区| 望谟县| 德清县| 瓦房店市| 长泰县|