在1968年伴隨著軟件工程的概念提出,軟件工廠的概念也幾乎在同時被提了出來,最早提出軟件工廠概念的是R.W.Bemer。他是基于通用電氣公司為了開發一種提高軟件工程師生產力的新的軟件開發模式而提出的,在他的軟件工廠的設計里,通過使用標準化軟件生產工具、計算機接口和帶有歷史數據的數據庫組成的。而在1969年第一個標榜自己的軟件組織為軟件工廠的公司是日本的日立公司;但是到了1975年以后,軟件工廠的概念才開始逐漸在日本和歐美的一些公司得到發展,如日本的NEC、東芝、富士通和三菱等公司。在此期間,軟件工程得到子決速的發展和提高,而軟件工廠大多都還處于探索和實踐階段,一直到最近幾年,隨著軟件外包的流行,軟件工廠才一又被提到學者們和各大軟件公司的面前。如美國的微軟公司、IBM公司以及中國的北大青鳥、東軟集團和凱科思特(北京)科技有限公司等等雖然說已經對軟件工廠做了一些研究,但目前人們對自動化軟件工廠的理解還是很模糊的。有鑒于此,提出了一種自動化軟件工廠的簡單模型,并對其可能使用的幾種實用技術進行了初探。
1 軟件工廠的定義及其簡單模型
根據美國微軟公司的體系結構設計師Jack Greenfield的定義,“所謂軟件工廠就是指為了支持某種特定應用程序的快速開發而配置的開發環境。由此可以看出自動化軟件工廠應該具有以下幾個特點:
1)具有領域特性,一般上來講不同的領域具有不同的軟件工廠;
2)軟件開發過程是自動配置的,不需要或需要極少的編碼;
3)支持特定應用程序的、特殊的、可配置的軟件開發環境;
4)能夠快速的開發特定的應用軟件,從而大幅度減少軟件開發的時間和費用,進而提高軟件的開發效率。
根據軟件組件技術、軟件總線技術、工作流技術和軟件中間件技術,給出軟件工廠簡單模型,如圖1所示。
2 領域標準與領域組件
領域標準和領域組件可以說是構建自動化軟件工廠的基石。從當今全球化的IT產業鏈來看,其過程是:標準、技術、設計凈制造、加工、包裝,全球采購與分銷,往復循環;標準決定了制造,而制造又促進了標準的完善。軟件科學雖然說是一門獨立的學科,然而把它看著成一門應用學科更容易為社會大眾所接受,將軟件技術應用于社會的各行各業,并為相關的行業提供快速有效的強有力的服務。也正是由于有這種強烈的社會需求,軟件技術才從原始的程序設計模式進化到軟件作坊模式,再進化到現在的軟件工程時代和軟件工廠時代。可是社會上行業多種多樣,龐大繁雜,不同的領域其標準、用戶要求和操作規范又差別很大,即使是同一領域的不同用戶,其區別也是很明顯的。因此,要想開發一個全部通用的應用軟件或功能模塊都幾乎是不可能的。既然做通用的是不現實的,那么可以退而求其次,開發領域軟件和領域組件。圖1所示的一種自動化軟件工廠的簡單模型,就是在領域標準的涵蓋之下,為不同領域的快速軟件制造而設計的。
領域組件是以軟件構件為基礎、結合領域內的某個具體業務概念而實現的軟件模塊或子系統。它來源于軟件構件卻又不同于軟件構件。軟件構件是一種定義良好的獨立、可重用的二進制代碼,包括功能模塊、被封裝的對象類、軟件框架和軟件系統模型等。軟件構件技術是基于面向對象的,以嵌人后馬上可以使用的即插即用型軟件構件概念為中心,通過構件的組合來建立應用系統閉。而領域組件不僅是在開發時和運行時的一個構件,而且是整個軟件生命周期中的構件,領域組件同時也是一個具體業務概念的軟件實現。領域組件不僅是在設計時所標識的、在構造時所實現的,以及在單元測試及集成測試時所測試的軟件產品,而且也是配置時所看到的產品。每個領域組件相應于一組運行時可獨立進行配置的產品,它們可獨立于其他領域組件而存在,也可以被另一領域組件所代替而不必重新編譯系統,從而實現真正意義上的即插即用‘圖i所示的一種自動化軟件工廠的簡單模型當中,有下列主要領域軟件組件:
1)需求分析組件:按照應用系統需求分析,使用工作流技術和軟件總線技術集成的領域組件。主要對手工處理后的系統需求,按領域標準的要求完成應用系統的《需求規格說明書》,它通過配置領域需求分析組件庫的各種組件和集成,而形成的可以配置到領域軟件中間件的大型領域組件。
2)系統設計組件:依據需求分析組件所完成的《需求規格說明書》生成應用軟件相應的系統設計報告。主要包括應用系統的體系結構設計、組件之間的接口設計和數據設計。系統設計組件是一個大型的領域組件,它主要使用工作流技術和軟件總線技術,通過配置領域設計組件庫中的各種組件集成而成,可以直接掛接到領域軟件中間件中使用。
3)組件配置組件:這是一個組件容器,可以說是一個中型的領域組件,主要是對應用軟件所需要的組件進行配置、擴展和客戶化。由于所選擇的組件不一定完全滿足應用軟件的要求(如接口和消息要求等),通過自動配置組件這個容器,可以自動對其進行相關配置,并自動測試配置后的組件。
4)組件集成組件:這也是一個組件容器。它主要是根據應用軟件的需求,對選定后的各級組件進行集成以生成軟件產品,自動生成測試用例和進行集成測試;同時也生成相應的軟件產品的各種使用手冊和限制說明。
5)數據管理組件:按領域標準的要求,通過數據管理總線和調用通用數據組件庫中的相關組件,以組件的方式向領域軟件中間件提供不同的數據管理策略。如文件管理策略、數據庫管理策略等等。
6)網絡管理組件:按領域標準的要求,通過網絡管理總線和調用通用網絡組件庫中的相關組件,以組件的方式向領域軟件中間件提供不同的網絡管理策略。如有線網管理策略、無線網管理策略、互聯網管理策略等等。
3 領域軟件中間件技術
中間件(middleware)是基礎軟件的一大類,屬于可復用軟件的范疇,處于操作系統軟件與用戶的應用軟件的中間。中間件在操作系統、網絡和數據庫之上,應用軟件的下層,總的作用是為處于自己上層的應用軟件提供運行與開發的環境,幫助用戶靈活、高效地開發和集成復雜的應用軟件。根據IDC的表述:中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源,中間件位于客戶機服務器的操作系統之上,管理計算資源和網絡通信。而中國科學院軟件所研究員仲萃豪形象地把中間件定義為:平臺+通信,這種定義雖然比較讓現在的人們所接受,但是也限定了只有用于分布式系統中才能稱為中間件。這類中間件是為了解決客戶端和服務器端的負載過重、跨平臺、傳輸不可靠等問題的。目前在社會上流行的大多數中間件均屬于這種中間件。
而領域軟件中間件則不同于這種傳統上的中間件的定義,它是基于某個特定應用領域內,為相關領域的應用軟件提供設計、開發、集成、部署、運行和管理的集成化軟件平臺;它是在操作系統、網絡和數據庫之上,領域應用軟件之下的可配置、可擴展的軟件綜合架構。圖1所示的一種自動化軟件工廠的簡單模型當中,領域軟件中間件可以說是這個模型的核心部分(如圖1描述)。這里所說的領域軟件中間件控制器,其實它也是一個大型的領域組件。主要完成以下主要功能:
圖1軟件工廠簡單模型圖
1)支持并提供軟件總線技術:這種總線主要是領域組件n置和插接,并對所有的組件進行管理。如:配置、插接和管理需求分析組件、系統設計組件、組件配置組件、系統集成組件、數據管理組件和網絡管理組件等等。
2)支持并提供工作流技術:可以按不同的工作流來組織和管理各級組件和各個組件之間的關系。如制造領域應用軟件的工作流:需求分析~系統設計~組件配置,系統集成、系統測試等等。
至于在領域軟件中間件中,是不是支持分布式系統,如何實現系統資源的共享和減輕客戶機c務器的負載和管理計算資源與網絡通信等等,領域軟件中問件控制器本身并不直接來處理,而是根據領域應用軟件的不同需求,選擇和使用不同的領域組件來完成。這樣一來,不但簡化了模型的復雜性,也進一步強化了責任到組件的功能。
4 工作流技術與軟件總線技術
工作流是針對工作中具有固定程序的常規活動而提出的一個概念。通過將工作活動分解成定義良好的任務、角色、規則和過程來進行執行和監控,達到提高生產組織水平和工作效率的目的。1993年,國際工作流管理聯盟(Workflow Management COAlition,WFMC)的成立標志著工作流技術開始進入相對成熟的階段。為了實現不同工作流產品之間的互操作,WFMC在工作流管理系統的相關術語、體系結構及應用編程接口等方面制定了一系列標準。工作流管理聯盟給出的工作流定義是:工作流是指整個或部分經營過程在計算機支持下的全自動或半白動化。在實際情況中可以更廣泛地把凡是由計算機軟件系統(工作流管理系統)控制其執行的過程都稱為工作流一個工作流包括一組活動及它們的相互順序關系,還包括過程及活動的啟動和終止條件,以及對每個活動的描述。工作流管理系統指運行在一個或多個工作流引擎上用于定義、實現和管理工作流運行的一套軟件系統,它與工作流執行者(人、應用)交互,推進工作流實例的執行,并監控工作流的運行狀態。圖1所示的一種自動化軟件工廠的簡單模型當中,工作流技術可以說貫穿于整個模型中的大中型領域組件中,因為對于一些組件來說,其本身就是一個子系統,通過將其需要完成的業務分解成不同的工作流,再將工作流分解成不同的活動,進而可以選擇、配置和使用不同的領域組件,從而制造出相關的領域組件和應用軟件。
軟件總線技術是實現軟件工廠的另一個核心技術,它和計算機的總線一樣,如ISA,PCI總線等,做軟件就像硬件的做法一樣,只要按照標準來做,就能夠無縫地進行連接和通信。軟件總線負責在各個組件中傳遞信息流,將各個組件組織起來,完成一個具體的任務。總線是一個抽象的概念,在實際中總線也是由具體的技術構成。例如,一個總線可能是一段代碼,負責調用各個組件;總線也能是一個消息系統,負責收集和分派消息;總線也可能是一個工作流系統,負責系統信息的流轉;總線還可能是一個JMX,負責將消息路由到目標組件。但無論總線的實現技術是什么,總線的特點就是采用一種松禍合的方式將組件組織起來。這樣,總線本身和掛接在總線上的組件就是松禍合的。如果要將總線分類的話,可以大致將其分為以下4類:
1)控制總線:主要控制各個組件的插接、激活、掛起、停止和撤出等;
2)數據總線:主要控制各個組件對不同數據的存取等;
3)消息總線:主要控制各個組件間的消息傳遞;
4)網絡總線:主要控制各個組件對不同網絡的傳輸。圖1所示的一種自動化軟件工廠的簡單模型當中,軟件總線技術被用于許多部分,甚至大中型組件的內部。而圖中所特別強調的是數據管理總線和網絡管理總線,在這兩種總線之中,它們都包含這4種總線,是這4種總線的復合體。
5 嵌入式軟件測試技術
目前,嵌入式方面的有關研究大都集中于硬件系統當中,即使有些是軟件方面的,也大多數是用來探討如何有效地開發嵌入式的軟件來為嵌入式硬件服務的。然而就如何使用嵌入式的原理與方法來有效地進行軟件的測試,則還不太多見。在上海創景計算機系統有限公司的LDRA Testbed系統當中,其針對嵌入式系統特點,專門提供嵌入式測試模塊,提供客戶完整的嵌入式測試解決方案,從單元測試、集成測試到系統測試,功能包括編碼規則檢查、軟件度量分析、數據流信息流分析、代碼覆蓋率分析及測試驅動/樁模塊自動生成。雖然說此系統是針對嵌人式系統的,但它體現了嵌入式測試模塊的思想。在本模型當中,就是利用嵌入式測試模塊的思想,將嵌入式測試模塊嵌人到整個集成的軟件當中,來對整個軟件甚至軟件的各個組件進行測試。在使用本模型制造軟件的過程當中,其主要是通過配置不同的組件進而集成生成領域應用軟件的。也就是說,各個組件都是經過相當的測試以后才被引入組件庫,才被領域應用軟件所使用的。因此對這種軟件的測試主要是軟件的功能測試及各個組件的接口及其關系的測試。通過應用嵌入式測試模塊的思想,可以開發出一些可配置的嵌入式測試組件,并將它們放入到領域組件庫中;在集成制造領域應用軟件的過程當中,根據需要將配置后的嵌入式測試組件嵌入到相應的地方(如業務流),以實現對相關部分的測試。同時,可以在軟件測試成功以后,根據需要卸載相關的嵌人式測試組件。
隨著軟件的生產模式的不斷變化,軟件工廠的研究與開發也將不斷的深入和細化。本文提出一種軟件工廠的粗框模型,并對其幾種實用的技術包括領域標準與領域組件、領域中問件技術、工作流技術與軟件總線技術以及嵌入式軟件測試技術進行了初步的探索。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:關于自動化軟件工廠模型及其實用技術的探究