軟件開發(fā)長期以來被認為是一項富有創(chuàng)造性的活動。一個軟件開發(fā)機構(gòu)在接到一個新的項目之后,通常遵循需求、獲取、分析、設(shè)計、實現(xiàn)、集成和測試的步驟,進行項目的開發(fā)。傳統(tǒng)的開發(fā)方法并不強調(diào)軟件復(fù)用,這樣就必然導(dǎo)致大量的重復(fù)勞動,給軟件企業(yè)造成巨大的人力、物力和財力的浪費。對比一些成熟的工程領(lǐng)域,復(fù)用是這些領(lǐng)域的一個基本特征,例如土木工程、化學(xué)工程、計算機硬件工程等。通過大量復(fù)用經(jīng)過實踐檢驗的系統(tǒng)體系結(jié)構(gòu)和標準化的構(gòu)件,使得對于一般的設(shè)計問題都可以直接利用現(xiàn)成的解決方法,避免了系統(tǒng)開發(fā)時“不斷重復(fù)地發(fā)明車輪”,從而大幅度降低開發(fā)成本、提高生產(chǎn)效率和產(chǎn)品質(zhì)量。系統(tǒng)化的復(fù)用將為軟件企業(yè)在競爭日益激烈的市場上贏得有利的地位,因此,對軟件復(fù)用的研究和實踐越來越引起學(xué)術(shù)界和產(chǎn)業(yè)界的高度重視。
在國家“九五”重點攻關(guān)項目青鳥工程中,對基于復(fù)用的軟件生產(chǎn)技術(shù)進行了深入的研究和實踐,實現(xiàn)了基于構(gòu)件-構(gòu)架的軟件生產(chǎn)線系統(tǒng),制定了系列標準和規(guī)范,為軟件的工業(yè)化生產(chǎn)和工程化開發(fā)提供了必要的基礎(chǔ)和能力,并取得了初步的成果。
在青鳥軟件生產(chǎn)線系統(tǒng)的基礎(chǔ)上,我們與浪潮集團通用軟件公司進行技術(shù)合作,實施了“青鳥軟件工業(yè)化生產(chǎn)技術(shù)示范工程——基于青鳥軟件生產(chǎn)線的浪潮軟件產(chǎn)品開發(fā)平臺”,旨在提高浪潮通軟的軟件生產(chǎn)能力和市場競爭能力,同時在實踐中補充和完善青鳥軟件生產(chǎn)線系統(tǒng)。雙方將在商業(yè)、財務(wù)、金融、工業(yè)產(chǎn)供銷、醫(yī)藥等領(lǐng)域進行合作,目前正在實施商業(yè)領(lǐng)域軟件開發(fā)平臺的建設(shè),滿足商業(yè)零售、批發(fā)、連鎖等不同業(yè)態(tài)的需求。
青鳥軟件生產(chǎn)線
青鳥工程在“七五”期間提出了軟件生產(chǎn)線的思想, “八五”期間對軟件生產(chǎn)線的思想進行了實踐和豐富,“九五”期間對基于構(gòu)件-構(gòu)架模式的軟件工業(yè)化生產(chǎn)技術(shù)進行了研究,并實現(xiàn)了青鳥軟件生產(chǎn)線系統(tǒng)。青鳥軟件生產(chǎn)線同時支持面向復(fù)用的開發(fā)和基于復(fù)用的開發(fā),為軟件復(fù)用提供了一個比較全面的解決方案。
如圖1所示,青鳥軟件生產(chǎn)線將軟件的生產(chǎn)過程劃分為三類不同生產(chǎn)車間的活動,即應(yīng)用構(gòu)架提取車間、構(gòu)件生產(chǎn)車間和基于構(gòu)件-構(gòu)架復(fù)用的應(yīng)用集成(組裝)車間,在這三個車間之間存在著兩個庫,即應(yīng)用構(gòu)架庫和構(gòu)件庫,從而形成軟件生產(chǎn)組織內(nèi)部的合理分工,構(gòu)劃出了軟件生產(chǎn)過程,奠定了軟件工程化開發(fā)和工業(yè)化生產(chǎn)的基礎(chǔ)。通過標準規(guī)范和質(zhì)量保證對整個生產(chǎn)過程提供支持。 來源:www.examda.com
青鳥軟件生產(chǎn)線中的主要活動如下:
(1) 應(yīng)用構(gòu)架提取車間,從一組現(xiàn)有的軟件系統(tǒng)中提取可復(fù)用的構(gòu)架,并存入到構(gòu)架庫中。
(2) 構(gòu)件生產(chǎn)車間,以應(yīng)用構(gòu)架為指導(dǎo)生產(chǎn)可復(fù)用的構(gòu)件,這些構(gòu)件可以是專為復(fù)用而開發(fā)的,也可以是從現(xiàn)有系統(tǒng)中提取、修改、包裝而得到的,生產(chǎn)出的構(gòu)件存入構(gòu)件庫中。
(3) 應(yīng)用組裝車間,根據(jù)當前應(yīng)用系統(tǒng)的用戶需求,從構(gòu)架庫中選取合適的可復(fù)用構(gòu)架或設(shè)計新的構(gòu)架,并以此為指導(dǎo),從構(gòu)件庫中得到合適的構(gòu)件,進行必要的適應(yīng)性修改,可能還要開發(fā)一些新的構(gòu)件,進行組裝,得到新的應(yīng)用系統(tǒng)。
(4) 產(chǎn)生新的應(yīng)用系統(tǒng)后,“現(xiàn)有系統(tǒng)”的集合擴大了,這時要根據(jù)新的“現(xiàn)有系統(tǒng)”對可復(fù)用構(gòu)架進行演化,可能還會有新的構(gòu)件入庫。
與這些活動相對應(yīng),在青鳥軟件生產(chǎn)線中,軟件開發(fā)人員被劃分成三類:構(gòu)件/構(gòu)架生產(chǎn)者、構(gòu)件/構(gòu)架庫管理者和構(gòu)件/構(gòu)架復(fù)用者。這三種角色所需完成的任務(wù)是不同的,構(gòu)件/構(gòu)架生產(chǎn)者負責構(gòu)件/構(gòu)架的生產(chǎn)和維護;構(gòu)件/構(gòu)架庫管理者負責構(gòu)件分類以及構(gòu)件庫的管理工作;而構(gòu)件/構(gòu)架復(fù)用者負責進行基于構(gòu)件的軟件開發(fā),包括構(gòu)件查詢、構(gòu)件理解、適應(yīng)性修改、構(gòu)件組裝以及系統(tǒng)演化。
領(lǐng)域工程和應(yīng)用工程
實際上,在青鳥軟件生產(chǎn)線中的前兩個車間,即應(yīng)用構(gòu)架提取車間和構(gòu)件生產(chǎn)車間對應(yīng)領(lǐng)域工程,而組裝車間對應(yīng)應(yīng)用工程。目前對什么是領(lǐng)域工程還沒有一個統(tǒng)一的定義,一般認為,領(lǐng)域工程是為一組相似或相近系統(tǒng)的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過程,它覆蓋了建立可復(fù)用的軟件構(gòu)件和構(gòu)架的所有活動。這里的“領(lǐng)域”是指一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。
圖2給出了實施領(lǐng)域工程的基本過程,其中最重要的結(jié)果是形成面向領(lǐng)域的可復(fù)用構(gòu)件和構(gòu)架庫,體現(xiàn)了上述領(lǐng)域工程定義中的“建立基本能力和必備基礎(chǔ)”。如圖2中央的環(huán)所示,實施領(lǐng)域工程的整個過程是迭代的,雙向的箭頭表示并不存在一種從輸入到輸出之間的單向因果關(guān)系,輸入和輸出實際上是相互影響和相互作用的。例如,稍微擴充一下產(chǎn)品空間可能意味著接納全新的系統(tǒng)類型,作為可復(fù)用構(gòu)件和構(gòu)架的來源;類似地,生產(chǎn)約束(例如強制使用CORBA)可能導(dǎo)致在整個領(lǐng)域工程范圍內(nèi),需要考慮對體系結(jié)構(gòu)風(fēng)格和模式(例如基于消息傳遞的分布式對象風(fēng)格)的限制。這種限制反過來又將確定哪些現(xiàn)有的構(gòu)件和構(gòu)架是可供復(fù)用或挖掘的候選者。
在國家“九五”重點攻關(guān)項目青鳥工程中,對基于復(fù)用的軟件生產(chǎn)技術(shù)進行了深入的研究和實踐,實現(xiàn)了基于構(gòu)件-構(gòu)架的軟件生產(chǎn)線系統(tǒng),制定了系列標準和規(guī)范,為軟件的工業(yè)化生產(chǎn)和工程化開發(fā)提供了必要的基礎(chǔ)和能力,并取得了初步的成果。
在青鳥軟件生產(chǎn)線系統(tǒng)的基礎(chǔ)上,我們與浪潮集團通用軟件公司進行技術(shù)合作,實施了“青鳥軟件工業(yè)化生產(chǎn)技術(shù)示范工程——基于青鳥軟件生產(chǎn)線的浪潮軟件產(chǎn)品開發(fā)平臺”,旨在提高浪潮通軟的軟件生產(chǎn)能力和市場競爭能力,同時在實踐中補充和完善青鳥軟件生產(chǎn)線系統(tǒng)。雙方將在商業(yè)、財務(wù)、金融、工業(yè)產(chǎn)供銷、醫(yī)藥等領(lǐng)域進行合作,目前正在實施商業(yè)領(lǐng)域軟件開發(fā)平臺的建設(shè),滿足商業(yè)零售、批發(fā)、連鎖等不同業(yè)態(tài)的需求。
青鳥軟件生產(chǎn)線
青鳥工程在“七五”期間提出了軟件生產(chǎn)線的思想, “八五”期間對軟件生產(chǎn)線的思想進行了實踐和豐富,“九五”期間對基于構(gòu)件-構(gòu)架模式的軟件工業(yè)化生產(chǎn)技術(shù)進行了研究,并實現(xiàn)了青鳥軟件生產(chǎn)線系統(tǒng)。青鳥軟件生產(chǎn)線同時支持面向復(fù)用的開發(fā)和基于復(fù)用的開發(fā),為軟件復(fù)用提供了一個比較全面的解決方案。
如圖1所示,青鳥軟件生產(chǎn)線將軟件的生產(chǎn)過程劃分為三類不同生產(chǎn)車間的活動,即應(yīng)用構(gòu)架提取車間、構(gòu)件生產(chǎn)車間和基于構(gòu)件-構(gòu)架復(fù)用的應(yīng)用集成(組裝)車間,在這三個車間之間存在著兩個庫,即應(yīng)用構(gòu)架庫和構(gòu)件庫,從而形成軟件生產(chǎn)組織內(nèi)部的合理分工,構(gòu)劃出了軟件生產(chǎn)過程,奠定了軟件工程化開發(fā)和工業(yè)化生產(chǎn)的基礎(chǔ)。通過標準規(guī)范和質(zhì)量保證對整個生產(chǎn)過程提供支持。 來源:www.examda.com
青鳥軟件生產(chǎn)線中的主要活動如下:
(1) 應(yīng)用構(gòu)架提取車間,從一組現(xiàn)有的軟件系統(tǒng)中提取可復(fù)用的構(gòu)架,并存入到構(gòu)架庫中。
(2) 構(gòu)件生產(chǎn)車間,以應(yīng)用構(gòu)架為指導(dǎo)生產(chǎn)可復(fù)用的構(gòu)件,這些構(gòu)件可以是專為復(fù)用而開發(fā)的,也可以是從現(xiàn)有系統(tǒng)中提取、修改、包裝而得到的,生產(chǎn)出的構(gòu)件存入構(gòu)件庫中。
(3) 應(yīng)用組裝車間,根據(jù)當前應(yīng)用系統(tǒng)的用戶需求,從構(gòu)架庫中選取合適的可復(fù)用構(gòu)架或設(shè)計新的構(gòu)架,并以此為指導(dǎo),從構(gòu)件庫中得到合適的構(gòu)件,進行必要的適應(yīng)性修改,可能還要開發(fā)一些新的構(gòu)件,進行組裝,得到新的應(yīng)用系統(tǒng)。
(4) 產(chǎn)生新的應(yīng)用系統(tǒng)后,“現(xiàn)有系統(tǒng)”的集合擴大了,這時要根據(jù)新的“現(xiàn)有系統(tǒng)”對可復(fù)用構(gòu)架進行演化,可能還會有新的構(gòu)件入庫。
與這些活動相對應(yīng),在青鳥軟件生產(chǎn)線中,軟件開發(fā)人員被劃分成三類:構(gòu)件/構(gòu)架生產(chǎn)者、構(gòu)件/構(gòu)架庫管理者和構(gòu)件/構(gòu)架復(fù)用者。這三種角色所需完成的任務(wù)是不同的,構(gòu)件/構(gòu)架生產(chǎn)者負責構(gòu)件/構(gòu)架的生產(chǎn)和維護;構(gòu)件/構(gòu)架庫管理者負責構(gòu)件分類以及構(gòu)件庫的管理工作;而構(gòu)件/構(gòu)架復(fù)用者負責進行基于構(gòu)件的軟件開發(fā),包括構(gòu)件查詢、構(gòu)件理解、適應(yīng)性修改、構(gòu)件組裝以及系統(tǒng)演化。
領(lǐng)域工程和應(yīng)用工程
實際上,在青鳥軟件生產(chǎn)線中的前兩個車間,即應(yīng)用構(gòu)架提取車間和構(gòu)件生產(chǎn)車間對應(yīng)領(lǐng)域工程,而組裝車間對應(yīng)應(yīng)用工程。目前對什么是領(lǐng)域工程還沒有一個統(tǒng)一的定義,一般認為,領(lǐng)域工程是為一組相似或相近系統(tǒng)的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過程,它覆蓋了建立可復(fù)用的軟件構(gòu)件和構(gòu)架的所有活動。這里的“領(lǐng)域”是指一組具有相似或相近軟件需求的應(yīng)用系統(tǒng)所覆蓋的功能區(qū)域。
圖2給出了實施領(lǐng)域工程的基本過程,其中最重要的結(jié)果是形成面向領(lǐng)域的可復(fù)用構(gòu)件和構(gòu)架庫,體現(xiàn)了上述領(lǐng)域工程定義中的“建立基本能力和必備基礎(chǔ)”。如圖2中央的環(huán)所示,實施領(lǐng)域工程的整個過程是迭代的,雙向的箭頭表示并不存在一種從輸入到輸出之間的單向因果關(guān)系,輸入和輸出實際上是相互影響和相互作用的。例如,稍微擴充一下產(chǎn)品空間可能意味著接納全新的系統(tǒng)類型,作為可復(fù)用構(gòu)件和構(gòu)架的來源;類似地,生產(chǎn)約束(例如強制使用CORBA)可能導(dǎo)致在整個領(lǐng)域工程范圍內(nèi),需要考慮對體系結(jié)構(gòu)風(fēng)格和模式(例如基于消息傳遞的分布式對象風(fēng)格)的限制。這種限制反過來又將確定哪些現(xiàn)有的構(gòu)件和構(gòu)架是可供復(fù)用或挖掘的候選者。