摘要:本文介紹了基于DDR體系結構模式的軟件生產線。通過將DDR體系結構模式軟件化并結合行業,可以實現行業通用的軟件生產線,作為行業軟件開發平臺。
關鍵詞:變化和演化;體系結構模式;軟件復用;軟件生產線1
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913(2007)10-0032-04
1引言
如何即時滿足不同種類、不同規模的組織中用戶不斷提高的、快速變化的業務需求,是目前軟件生產過程中面臨的首要和緊迫的問題。軟件產品必須即時滿足信息系統的變化和演化的特征。同時軟件產品也要滿足其不同的應用范圍和人群,尤其重要的是領域工作人員需要能夠對所需要的軟件產品進行裁剪、定制和生產。
傳統的軟件生產模式是由軟件技術人員滯后地開發軟件產品,不能夠滿足軟件產品本身最主要的特征,變化和演化,也不能夠滿足軟件產品的不同應用范圍和人群,領域工作人員不能對所需要的軟件產品進行裁剪、定制和生產。這種軟件生產模式不具備“規模定制,隨需而變”的能力,可維護性、可擴展性、可移植性差,可再生產能力低。因此,需要新的技術手段、生產模式與商業模式。
構造性和演化性是軟件的本質特征。要提高軟件開發效率,提高軟件產品質量,必須改變手工作坊式的開發方法,采取工程化的開發方法和工業化的生產技術[2]。計算機軟件產業的發展應當與工業產業的發展一樣,不僅要走工程化,更重要的是走產業化之路,運用構件標準、生產線等生產方式,批量、定制地提供各種形式的產品。對于目前計算機軟件產品的開發、生產、管理與應用,也應當從技術手段、生產模式與商業模式等方面進行變革。
基于體系結構的實用軟件開發方法及相應的支撐環境是軟件體系結構研究的一個重要方向[2]。為即時滿足信息系統的變化和演化的特征,出現了一種自適應的、面向模式的DDR(Display-Definition-Realization,顯示-定義-實現)軟件體系結構模式[2]。本文基于DDR體系結構模式的思想,提出了一種基于DDR體系結構模式的軟件生產線。在開發軟件產品時,可以按照軟件生產線的形式進行軟件產品的開發,同時變革傳統的軟件開發、生產模式及團隊管理。
本文首先簡單介紹DDR體系結構模式的主要思想,然后著重論述基于該體系結構模式的軟件生產線,接著扼要地介紹國內外在此方面所做的工作及作者對該生產線在一些領域的初步應用,最后討論了其進一步的發展方向。
2DDR體系結構模式
顯示-定義-實現(DDR)體系結構模式如圖1所示。

圖1DDR體系結構模式
在DDR體系結構模式中,定義層是該軟件體系結構的核心,它的具體內容決定了系統的整體需求,不同系統的需求定義是不一樣的。定義層的內容主要是系統元數據的定義,包括數據定義、功能定義、權限定義、顯示定義、操作定義等。因為是元數據定義,所以這部分的內容實質上是整個系統的數據字典,是整個系統的核心。實現層是實現系統需求的核心部分。顯示層是系統表現形式的實現,所有與系統表現部分相關的抽象的實現都集中于此。
從整體上看,它是類似層的體系結構。最頂層是表示層即顯示層,負責與用戶的直接交互;中間是定義層即需求定義層,用以確定系統的整個業務需求;底層是實現層,負責業務功能的實現、數據的提取與加工等。顯示層與實現層都依賴于定義層,定義層是整個體系結構的核心,是整個系統最高的抽象層次。用戶通過界面向顯示層發出業務操作指令。顯示層將用戶的業務操作指令解釋,分解為一系列的業務需求,將這些業務需求傳遞給定義層。定義層將這些業務需求分解成具體的操作數據及一系列抽象的業務操作指令,傳遞給實現層。實現層結合具體的操作數據,調用抽象的業務實現,完成用戶特定的業務操作,將操作結果返回給顯示層,繼而顯示給用戶。對于難以描述的、個別的業務操作,可以不對它進行定義與抽象實現,由顯示層直接傳遞給實現層,將操作結果返回給顯示層去顯示給用戶。
在DDR體系結構模式中,定義層不僅封裝了實現層的結構、行為與狀態的描述,同時也封裝了顯示層的結構、行為與狀態的描述。
將DDR體系結構模式軟件化、系統化、工具化,就可以使它成為一條軟件生產線,一種軟件開發平臺、工具。
3軟件生產線
回顧經典的工業化革命,不難得出一些有益的啟示:功能再復雜的產品都是由大量標準的零件(盡管零件可能只在本領域內有用)組成。零件在生產線上裝配成一個成品,所有零件在成品中共同發揮作用。分工越細致、專業生產的程度越高,總體生產效率就越高。而構件技術所扮演的角色就是把零件、生產線和裝配運行的概念運用在軟件工業中,可以預見,軟構件技術是軟件產業化革命的必然發展趨勢[3]。根據軟件重用的思想和方法,軟件生產線和構件分別從不同的角度促進了軟件重用的實現。針對軟件工業化生產技術和形成規模經濟的需求,應用以軟件復用為基線的、基于構件/構架模式、采用集成組裝方式的軟件工業化生產技術。
基于構架的構件化軟件開發應當是面向需求的。即設計者集中于業務邏輯本身,而不必為相應領域應用中的通信、效率、互操作、可靠性、容錯性、完整性等大量與業務無直接關系但又非常重要的問題而耗費大量的精力,理想的構架在這些方面應當為構件軟件提供良好的運行環境。
穩定而不失靈活性的體系結構是一個成功的軟件生產線的基礎。體系結構描述了軟件產品線中應用領域的業務體系結構共性和個性、支持該業務體系結構的信息體系結構、應用體系結構和技術體系結構。
軟件生產線以軟件構件/構架技術為核心,其中的主要活動體現在傳統的領域工程和應用工程中,但賦予了它們新的內容,并且通過構件管理、再工程等環節將它們有機地銜接起來。另外,軟件生產線中的每個活動皆有相應的方法和工具與之對應,并結合項目管理、組織管理等管理問題,形成完整的軟件生產流程[4]。
按照DDR體系結構模式的思想,可以按照圖2的軟件生產線形式進行開發。

圖2基于DDR體系結構模式的軟件生產線
有5條產生線:1)通用構件生產線;2)定義生產線;3)顯示生產線;4)實現生產線;5)領域構件生產線。首先對產品/系統進行需求定義,即定義層所需要開展的工作,同時進行產品/系統所需要的通用構件的選取、集成或開發。通用構件的積累與開發有助于快速構建產品/系統的框架。在確定部分需求和所需要的通用構件之后,同時開展顯示層與實現層的工作。當產品/系統的需求與通用構件完全確定,顯示層與定義層的基本框架與功能基本穩定之后,將該領域中具有通用性的功能與業務抽象出來,形成該領域的通用構件,即進行領域構件的開發。領域構件的開發有助于業務領域經驗的積累,快速構建產品/系統的原型系統,并推動領域產業的發展。
在該軟件生產線中,數據的存貯與表示可以是數據庫或文件的形式;數據之間的約束關系及含義由定義生產線負責描述和定義;數據的展現由顯示生產線實現和展示;數據的操作由實現生產線負責實現和加工。通用構件生產線包括數據庫訪問構件庫、權限控制構件庫、文檔生成構件庫、通用數據處理構件庫等。而領域構件庫生產線則包括與領域相關的數據處理構件庫、工作流構件庫等。
為即時滿足信息系統的變化和演化的特征,該生產線的最主要的變化點在定義生產線中。因此隨著整個生產線的成熟和完善,設計者應當將主要精力放在定義生產線中,集中于具體應用系統業務邏輯的定義、實現與展示,從而快速地生產或組裝出能夠即時滿足用戶需求的信息系統。
圖2描述的軟件生產線,同時支持面向復用的開發和基于復用的開發,重用粒度涵蓋設計級、體系結構級、構件級。隨著整個生產線的成熟和完善,應用領域的增多,不僅可以形成豐富的通用構件庫,還可以形成功能強大且全面的面向領域的可復用構件庫和構架庫,并且這些構件庫符合構件/構架的接口規范,可以采用黑盒或白盒的使用方式,滿足構件開放性的要求。
按照圖2的軟件生產線形式進行開發,就可以采用流水線作業開發的方式。通用構件生產線可以在任何時候開展,其生產的通用構件可以為定義生產線等所有其他生產線所用。其次是開展定義生產線的相關工作,在確定部分產品/系統需求的基礎上,作為后續生產線開展的條件。之后,同時展開顯示生產線和實現生產線的活動,在此中獲得的經驗與知識是開發領域構件的基礎。最后是進行領域構件生產線中領域構件的開發。5條生產線前后呼應,渾然一體,從而形成一種“供應鏈式”的并行、循環軟件生產模式。
在該軟件生產線中,軟件開人員被劃分為五類:通用構件生產者,關注通用構件的開發;需求定義者,側重于產品/系統的需求、顯示、實現的定義和描述;顯示定制者,著重于產品/系統的展現和定制;功能實現者,負責產品/系統具體功能和業務流程的實現;領域構件開發者,則將領域應用的共性抽象出來,形成領域構件/架構庫。五類開發人員互相合作又各司其職,通過對整個生產線的管理,改變了以前把開發人員和軟件捆綁在一起所帶來的風險。企業的軟件人才結構也更加趨于合理,既有利于企業員工的自身發展空間的擴大,也有利于企業的管理,能夠較好地促進軟件生產的工程化和工業化。
4相關工作
關于軟件生產線,國外的相關研究在文獻[3]及相關的參考文獻中有比較詳細的論述。而國內的研究,最為典型的是青鳥工程以及青鳥軟件生產線的研究和實踐,其目的是為了促進軟件產業的合理分工,形成構件生產業、集成組裝業和服務業。在青鳥軟件生產線中,將商業應用系統劃分為界面表示層、業務邏輯層和數據層。軟件的生產過程劃分為三類不同的生產車間,即應用構架生產車間、構件生產車間和基于構件、構架復用的應用集成(組裝)車間,從而形成軟件產業內部的合理分工,實現軟件的工業化生產。軟件開發人員被劃分成三類:構件生產者、構件庫管理者和構件復用者。這三種角色所需完成的任務是不同的,構件生產者負責構件的生產、描述;構件庫管理者負責構件分類以及構件庫的管理工作;而構件復用者負責進行基于構件的軟件開發,包括構件查詢、構件理解、適應性修改、構件組裝以及系統演化[3,4]。
另外,文獻5及其相關參考文獻所述的是“基于ABSBA的軟件生產線技術研究”,論述了Web Services在軟件生產線中的應用,根據軟件生產線各階段的活動闡述如何將Web服務應用于軟件生產線,并結合一個實際的軟件生產線系統SoftMaker討論Web服務的具體應用。文獻6所述的“軟件自動化生產線”,使用全新的“組裝+自動化”的思想理念,采用業務組件組裝技術,以業務流程為中心,在流程引擎的驅動下,完成代碼的自動生成,實現系統軟件的開發。
獲國家科技進步二等獎的基礎設施信息網絡管理系統生產平臺技術提出了“面向領域應用的大型應用軟件生產線”的軟件開發方法,并應用該方法首次在國內建立了面向基礎設施信息網絡管理系統建設的軟件生產線。另外,市面上的軟件生產線還有北航大用軟件生產線、科諾軟件開發自動化生產線等。
本文提出的一種基于DDR體系結構模式的軟件生產線開發模式,已經實現通用構件生產線中的數據庫訪問構件庫(支持ODBC、ORACLE、并行數據庫等數據庫接口)、權限控制構件庫、文檔生成構件庫(支持TXT、RTF、DOC、XLS等文檔的格式)及通用數據處理構件庫(部分)。而領域構件庫生產線則實現了與網絡安全數據庫相關的數據處理構件庫、工作流構件庫。該軟件生產線已經成功地應用于體育(學生體質健康標準)及網絡安全等相關領域的基于數據庫應用的C/S結構的應用軟件的開發與應用。
5進一步討論
我國亟需改革軟件生產線的小作坊形式和軟件企業人才結構模式。要發展面向應用、實現一體化,面向個人、體現個性化的系統和產品。軟件技術的總體發展趨勢可歸結為:軟件平臺網絡化、方法對象化、系統構件化、產品家族化、開發工程化、過程規范化、生產規?;?、競爭國際化[1]。
通過將DDR體系結構模式軟件化并結合行業,可以實現行業通用的軟件生產線,作為行業軟件開發平臺。進一步,將該軟件生產線應用到行業專用領域,可以實現行業專用的領域軟件生產平臺,作為行業專用領域的基礎設施。通過領域軟件生產平臺,徹底改變傳統軟件生產的遲滯缺陷和被動的局面,由原來的軟件技術人員滯后地生產軟件產品變成了由領域工作人員即時地生產相應的領域應用系統。
這種軟件產品的全新生產方式,是面向領域工作人員、面向流程的安全的、動態的系統,是一種能快速生產、快速交付、快速實施并能將這一切快速復制的軟件生產線及領域軟件生產平臺,通過它可以組裝、生產產品,滿足“規模定制,隨需而變”的生產需求。這種軟件生產方式不僅具備可再生產能力高,而且具有良好的可維護性、可擴展性與可移植性,其生產的軟件產品的抽象化、集成化和復用程度更高和更好。更為重要的是,新的軟件生產模式徹底改變了傳統的軟件生產方式,在很大程度上降低了軟件產品生產的技術難度,使之產業化程度大大提高,既解放了產品、解放了系統集成商更解放了用戶。
參考文獻
[1] 楊芙清. 軟件工程技術發展思索[J]. 軟件學報,2005,16,(1):1-7.
[2] 周艷明,王強,周源邵. DDR:一種自適應的面向模式的軟件體系結構[J]. 計算機工程與應用,2005,41,(16):65-68.
[3] 楊芙清,王千祥. 基于復用的軟件生產技術[J]. 中國科學:E輯,2001,31,(4):363-371.
[4] Sun Chang-ai, Jin Mao-zhong, Liu Chao. Overviews on Software Architecture Research[J]. Journal of Software, 2002,13,(7):1228 -1237.
[5] 徐正權,潘曉波. 基于ABSBA的軟件生產線技術研究[J]. 計算機工程與科學,2006,28,(2):132-134,142.
[6] 王丹,趙恒永,汪須忠. 軟件自動化生產線的研究與應用[J]. 計算機工程與設計,2005,26,(12):3444-3447,3455.
收稿時間:2007-2-1
作者簡介:周艷明(1971-),男,電子科技大學中山學院高級工程師
E-mail:zhouxiaolang@263.net