朱偉斌
摘要傳統(tǒng)的生產(chǎn)模式越來越難以滿足飛速增長的軟件需求,要提高軟件生產(chǎn)效率,必須研究軟件生產(chǎn)模式。本文對當前提出的新的軟件生產(chǎn)模式(MDA、軟件工廠)進行了剖析,提出了進行改進軟件生產(chǎn)模式實踐的要點。
關(guān)鍵詞軟件生產(chǎn)模式 MDA軟件工廠DSL 軟件模式軟件開發(fā)方法學
1 引言
在高需求、高投入、高競爭的環(huán)境下,軟件生產(chǎn)的規(guī)模和效率成為軟件企業(yè)最需要解決的問題之一。隨著軟件工程理論和CASE工具的發(fā)展,突破傳統(tǒng)軟件開發(fā)方式的方法論逐步被提了出來。OMG在UML的基礎(chǔ)上提出了模型驅(qū)動構(gòu)架(簡稱MDA),為從軟件抽象模型到軟件代碼的自動生成指出了一個方向。這個概念很快就得到工具廠商的響應,目前大多數(shù)主流UML工具都支持MDA的部分功能。而在Microsoft即將發(fā)布的Visual Studio.Net 2005中更是加入支持軟件工廠的工具Team System??梢灶A見,以軟件自動化生成為特點的軟件生產(chǎn)方式的革命即將來臨。
事實上,各種新型CASE工具正在悄悄地改變我們的軟件開發(fā)模式。然而,自動化的軟件生產(chǎn)時代并不會馬上到來。軟件生產(chǎn)自動化并不僅僅是幾個軟件工具,它更是一種新的軟件開發(fā)的方法學。它需要我們的管理人員、開發(fā)人員轉(zhuǎn)變傳統(tǒng)的開發(fā)觀念,使我們的技術(shù)積累、過程管理等方面都適應新的開發(fā)模式。而且,從傳統(tǒng)開發(fā)模式到自動化開發(fā)模式必定是一個漸進的過程。我們正處在變革的初級階段,必須應用與此階段相適應的開發(fā)模式。
2 傳統(tǒng)軟件生產(chǎn)方式和MDA開發(fā)過程
到目前為止,大多數(shù)軟件代碼的生產(chǎn)仍然依靠程序員來人工完成。這種傳統(tǒng)的軟件生產(chǎn)方式為軟件產(chǎn)業(yè)帶來了許多問題。首先,軟件生產(chǎn)的效率低下,項目延期率極高;其次,軟件產(chǎn)品的質(zhì)量沒有保證;再次,軟件開發(fā)團隊的規(guī)模受到局限;最后,軟件產(chǎn)品難于修改和維護。
這里,有一個問題困擾著軟件界:程序員所進行的大量工作都是集中在抽象層次較低的軟件編碼上,軟件應用的抽象層次和程序代碼的抽象層次相距較遠;程序代碼對應用需求的準確程度難于測量,程序員的個人能力成為制約軟件產(chǎn)品質(zhì)量的關(guān)鍵。而且,隨著軟件規(guī)模的越來越大,軟件項目也變得難以控制。
針對傳統(tǒng)軟件開發(fā)模式存在的弊病,MDA被提出來了。盡管,MDA仍然不成熟,但是它確立了一種新的軟件開發(fā)架構(gòu)。MDA的全稱是模型驅(qū)動架構(gòu),它不僅僅是一種標準,更是一種重要的開發(fā)方法學。2002年,國際權(quán)威的對象建模標準化組織OMG將MDA作為其戰(zhàn)略方向。短短三年過去,幾乎所有的主流UML建模工具都融入了MDA功能。
顧名思義,MDA是使用軟件建模語言作為軟件編程語言來直接產(chǎn)生軟件的一種體系結(jié)構(gòu),它定義了平臺無關(guān)模型(PIM)和平臺相關(guān)模型(PSM)這兩個概念。PIM是具有高抽象層次、獨立于任何實現(xiàn)技術(shù)的模型,它描述軟件系統(tǒng)如何支撐業(yè)務(wù),并不關(guān)心軟件是在哪個平臺上實現(xiàn)的。PSM是使用特定平臺的術(shù)語描述如何實現(xiàn)業(yè)務(wù)的模型,例如關(guān)系數(shù)據(jù)庫模型使用表、視圖、外鍵約束等描述業(yè)務(wù)對象及其之間的關(guān)系。
MDA的最大特點就是這些變換是自動進行的。如果用MDA的概念套入傳統(tǒng)的開發(fā)生命周期,傳統(tǒng)的開發(fā)也可以看作是模型的變換。然而,傳統(tǒng)的變換是需要程序員手工進行的,唯一的自動變換是高級語言代碼到可執(zhí)行目標代碼的變換。由于從PIM到代碼的變換可以自動進行,MDA過程迭代時,開發(fā)人員就可以從PIM模型開始,而非從代碼開始。這樣,分析設(shè)計文檔就不會和代碼相分離,整個軟件也就更容易理解了。
MDA的目標就是將程序開發(fā)工作的抽象層次提高。軟件技術(shù)發(fā)展史,也是開發(fā)抽象層次逐步提高的歷史。例如在語言方面,我們從機器語言開始,經(jīng)歷了匯編語言、高級語言、4GL的發(fā)展歷程,高級語言也從結(jié)構(gòu)化語言發(fā)展到面向?qū)ο蟮恼Z言,現(xiàn)在又出現(xiàn)了基于模式的編程。每一次轉(zhuǎn)變都是一次抽象層次的提高。然而到目前為止,實現(xiàn)MDA仍然面臨一些現(xiàn)實問題,如怎樣根據(jù)自身需求構(gòu)造變換,如何使得構(gòu)造過程足夠簡單。
3軟件自動化生產(chǎn)模式的實踐策略
MDA的提出讓軟件界看到了軟件生產(chǎn)模式變革的新希望,許多新的方法論也被提了出來。微軟公司提出了軟件工廠的定義:一個使用基于軟件架構(gòu)(Software Schema)的軟件模板來配置的可擴展的工具,它是可以為產(chǎn)品系列提供生產(chǎn)設(shè)備的軟件產(chǎn)品系列。微軟提出的軟件工廠,其創(chuàng)新之處就是在于生產(chǎn)流程的自動化。
軟件工廠的概念體現(xiàn)了先進的自動化編碼概念,提高了開發(fā)人員工作的抽象層次,同時也給開發(fā)人員的手工加工提供了空間。雖然MDA遠未成熟,但是改變生產(chǎn)模式,提高軟件生產(chǎn)的效率,是每個軟件項目管理人員和開發(fā)人員必須要做的努力。
在軟件生產(chǎn)自動化的初級階段,筆者認為超前要求軟件完全自動化生產(chǎn)幾乎是不可能的,但是完全可以運用現(xiàn)有的工具進行半自動化的軟件開發(fā)。圖1描述了一種切實可行的半自動化軟件生產(chǎn)模式。
這種軟件生產(chǎn)模式分成兩條主線。一條主線是軟件體系結(jié)構(gòu)方面的研發(fā)工作。這是軟件自動化生產(chǎn)的一個前提,可以將這一步工序認為是生產(chǎn)線的建造。通過軟件體系結(jié)構(gòu)方面的開發(fā),我們可以得到兩個對于自動化生產(chǎn)至關(guān)重要的部件,一個是軟件支持庫,另一個是軟件自動編碼工具。另一條主線是真正應用軟件產(chǎn)品的研發(fā)。軟件產(chǎn)品研發(fā)的第一步是自動化進行的,是通過已經(jīng)配置好的軟件自動化編碼工具將業(yè)務(wù)需求模型自動轉(zhuǎn)換為待加工的半成品代碼,我們可以將這個過程看成是生成毛坯的過程。第二步是通過手工進行的,是對自動生成的代碼進行修改、微調(diào)的過程,我們可以將這一過程稱為精加工過程。經(jīng)過程序員的精加工,一個符合用戶功能和性能需求的高質(zhì)量軟件產(chǎn)品就產(chǎn)生了。
這種模式可以加快開發(fā)進程,使軟件符合企業(yè)所研發(fā)的技術(shù)架構(gòu),代碼更一致,可維護性更強,穩(wěn)定性也更有保證;同時,它也避免了自動化生成代碼刻板,細節(jié)難以自動生成的問題。這樣的方案比理想化的MDA模型更容易實現(xiàn),同時它也符合軟件工廠的一些基本特點。
4 結(jié)束語
運用圖1所示的生產(chǎn)模式,筆者所在的公司已經(jīng)進行了一些成功的實踐。在進行軟件自動化實踐的時候,我們得到了以下幾點寶貴的經(jīng)驗。
(1)在先進的理論指導下,運用各種行之有效的模式,探索適合自身發(fā)展的生產(chǎn)模式。
(2)重視軟件開發(fā)團體自身的技術(shù)積累,以更好運用軟件自動化生產(chǎn)工具。否則,就會陷入巧婦難為無米之炊的窘境。
(3)轉(zhuǎn)換開發(fā)人員的心態(tài)和習慣,及時培訓開發(fā)人員、解除開發(fā)人員的疑慮。在剛開始實施根據(jù)數(shù)據(jù)庫模式生成代碼時,筆者所在的公司曾出現(xiàn)過這樣一些情況:開發(fā)人員對生成工具不熟悉,認為不如手工編碼方便,還認為使用生成工具不靈活,限制了他們的創(chuàng)造力,不愿意修改由軟件工具生成的代碼。在這樣的情況下,項目管理人員不得不反復講解軟件生成工具的原理,強調(diào)在當前條件下生成工具只是生成毛坯,還需要精加工過程。
軟件自動化生產(chǎn)模式需要逐步完善,其成功實踐也不是一朝一夕能夠取得的。隨著軟件工程技術(shù)的發(fā)展,軟件自動化生產(chǎn)模式的探索已不僅僅是停留在理論上。軟件生產(chǎn)模式的革新將為我們帶來更高的軟件生產(chǎn)力。無論我們在觀念上更傾向于MDA、微軟軟件工廠、面向語言編程,進行軟件生產(chǎn)模式創(chuàng)新都是勢在必行的。這不僅僅是軟件企業(yè)競爭發(fā)展的需要,也是中國軟件產(chǎn)業(yè)走向強大的必由之路。
參考文獻
1 Anneke Kleppe, Jos Warmer, Wim Bast. 鮑志云譯.解析MDA.北京:人民郵電出版社,2004
2 David S. Frankel. 鮑志云譯.應用MDA. 北京:人民郵電出版社,2004
3 張亞勤.全球軟件行業(yè)現(xiàn)狀、趨勢與挑戰(zhàn).http://research.microsoft.com/asia/news/displayArticle.aspxid=1004
4 Umlchina.袁峰摘譯.Forrester發(fā)布MDA和基于模式開發(fā)報告.http://www.umlchina.com/News/Content/190.htm,2005
5 Jack Greenfield.軟件工廠簡介.http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/aj3softfac.mspx,2004
6 Jack Greenfield.通過模式、模型、框架和工具裝配應用程序.http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/SoftFactAssApp.mspx,2004