隨著軟件技術多年的發展,軟件過程的模型也已經經歷了許多個發展階段,從最初的簡單的編碼加修正模型發展出許多適應不同需要的軟件過程模型,比如瀑布型、轉換模型、并行的瀑布模型、演進式開發模型以及螺旋式Spiral模型等等。這些模型各有利弊。并不能夠十全十美地描述軟件過程。因為軟件過程本身就是一種復雜的過程,不可能被簡單地輕易地表示和確定。
雖然軟件工程師和管理人員通常非常詳盡地知道他們的問題所在,但是哪些改進是當前最重要的問題,他們可能彼此有不同的意見。而且缺乏一個組織的改進策略,管理人員和專業人員之間在首先采取什么改進措施上很難達成一致意見。經過深入的調查和研究,終于認識到軟件過程的改進不可能一朝一夕就能成功,需要持續不斷的進行軟件過程改進改進,軟件過程改進是在一系列微小、不斷發展的,而不是革命性的創新步驟中實現的。為了從過程改進中努力中取得持久的結果,有必要設計一個改進路線來一步一步地改進軟件機構的成熟度。軟件過程成熟度框架中得出的改進策略為連續的過程改進提供了路標。它指導了改進,指出軟件機構的缺陷,然而它并不是為軟件項目陷入困境時提供一個快速補救。CMM模型可指導軟件機構在開發和維護軟件時如何控制他們的過程,怎樣改進他們的軟件工程和管理,指導軟件機構通過確定他們現在的成熟度等級,確定對于提高他們的軟件質量和過程至關重要的問題,并選擇過程改進策略。在CMM指導下通過關注一套有限的活動并積極努力地實現它們,一個機構將能夠持續地改進它們的軟件過程,這使得它們能夠從軟件過程能力中連續和持久獲得收益。
提到過程改進,我們首先關心的是“為什么我們要改進?”。一個最有效的改進的刺激來自客戶。在CMM 的案例中,美國空軍要求軟件工程研究所,設計一種改進方法來選擇軟件承包商。就拿出了CMM,這就是一個強迫的商業原因去改進他們的軟件過程,F在CMM被更廣泛地使用。一旦“為什么”的問題解決了以后,下一個問題就是“要想達到高級的軟件能力,我們必須做什么”這是CMM要解決的原則問題。我們可以將當前的活動和CMM模型進行比較,看他們需要增加和改進什么活動。一旦一個組織知道如何做以便改進,緊接著的下一個問題就是“我們如何做這些改進”這個問題包括幾個組織水平,在管理層,需要一個軟件工程過程小組,幫助建立和定義、控制并改進,需要在改進程序中完成的任務。在下一個層次,TSP指導項目組和他們的管理者應用過程原則去達成項目目標。最后,PSP關注工程師開發產品的方式。
為什么軟件項目失?有許多地方阻礙了軟件項目的完成如:無效的管理,執行很差的工程,混亂的設計。要想持續地成功,在重要的技術和管理范圍都必須要考慮到。如果有一個地方沒有被涉及到,例如需求分析,它可能變成唯一致命的弱點,導致項目的失敗。盡管導致失敗的原因也許對最終用戶沒什么影響(因為客戶可以購買功能相同的其他商品),從過程改進的角度來看原因很重要。如果原因是管理或行政的,改進組織和項目管理一般就會解決問題。如果原因純粹是技術上的,那解決起來就更復雜。對失敗項目的仔細研究,表明最普通的問題集中在不好的時間表、計劃和不加控制的需求管理,項目運行的不好也常因為失控的變化或者最基礎的質量活動失敗。因此,CMM模型中蘊涵的思想就是防止項目失敗的思想,也就是下面要闡述的內容。
CMM的管理思想基礎
CMM的基本思想是基于已有60多年歷史的產品質量原理。希襖特(Walter Shewart)在30年代發表了統計質量控制原理,戴明(W.Edwards)和朱蘭(Joseph Juran)的關于質量的著作又進一步發展和論證了該原理。
將質量原理變為成熟度框架的思想是克勞斯比(Philip Crosby),他在著作“Quality is Free”首先提出,他的質量管理成熟度網絡描繪了采用質量實踐時的5個進化階段,而該框架后來又由IBM的拉迪斯(Rom Radice)和他的同事們在漢弗萊(Watts Humphrey)指導下進一步改進以適應軟件過程的需要。1986年,漢弗蘋將此成熟框架帶到了SEI并增加了成熟度等級的概念,將這些原理應用于軟件開發,發展成為軟件過程成熟度框架,形成了當前軟件產業界正在使用的框架。
然而企業最終目的是把自己的產品或服務提供給顧客,讓顧客滿意,盡力使這個過程不斷反復、且能夠不斷壯大,才能源源不斷創造利潤。所以,我們應該明白:
第一、企業的使命是為顧客創造價值,努力地為顧客創造價值就是企業的成功之路。
第二、能為顧客帶來價值的是企業的各種作業。而一個作業是由一系列能為顧客創造價值的活動組成的,構成一個作業的各種活動是由員工完成的,但是各種活動本身對顧客來說毫無意義,顧客關心的是這些活動的結果。也就是說,只有各種活動組合在一起構成一個完整的作業才能創造價值,顧客并不關心怎樣組合這些活動。因此,出于對顧客利益的考慮,作業的構造要努力做到“復雜其中,簡便其表”。
第三、企業事業的成功來自優異的作業績效。盡管優質的產品或服務、杰出的人才和優秀的戰略對企業來說必不可少,但并不能保證企業的成功。因為,產品或服務、人才和戰略只有存在于能為顧客帶來價值的各種作業之中,才能對企業事業的成功有所貢獻。也就是說,只有通過作業把這些高質量的要素結合在一起,它們才具有實質性的意義。這種高績效的作業,則是企業優勢的集中體現。
第四,優異的作業績效是通過科學的作業設計、適當的人員配置和良好的工作環境的共同作用達到的。因為,科學的作業設計能夠靈敏地對顧客的需求變化作出反應,它是作業本身有效性的根本保證;適當的人員組合能獲得集體智慧和戰斗力;良好的環境則能激發員工的工作熱情,促使員工它們不斷超越自己。
對于軟件企業來說,它的成功來自優異的軟件開發過程,要想取得優異的軟件開發過程,就得按照以上四點要求進行管理和改進軟件企業過程。所以,可以認為CMM模型其實質就是一種新興的管理思想和方法,它蘊涵的是當今歐美乃至日本日趨盛行的“Continuos Improvement”管理哲學,現已滲透到各行各業的具體管理中去,是現代企業管理發展方向之一。
連續改進(Continuos Improvement)的含義是:以超前的視野預見過程執行實施中可能的引起要素(包括特定的設計、作業方式及其與之相聯系的成本要素),籍先期規范制約的各種手段作出最大可能效果創出(最優成本/效益比)的預期調整,并以相應的效果計量和評估方法相配合,以確保實際過程以預期的低成本運作的先導式控制。我個人認為,著眼于軟件過程的軟件能力成熟度模型CMM(Capability Maturity Model for software)是連續改進的表現,而著重于軟件過程評估和軟件能力評價與改進相呼應,CMM模型中蘊涵的思想就是防止項目失敗的思想,也就是我們所說的連續改進的思想所在。
雖然軟件工程師和管理人員通常非常詳盡地知道他們的問題所在,但是哪些改進是當前最重要的問題,他們可能彼此有不同的意見。而且缺乏一個組織的改進策略,管理人員和專業人員之間在首先采取什么改進措施上很難達成一致意見。經過深入的調查和研究,終于認識到軟件過程的改進不可能一朝一夕就能成功,需要持續不斷的進行軟件過程改進,軟件過程改進是在一系列微小、不斷發展的,而不是革命性的創新步驟中實現的。這正是連續改進思想的體現。
當同類事物之間存在著微少差異時就會產生變異性。當一個過程或系統的資源存在著變異性時,相應的系統輸出也會有變異性。例如,當原材料或所制造的部件質量有偏差時,最終產品的質量也會發生變化。正所謂“進廢品,出廢品”。所以,研究連續改進,就需要關注系統所使用資源的變異性及所采用生產過程的變異性。任何系統都會表現出變異性。一定程度的變異是自然的,這種變異并不一定意味著系統不穩定或質量低劣或成本偏高,但是太多的或反常的變異則表明系統不穩定——其輸出的質量是不一致或不可預知的。這對于任何一個公司都是一種危險的情況,因為不穩定的質量將會影響顧客的滿意度。要保持客戶的滿意,必須改進產品質量、降低產品的成本、增強產品的營銷水平。要改進產品質量、降低產品的成本、增強產品的營銷水平,必須減少系統的變異。研究連續改進過程就是明確系統中的變異在哪里發生,為什么發生。一旦了解到引起變異的原因,就可以尋找一些方法去減少這種變異,以穩定企業運行過程,使企業得到改進。
文章來源于領測軟件測試網 http://www.kjueaiud.com/