孫連山, 李 健
(陜西科技大學(xué)電氣與信息工程學(xué)院, 陜西 西安 710021)
隨著軟件復(fù)用技術(shù)的廣泛應(yīng)用、市場競爭的加劇,軟件開發(fā)方式也隨之悄然改變.很多軟件廠商(Software Vendor)不再單獨(dú)完成某個(gè)軟件產(chǎn)品的全部開發(fā)任務(wù),而是通過諸如軟件或服務(wù)外包、復(fù)用或定制商用軟件構(gòu)件和框架、集成開源代碼等各種不同的方式將軟件開發(fā)過程中的一部分工作交給其它廠商完成.這種情況下,軟件廠商不再單獨(dú)存在,而是存在于一個(gè)相互依賴的軟件廠商所構(gòu)成的復(fù)雜網(wǎng)絡(luò)之中,這種由多個(gè)組織構(gòu)成的復(fù)雜網(wǎng)絡(luò)以及維系他們聯(lián)系的軟件產(chǎn)品或服務(wù)構(gòu)成了所謂的軟件生態(tài)系統(tǒng)[1,2].為了在軟件生態(tài)系統(tǒng)中獲得競爭優(yōu)勢,軟件廠商需要正確地評價(jià)軟件生態(tài)系統(tǒng)的質(zhì)量,明確自己的角色和責(zé)任,制定正確的策略和戰(zhàn)略.本文借鑒自然生態(tài)系統(tǒng)的概念,對軟件生態(tài)系統(tǒng)概念進(jìn)行了剖析,指出軟件生態(tài)系統(tǒng)中不同角色的期望和目標(biāo),并給出了一個(gè)軟件生態(tài)系統(tǒng)的質(zhì)量模型,為不同角色理解、評價(jià)和管理軟件生態(tài)系統(tǒng)奠定了理論基礎(chǔ).
Bosch等[1]將軟件生態(tài)系統(tǒng)定義為“使能相關(guān)生產(chǎn)或生活中各種用戶活動和交易的軟件解決方案以及提供這些解決方案的組織所共同構(gòu)成的復(fù)雜系統(tǒng).”Campbell等[2]將生態(tài)系統(tǒng)定義為“打破開發(fā)團(tuán)體之間交流的屏障,允許多個(gè)開發(fā)團(tuán)體進(jìn)行協(xié)作和互操作的一個(gè)復(fù)雜系統(tǒng).”生態(tài)系統(tǒng)的概念源于生態(tài)學(xué),它是由生物群落和與之相互作用的自然環(huán)境以及其中的能量流動構(gòu)成的系統(tǒng).Dhungana等[3]指出現(xiàn)有軟件生態(tài)系統(tǒng)的定義沒有深入探討軟件生態(tài)系統(tǒng)和自然生態(tài)系統(tǒng)的概念內(nèi)涵之間的映射,僅僅將構(gòu)成軟件生態(tài)系統(tǒng)的各類組織對應(yīng)為生物群落,強(qiáng)調(diào)了生物群落和生物群落之間的相互作用,而沒有討論組織所處的環(huán)境以及組織之間能量流動的方式[3],如可將自然生態(tài)系統(tǒng)中構(gòu)成自然環(huán)境的水、光、空氣、土壤等有限的、可消耗的資源類比為軟件開發(fā)所必需的資金、時(shí)間、人員等由組織商業(yè)模型所決定的開發(fā)投入,而將自然生態(tài)系統(tǒng)中的能量流動類比為不同組織之間知識的傳遞.Dhungana認(rèn)為兩類生態(tài)系統(tǒng)的不同之處在于知識是不會在流動過程中消失的,知識從 A 流到 B,則B獲得了新知識,但A的知識卻沒有減少.Dhungana雖然對自然和軟件生態(tài)系統(tǒng)進(jìn)行了深入的對比,但沒有給出明確的定義.我們認(rèn)為軟件生態(tài)系統(tǒng)是“遵循各自商業(yè)模型、共享市場的各類組織在生產(chǎn)和消費(fèi)各種軟件制品和服務(wù)滿足不斷演化的用戶需求的過程中所形成的復(fù)雜系統(tǒng).”此定義蘊(yùn)有4層含義,首先,軟件生態(tài)系統(tǒng)必定跨越多個(gè)組織的邊界,強(qiáng)調(diào)多個(gè)組織的相互協(xié)作,這是與傳統(tǒng)的軟件產(chǎn)品和軟件產(chǎn)品線開發(fā)方法的一個(gè)顯著區(qū)別;其次,軟件生態(tài)系統(tǒng)中各組織間的依賴關(guān)系是圍繞生產(chǎn)或消費(fèi)承載著相關(guān)知識的軟件制品和服務(wù)展開的;第三,各個(gè)組織所遵循的商業(yè)模型決定了它們生產(chǎn)或消費(fèi)知識的方式;第四,這些組織共享市場,能夠針對市場中用戶需求的演化進(jìn)行適應(yīng)性調(diào)整,否則若軟件生態(tài)系統(tǒng)中的軟件制品和服務(wù)逐漸不再滿足用戶的需求,則其將逐漸老化乃至死亡.
各個(gè)組織相互協(xié)作和競爭,共同為軟件生態(tài)系統(tǒng)吸引更多的用戶和第三方開發(fā)組織、創(chuàng)造更多的價(jià)值而努力.在此過程中,各組織所扮演的角色不同,相互之間協(xié)作的形式也多種多樣.下面分析軟件生態(tài)系統(tǒng)的角色模型.
(1) 核心平臺開發(fā)和維護(hù)者.現(xiàn)有的軟件生態(tài)系統(tǒng),如Windows生態(tài)系統(tǒng)、Linux生態(tài)系統(tǒng)、Eclipse生態(tài)系統(tǒng)等等均從一個(gè)核心軟件發(fā)展而來,這個(gè)核心軟件通常被稱為平臺.很多軟件開發(fā)廠商取得第一步成功之后(占有市場,吸引大量用戶),為獲得更大的持續(xù)性的成功,開放平臺的編程接口,允許第三方開發(fā)者擴(kuò)展平臺構(gòu)造滿足特定用戶群體需求的解決方案,從而形成了軟件生態(tài)系統(tǒng).因此,軟件生態(tài)系統(tǒng)中的核心平臺往往是軟件生態(tài)系統(tǒng)誕生的基礎(chǔ).核心平臺的開發(fā)者所生產(chǎn)的知識將供所有第三方開發(fā)者和用戶消費(fèi).
(2) 第三方軟件解決方案開發(fā)商.由于核心平臺開發(fā)者開放了編程接口,第三方開發(fā)者能夠針對核心軟件的用戶群進(jìn)行研發(fā),對核心軟件進(jìn)行擴(kuò)展,為核心軟件的用戶提供更多的價(jià)值.第三方開發(fā)者需要了解核心軟件的編程接口,甚至系統(tǒng)架構(gòu)才能對核心軟件進(jìn)行合理的擴(kuò)展,開發(fā)出符合規(guī)范、保證質(zhì)量且滿足用戶需求的解決方案.對第三方開發(fā)者而言,核心軟件的開放性、長期發(fā)展規(guī)劃、技術(shù)支持等都是影響其加入軟件生態(tài)系統(tǒng)并良好發(fā)展的關(guān)鍵因素.反過來,第三方開發(fā)者的需求也將反饋到平臺開發(fā)者,促進(jìn)其對平臺的升級和改造.
(3) 軟件生態(tài)系統(tǒng)策略和戰(zhàn)略制定者.軟件生態(tài)系統(tǒng)所包含的各類組織具有自主性,這些組織相互協(xié)作或競爭實(shí)現(xiàn)各自的目標(biāo).這種協(xié)作和競爭需要遵守一定的策略或原則,才能有助于軟件生態(tài)系統(tǒng)的發(fā)展和壯大,否則可能造成惡性競爭,最終導(dǎo)致軟件生態(tài)系統(tǒng)的衰落.可能的策略或戰(zhàn)略包括如何實(shí)施標(biāo)準(zhǔn)化活動、如何認(rèn)證第三方開發(fā)者交付的軟件解決方案,是否設(shè)立固定的交付渠道,是否為軟件生態(tài)系統(tǒng)中的成員提供價(jià)格優(yōu)惠、如何組織軟件生態(tài)系統(tǒng)的成員會議實(shí)行民主決策等等.軟件生態(tài)系統(tǒng)中的一些特殊成員承擔(dān)著制定這些策略或戰(zhàn)略的任務(wù),稱為策略制定者.例如Eclipse聯(lián)盟的成員,在一定程度上共同負(fù)責(zé)制定Eclipse社區(qū)所必須遵守的策略或規(guī)則等.策略制定者需要能夠評估各種策略對生態(tài)系統(tǒng)健康發(fā)展的作用.
(4) 軟件生態(tài)系統(tǒng)管理框架的開發(fā)和維護(hù)者.軟件生態(tài)系統(tǒng)中的各種軟件解決方案由不同的開發(fā)者獨(dú)立開發(fā)和管理,但卻往往需要相互配合、集成在一個(gè)應(yīng)用當(dāng)中服務(wù)于用戶.不同的用戶均需要對產(chǎn)品進(jìn)行定制和配置,選擇不同的特征.因此,軟件生態(tài)系統(tǒng)的解決方案在發(fā)布供用戶使用之時(shí)均需要配置有公共管理框架,如Firefox和Eclipse的插件管理機(jī)制,Windows的應(yīng)用程序安裝和卸載工具等等.一般,軟件生態(tài)系統(tǒng)管理工具是核心產(chǎn)品的一部分,但也有些第三方的管理工具.
不同廠商可能同時(shí)在一個(gè)軟件生態(tài)系統(tǒng)中扮演多個(gè)角色,也有可能從一個(gè)角色轉(zhuǎn)化到另外一個(gè)角色.例如,第三方軟件開發(fā)者若開發(fā)出擴(kuò)展性較強(qiáng)的產(chǎn)品,則有可能轉(zhuǎn)化成為一個(gè)新的軟件生態(tài)系統(tǒng)的核心軟件平臺開發(fā)商.
軟件生態(tài)系統(tǒng)將不同的軟件廠商協(xié)同起來,為用戶創(chuàng)造價(jià)值.軟件廠商必須學(xué)會如何在生態(tài)系統(tǒng)中生存、發(fā)展和壯大.而其前提是對軟件生態(tài)系統(tǒng)的認(rèn)識和評價(jià).本節(jié)初步討論了軟件生態(tài)系統(tǒng)的質(zhì)量模型.
類比自然生態(tài)系統(tǒng),軟件生態(tài)系統(tǒng)最重要的質(zhì)量就是可持續(xù)性[3](Sustainability),即意味著其能夠持續(xù)提供用戶所需的價(jià)值,能夠維持一定規(guī)模的用戶和第三方開發(fā)者,保證一定的市場占有率.借鑒軟件質(zhì)量模型[4]的設(shè)計(jì)經(jīng)驗(yàn),可以將軟件生態(tài)系統(tǒng)的質(zhì)量模型組織為一個(gè)層次結(jié)構(gòu),如圖1所示.
軟件生態(tài)系統(tǒng)的可持續(xù)性依賴于眾多組織的緊密協(xié)作、市場需求、及時(shí)為用戶提供更多、更好、價(jià)格更低的功能和服務(wù).根據(jù)第一節(jié)給出的軟件生態(tài)系統(tǒng)的定義,可以從商業(yè)模型、產(chǎn)品和組織協(xié)作等3個(gè)方面對軟件生態(tài)系統(tǒng)進(jìn)行評價(jià).圖1將軟件生態(tài)系統(tǒng)的可持續(xù)性可進(jìn)一步分解為商業(yè)質(zhì)量模型、產(chǎn)品質(zhì)量模型和協(xié)同質(zhì)量模型.
圖1 軟件生態(tài)系統(tǒng)質(zhì)量模型
軟件生態(tài)系統(tǒng)的商業(yè)質(zhì)量模型主要考察軟件生態(tài)系統(tǒng)中的產(chǎn)品與主流商業(yè)模型的一致性、軟件生態(tài)系統(tǒng)的規(guī)模和多樣性、市場占有率等,如產(chǎn)品升級計(jì)劃是否適應(yīng)市場變化,最大限度地提高用戶的粘度.
軟件生態(tài)系統(tǒng)的產(chǎn)品質(zhì)量模型則考察軟件生態(tài)系統(tǒng)中各類軟件解決方案的質(zhì)量,除單個(gè)軟件產(chǎn)品所必須具備的性能、安全、易用性、可靠性等質(zhì)量屬性之外,軟件解決方案還須具有高度的可組裝性和開放性,不但允許用戶靈活地選擇不同的軟件解決方案組合擴(kuò)展核心軟件平臺實(shí)現(xiàn)其個(gè)性化的需求,也為第三方開發(fā)者進(jìn)一步擴(kuò)展各個(gè)解決方案發(fā)展子生態(tài)系統(tǒng)奠定基礎(chǔ),如Eclipse中EMF[5]就是開放性較強(qiáng)的第三方解決方案, Eclipse生態(tài)系統(tǒng)中已經(jīng)形成了以EMF為核心的子生態(tài)系統(tǒng).
軟件生態(tài)系統(tǒng)的協(xié)同質(zhì)量模型主要考察軟件生態(tài)系統(tǒng)在支持多個(gè)開發(fā)團(tuán)體協(xié)作方面的能力,如開發(fā)團(tuán)體之間協(xié)同的靈活性、協(xié)同過程的成熟度、協(xié)同中是否支持民主決策、協(xié)同中出現(xiàn)問題的反饋周期、以及鑒定第三方開發(fā)者所發(fā)布軟件解決方案的認(rèn)證服務(wù)和發(fā)布管理服務(wù)等等.
作者從軟件生態(tài)系統(tǒng)的概念入手,分析了軟件生態(tài)系統(tǒng)的角色模型,并給出了一個(gè)評價(jià)軟件生態(tài)系統(tǒng)的質(zhì)量模型,為不同的組織評價(jià)軟件生態(tài)系統(tǒng)奠定了基礎(chǔ).
參考文獻(xiàn)
[1] Bosch, J. From software product lines to software ecosystems[C]. Proceedings of the 13th International Software Product Line Conference, 2009:111-119.
[2] Campbell, P. R. J., Ahmed, F. A three-dimensional view of software ecosystems[C]. Proceedings of the Fourth European Conference on Software Architecture: Companion Volume, ACM, 2010: 81-84.
[3] Dhungana, D., Groher, I., Schludermann, E.,etal. Software ecosystems vs. natural ecosystems: learning from the ingenious mind of nature[C]. Proceedings of the Fourth European Conference on Software Architecture: Companion Volume, ACM, 2010: 96-102 .
[4] B. Boehm. Characteristics of software quality[M]. North-Holland, 1978.
[5] Dave Steinberg, Frank Budinsky, Marcelo Paternostro,etal. EMF: Eclipse Modeling Framework, 2nd Edition[M]. Addison-Wesley Professional, 2008.