國(guó)家認(rèn)證認(rèn)可監(jiān)督委員會(huì)批準(zhǔn)認(rèn)證咨詢機(jī)構(gòu)
批準(zhǔn)號(hào):CNCA-Z-01Q-2006-038
全國(guó):010-56542716
天津:022-27810977
服務(wù)項(xiàng)目
CMMI(Capability Maturity Model Integration For Software,,軟件能力成熟度模型集成)是在 CMM(Capability Maturity Model For Software,軟件能力成熟度模型)的基礎(chǔ)上發(fā)展而來(lái)的,。CMMI是由美國(guó)卡耐基梅隆大學(xué)軟件工程研究所(Software Engineering Institute,,SEI)組織全世界的軟件過(guò)程改進(jìn)和軟件開(kāi)發(fā)管理方面的專(zhuān)家歷時(shí)4年而開(kāi)發(fā)出來(lái),并在全世界推廣實(shí)施的一種軟件能力成熟度評(píng)估標(biāo)準(zhǔn),,主要用于指導(dǎo)軟件開(kāi)發(fā)過(guò)程的改進(jìn)和進(jìn)行軟件開(kāi)發(fā)能力的評(píng)估,。
軟件危機(jī)
在計(jì)算機(jī)系統(tǒng)發(fā)展的早期時(shí)代(二十世紀(jì)六十年代中期以前),通用硬件在這一時(shí)期非常普遍,,但是軟件卻是為了每一個(gè)具體的應(yīng)用而專(zhuān)門(mén)編寫(xiě)的,,那個(gè)時(shí)期的軟件一般都是規(guī)模比較小的一個(gè)程序,編寫(xiě)代碼的程序員和使用者往往是同一個(gè)(或同一組)人,。那么在這種個(gè)體化的軟件環(huán)境下,,軟件設(shè)計(jì)通常是在程序員的頭腦中進(jìn)行的一個(gè)隱含的過(guò)程,只留下了程序,,除了程序清單之外,,沒(méi)有其他任何的文檔資料(需求分析、軟件說(shuō)明書(shū)等)保存下來(lái),。
二十世紀(jì)的六十年代中期到七十年代中期是計(jì)算機(jī)系統(tǒng)發(fā)展的第二代時(shí)期,,這個(gè)時(shí)期的一個(gè)重要特征是出現(xiàn)了“軟件作坊”,當(dāng)時(shí)的微軟就是這種軟件生產(chǎn)方式的一個(gè)代表,。此時(shí),,盡管軟件的生產(chǎn)是作坊式生產(chǎn),,但還是生產(chǎn)了一些很有代表性的產(chǎn)品,,使得產(chǎn)品軟件的使用廣泛起來(lái)。然而,“軟件作坊”仍然沿用早期形成的個(gè)體化軟件開(kāi)發(fā)方法,。隨著計(jì)算機(jī)應(yīng)用的日益普及,,軟件數(shù)量急劇膨脹。在程序運(yùn)行時(shí)發(fā)現(xiàn)的錯(cuò)誤必須設(shè)法改正,;用戶有了新的需求時(shí)必須相應(yīng)地修改程序,;硬件或操作系統(tǒng)更新時(shí),通常需要修改程序以適應(yīng)新的環(huán)境,。上述軟件維護(hù)工作,,以令人吃驚的比例耗費(fèi)著資源。甚至許多程序的個(gè)體化特性使它們最終成為不可維護(hù)的,?!败浖C(jī)”就這樣開(kāi)始出現(xiàn)了!
為什么會(huì)出現(xiàn)“軟件危機(jī)”,?
軟件不同于一般程序,,它是由許多實(shí)現(xiàn)各自功能的程序組成的。它的一個(gè)顯著特點(diǎn)是規(guī)模龐大,。例如,,美國(guó)四代宇宙飛船的軟件規(guī)模呈指數(shù)增長(zhǎng),二十世紀(jì)七十年代末穿梭號(hào)宇宙飛船的軟件包含4000萬(wàn)行目標(biāo)代碼,。假設(shè)一個(gè)人一年可以開(kāi)發(fā)出一個(gè)一萬(wàn)行的程序,,為了開(kāi)發(fā)一個(gè)4000萬(wàn)行的軟件,是否集中4000人的力量一年就可以完成呢,?絕對(duì)做不到,!因?yàn)榇a長(zhǎng)度增加了4000倍,程序復(fù)雜程度的增加遠(yuǎn)遠(yuǎn)超過(guò)4000倍,。而且如何保證每個(gè)人完成的工作合在一起確實(shí)能構(gòu)成一個(gè)高質(zhì)量的大型軟件系統(tǒng),,更是一個(gè)極端復(fù)雜困難的問(wèn)題,不僅涉及許多技術(shù)問(wèn)題,,例如分析方法,、設(shè)計(jì)方法、形式說(shuō)明方法,、版本控制等,,更重要的是必須進(jìn)行嚴(yán)格而科學(xué)的管理。
軟件本身獨(dú)有的特點(diǎn)確實(shí)給開(kāi)發(fā)和維護(hù)帶來(lái)一些客觀困難,,但是人們?cè)陂_(kāi)發(fā)和使用計(jì)算機(jī)系統(tǒng)的長(zhǎng)期實(shí)踐中,,也確實(shí)積累和總結(jié)出了許多成功的經(jīng)驗(yàn)。如果堅(jiān)持不懈地使用經(jīng)過(guò)實(shí)踐考驗(yàn)證明是正確的方法,,許多困難是完全可以克服的,,過(guò)去也確實(shí)有一些成功的范例,。但是,目前相當(dāng)多的軟件專(zhuān)業(yè)人員對(duì)軟件開(kāi)發(fā)和維護(hù)還有不少錯(cuò)誤觀念,。在實(shí)踐過(guò)程中或多或少地采用了錯(cuò)誤的方法和技術(shù),,這可能是使軟件問(wèn)題發(fā)展成軟件危機(jī)的一個(gè)主要原因。
與軟件開(kāi)發(fā)和維護(hù)有關(guān)的許多錯(cuò)誤認(rèn)識(shí)的形成,,可以歸因于在計(jì)算機(jī)系統(tǒng)發(fā)展中,,早期軟件開(kāi)發(fā)的個(gè)體化特點(diǎn)。錯(cuò)誤認(rèn)識(shí)主要表現(xiàn)為忽視軟件需求分析的重要性,,認(rèn)為軟件開(kāi)發(fā)就是寫(xiě)程序,,并設(shè)法使之運(yùn)行,輕視軟件維護(hù)等,。
事實(shí)上,,對(duì)用戶要求沒(méi)有完整準(zhǔn)確的認(rèn)識(shí)就匆忙著手編寫(xiě)程序是許多軟件開(kāi)發(fā)工程失敗的主要原因之一。只有用戶才真正了解他們自己的需要,,但是許多用戶在開(kāi)始時(shí)并不能準(zhǔn)確具體地?cái)⑹鏊麄兊男枰?,軟件開(kāi)發(fā)人員需要做大量深入細(xì)致的調(diào)查研究工作,反復(fù)多次地和用戶交流信息,,才能真正全面,、準(zhǔn)確、具體地了解用戶的要求,。對(duì)問(wèn)題和目標(biāo)的正確認(rèn)識(shí)是解決任何問(wèn)題的前提和出發(fā)點(diǎn),。
一個(gè)軟件從定義、開(kāi)發(fā),、使用和維護(hù),,直到最終被廢棄,要經(jīng)歷一個(gè)漫長(zhǎng)的時(shí)期,。通常把軟件經(jīng)歷的這個(gè)過(guò)程稱(chēng)為生命周期,。軟件開(kāi)發(fā)最初的工作應(yīng)是問(wèn)題定義,然后要進(jìn)行可行性研究,,決定該問(wèn)題是否存在一個(gè)可行的解決辦法,;接下來(lái)應(yīng)該進(jìn)行需求分析,也就是深入具體地了解用戶的要求,,在所要開(kāi)發(fā)的系統(tǒng)(不妨稱(chēng)之為目標(biāo)系統(tǒng))必須做什么這個(gè)問(wèn)題上和用戶取得完全一致的看法,。經(jīng)過(guò)上述軟件定義時(shí)期的準(zhǔn)備工作才能進(jìn)入開(kāi)發(fā)時(shí)期,而在開(kāi)發(fā)時(shí)期首先需要對(duì)軟件進(jìn)行設(shè)計(jì)(通常又分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段),,然后才能進(jìn)入編寫(xiě)程序的階段,,程序編寫(xiě)完之后還必須經(jīng)過(guò)大量的測(cè)試工作(所需的工作量通常占軟件開(kāi)發(fā)全部工作量的40%~50%)才能最終交付使用。所以,,編寫(xiě)程序只是軟件開(kāi)發(fā)過(guò)程中的一個(gè)階段,,而且在典型的軟件開(kāi)發(fā)工程中,,編寫(xiě)程序所需的工作量只占軟件開(kāi)發(fā)全部工作量的10%~20%。
另一方面還必須認(rèn)識(shí)到程序只是完整的軟件產(chǎn)品的一個(gè)組成部分,,在上述軟件生命周期的每個(gè)階段都要得出最終產(chǎn)品的一個(gè)或幾個(gè)組成部分(這些組成部分通常以文檔資料的形式存在),。軟件專(zhuān)家曾經(jīng)指出:“軟件是程序以及開(kāi)發(fā),、使用和維護(hù)程序需要的所有文檔,。”這也就是對(duì)軟件的定義,。所以,,一個(gè)軟件產(chǎn)品必須由一個(gè)完整的配置組成,應(yīng)該清除只重視程序而忽視軟件配置其余成分的錯(cuò)誤觀念,。
做好軟件定義時(shí)期的工作,,是降低軟件成本提高軟件質(zhì)量的關(guān)鍵。如果軟件開(kāi)發(fā)人員在定義時(shí)沒(méi)有正確全面地理解用戶需求,,直到測(cè)試階段或軟件交付使用后才發(fā)現(xiàn)“已完成的”軟件不完全符合用戶的需要,,這時(shí)再修改就為時(shí)已晚了。
嚴(yán)重的問(wèn)題是,,在軟件開(kāi)發(fā)的不同階段進(jìn)行修改需要付出的代價(jià)是很不相同的,,在早期引入變動(dòng),涉及的面較小,,因而代價(jià)也比較低:而在開(kāi)發(fā)中期軟件配置的許多成分已經(jīng)完成,,引入一個(gè)變動(dòng)要對(duì)所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,,而且邏輯上也更復(fù)雜,因此付出的代價(jià)劇增,。根據(jù)美國(guó)一些軟件公司統(tǒng)計(jì)資料,,在后期引入一個(gè)變動(dòng)比在早期進(jìn)入相同變動(dòng)所需付出的代價(jià)高2~3個(gè)數(shù)量級(jí),。
通過(guò)上面的論述不難認(rèn)識(shí)到,,輕視維護(hù)是一個(gè)最大的錯(cuò)誤。許多軟件產(chǎn)品的使用壽命長(zhǎng)達(dá)10年甚至20年,,在這樣漫長(zhǎng)的時(shí)期中不僅必須改正使用過(guò)程中發(fā)現(xiàn)的每一個(gè)潛伏的錯(cuò)誤,,而且當(dāng)環(huán)境變化時(shí)(例如硬件或系統(tǒng)軟件更新?lián)Q代)還必須相應(yīng)地修改軟件以適應(yīng)新的環(huán)境,,特別是必須經(jīng)常改進(jìn)或擴(kuò)充原來(lái)的軟件以滿足用戶不斷變化的需要。所有這些改動(dòng)都屬于維護(hù)工作,,而且是在軟件已經(jīng)完成之后進(jìn)行的,因此是極端艱巨復(fù)雜的工作,,需要花費(fèi)很大代價(jià),。統(tǒng)計(jì)數(shù)據(jù)表明,,實(shí)際上用于軟件維護(hù)的費(fèi)用占軟件總費(fèi)用的55%~70%,。
關(guān)注卓越空間
關(guān)注卓越微博
關(guān)注卓越微信