李凱
摘要:通過軟件開發(fā)實踐,人們逐步地認識到軟件產(chǎn)品的質量在很大程度上依賴于產(chǎn)品開發(fā)時所使用的過程.軟件過程建模是通過特定的方法對軟件過程進行抽象、表示和分析以增加對軟件過程的理解,同時,可執(zhí)行的(enactable)軟件過程模型可以直接指導實際軟件開發(fā)活動,進而規(guī)范軟件開發(fā)行為并最終提高軟件質量.
關鍵字:軟件過程,建模,分析研究
軟件過程(software process)是指用于開發(fā)和維護軟件產(chǎn)品的一系列有序活動,而每個活動的屬性包括相關的制品(artifact)、資源(人或者其他資源)、組織結構和約束.通過軟件開發(fā)實踐,人們逐步地認識到軟件產(chǎn)品的質量在很大程度上依賴于產(chǎn)品開發(fā)時所使用的過程,即生產(chǎn)高質量的軟件需要有一個高質量的軟件過程.由于影響軟件開發(fā)的各種因素,比如商業(yè)環(huán)境、開發(fā)技術以及開發(fā)人員,總是在持續(xù)不斷地變化,因此一個高質量的軟件過程也必須是一個持續(xù)不斷改進的過程,而軟件過程改進也構成了軟件過程管理活動的核心。
軟件過程建模的目的是利用適當?shù)慕7椒ㄅc工具建立和描述軟件過程模型,并在特定過程環(huán)境中將軟件過程模型實例化為實現(xiàn)特定開發(fā)目標的軟件過程,從而為軟件組織實現(xiàn)以過程為中心的軟件開發(fā)管理提供有力支持,對于軟件組織保證軟件產(chǎn)品質量,提高開發(fā)效率具有重要的理論和實踐價值.軟件開發(fā)是特殊的生產(chǎn)過程,它高度依賴人的能力,同樣的過程由不同的執(zhí)行者執(zhí)行,會生產(chǎn)不同質量和數(shù)量的產(chǎn)品。
軟件過程建模的主要目的是建立軟件過程的抽象模型,通過對該抽象模型的分析增加對過程本身的理解和認識,從而可以更好地實施軟件開發(fā)活動.對于同一個軟件過程,所建立的抽象模型與建模方法、建模目的密切相關.比如,對于支持控制流描述的建模語言,其相應的模型將會以過程中的一系列開發(fā)活動作為主線;而如果一個建模語言主要通過制品間的轉換關系和出入口標準來描述一個軟件過程,則相應的模型更主要的是描述開發(fā)活動中的制品.就建模目的而言,如果建模只是為了增加對過程的理解,所建立的模型只需比較高的抽象層次上對軟件過程進行描述;而為了支持后續(xù)的軟件過程執(zhí)行或者更為詳盡的分析,則需要過程模型包含必要的細節(jié)。
軟件過程建模方法的研究主要是圍繞著過程建模語言和以過程為中心的軟件工程環(huán)境(process-centeredsoftware engineering environment,簡稱 PSEE)展開的.一種建模方法所具備的描述、分析、執(zhí)行和演化的能力主要依賴于所使用的建模語言,而 PSEE 決定了一種建模方法對實際開發(fā)活動所能提供的支持;PSEE 和過程建模語言往往是密不可分的,每個 PSEE 具有相關聯(lián)的一種或者幾種建模語言,而一種建模語言需要在相應的PSEE 中被解釋和執(zhí)行.PSEE 的出現(xiàn)可以追溯到 20 世紀 70 年代,主要是通過數(shù)據(jù)流集成的方式,將一些原本孤立的開發(fā)工具組合在一起,比如需求分析工具的輸出作為設計工具的輸入、設計工具的輸出作為代碼生成工具的輸入等等,而真正將軟件過程作為一個實體進行支持的 PSEE,則是在 20 世紀 80 年代后開始出現(xiàn)在 90 年代前后,特別是基于軟件過程也是軟件(software processes are software too)的思想提出后,研究者們提出了多種 PSEE 和軟件過程建模語言。
軟件過程所涉及的要素很多,要素之間的交互和約束關系也很復雜.軟件過程建模方法通常將建模所關注的焦點集中在某一個要素上,并以該要素為中心建立整個軟件過程模型.由于建模的焦點不同,軟件過程模型的結構也不盡相同,例如,基于活動的方法以活動為模型的核心要素,其他過程要素與活動相關聯(lián),從而將軟件過程模型描述為一系列活動或步驟的偏序集.類似地有基于制品的方法以及基于角色的方法這些方法通常僅關注于過程和活動之間的關系,人被作為過程的執(zhí)行者或者過程資源而被動地在預定義的模式下實施軟件開發(fā)活動,所建立過程的能力由設備能力所決定,只考慮過程能夠做什么以及目標如何實現(xiàn),很少考慮實現(xiàn)目標所需的資源.
上述的建模方法一般是在軟件建模和分析方法的基礎上,針對軟件過程建模的需要,作適當?shù)母倪M而提出來的.但在研究過程中,人們逐漸認識到現(xiàn)有的方法在實際應用中存在著如下兩個主要問題:a) 實際軟件開發(fā)過程涉及很多要素,而軟件過程模型作為實際軟件開發(fā)過程的抽象,一般只描述了過程的某些方面.
另外,由于開發(fā)人員所具有的主觀性、軟件開發(fā)活動所具有的創(chuàng)造性以及實際軟件開發(fā)過程在執(zhí)行中將會隨著項目的進展或者外部組織環(huán)境的變化而不斷變化,使得實際軟件開發(fā)活動很少可以嚴格按照在 PSEE 中實例化的軟件過程模型執(zhí)行.因此,所構造的軟件過程模型往往是隨著開發(fā)的進行而不斷與實際軟件開發(fā)活動相偏離,從而逐漸失去了對實際軟件開發(fā)活動的指導和規(guī)范意義在 PSEE 和建模語言的設計過程中,人們需要權衡相互矛盾的需求。
為使不具有太多工程背景的涉眾(stakeholder)也能很好地理解軟件過程,需要建模語言的表現(xiàn)形式較易于理解:一般需要圖形化支持且不需要涉及太多的細節(jié);而軟件過程的執(zhí)行和分析需要建模語言能夠描述必要的細節(jié):一般需要具有明確的操作語義,而且最好采用形式化的方法.如何能夠滿足這些相互矛盾的需求,是軟件過程建模語言和 PSEE 設計中需要仔細權衡的問題,同時也是軟件過程建模方法研究所一直面對的課題.近年來,軟件過程建模領域的研究人員針對上述問題作了很多有益的探索,主要的研究熱點包括支持過程演化(process evolution)、偏離容忍(deviation tolerance)的 PSEE、軟件過程的驗證和分析(主要包括過程模型的語法檢查、語義正確性分析、匹配和仿真),以及集成的軟件過程模型等.同時,對于分布式和全球協(xié)同環(huán)境下的軟件過程建模和軟件過程建模技術在企業(yè)的應用、實施也積累了一些經(jīng)驗.