簡介
如何以合理的性能價格並在預定的時間內開發出高質量的軟體是30餘年來軟體界一直在努力解決的問題。從60年代側重於編碼階段的研究到70年代廣泛採用軟體工程學的觀點,及至80年代對軟體工具和環境的研製,注意力主要集中在軟體製造過程的產品上,提出了多種方法和技術來提高軟體產品的生產率和質量,希望質量的提高減少開發次數,降低維護費用,從而達到降低整個軟體開發周期的費用。但隨著軟體項目規模的越來越龐大,系統也日益複雜,這個問題遠未得到較好的解決。近幾年來,注意力逐漸轉移到製造軟體產品的過程本身—軟體過程(SoftwarePorcess),這是基於如下的認識:軟體和其它工業產品一樣,其生產率和質量的高低最終取決於生產產品的過程的好壞,故通過對軟體過程本身的研究,改進軟體過程的質量,可以使軟體項目的實施更有效,更可預見,獲得高的生產率和高質量的軟體。軟體過程(以下簡稱為過程)是建立、維護和進化軟體產品的整個過程中所有技術活動和管理活動的集合。也可以認為,一個軟體過程是一組受約束的協同活動,其中一些活動是自動執行的。
目前,軟體過程的研究日益受到重視,其首要問題是如何表示過程,即建立過程模型;其次是在模型建立之後,如何實施(Enact)過程;進一步的工作則是研製以過程為中心的CASE環境。
過程建模對建模語言要求
軟體過程模型是過程的抽象描述,對過程的描述可以是形式化、半形式化或非形式化的,如利用結構化語言或圖形來描述過程則是半形式化的一個過程模型通常表達了一定的過程抽象層次和看待過程的一種特定觀點。過程建模的首要目的是為了更好地理解過程,精確地表示過程,從而使過程的參與者可以有效地交流、合作;其次則是試圖自動地控制、指導和幫助參與過程中的人或工具,並可使一些開發活動可以自動地重複進行;最後,過程模型為過程的修改和評估提供了良好的基礎。
一個軟體過程包括許多方面,依據過程建模的目的擇其重要的方面進行模型化才有意義且實際可行。Curits認為,過程的如下4個方面是重要的:組織、功能、行為和信息。Con-arid等人認為一個過程模型至少包括5個子模型:活動模型、用戶模型、組織模型、產品模型和工具模型。過程建模的主要方面是建模方法和建模語言,方法和語言是緊密相關的。目前主要的建模方法有:基於過程控制流的建模方法,基於角色的建模方法和基於模板的建模方法。基於過程控制流的建模方法將一個過程視為由若干步驟(過程步)組成的工作流程,先確定過程步之間的執行順序關係,再以過程步為`中心收集過程的其它數據來描述過程;基於角色的建模方法則認為一個軟體項目是由一些角色(指參與過程中的人或工具,如程式設計員,測試工程師等)來協同完成的,故先描述參與過程的各個角色、角色的行為及角色之間的協同關係,然後再以角色為中心收集過程的其它信息來建立過程模型;而基於模板的建模方法是先確定過程中的各類實體(如事件、角色、產品等),將這些實體定義成模板,然後再針對每一個模板在各個不同的抽象層次上構造該模板的具體對象,最後再定義各類實體在同一抽象層次中的所有對象之間的各種關係。過程建模語言是過程的表示工具,是過程技術的關鍵所在。由於軟體產品和其生產過程不同於一般的工業產品及其生產過程,要達到過程建模的目的,具有嚴格的形式化基礎的建模語言是必要的,圖形語言和文本描述可作為輔助手段。Losterwiel提出。軟體過程也是軟體,認為軟體過程建模是程式設計的一種形式,該觀點得到廣泛的贊同。
建模語言應滿足如下幾點:模組性,由於“軟體過程也是軟體”,模組性要求是自然的;抽象性,支持不同抽象級的過程描述,抽象非相關的細節;求精,過程本身是非常複雜的軟體系統,從高層的抽象表示到低層的詳細描述是一系列求精的結果,這樣可控制複雜性;分布性,一個軟體過程往往是由多個角色在不同場所共同完成的;並發性,軟體過程中的活動往往是多個角色的並發行為;智慧型性,軟體過程中的活動序列是動態的,非確定的,過程實施中依據一定的條件必須作出判斷和選擇。
代表性的建模語言
目前在各種文獻上介紹過的過程建模語言已達數十個,從表示風格上可以分為以下幾種類型:邏輯規則,也稱為基於規則的語言或邏輯語言;命令式程式設計語言;自動機,包括有窮狀態自動機和網人工智慧,指採用人工智慧技術的語言等一些語言兼具不同的風格,介紹幾種有代表性的語言。
ALF
在ALF中,過程模型被描述為MASP(model for assisted software proeess)的分級結構,每個MASP描述了軟體過程模型的一部分,且每個MASP又可被其它MASP進一步細化,這樣可以建立不同抽象級的過程模型。每個MASP描述為一個六元組(Om,op,Ex,or,Ru,Ch),其中Om為對象模型,它提供了一個基於ERA(實體、關係和屬性)的概念數據模型;Ex是表達式集合,用一階邏輯語言表示;操作符類型(Op)、規則(Ru)和特徵(Ch)均使用一階邏輯語言表示,操作符類型採用前置和後置條件描述過程活動的語義,規則定義了過程中的某些特定狀態下可能的自動反應,特徵說明了過程狀態上的約束條件,如不滿足,則引發一個異常;最後,Or是排序集合,採用路徑表達式定義,它表示操作符的執行是並行、選擇還是順序的。
APPL/A
APPL/A是一個過程程式設計語言,它是ADA的一個超集,在ADA的基礎上增加了軟體對象之間永久性關係的定義機制、關係操作的觸發機制和表示關係狀態的謂詞機制;同時,APPL/A繼承了ADA語言的基本特徵,如類型系統、模組定義形式(包塊)和任務通訊方式(會合機制)。在APPL/A中,軟體過程描述以程式過程的形式給劣,而對某些方面(如一致性條件)則可採用規則形式來表示。APPL/A軟體過程程式的一部分:
Funetion result0K(result,needed); declare result derived-result; needed req-outPut; if fcnok(result.fcn-output,needed) OR (result.obsery-timing>neede.time) then resultok:=False; else resultok:=True; endif end result0K;
HFSP
HFSP(hierarehieal and function software proeess deseription and enaetion)提供了一種基於屬性文法理論的過程建模方法。其基本思想是:活動是把輸人對象變換為輸出對象的函式,一個過程被定義為上述數學函式的集合;活動可按語法規則進一步分解,而輸人一輸出關係採用屬性規則來描述,一個活動的輸人輸出屬性必須與它的子活動的相應屬性一致。更精確地說,如果一個活動A的輸人輸出分別為x1,x2,…,xn和yl,y2,…,ym,那么,可以用一語法非終結符A表示,A具有繼承屬性xl,xZ,…,xn和綜合屬性yl,yZ,…,ym。HFSP通過對函式輸人屬性的並行求值支持並發,同時,同一活動可有2條以上的規則來說明,以表示活動的非確定性。語言也可表示和對象庫的接口,即在A(x1,xZ,…,xnlyl,yZ,…,ym)中,可從對象庫中讀取輸人對象和將翰出對象存到對象庫中。
Marvel
在Marvele[]中,過程建模基於規則進行,規則分為3類:項目規則集,它描述過程特定的問題;項目類型集,採用面向對象的類定義數據;項目工具集,它描述和外部工具的接口。項目規則集由2類規則所組成:激活規則和推理規則。激活規則控制開發活動的起動,特別是包括工具的調用,激活規則通常有多個互斥的結果,說明活動在不同條件下可以結束。例如,一個表示編譯器調用的規則有2個結果:編譯正確,產生目標代碼;編譯失敗,產生錯誤提示信息。推理規則只用於定義對象屬性之間的關係,活動的激活部分為空,只有1個結果。
SLANG
SLANG是建立在一個高級Petir網體系(稱為ER網)上的過程建模語言,它通過網的標記描述分布的狀態概念;轉換表示給定狀態下可能或不可能出現的事件;轉換點火表示一個事件的出現,事件出現的條件是局部的,通過輸入位置來描述,網路拓撲結構描述事件的優先關係,也描述了並行性和衝突情形。位置被認為是分散式永久對象庫,它模型化數據、工具和資源等。對事件出現時活動執行的描述採用類似於邏輯語言的形式表示。總的看來,類似於上述語言的過程建模語言均是基於各自對過程的認識而提出的,均能描述過程的一個側面和多個側面,且隨著對過程認識的深人,語言也在不斷改進和成熟。但目前尚無一個語言完全滿足過程建模的要求且可實用。