【文章摘要】
隨著計算機科學技術的迅速發展,軟件系統越來越復雜,若還采用原來舊的方法開發軟件,則無法滿足軟件系統的要求,這就需要有一種更新,更符合系統工程要求的方法來指導軟件系統的開發。
【關鍵詞】
軟件系統;模型;軟件開發方法
1 軟件系統的開發過程
1.1 軟件過程領域的基本概念
軟件可劃分為智能軟件、系統軟件和應用軟件三個領域。由于不同的軟件采用的開發知識不同,從而構成各自相應的方法。盡管,智能軟件和應用軟件分屬不同的領域,但智能軟件和應用軟件都是計算機軟件。建造軟件系統的解決方案由三個關鍵的相互關聯的基本要素組成:(1)軟件工程過程(SEP)。(2)軟件工程過程支持環境(SEPSE,如開發工具和建模語言等)。(3)培訓、指導和咨詢服務。
1.2 軟件過程的特點
軟件過程中的所謂“過程”是創建一個產品或完成某些任務的一種系統化的方法和工作過程,它異于通常計算機領域所特指的可運行的軟件的過程,其執行者不再僅僅是計算機,而經常是由具體承擔任務的軟件開發人員使用給定的開發工具來執行,其意義更為廣泛,描述了以某種有條理的方法進行工作或實現一個目標的任何一種機制,它甚至可以是一個無法在計算機上運行的過程,完全由人工或人工借助計算機領域以外的其它工具來完成。
軟件過程是關系錯綜復雜的各種活動的集合,各活動之間有時有嚴格的時序關系,有時是異步并行的,有時互為條件,有時互為反饋,因此實際的軟件過程中的活動存在一種復雜的網狀關系。軟件開發是一個高度動態的過程,動態變化滲透到了軟件過程的各個方面:需求說明、任務分配、調試、開發策略、工具集、支持環境等,這些變化的出現通常不可預料,造成的影響也無法確定。
2 建立過程模型的基本過程
開發過程模型首先要對外部過程模型進行提取和抽象,產生一個非正式的過程模型,包括執行過程所接收到的反饋。隨后對過程的活動順序以及所涉及的產品進行抽象描述,它可用于許多相似的項目和組織之中,共享某些信息。這樣的模型意味著是一個非常高層的過程體系結構,可以滿足一般的原則和需求,可以將其視為一個通用的原模型。在此基礎上,用戶可以根據具體情況詳細而又嚴格地描述過程中的各種任務類型,這時可以從管理人員的角度來精細化所有的子模型,如對特定領域內的任務和角色進行分類和施加約束。在將軟件模塊交付集成測試組時,可以說明這是某個特定過程模型所產生的結果。同時這個過程模型還需要進一步實例化以適應項目的各種約束和條件,因而實例化的過程模型是一個可執行的過程描述,它將實例化的活動與具體的產品和項目資源聯系起來,并遵循一定的調度時間表。一旦過程模型為相應的項目進行了實例化,該模型就可以進行模擬和運作。在模擬之后就可以對過程模型進行實際運作,生產有關的產品。
3 當前主流的軟件開發方法
3.1 結構化方法
所謂軟件構件化,就是要讓軟件開發像機械制造工業一樣,可以用各種標準和非標準的零件來進行組裝。軟件的構件化和集成技術的目標是:軟件系統可以由不同廠商提供的,用不同語言開發的,在不同硬件平臺上實現的軟件構件,方便地、動態地集成。這些構件要求能互操作,它們可以放在本地的計算機上,也可以分布式地放置在網上異構環境下的不同結點上。
3.1.1結構化程序設計方法
20世紀60年代,圍繞是否應取消goto語句,人們展開了一場激烈的爭論。圍繞goto語句爭論的結果使人們形成了新的思維觀念:編寫程序時,在正確地實現了軟件功能的前提下,必須考慮到程序的可維護性,重視程序的可讀性、清晰性和可理解性,而不能隨心所欲地去過分追求程序編寫技巧。
由于使用三種基本程序結構(順序、選擇、循環)組成的程序具有良好的可讀性、清晰性和可理解性,容易維護,所以逐漸成為主流的程序結構標準。按照這樣的新思維觀念,形成了一個新的程序設計方法——結構化程序設計方法,結構化程序設計是根據結構程序設計原理,將每個模塊的功能用相應的標準控制結構表示出來,從而實現詳細設計。
3.1.2結構化分析方法和結構化設計方法
結構化程序設計方法的巨大成功推動了結構化分析方法和結構化設計方法的發展。1974年,Stevens、Myers 和Constantine發表文章《Structured Analysis》,提出了結構化分析和結構化設計的概念。
結構化分析方法根據分解與抽象的原則,按照系統中數據處理的流程,用數據流圖來建立系統的功能模塊,從而完成需求分析工作。結構化設計方法使用模塊化和自頂向下逐步細化技術,將數據流圖等結構化分析的結果轉化為軟件系統總體結構,用軟件結構圖來建立系統的物理模型,實現系統的概要設計。
3.2 面向對象方法
面向對象軟件開發方法包括面向對象分析方法(Object-Oriented Analysis,簡稱OOA)、面向對象設計方法(Object-Oriented Design,簡稱OOD)和面向對象程序設計(Object-Oriented Programming,簡稱OOP),其核心是面向對象程序設計方法。
一般認為軟件由程序和文檔組成,而程序又由數據結構和算法組成,在傳統的程序設計方法中,數據(數據結構)和施加在數據上的操作(算法)被分離成兩個獨立的部分,而程序被看作是工作在數據上的一系列過程或函數的集合,然而客觀世界的實體既有靜態的屬性(即數據),又有動態的行為(即對數據的操作),因此這兩方面內容密切相關,由于傳統的程序設計方法將這兩方面內容分離,無形中加深了問題空間與解空間之間的裂痕,增加了軟件開發的難度。相反,面向對象方法有下列要點:客觀世界是由各種對象(Object)組成的,復雜對象可以由簡單對象組成。有共同屬性和方法的一組對象抽象為一個類(Class)。一個類(子類)可以繼承另外一個類(父類)的方法和屬性,這一特性稱為繼承。對象之間通過傳遞消息進行通信。
以上特點可以歸結為如下的公式:Object-Ori-ented=Object+Classification+Inheritance+ Communication with Messages。在面向對象程序設計方法中,數據和施加在數據上的操作被封裝在一起,形成類和對象的概念,用對象分解取代了傳統方法的功能分解。這一思維觀念創新使得問題空間與解空間的結構基本一致,有利于軟件復用,也與人們通常認識世界的思維方式相符,更利于加強代碼的易懂性。
3.3 形式化方法
軟件工程中的形式化方法就是依靠數學模型和計算來描述和驗證一個目標軟件系統的行為和特性,包括需求規格、設計和實現等,形式化方法最根本的特征就是建立在嚴格的數學基礎上,如果一個方法有良好的數學基礎,那么它就是形式化的,典型的以形式化規約語言給出。形式化方法能很好地解決在軟件開發中經常出現的二義性問題,因為形式化方法主要是符號系統,這種符號系統具有一定的數學性質。
4 結束語
總之,我們要不斷堅持和諧軟件過程,根據軟件、行業、人文等各類因素,不斷地落實和深化和諧軟件過程的理念,不斷反思總結吸收借鑒改善創新,如并行工程,敏捷制造和全球制造。
【參考文獻】
禾盈.軟件研發向質量管理要效益[N].金融時報,2001
【作者簡介】
錢秋實,(1990—),男,遼寧沈陽市人,同濟大學軟件學院碩士研究生。