1 軟件危機(jī)概述
1.1 軟件危機(jī)新問題
軟件危機(jī)是指軟件生產(chǎn)方式過于落后,但是計(jì)算機(jī)軟件需求迅速增長,兩者之間造成難以調(diào)和的矛盾,從而導(dǎo)致軟件在開發(fā)與維護(hù)過程中出現(xiàn)一系列嚴(yán)重問題的現(xiàn)象。
1.2 早期軟件危機(jī)的表現(xiàn)
因?yàn)檐浖a(chǎn)品是人為生產(chǎn)的產(chǎn)品,只要是由人做的工作都不會(huì)是完美無缺的,總會(huì)或多或少的存在一些錯(cuò)誤。既然錯(cuò)誤是必然存在的,我們目前的問題是如何避免錯(cuò)誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯(cuò)誤。
早期軟件危機(jī)主要表現(xiàn)在:
(1)開發(fā)費(fèi)用和進(jìn)度失控,為了趕進(jìn)度或壓成本不得不采用一些權(quán)宜之計(jì),這樣又往往嚴(yán)重?fù)p害軟件產(chǎn)品質(zhì)量。
(2)軟件可靠性差,盡管耗費(fèi)了大量的人力物力,系統(tǒng)的正確性越來越難以保證。
(3)軟件難以維護(hù),很多程序缺乏相應(yīng)的文檔資料,程序中的錯(cuò)誤難以定位,難以改正。 2 軟件開發(fā)規(guī)律認(rèn)識(shí)
2.1 軟件開發(fā)本質(zhì)
軟件開發(fā)規(guī)律是所有軟件開發(fā)人員不得不研究和解決的問題,尤其是中國的軟件從業(yè)者不僅要研究一般的軟件開發(fā)規(guī)律,還要研究具有中國特色的軟件開發(fā)規(guī)律和中國商業(yè)軟件的開發(fā)規(guī)律。軟件開發(fā)的本質(zhì)其實(shí)就是一種映射,具體的說是要實(shí)現(xiàn)“高層概念”到“低層概念”的映射,從“高層處理邏輯”到“低層處理邏輯”的映射。特別是對于大型軟件系統(tǒng)的開發(fā),這一映射是相當(dāng)復(fù)雜的,涉及相關(guān)人員、使用技術(shù)、采取的途徑等等。
軟件工程活動(dòng)是生產(chǎn)一個(gè)最終滿足用戶的需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟,包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)、支持等活動(dòng)。需求是在一個(gè)抽象層上建立系統(tǒng)模型的活動(dòng)。設(shè)計(jì)活動(dòng)定義實(shí)現(xiàn)需求規(guī)約所需的結(jié)構(gòu),該活動(dòng)的主要產(chǎn)品包括軟件體系結(jié)構(gòu)、詳細(xì)的處理算法。實(shí)現(xiàn)活動(dòng)是設(shè)計(jì)規(guī)約到代碼轉(zhuǎn)換的活動(dòng)。驗(yàn)證確認(rèn)是一項(xiàng)評估活動(dòng),貫穿于整個(gè)開發(fā)過程,包括動(dòng)態(tài)分析和靜態(tài)分析。
2.2 軟件過程管理
在實(shí)際的項(xiàng)目質(zhì)量管理中,質(zhì)量管理總是圍繞著質(zhì)量保證過程和質(zhì)量控制過程兩方面。這兩個(gè)過程相互作用,在實(shí)際應(yīng)用中可能發(fā)生交叉。軟件質(zhì)量保證的目的是使軟件過程對于管理人員來說是可見的。它通過對軟件產(chǎn)品和活動(dòng)進(jìn)行評審和審計(jì)來驗(yàn)證軟件是合乎標(biāo)準(zhǔn)的。軟件質(zhì)量保證組在項(xiàng)目開始時(shí)就一起參與建立計(jì)劃、標(biāo)準(zhǔn)和過程。軟件質(zhì)量控制主要為發(fā)現(xiàn)和消除軟件產(chǎn)品的缺陷。對于高質(zhì)量的軟件來講,最終產(chǎn)品應(yīng)該盡可能達(dá)到零缺陷。而軟件開發(fā)是一個(gè)以人為中心的活動(dòng),所以缺陷是不可避免。要想交付一個(gè)高質(zhì)量的軟件,消除缺陷的活動(dòng)就變得很重要。缺陷消除是通過評審和測試來實(shí)現(xiàn)。潛在的缺陷越大,用來消除它所花的費(fèi)用越高。因此成熟的軟件開發(fā)過程在每一個(gè)可能會(huì)引入潛在缺陷的階段完成之后會(huì)展開質(zhì)量控制活動(dòng)。這些活動(dòng)包括:需求評審、設(shè)計(jì)評審、代碼走查、單元測試、集成測試、系統(tǒng)測試和驗(yàn)收測試等。
CMM對實(shí)施軟件過程的必要條件做了明確定義,劃分了5個(gè)成熟度等級(jí):
⑴初始級(jí)。在初始級(jí),企業(yè)一般不具備穩(wěn)定的軟件開發(fā)與維護(hù)的環(huán)境。處于這一等級(jí)的企業(yè),成功與否在很大程度上決定于有杰出的項(xiàng)目經(jīng)理與經(jīng)驗(yàn)豐富的開發(fā)團(tuán)隊(duì),項(xiàng)目成功與否非常不確定。
⑵可重復(fù)級(jí)。這一級(jí),建立了管理軟件項(xiàng)目的政策,以及為貫徹執(zhí)行這些政策而定的措施。通過這一級(jí),企業(yè)實(shí)現(xiàn)了過程的規(guī)范化、穩(wěn)定化。
⑶定義級(jí)。這一級(jí),面對整個(gè)企業(yè)的軟件開發(fā)與維護(hù)過程的文件將被制訂出來。這些過程是集成到一個(gè)協(xié)調(diào)的整體。項(xiàng)目小組要根據(jù)該項(xiàng)目的特點(diǎn)去改編企業(yè)的標(biāo)準(zhǔn)軟件過程來制訂出為本項(xiàng)目而定義的過程。
⑷定量管理級(jí)。這一級(jí),企業(yè)對產(chǎn)品與過程建立起定量的質(zhì)量目標(biāo),同時(shí)在過程中加入規(guī)定的很清楚的連續(xù)的度量。
⑸優(yōu)化級(jí)。這個(gè)等級(jí)中企業(yè)會(huì)把重點(diǎn)放在對過程的不斷優(yōu)化。企業(yè)會(huì)主動(dòng)去找出過程的弱點(diǎn)和長處,達(dá)到預(yù)防缺陷的目標(biāo)。項(xiàng)目小組分析引起缺陷的原因,對過程進(jìn)行評鑒與改進(jìn),以便預(yù)防已發(fā)生的缺陷再度發(fā)生。
軟件危機(jī)曾經(jīng)是計(jì)算機(jī)領(lǐng)域最熱門的話題,為了解決這場危機(jī),眾多專家、學(xué)者做了大量努力,最終認(rèn)識(shí)到所謂的軟件危機(jī)實(shí)質(zhì)上是軟件中存在錯(cuò)誤。錯(cuò)誤是軟件的固有屬性,是沒法去改變的。軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。ISO 9000把過程定義為:使用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的系統(tǒng)。過程定義了:運(yùn)用方法的順序、應(yīng)該交付的文檔資料、管理措施,以及標(biāo)志軟件開發(fā)各個(gè)階段任務(wù)完成的里程碑。