當前位置:成語大全網 - 成語詞典 - 請教未來軟件工程專業的發展趨勢,請壹定留下您的高見。

請教未來軟件工程專業的發展趨勢,請壹定留下您的高見。

軟件工程技術的發展趨勢

1, 軟件工程是什麽

隨著信息技術的發展,軟件作為壹種信息技術的主要載體日益滲透到社會政

治,軍事,經濟,文化乃至生活的各個方面和各個層次.軟件無所不在,其需求

愈來愈多,復雜度愈來愈高,可用性要求愈來愈強.如何高效地開發和生產可靠,

可信的軟件,是軟件領域壹直必須面對的問題.

20世紀60年代,隨著第三代計算機的產生,計算機的硬件性能發生了翻天

覆地的變化,運行大型的復雜軟件系統已經成為可能.然而,相應的軟件開發技

術卻難以滿足大型軟件系統的開發需要,因而造成:

1. 大多數大型的軟件開發項目的成本都超過預算,開發進度壹再拖延;

2. 軟件產品質量不可靠,大型軟件系統存在bug幾乎成為不可避免的問題;

3. 軟件產品難以維護;

4. 軟件產品的開發成本過高;

5. 軟件產品開發的效率跟不上計算機硬件發展以及用戶需求的增長;

軟件技術跟不上硬件技術發展而造成的諸多問題被稱作"軟件危機"

(Software Crisis).為了解決軟件危機,1968年北大西洋公約組織(NATO)的

計算機科學家在德國召開的國際學術會議上第壹次提出了"軟件工程"的概念,

希望通過系統化,規範化,數量化等工程原則和方法來實現復雜軟件系統的開發

和維護.

按照Webopedia詞典中的定義,軟件工程是"研究如何開發大型應用系統的

計算機科學學科.軟件工程不僅覆蓋構建軟件系統的相關技術層面問題,還包括

諸如指導開發團隊,安排進度以及預算等管理層面問題" 由這個定義可以看出,

軟件工程不僅僅包括編寫程序代碼所涉及的技術,它包括所有對軟件開發能夠造

成影響的問題.Brook在1987年指出,不存在任何壹個單壹的開發技術或管理

技術能夠解決軟件工程所面臨的所有問題.因而軟件工程是壹個包括壹系列概

念,理論,模式,語言,方法以及工具的綜合性學科.圖1中,我們給出了壹個

軟件工程技術的總體框架.可以看到,軟件工程技術可以分為產品實現層技術以

及開發管理層技術.其中,產品實現層技術涉及與特定軟件系統開發相關的問題,

為在軟件生命周期的各個階段實現軟件產品提供技術支持;開發管理層技術通常

不針對特定的某個軟件開發項目,而是為管理和改進軟件組織所有的業務活動提

供技術支持,例如如何使用適當的方法管理軟件開發過程中所需要執行的各個活

動,以便在特定的軟件項目中系統的展開軟件工程的層技術,支持軟件組織的業

務實現,從而控制軟件產品開發的成本,提高生產的效率,保證和改進軟件產品

的質量.

系統設計

設計方法,

設計模式,

設計語言,

圖形符號標識,

設計工具.

系統實現

編程語言,

編程環境,

編程工具.

驗證和確認

軟件測試方法,

軟件測試工具,

軟件檢測方法,

軟件檢測工具.

操作與維護

維護方法,

維護工具

需求描述

需求描述語言,

形式化語言,

圖形符號標識,

需求分析方法,

需求確認,

需求管理,

需求工具.

軟件配置管理 配置管理工具,配置管理標準及規程,變更控制

軟件成本估算 成本計算模型,專家決策,估算與分析

軟件質量管理 質量保證,質量計劃,質量控制

軟件過程改進 軟件過程標準,如:ISO9001,CMM,CMMI,SPICE等

軟件過程建模 軟件過程建模方法,建模語言,軟件工程環境,PSEE系統,CASE工具

產品實現層開發管理層

圖1 軟件工程技術的總體框架

2, 基本概念

軟件工程技術在近半個世紀的歷史中,得到了長足而迅速的發展.在經歷了

多次浪潮的沖擊之後,我們有必要先澄清壹些基本的概念.

2.1 軟件

IEEE將軟件定義為"計算機程序和相關的文檔",軟件產品壹類提供給具體

的客戶使用,另壹類提供給大眾市場.ISO 9001:2000對軟件的定義為"壹個好

軟件的基本屬性表現為,軟件實現了客戶需要的功能和性能,能夠維護,可以讓

用戶在指定環境和條件下依賴和使用".

壹般來說,軟件是信息的載體並且提供了對信息的處理能力,例如對信息的

收集,歸納,計算,傳播等等.雖然計算機硬件設備提供了物理上的數據存儲,

傳播以及計算能力,但是對於用戶來講,仍然需要軟件系統來反映用戶特定的信

息處理邏輯,從而由對信息的增值來取得用戶自身效益的增值.因而從本質上講,

軟件可以被理解為壹種邏輯上的信息處理設備,該設備具有用戶所需求的信息處

理能力.壹個好的軟件應該能夠為用戶提供有價值的信息輸出,從而為用戶帶來

效益.

2.2 軟件工程與計算機科學

軟件工程是壹門工程學科,關註於軟件生產的各個方面和生產方法.計算機

科學關註所有計算機相關的理論和基礎.軟件工程屬於計算機科學的範疇,主要

關註開發和交付可用軟件的理論和實踐.

軟件工程方法包括: 軟件系統模型,註釋,規則,設計建議(advice)和過

程指導等等.

2.3 軟件工程與系統工程

系統工程關註開發基於計算機的系統的所有方面,包括硬件,軟件和過程.

軟件工程是其中的壹部分.

2.4 軟件過程和過程模型

ISO9000:2000將過程的定義為"任何使用資源將輸入轉化為輸出的活動或

壹組活動可視為壹個過程".ISO15504將過程定義為"能夠將輸入轉化為輸出的

壹組相互關聯的活動".CMM將過程定義為"人們用來開發和維護軟件及其相

關產品的壹組活動,方法,實踐和轉化."

由上面的幾個定義可以看出,軟件過程可以被理解為開發和軟件產品的壹組

活動以及與實施這些活動相關的要素.這裏我們給出壹個更加細致的軟件過程的

定義――軟件過程是設計,開發,應用和維護軟件產品的壹組相互關聯的活動,

方針,組織結構,技術方法,規程以及工作產品.它定義了對軟件開發進行組織,

管理,度量,支持和改進的途徑.

從這個定義可以看出,軟件過程是壹個由諸多與實現軟件產品相關的要素組

成的復雜系統.如何將這些要素有機地組合在壹起,從而有效並且高效地實現軟

件產品開發是軟件過程技術所關註的問題.

相應地,我們可以定義軟件過程模型為――使用適當的方法表達的壹個軟件

過程抽象描述.模型是對其所表示的現實的抽象,是壹個部分的描述.軟件過程

模型通常包含與各種軟件過程要素相關的模板或類型,或者它們的實例.模型對

現實的抽象描述了壹組現實對象的***同特征,並且在特定的環境,參數和約束條

件下能夠被實例化為現實的對象.從這個意義上講,軟件過程模型可以被理解為

"對壹組軟件過程的***同特征的抽象描述".軟件過程由壹組軟件過程要素及其

相互的關系組成,軟件過程模型是對軟件過程要素及其關系的抽象描述.

2.5 軟件成本

軟件成本指開發軟件產品所需要花費的資金.壹般來說,開發壹個軟件項目

的成本包括以下幾個方面:

1.軟硬件成本,包括維護費用;

2.旅行及培訓費用;

3.工作成本(effort cost).

對於大多數軟件項目來說,其成本中最主要的部分是工作成本.工作成本並

不能簡單的理解為對參與項目的軟件開發人員支付的薪金.軟件組織通常采用將

其運營組織的總成本除以參與開發的人員數量的方式核算工作成本.工作成本壹

般包括:

1.辦公環境的采暖,照明等費用;

2.組織管理人員的費用,例如財務,行政管理人員,經理等等;

3.網絡及通訊費用;

4.輔助基礎設施管理費用,例如圖書館以及娛樂設施費用等;

5.開發人員的社會保障金,健康保險等等;

工作成本通常是開發人員薪水的兩倍或以上.

2.6 計算機輔助軟件工程――CASE

CASE是壹個軟件系統,用於對軟件過程的活動提供自動化支持.CASE系

統常常用作方法支持.

2.7 軟件質量

盡管ISO9000等對質量有定義,但在壹種大眾的觀點中,質量並沒有明確的

含義.質量是壹種多維的概念,包括客觀的實體,實體各個方面的視角,以及實

體的質量屬性.

從大眾的觀點看,通常認為質量是無形的,沒有明確的特征.它可以被討論,

感覺和判斷,但不能度量.大多數人認為質量類似於美國聯邦法庭關於淫穢的說

法,"當我看見它的時候我知道". 壹些關於質量好,質量壞的說法都沒有明確

的定義.這種情況反映公眾是可以接受從不同的角度去解釋質量.這也隱含著認

為質量既不能被控制和管理,也不能被量化.另外也有壹種觀點認為,質量是奢

侈,分等級並且可以體驗的.壹些昂貴復雜的產品被認為比他們伸手可及的產品

具有更高的質量.譬如根據實際的可靠性和維修記錄,卡迪拉克(cadillac)是好

汽車, 雪佛蘭(Chevrolet)不是;高保真環繞系統是高質量的系統,單聲道收

音機就不是.從這樣的觀點看,質量被歸約到壹類具有復雜功能的昂貴產品.

大眾觀點中的誤解和含混,非常不利於工業界對質量的改進.所以質量應該

被準確,可理解,可操控的方式定義.針對這壹點,Juran等人指出,質量是"適

於使用",Crosby指出,質量應該是"順應需求".這兩種觀點是壹致的,目前

被大多數質量專家所采納."適於使用"考慮了客戶的需求和期望,包括產品和

服務是否適合於他們的使用.不同的客戶可能以不同的方式使用產品,這就意味

著產品必須擁有多種元素來適合使用.按Juran的觀點,每壹個元素就是壹個質

量特征,他們可以歸為壹些類,作為適合使用的參數.最重要的兩種參數是設計

質量(quality of design)和符合質量(Quality of Conformance).設計質量是對需

求的確定和說明,而符合質量就是符合需求.滿足需求,意味著需求必須被清楚

地描述,不會導致誤解.在開發和生產的過程中,要持續地度量以確定是否滿足

需求,不滿足的部分被認為是缺陷.

前面對於軟件的定義可以看出,軟件作為信息技術的壹個載體,其質量應該

與其所能夠為用戶提供的信息處理能力,或者更直接地講,用戶對於軟件產品的

質量要求更多是關註於軟件所能提供的有用信息,而非軟件產品本身.很多軟件

產品失敗的原因恰恰是因為忽略了這壹個根本問題.

此外,用戶對產品的需求並不僅僅與產品的功能性特征相關.用戶為了取得

產品需要為產品的提供方支付壹定的費用(產品的價格),而用戶僅僅在其通過

使用該產品取得的效益(或者更壹般地講,獲得的效用)高於其支付時,才願意

購買該產品.因此,產品的質量並不能夠在忽略用戶支付條件的前提下無止境地

提高.對於用戶來講,完美但是價格昂貴的產品是無法接受的,壹個能夠最好的

滿足用戶需求的產品應該是"剛剛好"(just good enough)的.

3, 軟件工程發展的歷史

從1968年以來,軟件工程有了很大的發展,並對軟件產品的改進也是顯而

易見的.我們對軟件開發的活動有了更好的理解,有了更有效的方法支持軟件系

統的設計和實現.這些新的方法和技術也有效地減少了大型復雜系統的開發成

本.然而,不可否認的是,軟件組織在預算成本和預計工期內交付客戶期望的復

雜系統仍然存在問題.因此,有人評論軟件工程壹直處在慢性的,持續痛苦的狀

態.

總的看來.計算機技術的發展趨勢呈現為:硬件價格降低,人力費用增加,

應用復雜度增加,社會對軟件的依賴程度增加,具體如表1所示:

表1

工具 硬件 軟件工程技術

1950

2000

機器碼

匯編

第三代語言

4GLs

AI 語言

面向對象

Vacuum tube 電子管

Transistors 晶體管

Semiconductors 半導體

Integrated circuits集成電路

Parallel Processing 並行處理

VLSI 超大規模集成電路

結構化程序設計

功能分解

結構分析

以數據為中心的分析

面向對象的分析

3.1 結構化程序設計

結構化程序設計(Structured Programming, SProg)方法始於60年代後期,

典型的代表是Goto語句從軟件中驅逐出來.其動機就是改進軟件源碼的結構,

增加軟件的魯棒性和可靠性.但隨著系統復雜度的提高,單獨使用結構化方法並

不能保證軟件的質量.盡管使用了結構化方法,開發出來的軟件依然難於理解和

使用.於是導致了功能分解技術的出現.

3.2 功能分解

功能分解(Functional Decomposition, FD)技術是壹個過程方法,它將要實

現的最終系統分解成壹系列逐步細化的概念化的模塊(conceptualization).概念

之間的關系用結構圖(structure Chart)來表示.FD通常在面向過程的paradigm

中使用.這些系統的概念模塊是以面向過程的方式定義的.(每壹個模塊代表壹

個過程或者子過程).FD的目標提供壹種方法通過抽象來逐步求精地理解系統,

其開發的產品具有良好的結構.系統的概念模型和表示與源代碼的結構是壹致

的.這種方法今天依然在使用,但結構圖已經不能提供足夠的信息來保證可以得

到壹個結構良好,準確的解決方案了.為了增加壹些必要的信息,出現了結構化

分析與設計方法.

3.3 結構化分析與設計

結構化分析與設計(Structured Analysis and Design, SAD)的降臨標誌著第壹

個軟件工程方法的誕生.它用壹組技術***同來表示整個軟件開發的過程.SAD

基於SPrag和FD,並進壹步用抽象的技術來產生模塊化的輸出.隨著SAD的引

入,最終實現系統的交付變成壹系列的裏程碑而不僅是壹個裏程碑.分析要解決

的問題以及解決辦法的設計都被認為是軟件開發過程的重要步驟.

3.4 以數據為中心的設計方法

以數據為中心的設計方法(Data-Centered Design Method, DCM)的貢獻是在

結構化分析中擴充了數據模型,其目的是確定整個組織的數據需求,創建壹個中

心的,集成的數據庫.單獨的應用程序開發並從中心數據庫取數據.數據模型用

ER模型表示.ER最初的目的是為關系數據庫的設計,建立了數據模型之後,應

用程序的開發就可以用結構化的分析和設計來關註中心數據庫的數據.

3.5 面向對象的設計方法

面向對象的方法(Object-Oriented Method, OO)是軟件工程方法的又壹次飛

躍.對象是壹個具有壹組狀態的實體,並封裝了附加於這些狀態的操作.狀態描

述了對象的屬性或特征,操作描述了對象改變其狀態的方法以及該對象為其他對

象所提供的服務.面向對象方法認為,人類生活在壹個由對象(Object)組成的

世界中.對象可以被歸類,描述,組織,組合,創建和操縱.面向對象方法是壹

種模型化世界的抽象方法,結構上具有良好的高內聚低耦合特性.采用面向對象

技術設計和開發的軟件系統更易於維護,在對系統進行修改時,能夠產生較少的

副作用.同時,面向對象技術提出了類,繼承,接口等等概念,從而為對象的復

用提供了良好的支持機制.因而采用面向對象技術對軟件產品進行設計和開發,

也能夠有效地提高軟件組織的開發效率.

90年代開始,面向對象方法已經成為軟件組織分析,設計和開發軟件產品

的首選範型.

3.6 以過程為中心的軟件開發方法

前面的各種軟件工程方法嚴格說來,都屬於軟件產品的實現層技術.它們提

供了壹系列方法,技術和工具支持軟件被設計為具有良好定義的結構,使得其復

雜度可以得到控制,軟件易於實現,易於維護和移植.這些方法和技術在壹定程

度上可以改進軟件質量,可靠性,結構以及成功交付軟件概率.但事實上,單純

依賴實現層技術並不能夠保證軟件組織高質量並且高效地開發軟件產品,即使到

了今天,軟件危機依然存在,甚至由於應用領域的普及,需求的頻繁變化,有著

愈演愈烈的趨勢.

1. 軟件的設計方法出現轉移.面向業務過程的方法被面向對象的方法所代

替.但許多人認為OO的方法在工業界使用還不足夠成熟.雖然事實並非如此.

2. 壹些非技術的管理人員常常把軟件理解為是壹組計算機指令.從這個觀

點看,只有壹種任務是軟件開發,那就是寫指令.技術人員常常通過度量代碼行

的進展來迎合管理人員的要求.但軟件工程技術的目標是改進代碼的質量而不是

代碼的數量,所以工業界壹些人常常認為軟件工程技術對軟件開發過程幾乎沒有

貢獻.事實上,當實踐好的軟件工程技術時,軟件開發人員有時會從事壹些並不

直接產生代碼的活動,這些活動的目標是得到壹個模塊化的,魯棒的,可靠的解

決方案.但常常人們只關註了最終實現系統的代碼行數量,實現的功能,以及測

試出來的Bug,對軟件的形成過程沒有給予足夠的重視.

顯然,信息技術的飛速發展,把軟件推到了壹個前所未有的重要高度.隨著

軟件的應用範圍,復雜度和規模的急劇增大,傳統軟件工程基於實體驅動和確定

目標,有序控制的開發模式開始讓位於Internet環境下以過程為中心,基於協同

驅動和動態目標,實體聚合的開發模式.軟件的生產必然向著工業化和過程化的

方向發展,支持軟件開發工業化的方法和技術已經成為影響軟件產業發展的重要

因素.

4, 軟件過程技術

軟件過程概念的形成可以追溯到20世紀60-70年代.1969年,Lehman花費

了壹年時間研究IBM公司的編程實踐,並首次提出了"編程過程"(programming

process)的概念――"將壹個微小的想法轉化成二進制程序代碼的所有相關技術

和活動的集成".這壹概念初步確立了軟件過程概念的基礎.

人們對軟件過程的認識經歷了壹個從將軟件過程當作壹個"黑盒子"過渡到

對軟件過程產生透徹認識的過程.將軟件過程作為壹個"黑盒子"來看待,軟件

產品(過程輸出)則僅僅依賴於產品的需求(輸入).在這種模型中,產生軟件

產品的過程沒有被描述出來.使用這種模型的壹個問題是難以估計實現軟件產品

的時間和成本.此外,在軟件開發項目初期,軟件產品的需求往往是非形式化的

和不明確的,因而造成軟件開發的輸出在很多情況下不是用戶所希望的產品.

為了降低軟件開發的風險,人們需要打開軟件過程的"黑盒子"從而對生成

軟件產品的軟件過程作出更清晰細致的了解.因此,研究人員提出了軟件生命周

期的概念,例如Royce提出的瀑布模型以及Boehm提出的螺旋模型等等.軟件

生命周期定義了軟件產品開發中的所要經歷的壹系列不同的階段,壹般包括:需

求分析和規約,設計,開發,確認,安裝,應用,維護以及退役等等.同時,軟

件生命周期還為如何實現這些不同的開發階段定義了相關的概念和指導.總的來

說,軟件生命周期定義了軟件過程的框架和原則.它並沒有詳細描述軟件過程的

活動,組織形式,工具和操作規程,以及開發方針和約束.軟件生命周期模型是

定義軟件開發如何進行的壹個重要的起點,但是單純應用軟件生命周期來指導和

控制軟件開發實踐仍然是不足的.

20世紀80年代,軟件過程技術開始形成壹個獨立的學科.軟件過程的概念

建立在軟件生命周期的基礎之上,並且提供了壹系列更為廣泛和全面的概念來設

計和組織與軟件開發活動相關的各種要素.軟件過程技術是壹個集成了組織,文

化,技術以及經濟等多種因素的綜合性學科.有效地識別,定義,管理和改進組

織的軟件過程,對於壹個軟件組織實現其經營目標,改進其業績是至關重要的.

總的來說,軟件過程技術的意義在於:

1. 在產品實現前估計產品開發的進度和成本:軟件組織在系統地識別和管理

其所使用的過程基礎上,能夠在產品實現之前策劃產品從設計,開發到實

現的全部過程.對過程的策劃來源於組織對自身業務活動的分析以及以往

項目的成功經驗.基於這些分析和經驗,組織能夠有效地估計產品開發的

進度和成本.

2. 有效地利用資源,降低成本,縮短周期:資源是實現軟件產品開發的必要

條件.通過確定產品實現的過程,軟件組織就可以根據過程實現所需要的

資源要求有目的地並且有效地投入和利用資源,防止資源不足或浪費.有

效地利用資源可以降低產品開發的成本,提高軟件開發所產生的效益,從

而使顧客和所有其它相關方受益.

3. 確保軟件產品開發及軟件產品質量的穩定性和持續性:軟件過程的壹致遵

循和有效控制能夠使產品的生產和產品的質量保持持續穩定的狀態,使得

軟件產品的質量變成可預期的指標.持續穩定的開發過程能夠有效地降低

不合格的產生,從而降低開發的成本,提高軟件產品的質量.

4. 對軟件產品開發的全過程進行有效地監控,盡可能早地發現問題或可能產

生問題的趨勢,並予以解決:軟件過程的識別和控制使得對軟件產品生產

過程的監控成為可能.通過對過程特征的考察和分析,軟件組織能夠確定

有效的監控措施以確保過程的執行不會偏離預期的目標或超過規定的閾

值.通過對過程參數的監測和分析,組織能夠在過程出現不穩定或出現變

壞的趨勢時及時采取必要的措施,防止問題的產生.

5. 發現改進的機會,以及確定過程改進實施的優先次序:軟件組織持續改進

其業績的重點在於過程改進.對於改進產品質量來說,改進其生產過程是

更根本的.過程定義為過程改進提供了必要的基礎.良好定義的過程有利

於對過程特點和性能的考察和分析,也有利於取得過程改進所需要的信

息.同時,系統地考察組織內的過程,分析其相互關系,有利於發現改進

的關鍵區域,確定過程改進實施的優先次序.

6. 有效的實現和改進軟件產品的質量,使所有相關方獲益:良好定義的軟件

過程能夠持續穩定地實現產品的質量.軟件組織能夠通過不斷地改進軟件

過程從而使其產品更好地滿足顧客的要求和期望.產品質量的提高,組織

過程的改進最終能夠使所有相關方獲益.

7. 再現組織自己或其他組織的成功經驗:軟件過程模型能夠使軟件組織將以

往的成功經驗以正規的形式予以保持,並且在未來的項目中予以重現.組

織還可以參考其他類似組織的好的管理和生產經驗,並以軟件過程模型的

形式確定下來,從而指導自己的生產和管理,為自己帶來效益.

4.1 軟件過程管理及軟件過程改進

80年代初,軟件產業逐步進入過程化生產的時代,同時壹些重要的國際標準

和模型紛紛提出,其中最主要的三個流派是:CMM/PSP/TSP,ISO 9000 系列和

ISO/IEC15504 標準,其中以美國國防部支持的CMM/PSP/TSP流派研究得最為

深入,在軟件領域應用得最為廣泛.

4.1.1 CMM系列模型

軟件工程20世紀60年代開始研究支持軟件開發活動的CASE技術和工具,

其間研究碩果累累,但對軟件產業的發展卻沒有起到預期的作用.此時人們意識

到,單純依靠軟件產品的實現技術並不能夠解決軟件危機所帶來的問題.軟件產

品的生產是壹個多人協作的復雜活動.成功地開發大型軟件系統,還需要相關的

方法和技術對軟件開發過程實施管理.

20世紀80年代,卡內基-梅隆大學(CMU-Carnegie Mellon University)的

軟件工程研究所(SEI-Software Engineering Institute)在美國DoD的支持下,提

出了評價軟件供應商過程能力的模型CMM(Capability Maturity Model).1987

年,SEI首先提出了能力成熟度框架,並於1991年和1993年陸續推出了CMM

模型的1.0版和1.1版.此後SEI針對具體軟件生產要求,進壹步推出SA-,SE-,

IPPD-,P-CMM等壹系列成熟度模型.為了和其它模型相區別,SEI將最初的CMM

更名為SW-CMM.CMM將組織的成熟能力劃分為五個等級,這五個等級定義了

度量軟件組織生產過程成熟度的標準,以及評估軟件組織生產能力的標準.

CMM模型為軟件組織提供了壹個分層的,螺旋上升的過程改進途徑.軟件

過程管理涉及很多問題,CMM最大的貢獻在於指出了軟件組織處於不同的能力

成熟度級別時,所應關註和改進的關鍵問題(關鍵過程域).這就使得軟件組織

能夠了解在其當前狀態下所最迫切需要解決的問題,從而更加有效地實施過程改

進.

為了整合現有CMM模型和相關的工作,1998年,SEI啟動了CMMI(CMM

Integration)計劃,並於2000年8月11日推出CMMI SE/SW v1.0正式版.已經

開始的SW-CMM v2.0的草案停止推進並被集成在CMMI框架中.目前已經推出

集成了系統工程,軟件工程,集成產品和過程開發,供應商管理四部分的

CMMI-SE/SW/IPPD/SS(CMMI for Systems Engineering,Software Engineering,

Integrated Product and Process Development,and Supplier Sourcing)1.1版. CMMI

通過提供統壹的過程改進框架,消除了不同模型之間的不壹致性和重復性,同時

也降低基於模型進行過程改善的成本.另外,CMMI提供了兩種模型表示方式―

―分級(staged)模型表示和連續(continuous)模型表示.

CMMI 分級模型主要對應於已有的CMM模型,依然分為五個成熟度級別,

CMMI連續模型摒棄了傳統的臺階式上升的模型.它認為軟件組織的改進是持續

的,並從它自身最希望的,可以給組織帶來效益的地方進行.因此組織完全有理

由把某些過程域的成熟度能力提高到很高級別,而把其它某些過程域繼續留在較

低級別.連續模型為組織的過程改進提供更加方便的途徑,並且在結構上和正在

制定中的ISO15504兼容.

CMM的出現帶來了軟件產業發展新的浪潮,為軟件大規模生產帶來了生機.

CMM以及相關技術的推廣和應用使人們逐漸認識到:技術提高和過程改善同時

進行,才是促進軟件產業發展的最佳途徑.

此外,人對過程改進和技術提高依然起著非常重要的作用,如圖2所示.

人技術

過程

圖2:人,過程和技術的三角形關系

從圖2我們可以看到,人,過程和技術***同構成了壹個相互支持,相互制約,

均衡發展的三角形.事實上,人是過程和技術的主體,人,過程和技術三位壹體

構成現代企業全面質量管理的核心內容.其中:

過程:指產品生產的過程,如計劃,跟蹤,度量,審計等等,以及過程

流程,如生產線,工序等

技術:指產品生產的技術,譬如工藝,軟件的需求分析技術,設計技術,

編碼技術,測試技術等等

人:指可以勝任過程管理和技術活動的人力資源.這就涉及到要招聘合

適的人才,對組織內的員工進行培訓,提供人員之間有效溝通的

渠道,以及客戶/供應商/合作夥伴之間的關系維護

可以看到,現代企業(組織)管理都圍繞這個鐵三角在運行,過程是三角形

的支點,過程通過壹系列相互關聯的方針,程序和規則將企業的經營活動串起來,

形成企業的業務流程;人是過程的執行者,其行為規範要受到過程的約束,並在

執行中接受必要的服務支持,通常表現為壹組支持過程;技術則要通過過程來實

現,通常表現為壹組工程過程.可見企業中壹切活動都是過程,或者過程的壹部

分.過程成為企業(組織)管理的中心.

對軟件組織而言,軟件生產環節中的所有過程組成軟件過程.CMMI將軟件