隨著現代信息產業的蓬勃發展,軟件開發已經成為一項浩大繁復的工程。就象是建造一座宏偉的宮殿,從計劃、設計到施工,每一個環節都必須嚴格把關,稍有不慎,整個工程就會失敗。據統計,僅在美國,每年就有180,000個信息技術項目,耗資大約$2500億美元,其中25-30%的項目會流產。由此可見,由于管理不善和設計上的失誤所造成的損失是巨大的,F代軟件開發的管理和方法論顯得比以往任何時候都更為重要。
軟件開發的過程由方法論和工具構成(process = methodology + tools)。正如裝配電子設備一樣,僅有工具就可以勝任裝配任務。但為了減少失誤和提高效率,人們往往采用流水線作業,流水線作業便是一種應用于電子設備裝配中的方法論。目前,信息技術市場流行的方法論有RUP(Rational Unified Process), The Zachman Framework, XP(Extreme Programming)等。在這些方法論中,最流行的要數RUP。RUP是由Rational Software公司首創的。因它與當前流行的JAVA, J2EE技術和面向對象的設計思想(OOAD)緊密的結合在一起,所以在大型的信息技術項目中得到了廣泛的應用。在這篇文章中,我們試圖對RUP的特點作一個初步的探討,并且討論它是如何貫穿在整個軟件開發的生命周期之中的。
RUP最重要的它有三大特點:1)軟件開發是一個疊代過程,2)軟件開發是由Use Case驅動的,3)軟件開發是以構架設計(Architectural Design)為中心的。
按照傳統的瀑布(Waterfall)開發模式,軟件開發大致經歷如下幾個步驟:商務需求分析(Business Requirement Analysis),系統分析(System Analysis),系統設計(System Design),開發實現(Implementation),測試(Test),發布(Deployment),系統支持(Supporting)和系統變更管理(Change Management)。
傳統的瀑布開發模式假定在進行新的開發過程時,上一個過程已經完成,而且不會回到上一個過程。初看起來,這似乎是一個非常合理,高效率的解決方案,但20多年的實踐證明,這個開發模式存在著很大的弊病,原因是軟件開發是一個非常復雜的工程,有諸多的因素影響工程的效率和成敗。軟件開發需要許多不同背景的個人和團隊參與。由于這些復雜性,在軟件開發的整個生命周期中每一個階段都有可能留下隱患和錯誤。如果等到系統已經開發實現完畢,在測試階段發現了重大問題,這時的返工將會造成人力、物力、財力及時間上的巨大浪費。鑒于以上的考慮,RUP強調軟件開發是一個疊代模型(Iterative Model),RUP定義了四個階段(Phase):開端(Inception),闡述(Elaboration),建造(Construction),過渡(Transition)。其中每個階段都有可能經歷以上所提到的從商務需求分析開始的各個步驟,只是每個步驟的高峰期會發生在相應的階段。例如開發實現的高峰期是發生在建造階段。實際上這樣的一個開發方法論是一個二維模型。這種疊代模型的實現在很大程度上提供了及早發現隱患和錯誤的機會,因此被現代大型信息技術項目所采用。
RUP 的另一大特征是Use Case 驅動。Use Case是RUP方法論中一個非常重要的概念。簡單地說,一個Use Case就是系統的一個功能。例如在一個基于電子商務的醫療系統中,病人可以坐在家里通過網上瀏覽器與醫生約定看病的時間(Make appointment),這樣,“Make appointment”就是系統的一個Use Case。在系統分析和系統設計中,Use Case被用來將一個復雜的龐大系統分割、定義成一個個小的單元,這個小的單元就是Use Case,然后以每個小的單元為對象進行開發。按照RUP, Use Case貫穿整個軟件開發的生命周期。在商務需求分析中,客戶或用戶對Use Case進行描述,在系統分布和系統設計過程中,設計師對Use Case進行分析,在開發實現過程中,開發編程人員對Use Case進行實現,在測試過程中,測試人員對Use Case進行檢驗。
RUP的第三大特征是它強調軟件開發是以構架為中心的。構架設計(Architectural Design)是系統設計的一個重要組成部分。在構架設計過程中,設計師(Architect)必須完成對技術和運行平臺的選取,整個項目的基礎框架(Framework)的設計,完成對公共組件的設計,如審計(Auditing)系統,日志(Log)系統,錯誤處理(Exception Handling)系統,安全(Security)系統等。設計師必須對系統的可擴展性(Extensibility),安全性(Security),可維護性(Maintainability),可延拓性(Scalability),可重用性(Reusability)和運行速度(Performance)提出可行的解決方案。
文章來源于領測軟件測試網 http://www.kjueaiud.com/