傳統軟體工程面臨的問題
傳統的軟體工程方法學認為軟體開發是一個串列的過程,從時間的延續上來看需要順序經歷一些階段才能完成軟體的開發,以期望解決20世紀60年以來在軟體開發過程中所存在的“軟體危機”。然而,隨著時間的推移,人們發現以這種思想為主導的軟體工程領域依然存在許多認為可以解決但是卻沒有解決的問題,其中生產效率低下和質量欠佳最為突出。因而,如何提高軟體生產率和軟體質量成為擺在軟體工程界面前的重要課題。因而,人們期望從其他領域中獲得啟示,以解決在軟體工程中所存在的效率低下和質量欠佳等問題。
來自製造業及其他領域的啟示
在製造業中,傳統的產品開發模式是沿用“串列”,“順序”和“試湊”的方法,開發過程是按順序一步步完成的,即順序地進行市場分析、產品設計、工藝設計、採購、加工和測試。每一個部門分工明確,完成一項特定的工作,這種模式在製造業中稱為“串列工程”。面對商品市場競爭的加劇,顧客對產品質量、成本和種類的要求越來越高,產品的生存周期要求越來越短。企業為了贏得市場,就不得不解決加速新產品開發、提高產品質量、降低成本和提供優質服務等一系列問題。然而,傳統的“串列工程”在面對在這些問題中所追求的時間和效率時力不從心。因而,“並行工程” 應運而生。通過分析國內外製造業中所套用“並行工程”解決問題的大量事實,清晰地表明能夠明顯地提高效率。文獻 認為並行工程具有如下特點:
並行性
各種活動並行交叉進行。既包括各個部件開發的並行交叉,又包括各個階段的並行交叉。
流程改善
通過改善與最佳化工作流程,提高產品質量。
儘早開始工作
在信息不充分的情況下開始工作,因此要有很強的應變能力。
集成化
強調全面最佳化,追求產品整體的競爭力和各小組的密切有機合作。
強有力的支撐環境
必須有良好的支撐多小組並行協同工作的網路與計算機平台。
強有力的管理
強調強有力的管理,保證各種並行活動協調統一地進行。
除了來自製造業的啟示外,“並行處理”、“多個程式設計師同時為同一個系統編碼”、“現實生活中各類非自覺的、偶然的並行行為”進一步為我們解決效率和質量方面的問題給出了啟示。
軟體並行過程
軟體過程的概念包含了軟體生命周期里所涉及的一系列相關過程,它為管理那些軟體開發過程中較難控制的活動提供了一個統一的框架 。軟體過程是在軟體生命周期中所實施的一系列活動的集合,活動是任務的集合,任務則起到把輸入加工成輸出的作用 。文獻 認為:如果將製造業或其他領域中關於“並行”的思想引入到軟體過程中去,將會極大地提高軟體開發的質量及效率。並總結出了在軟體並行過程中所存在的五個基本問題:
軟體過程及其模型
軟體過程是軟體生命周期中所涉及的一系列相關過程。軟體過程模型是軟體過程的靜態描述,軟體並行開發涉及到軟體生命周期中的各種軟體過程,通過過程模型描述各種不同類型與粒度的並行性。在過程模型執行時就體現出相應的並行行為,達到軟體並行開發的目的。
並行成分劃分
研究如何將一個完整的軟體過程模型劃分為若干個可以並行進行的成分,並定義劃分的結果。
並行控制
由於系統內部各組成部分之間存在各種聯繫,因此,為開發一個系統而劃分的各並行成分之間必然存在這樣和那樣的依賴關係,它們之間相互配合,同步推進,完成統一的目標。從而使得在軟體並行過程中,並行控制成為一個關鍵的問題。假如引入並行的思想而未對並行給予控制的話,那么雖然能夠在一定的程度上縮短軟體開發的周期,但卻使得系統開發的複雜度大大增加,可能會導致開發出來的系統內各成分間存在不一致性、不相容性、冗餘等問題。
支撐環境
軟體並行以縮短軟體開發周期為目標,以並行性、集成性為主要特徵,涉及眾多的角色和軟體過程,沒有強有力的支撐工具是難以想像的。
互動機制與集成技術
各並行成分之間必然存在互動,如何進行互動直接影響到最後系統的集成,互動機制應該簡單、明確、獨立性強、有利於系統的集成。
過程描述
文獻 針對於軟體並行過程中所存在的問題進行了系統地討論。首先,提出了基於Petri網的支持軟體並行開發的軟體過程模型SDDM,並給出了一個支持軟體並行開發的形式化建模語言SDDML和基於SDDML的過程建模方法。其次,對並行成分的劃分進行了討論,結合面向對象的開發策略,提出了基於Petri網系統模型的動態劃分方法和基於腳本的系統劃分方法這兩種並行模組劃分方法。再次,對並行性挖掘和延拓進行了討論,通過分析活動中間的相關性,尋找軟體過程中可以並行化的因素,挖掘可並行性的活動,構造出Petri網表示的並行化的軟體過程模型。再次,對並行控制進行了討論,提出了兩個並行控制模型:即基於Petri網的用於並行過程控制的模型CCM和描述開發過程中的對象的C-P/T系統。再次,對集成技術進行了討論,提出了一種新的集成測試策略-基於Petri網系統模型的集成測試,利用Petri網構造的系統模型,分事件測試和網際測試兩個層次測試面向對象軟體的質量。再次,對計算機輔助軟體並行開發進行了討論,提出了一個支持軟體並行開發的CASE系統,提供可視化的並行控制手段,用戶可以互動式地使用該系統實施控制,保證開發目標的正確性。再次,對軟體開發過程的自動化進行了討論,基於公理語義的形式化需求規約語言,討論了實現軟體開發過程自動化的途徑。最後,對軟體並行開發對CMMI的支持進行了討論。
軟體並行過程不僅從方法學的層次闡述了一種軟體並行開發的方法,而且通過提高上游結果的質量和對軟體過程進行改進,以達到最佳化需求分析和設計、提高軟體質量和軟體的生產率的目的,並能夠對實現軟體並行開發的各個方面進行必要的分析,從而可以給出可行的解決方案,直接面對軟體工程的實施,具有重要的套用價值。