隨著信息技術的迅猛發展,今天的IT從業人員正處于這樣一種進退兩難的境地:一方面,根據以往的痛苦開發經歷,他們知道如果采用雜湊的作坊模式來開發復雜的、高質量的信息系統具有太大的 風險;另一方面,他們也同樣知道,形式化的、戒律森嚴的 軟件工程方法(典型情況下是與ISO9000和SEI- CMM相關的)又常常是官僚主義和耗費時間的,不可能滿足目前高度競爭的“Inte.net時代”環境下對于進度方面不斷增長的挑戰性要求。顯然,如何使得企業在保證軟件質量的前提下,同時又能夠適應快速變化的市場需求,無疑是業內人士關注的焦點。為此,本文從市場驅動的IT開發特點分析入手,對目前國際上正日趨成熟的“輕”方法和滿意質量的內涵和操作加以討論,同時以快速應用開發為實例介紹了具體操作及注意事項,為讀者進一步深入理解現代軟件工程實踐工作提供幫助。
一、市場驅動的IT開發工作
當今的IT企業正處于一種前所未有的競爭環境之中,無論是作為獨立軟件供應商還是增殖服務商,也無論是開發直接面向市場的軟件產品如游戲、工具、多媒體等等,還是為用戶定制軟件如 電子商務應用、MIS等等,市場競爭都無處不在,IT開發工作被迫在市場驅動的狀態進行,具有以下典型特征:
◆快速演變升級的基礎技術,必須及時跟蹤基礎技術的革新并調整策略。
◆持續的競爭,必須不斷推陳出新來滿足用戶需求。
◆時間就是金錢——需要在時間、質量、費用之間達成折衷。
◆從業人員聰明且 教育程度高,能夠在一定范圍內進行自我管理。
以往流行于IT行業的設計—評審—構造模型已過時。IT業最新的技術和工具改變了以前項目運行所必須遵循的邏輯順序。比如:現在一些工具允許“即時”創建屏幕,使得冗長的設計—評審—構造模型不再適用,而要求一種更難于計劃的原型—審核—構造—再審核—再構造的過程。
角色重疊:現代技術和工具使原來專門的設計、分析、編碼人員之間嚴格的區分界限變的模糊。
以往的IT開發人員相對于當前市場驅動下的開發人員而言,至少擁有以下優勢:控制他們的應用開發技術。在傳統的企業應用開發中,機器配置和其他系統元素在實現階段就被指定,F在,這種優勢不復存在,很少有哪個系統被實現為在專用機器上的孤立應用。相反,他們經常是企業用戶機器上的另一種應用,必須與其他商業應用程序聯合使用,這使得IT開發人員不得不為保持與CORBA、Internet、或數據庫 標準的變化相一致而疲于奔命。同時,持續的競爭、緊迫的進度和嚴格的預算讓IT開發經理不得不經常根據銷售人員或客戶的要求而調整開發工作。
顯然,市場驅動的新環境給IT開發帶來新的挑戰,如果照搬套用以往的成功經驗和開發模式并非明智之舉,必須適應新形勢的要求,重新思考和定位。
二、“輕”方法浮出水面
隨著軟件工業不斷發展,各種各樣的模型不斷涌現或退出歷史舞臺。早期從不同角度提出的各種設計表示方法(常常以發明者的名字來命名)目前似乎已經聚合成為UML這種被廣泛接受的標準,結構化設計方法也正在讓位于面向對象設計等更受歡迎的方法學,這種變化在更高層次的全局性開發方法學方面同樣進行著。
傳統意義上的軟件方法學描述通!澳軌颉碧幚砣魏未笮〉捻椖,而實際上真正的困難就來自于如何對這些方法加以裁剪以適合較小的項目。針對這種理論與實際的脫節現象,國際上一些著名的軟件工程專家提出所謂“重(heavy)”方法和“輕(light)” 方法之分,試圖為快速發展的軟件工業探尋更切合實際的解決方法。
所謂“重”方法,就是指形式化的、戒律森嚴的軟件工程方法學——不僅指這些方法所生成紙文檔重量,還意指管理 資源投入、QA評審的程度和開發人員被要求遵守的嚴格流程。相對的,諸如快速應用開發(Rapid Application Development,簡記為RAD)和原型方法等則可以被稱為“輕”方法——不僅是因為這些方法傾向于產生最小數量的紙文檔,還因為其將管理資源投入最小化。不幸的是,1990年代的許多RAD項目在方法學上采取了過“輕”的處理以至于幾乎不存在什么方法,這些項目常常退化為雜湊式作坊開發,實質上根本沒有任何文檔。 顯然,需要在兩種極端方法之間找到平衡點。
輕方法代表了一種有意識的風險防護方法,依據不同風險在與開發相關的各種活動中投入相應時間、資金和資源。例如,進行多少需求分析工作才算是過多,擬或過少?針對一個幾百個需求的開發項目而言,一個需求分析“輕”方法(requirements-light approach)可能是由將每一個需求通過一個簡潔的句子加以文檔化的行為所組成,一個需求分析“中”方法(requirements-medium approach)可能要求對每個需求通過一段描述性文本來文檔化,而一個需求分析“重”方法(requirements-heavy approach)則可能要求詳細的UML模型、數據元素定義和每個對象方法的形式化描述。
究竟選擇需求分析的“輕”方法還是“重”方法很大程度上受到公司產品上市時間或合同期限壓力的影響。同時,公司雇員的流動率也是一種影響因素:作為形式化開發過程的理由之一認為,如果有一份詳細的文檔來記錄需求、設計和編碼,那么一旦在項目進行中關鍵開發成員離職所造成的混亂將會被盡量減小。然而,盡管1970年代和1980年代的系統生命周期預期為十年或二十年,也許Interbet時代的網絡公司更愿意正式承諾其電子商務應用僅持續一年,然后被廢棄或完全重寫。如果正是這種情況,并且如果下一代應用預期與當前應用存在質的差異,那么僅僅為了達到 SCM-CMM三級就遵循需求分析“重”方法還真的有意義嗎?
同樣地,針對設計和測試工作采用什么樣的形式化和嚴格程度才是合適的呢?與項目管理有關的時間匯報、進展匯報、狀態 會議及其他常見活動又如何呢——尤其針對那些僅持續一周或兩周的項目?這些問題總是相互關聯的,但是一些傳統上被接受的答案卻需要至少每隔幾年重新審視一下,因為成本-收益參數正在隨著商業環境、技術和軟件開發人員的變化而不斷變化。
輕方法還重新審視了歷史上有關投入資源在需求分析的假定,以及投入資源在 過程改進的假定。1981年Barry Boehm在他的經典著作“軟件工程 經濟學”(Software Engineering Economics)中指出了一項驚人發現,即如果我們在項目的系統分析階段引入一個缺陷的話,那么在項目的分析階段發現這個缺陷會比允許這個錯誤直至進入設計階段才被發現節省約10倍資源。但是Boehm在此做了一個在新千年的頭十年中未必依然正確的基本假定:僅當該缺陷在生命周期某階段發生時可通過某種方式加以鑒別,那么這種數量級增長關系圖才是相關的。在今天的環境中,這個前提假定在許多商業條件下都是不成立的。比如,當Bill Gates闡明對于瀏覽器IE的需求時,可能他會說“就象Netscape Navigator那樣,但要更好”,可能Netscape的Marc Andreesen也會這樣想:“我希望使Navigator就象Mosaic一樣,但要更好!钡钱擳im Berners-Lee在構建WWW的初始版本和瀏覽器的第一個草樣時又該如何考慮呢?讓他寫出詳細需求的意義何在呢?
與此同時,重方法的倡導者爭辯說,如果一個缺陷在開發階段就被發現,那么就不應當責備引入該缺陷的個人,而應重新檢查允許該缺陷發生的過程本身。但此處又有一個基本假設,也就是說,我們值得投入資源在鑒別一個過程中潛在缺陷的唯一理由是我們希望再次使用同樣的過程——因為我們的下一個項目將會與上一個項目足夠相似,很自然就應使用同樣的過程。但是現在事物變化是如此之快,以至于完全不能保證第N+1個項目會與第N個項目有任何相似之處。因此,昨天的過程可能不得不為了明天的需求而發生實質性變化,換言之,也許只有投資于過程中的重要缺陷才是值得的,因為一些細節僅針對某個特定項目才有意義。
當然,仍然有一些環境需要我們繼續依賴于舊的、基本的軟件工程原理,在這些環境中重方法被證實依然正確。但是我們應當捫心自問,隱藏在這些原理背后的前提假定是否依然合理。對于許多今天的項目而言,一些根本性的前提假定需要加以改變,而輕方法將是具有最優性能價格比的方法。
可以看出,輕方法的基本思路是試圖在項目范圍、成本、時間和質量之間達成一種平衡,其關鍵是在足夠的管理可見度、足夠的靈活性和足夠快的開發速度以完成工作之間找到這種平衡,必須嚴格審查你想要對項目加入或刪除的控制手段的價值何在。盡管我們可以將某個公布于眾的開發方法作為基礎進行裁剪,但必須深入理解你要執行的每個步驟的理由,尤其在項目的初始規劃階段,就應明確定義開發方法,確保項目 團隊成員的參與和認可,并以滿足項目的商業需求為目標。
文章來源于領測軟件測試網 http://www.kjueaiud.com/