開發流程和方法
成功的軟件開發需要以下因素:
需要得到理解和遵循的原則。
進行了正式說明的基于經過驗證的最佳實踐的方法和技術。
可以進行定制的流程。
方法內容
方法內容 描述需要生成什么內容、如何執行相關工作以及由誰執行。
方法內容構件包括:
角色:定義技能和工作產品職責。軟件架構師 就是角色的一個例子。
工作產品:任務的結果,可以為交付內容,也可以不是交付內容。服務模型 就是工作產品的一個例子。
任務:特定角色執行的步驟序列。任務使用輸入工作產品來生成或修改輸出工作產品。標識服務 就是任務的一個例子。
指南:文檔說明。術語表、模板、示例 和工具使用指導信息 都是指南。
流程
流程 用于將方法內容組織到開發周期中,并指定要完成的工作的順序。要完成的工作的順序獨立于開發生命周期模型(如瀑布式或迭代)。可以將流程視為工作流或分解結構。通過流程,項目經理可以確定在項目的每個階段需要哪些人員以及修改了哪些工作產品。如果熟悉 Rational Unified Process (RUP),則可以將 RUP 規程(如分析與設計實現)視為方法內容,而將 RUP 階段(如細化和構造)視為流程元素。
務必將方法和流程這兩個概念加以區分,并提供框架來支持分別對其進行修改。
IBM Rational Method Composer (RMC) 是基于 Eclipse 的方法與流程創作平臺,用于集成、定制、代碼化和發布流程。
軟件流程工程元模型
本部分將討論開發流程。軟件流程工程元模型(Software Process Engineering Metamodel,SPEM)是正式描述軟件開發流程的的標準規范。
元數據
元數據即關于數據的數據。例如,關于所錄制的歌曲的元數據可能包括關于演唱者、專輯、作曲、長度或質量的信息,而數據則是音頻記錄本身。
模型
RUP 將模型定義為系統的抽象表示或模擬,可從特定的角度提供對系統的完整描述。模型經常用于更好地了解系統如何工作,或用于記錄實際實現的設計決策。模型經常由多個不同類型的部分組成。這些部分作為模型元素進行歸類。
自動化與轉換
SOA 設計與開發平臺應該允許進行模型的半自動化轉換,從而從高抽象級別轉換到低抽象級別,最終轉換為代碼。例如,UML-to-Java轉換能從 UML 類關系圖生成 Java 代碼。
Eclipse Modeling Framework
作為開源 Eclipse 項目,Eclipse Modeling Framework (EMF) 包括了一個模型元模型(建模領域的元模型)。以下是 EMF 網站上提供的定義:
“EMF 是用于基于結構化數據模型構建工具和其他應用程序的建模框架和代碼生成工具。通過采用 XML 元數據交換(XML Metadata Interchange,XMI)格式描述的模型規范,EMF 提供了工具和運行時支持,從而為模型生成一組 Java 類;這包括一組適配器類(支持查看模型和基于命令對模型進行編輯)和一個基本編輯器。
核心 EMF 框架包括用于描述模型的元模型 (Ecore),并為模型提供運行時支持,包括更改通知、采用缺省 XMI 序列化的保存支持以及用于對 EMF 對象進行常規操作的非常高效的反射應用程序編程接口(Application Programming Interface,API)。”
EMF 與 UML 的區別何在?
EMF 是建模框架(包括元模型),而 UML 是規范。以 Eclipse UML2 項目為例,該項目是基于 EMF 的 UML 元模型實現,支持為 Eclipse 平臺開發 UML 建模工具。從這個角度而言,可以將 EMF 元模型 (Ecore) 視為用于在 Eclipse 平臺上實現 UML 模型的元模型。
統一建模語言 (UML)
“統一建模語言 (UML) 是行業標準語言,用于指定、可視化、構造和記錄軟件系統的構件。它簡化了軟件設計的復雜流程,為構造創建“藍圖”。”來源:Object Management Group (OMG)
UML 的好處在于其具有廣泛的行業支持。該規范最初于 1997 年提交給 OMG,擁有很多供應商的設計與開發環境的全面支持,如 IBM Rational Software Modeler (RSM) 或 IBM Rational Software Architect (RSA)。
作為 OMG 標準,該規范的當前正式版本為 2.1.1。其中定義了 13 組概念 和歸入兩個類別的關系圖類型:
結構;類、對象、組件、組合結構、包、部署
行為:用例、活動、狀態機、序列、通信、計時、交互概述
UML 是一種通用建模語言,其主要優勢之一是能夠使用 UML 概要針對領域特定的建模工作進行擴展。
圖 2. UML 類關系圖
模型驅動的體系結構
模型驅動的體系結構(Model-Driven Architecture,MDA)為業務和技術提供獨立的模型,能滿足業務和技術不斷更改的情況下的需要。以下是摘自 OMG MDA 用戶指南的定義:
“OMG 的 MDA 是一種在軟件開發中使用模型的獨立于供應商的方法。MDA 提供了相應的方法,支持提供用于以下方面的工具:
指定獨立于為其提供支持的平臺的系統
指定平臺
為系統選擇特定的平臺
將系統規范轉換為針對特定平臺的規范
MDA 的主要目標是通過從關注點的體系結構分離來實現可移植性、互操作性和可重用性。”
MDA 的核心是系統(現有或以后的系統)、平臺(提供 J2EE 或 Web 服務等功能)和視角(關注特定概念的抽象概念)之類的概念。
MDA 定義以下模型:
計算獨立模型(Computation-Independent Model,CIM):用于定義功能的需求的領域模型。
平臺獨立模型(Platform-Independent Model,PIM):獨立于可以采用其進行構建的技術的業務功能和行為模型。
平臺特定模型(Platform-Specific Model,PSM):將 PIM 的規范與特定類型的平臺的使用方式進行組合。
MDA 定義了轉換,以將系統的模型轉換為同一個系統的另一個模型(如從 PIM 到 PSM)。將一個模型轉換為另一個模型的方法使用映射進行說明。
MDA 的主要目標之一是允許提供設計及為其提供支持的開發工具。
模型驅動的開發
本部分目前所介紹的內容(即模型和轉換)形成了模型驅動的開發(Model-Driven Development,MDD)的基礎,該方法有時候也稱為模型驅動的軟件開發(Model-Driven Software Development,MDSD),是采用 MDA 作為說明標準的軟件工程方法。模型驅動的開發 (MDD) 是基于模型和轉換的軟件開發方法。MDD 支持采用半自動化方式生成代碼,可使用一組模型到模型轉換以及模型到代碼轉換從高級業務分析模型生成代碼。此功能以一組模型的定義、模型實例的完整性和轉換中使用的不同模型間的元素的映射作為后盾。另外,MDD 支持對變更的影響進行分析。
IBM Rational Software Delivery Platform (SDP) 支持使用 MDD(或其他方法,如業務驅動的開發)方法進行端到端企業解決方案的團隊開發。"業務驅動的開發(Business-Driven Development,BDD)是一種基于角色的集成軟件開發方法,能使業務和 IT 保持一致,可大幅度提高業務的性能。“BDD 也使用模型,關注的是業務和 IT 模型在整個 SOA 生命周期中的協作”(請參見本系列的第 1 部分)。IBM BDD 方法通過 IBM Software Delivery Platform 支持各種角色,如業務分析人員、IT 架構師、J2EE 開發人員或集成開發人員。
請參見參考資料中提供的 IBM Systems Journal 文章的鏈接,IBM 思想領袖 (thought leader) 在其中深入地討論了模型驅動的軟件開發方法。
可重用資產規范(Reusable Asset Specification,RAS)于 2005 年開始采用,是用于描述可重用軟件資產的結構、內容和說明的 OMG 標準。RAS 的目標是提供有關如何以一致的標準方式打包資產的最佳實踐。按照規范中的定義,RAS 資產的核心特征包括:
- 分類:資產相關的上下文。
- 解決方案:資產中包含的構件。
- 用法:有關安裝、使用和自定義資產的規則。
- 相關資產:此資產如何與其他資產相關。
構件的類型可以由其文件名后綴決定,如 .xml、.txt、.doc 或 .java;也可以由其用途決定,如用例模型或分析模型。由于軟件資產 是較為寬泛的術語,RAS 還提供了用于描述特定資產類型的概要。此概念與 UML 概要相同。可以使用 UML 概要來擴展獨立于領域的 UML。類似地,可以采用領域特定(如 Web 服務)的 RAS 概要來擴展獨立于領域的 RAS。
RAS 資產的文件擴展名為 .ras,打包為 .zip 文件,這意味著其中包含一個清單,可以使用 WinZip 將其打開。圖 3 摘自 RAS 規范,說明了核心 RAS 資產的主要部分。