CMMI(Capability Maturity Model Integration For Software,軟件能力成熟度模型集成)是在 CMM(Capability Maturity Model For Software,軟件能力成熟度模型)的基礎上發展而來的。CMMI是由美國卡耐基梅隆大學軟件工程研究所(Software Engineering Institute,SEI)組織全世界的軟件過程改進和軟件開發管理方面的專家歷時4年而開發出來,并在全世界推廣實施的一種軟件能力成熟度評估標準,主要用于指導軟件開發過程的改進和進行軟件開發能力的評估。
軟件危機
在計算機系統發展的早期時代(二十世紀六十年代中期以前),通用硬件在這一時期非常普遍,但是軟件卻是為了每一個具體的應用而專門編寫的,那個時期的軟件一般都是規模比較小的一個程序,編寫代碼的程序員和使用者往往是同一個(或同一組)人。那么在這種個體化的軟件環境下,軟件設計通常是在程序員的頭腦中進行的一個隱含的過程,只留下了程序,除了程序清單之外,沒有其他任何的文檔資料(需求分析、軟件說明書等)保存下來。
二十世紀的六十年代中期到七十年代中期是計算機系統發展的第二代時期,這個時期的一個重要特征是出現了“軟件作坊”,當時的微軟就是這種軟件生產方式的一個代表。此時,盡管軟件的生產是作坊式生產,但還是生產了一些很有代表性的產品,使得產品軟件的使用廣泛起來。然而,“軟件作坊”仍然沿用早期形成的個體化軟件開發方法。隨著計算機應用的日益普及,軟件數量急劇膨脹。在程序運行時發現的錯誤必須設法改正;用戶有了新的需求時必須相應地修改程序;硬件或操作系統更新時,通常需要修改程序以適應新的環境。上述軟件維護工作,以令人吃驚的比例耗費著資源。甚至許多程序的個體化特性使它們最終成為不可維護的。“軟件危機”就這樣開始出現了!
為什么會出現“軟件危機”?
軟件不同于一般程序,它是由許多實現各自功能的程序組成的。它的一個顯著特點是規模龐大。例如,美國四代宇宙飛船的軟件規模呈指數增長,二十世紀七十年代末穿梭號宇宙飛船的軟件包含4000萬行目標代碼。假設一個人一年可以開發出一個一萬行的程序,為了開發一個4000萬行的軟件,是否集中4000人的力量一年就可以完成呢?絕對做不到!因為代碼長度增加了4000倍,程序復雜程度的增加遠遠超過4000倍。而且如何保證每個人完成的工作合在一起確實能構成一個高質量的大型軟件系統,更是一個極端復雜困難的問題,不僅涉及許多技術問題,例如分析方法、設計方法、形式說明方法、版本控制等,更重要的是必須進行嚴格而科學的管理。
軟件本身獨有的特點確實給開發和維護帶來一些客觀困難,但是人們在開發和使用計算機系統的長期實踐中,也確實積累和總結出了許多成功的經驗。如果堅持不懈地使用經過實踐考驗證明是正確的方法,許多困難是完全可以克服的,過去也確實有一些成功的范例。但是,目前相當多的軟件專業人員對軟件開發和維護還有不少錯誤觀念。在實踐過程中或多或少地采用了錯誤的方法和技術,這可能是使軟件問題發展成軟件危機的一個主要原因。
與軟件開發和維護有關的許多錯誤認識的形成,可以歸因于在計算機系統發展中,早期軟件開發的個體化特點。錯誤認識主要表現為忽視軟件需求分析的重要性,認為軟件開發就是寫程序,并設法使之運行,輕視軟件維護等。
事實上,對用戶要求沒有完整準確的認識就匆忙著手編寫程序是許多軟件開發工程失敗的主要原因之一。只有用戶才真正了解他們自己的需要,但是許多用戶在開始時并不能準確具體地敘述他們的需要,軟件開發人員需要做大量深入細致的調查研究工作,反復多次地和用戶交流信息,才能真正全面、準確、具體地了解用戶的要求。對問題和目標的正確認識是解決任何問題的前提和出發點。
一個軟件從定義、開發、使用和維護,直到最終被廢棄,要經歷一個漫長的時期。通常把軟件經歷的這個過程稱為生命周期。軟件開發最初的工作應是問題定義,然后要進行可行性研究,決定該問題是否存在一個可行的解決辦法;接下來應該進行需求分析,也就是深入具體地了解用戶的要求,在所要開發的系統(不妨稱之為目標系統)必須做什么這個問題上和用戶取得完全一致的看法。經過上述軟件定義時期的準備工作才能進入開發時期,而在開發時期首先需要對軟件進行設計(通常又分為總體設計和詳細設計兩個階段),然后才能進入編寫程序的階段,程序編寫完之后還必須經過大量的測試工作(所需的工作量通常占軟件開發全部工作量的40%~50%)才能最終交付使用。所以,編寫程序只是軟件開發過程中的一個階段,而且在典型的軟件開發工程中,編寫程序所需的工作量只占軟件開發全部工作量的10%~20%。
另一方面還必須認識到程序只是完整的軟件產品的一個組成部分,在上述軟件生命周期的每個階段都要得出最終產品的一個或幾個組成部分(這些組成部分通常以文檔資料的形式存在)。軟件專家曾經指出:“軟件是程序以及開發、使用和維護程序需要的所有文檔。”這也就是對軟件的定義。所以,一個軟件產品必須由一個完整的配置組成,應該清除只重視程序而忽視軟件配置其余成分的錯誤觀念。
做好軟件定義時期的工作,是降低軟件成本提高軟件質量的關鍵。如果軟件開發人員在定義時沒有正確全面地理解用戶需求,直到測試階段或軟件交付使用后才發現“已完成的”軟件不完全符合用戶的需要,這時再修改就為時已晚了。
嚴重的問題是,在軟件開發的不同階段進行修改需要付出的代價是很不相同的,在早期引入變動,涉及的面較小,因而代價也比較低:而在開發中期軟件配置的許多成分已經完成,引入一個變動要對所有已完成的配置成分都做相應的修改,不僅工作量大,而且邏輯上也更復雜,因此付出的代價劇增。根據美國一些軟件公司統計資料,在后期引入一個變動比在早期進入相同變動所需付出的代價高2~3個數量級。
通過上面的論述不難認識到,輕視維護是一個最大的錯誤。許多軟件產品的使用壽命長達10年甚至20年,在這樣漫長的時期中不僅必須改正使用過程中發現的每一個潛伏的錯誤,而且當環境變化時(例如硬件或系統軟件更新換代)還必須相應地修改軟件以適應新的環境,特別是必須經常改進或擴充原來的軟件以滿足用戶不斷變化的需要。所有這些改動都屬于維護工作,而且是在軟件已經完成之后進行的,因此是極端艱巨復雜的工作,需要花費很大代價。統計數據表明,實際上用于軟件維護的費用占軟件總費用的55%~70%。
中企檢測認證網提供iso體系認證機構查詢,檢驗檢測、認證認可、資質資格、計量校準、知識產權貫標一站式行業企業服務平臺。中企檢測認證網為檢測行業相關檢驗、檢測、認證、計量、校準機構,儀器設備、耗材、配件、試劑、標準品供應商,法規咨詢、標準服務、實驗室軟件提供商提供包括品牌宣傳、產品展示、技術交流、新品推薦等全方位推廣服務。這個問題就給大家解答到這里了,如還需要了解更多專業性問題可以撥打中企檢測認證網在線客服13550333441。為您提供全面檢測、認證、商標、專利、知識產權、版權法律法規知識資訊,包括商標注冊、食品檢測、第三方檢測機構、網絡信息技術檢測、環境檢測、管理體系認證、服務體系認證、產品認證、版權登記、專利申請、知識產權、檢測法、認證標準等信息,中企檢測認證網為檢測認證商標專利從業者提供多種檢測、認證、知識產權、版權、商標、專利的轉讓代理查詢法律法規,咨詢輔導等知識。
本文內容整合網站:百度百科、搜狗百科、360百科、知乎、市場監督總局 、國家認證認可監督管理委員會、質量認證中心
免責聲明:本文部分內容根據網絡信息整理,文章版權歸原作者所有。向原作者致敬!發布旨在積善利他,如涉及作品內容、版權和其它問題,請跟我們聯系刪除并致歉!