我覺得在未來幾年我們會看到如下的趨勢:● 需求工程,漸成熱點:專業化的角色,日益復雜的業務創新,全球分布的團隊以及互聯網級的交付速度,這些都對需求獲取的正確性和有效性提出了更高的要求;我預計需求工程的研究和實施會成為近期的熱點,其中Use Case技術會被更廣泛而正確的應用,而相關工具的研發也會成為熱點(如IBM Rational Requirements Composer、Ravenflow等)。用例的優勢在於它天生是黑盒的,它用自然語言抽象了用戶和目標系統的交互,避免了混入分析、設計和實現細節,以保證用例可以被不懂具體技術的業務及測試人員所真正理解。同時,需求分析員又可以方便地通過用例分析(即用分析類來試圖在理想方式下實現用例),將需求體系精華成分析模型。在這壹過程中,需求分析員可以更進壹步地完善基於用例的需求體系,而不必擔心分析模型會汙染需求,從而實現需求與分析的分離及有效互動。● DSSA和MDD,老樹新花(基於領域的構架〔DSSA〕與模型驅動的開發〔MDD〕):隨著軟件應用的日益普及,軟件已經超出了將手動流程自動化的範疇,而開始成為業務創新的主要推動力。因此,引入捕獲特定領域內最先進需求及其實現架構的DSSA成為行業客戶的熱點之壹。而且,DSSA的引入將MDD門檻大大降低了,也使基於DSSA的MDD支撐工具成為可能,從而可以極大地提高開發效率並保證軟件質量(例如,Telelogic的Rhapsody就是壹個成功的基於實時嵌入式系統構架的MDD工具)。● 叠代/敏捷,漸成標準:隨著軟件交付周期的日益加快,叠代化開發已經成為大多數軟件開發團隊的必選項。但是叠代對整個團隊的需求、架構、協同及測試能力都提出了更高的要求,現在許多開發團隊都在試圖導入叠代化開發的過程中,敏捷可以是被看成叠代化開發的壹種導入方式,只不過敏捷的範圍其實比叠代化開發更大壹些。敏捷的三個要素是叠代開發、坦誠合作和自適應性。坦誠合作其實才是敏捷的精髓,如Ivar所說,敏捷其實是有關Social Engineering的。敏捷的主要貢獻在於他更多地思考了如何去激發開發人員的工作熱情,這是在軟件工程幾十年的發展過程中相對被忽略的領域。● 持續集成,蓄勢待發:持續集成是保證叠代化開發質量的主要方式,通過持續集成可以利用自動化的方式來盡量自動地、盡早保證代碼質量。隨著叠代和敏捷的流行,持續集成相關的工具成為現在市場上的新熱點(如持續集成框架IBM Rational BuildForge, 開源軟件CruiseControl,代碼靜態分析工具Klocwork Insight,IBM Rational Software Analyzer等)。持續集成是壹個復雜的系統工程,組織需要首先將現有的配置管理/變更管理工具與Build環境緊密集成並完成自動化Build過程,在根據企業/項目/產品的現狀,定義如何自動化地檢測軟件質量(代碼靜態分析、單元測試或冒煙測試),並定義需要自動化生成的管理報表。● 基於實踐的過程框架,方興未艾:開發角色的專業化的和分布的全球化都要求軟件開發過程更加規範,而敏捷又要求過程必須緊密貼合項目的實際需要,因此傳統的大壹統的過程無法符合這壹需求。新壹代的過程將是以實踐為核心的,項目可以通過組裝所需的不同實踐來獲得貼近項目要求的過程。IJI(Ivar Jacobson International)的EssWork框架和IBM Rational的RMC都是新壹代的基於實踐的過程框架。依據過程專家長時間的經驗,他們很小心、很仔細地將壹個完整的開發過程組件化,從開發過程抽象出壹個個可以被單獨導入又可以被組裝到壹起的實踐,從而使逐步求精式的過程改進成為可能。對於壹個軟件組織而言,如果已經建立壹個比較成熟的軟件開發流程,但覺得這壹流程並不適合所有項目的實際需要,那麽目前可以考慮的是用實踐的方式去重新梳理現有流程,以使項目組能夠以實踐為單位來組裝出切合項目實際的流程;另外,該組織也可以將適用於本組織的業界流行的實踐導入到現有流程當中,IJI公司的專家從業界最佳經驗中抽取了八個實踐,配置管理.
昨日黃花:隨著開發團隊規模的日益減小,配置管理的復雜性大大降低了,我們註意到越來越多的用戶轉向使用開源的配置管理工具(如Subeverison,JIRA,hosted-projects等等);未來的配置管理工具更多的以壹種全生命周期管理平臺(Application Lifecycle Management)的方式出現,弱化了單項的配置管理能力而強調了全流程的整合(如Microsoft VisualStudio Team System和IBM Rational Team Concert等)。即便配置管理的復雜性降低了,但它仍然是開發項目管理的最重要的支撐平臺之壹。目前的重點應該是加強對項目經理進行有關配置管理知識的培訓,讓他們理解到配置管理能力(如並行開發、基線回退等等)能夠如何幫助項目開發過程的,從而使配置管理工具/環境的價值能夠得到充分的發揮。