韓雨泓,祝鵬程
(1.四川大學計算機學院,成都 610000;2.中國人民解放軍32620 部隊,西寧 810000;3.中國人民解放軍78100 部隊,成都 610000)
軟件工程自20 世紀60 年代末誕生以來,有效解決了“軟件危機”,推動了軟件產業(yè)的持續(xù)快速發(fā)展。但隨著軟件復雜度不斷提高,研究人員逐步認識到,傳統(tǒng)軟件工程中源于傳統(tǒng)工業(yè)領域的工程化思維和基于還原論的研究方法,在復雜系統(tǒng)軟件的研究中存在諸多局限,面臨重大挑戰(zhàn)[1]。近年來,受到開源軟件的啟發(fā),越來越多的研究者把開源軟件的成功,定性為軟件生態(tài)系統(tǒng)的成功,轉向對軟件生態(tài)系統(tǒng)的反思與研究[2]。但目前國內外對軟件生態(tài)系統(tǒng)還沒有統(tǒng)一的定義,研究也主要集中于開源軟件生態(tài)系統(tǒng)的技術報告,分析方法與框架、過程與技術、工具及表達等方面研究還比較少[3]。
本文分析了現有的軟件生態(tài)系統(tǒng)分析方法與框架,對軟件生態(tài)系統(tǒng)的負熵機制進行了研究,提出了“軟件以輸出負熵為使命”的觀點,構建了一種基于軟件負熵流的形式化分析模型——軟件負熵流(Software Negative Entropy Flow,SNEF)模型,并對該模型進行了實證分析和可行性研究。
軟件生態(tài)系統(tǒng)(Software Ecosystem,SECO)最早由Messerchmitt 等人[4]于 2003 年提出,認為“軟件生態(tài)系統(tǒng)是一系列具有一定程度共生關系的軟件產品集合”,而后十多年內研究人員又從不同角度對軟件生態(tài)系統(tǒng)的定義進行了豐富和創(chuàng)新。Manikas 等人[5]在2016 年對軟件生態(tài)系統(tǒng)的定義進行了總結,認為“軟件生態(tài)系統(tǒng)是在公共的技術基礎上,軟件產品與服務以及相關涉眾相互作用形成的復雜系統(tǒng)”。2019 年,董瑞志等人[3]以Manikas 提出的定義為基礎,對Tekinerdogan 等人[6]提出的元模型進行了豐富,形成了內涵和外延較為完整的軟件生態(tài)系統(tǒng)元模型(圖1)。
圖1 軟件生態(tài)系統(tǒng)的元模型
Messerchmitt 等人[4]認為軟件生態(tài)系統(tǒng)的研究包括7 個方面:過程與技術、定性分析、實證研究、分析模型、工具與表達方法、行業(yè)應用、技術報告(包括術語探討、領域綜述、在研項目報告、短文、領域介紹,等等)。在此基礎上,董瑞志等人[3]對相關文獻進行了歸納,發(fā)現在實際研究中“定性分析”與“結構化分析模型”、“實證研究”與“行業(yè)應用”存在較大交叉,把“定性分析”與“結構化分析模型”合并為“分析方法及框架”,把“實證研究”與“行業(yè)應用”合并為“實證研究”,把軟件生態(tài)系統(tǒng)的研究方向從七分類調整為五分類(即:分析方法及框架、實證研究、工具與表達方法、過程與技術、技術報告)。
從相關文獻來看,目前的研究主要集中于針對開源軟件生態(tài)系統(tǒng)的實證研究和技術報告,分析方法與框架、過程與技術、工具及表達等方面研究還比較少。
(1)SNA 模型
社會網絡分析方法(Social Network Analysis,SNA)源于社會學,是一種建立在圖論基礎上,通過點和線集合實現的形式化方法,用點表示參與者、線表示相互關系。近年來隨著大數據、數據可視化技術的發(fā)展,研究人員在一般社會網絡(General Social Networks,GSNs)的基礎上(圖2),進一步豐富點、線的形式,賦予不同的信息,構成形式多樣的圖模型。通常用點的半徑表達規(guī)模(市值、流量、產品數量),用點的顏色表示組團、組群、占股關系等,點的形狀來區(qū)分角色和特征,用點位置來表達結構特征;用線的方向、虛實、粗細等,來表示依賴或競爭關系等[7]。
圖2 一般社會網絡(GSNs)
在軟件生態(tài)系統(tǒng)的研究中,通常用SNA 模型來表示生態(tài)系統(tǒng)中參與者之間的關系,參與者包括:開發(fā)者[8]、公司[9]、API、技術平臺或協(xié)議等(圖 3)。
(2)SSN 模型
SSN(Software Supply Networks)模型是 Boucharas等人在2009 年提出的[10],是目前軟件生態(tài)系統(tǒng)研究中使用最為廣泛的模型之一。模型中的研究對象通常為IVS(獨立軟件廠商/公司)、SUP(軟件產品或服務的供應商)、C(客戶)3 種角色,以及部分非必要元素,如:客戶的客戶(Customer’s Customer)、貿易關系(Trade Rela?tionship)、網關(Gateway)等。
該模型通常區(qū)分為簡單級、網絡級、社區(qū)級3 個層次(圖4):
(a)簡單級。是軟件生態(tài)系統(tǒng)的原始狀態(tài),各成員之間存在明確、簡單的商業(yè)合作關系
(b)網絡級。在這個層次中IVS 和SUP 的邊界變得模糊,系統(tǒng)內各成員之間存在較為復雜的技術支撐關系,層次和職能存在較大交叉。
圖3 軟件生態(tài)系統(tǒng)研究中的幾種典型SNA
圖4 SSN模型的三個層次
(c)社區(qū)級。由于基礎技術、知識產權、協(xié)議標準等原因,在軟件生態(tài)系統(tǒng)中形成了多個錯綜復雜的生態(tài)系統(tǒng),往往需要先明確研究的邊界和視角,以明確子系統(tǒng)的劃分原則。
(3)知識鏈模型
研究人員認為[11],在軟件生態(tài)系統(tǒng)中開發(fā)者、項目、用戶通過知識建立聯系。開發(fā)者基于基礎知識,在技術合作網絡的支撐下參與項目,將知識構建為實體化的軟件產品,用戶在使用軟件的過程中形成新的需求、認識和觀點,隨著新知識的聚集和日益成熟再影響開發(fā)者,組成一個循環(huán)的閉環(huán)過程(圖5)。與SSN 模型類似,知識鏈模型通常也區(qū)分為三個層次(圖6)。
圖5 知識鏈模型
(1)熱力學第二定律
1865 年,德國科學家克勞修斯(Clausius)提出了熱力學第二定律,并將熵定義為“分子無序”的量度。玻爾茲曼和香農又分別在統(tǒng)計力學和信息論中引入“熵”的理論,形成了統(tǒng)計熵和信息熵的概念。愛因斯坦曾說:“熵理論對于整個自然科學來說是第一法則”。目前,熱力學第二定律已經廣泛的應用于化學、生物學、生態(tài)學、經濟學、社會學等學科,并將熵作為無序程度或不確定程度的度量[12]。
(2)社會系統(tǒng)
人類社會以及組成人類社會的各類社會系統(tǒng)(包括國家、企業(yè)、群體、家庭等社會單元,以下均簡稱社會系統(tǒng)),具有如下特點:
①人類社會是復雜巨系統(tǒng)。從系統(tǒng)的角度來看,人類社會是一個復雜巨系統(tǒng)[13],由若干相互作用、相互依賴、相互制約的社會系統(tǒng)構成。
②社會系統(tǒng)都是開放系統(tǒng)。在人類社會中,沒有哪個一個社會系統(tǒng)能夠脫離其他系統(tǒng)、脫離社會環(huán)境單獨存在,社會中不存在絕對意義的獨立系統(tǒng)。所有社會系統(tǒng)都是開放系統(tǒng),與外界存在物質、能量的交換,能夠復制、傳遞信息。
③系統(tǒng)的熵增效應。熵是系統(tǒng)工程的核心概念,當系統(tǒng)內部各要素之間的協(xié)調發(fā)生障礙時,或者由于環(huán)境對系統(tǒng)的不可控輸入達到一定程度時,系統(tǒng)就很難繼續(xù)圍繞目標進行控制,從而在功能上表現出某種程度的紊亂,表現出有序性減弱,無序性增加,系統(tǒng)的這種狀態(tài),稱為系統(tǒng)的熵值增加效應[14]。社會系統(tǒng)都是非平衡態(tài)的開放系統(tǒng)[15],存續(xù)期間始終處于熵增趨勢。
圖6 知識鏈模型的三個層次
例如:城市的交通體系,如果沒有持續(xù)投入人力物力財力予以治理,交通秩序將越來越糟糕,而隨著其規(guī)模、參與成員、應用需求的不斷擴張,治理的難度也就越大。
(3)軟件的負熵
薛定諤在《生命是什么》一書中提出“負熵”概念,認為“生命需要通過不斷抵消其生活中產生的正熵,使自己維持在一個穩(wěn)定而低的熵水平上”“生命以負熵為生”,并將生命活力稱為負熵?!柏撿亍蓖瑯右策m用與社會系統(tǒng),研究人員提出了“組織熵”的概念[16],認為每一個社會系統(tǒng)都需要從環(huán)境中獲取負熵,維持運行、抵消熵增、保持低熵狀態(tài),熵的變化對社會系統(tǒng)的生存、發(fā)展有著重要影響[17]。
隨著計算機和通信技術的飛速發(fā)展,信息化的理念已經深入人心,通過軟件將知識固化為行業(yè)規(guī)則,通過軟件對人、設備、設施、數據等系統(tǒng)內的資源實施有效管理,對組織結構進行優(yōu)化,是目前社會系統(tǒng)引入“負熵”效率最高的形式。同時,引入軟件系統(tǒng)通常還夠引起社會系統(tǒng)按耗散結構理論[18]發(fā)生結構性變化。
(1)研究對象
①社會系統(tǒng)(圖7 中,用橢圓形表示)。是在特定領域或區(qū)域,具備一定關聯關系或共同特征,短期內處于相對穩(wěn)定的系統(tǒng)或群體,是組成人類社會的子系統(tǒng)。社會系統(tǒng)的大小可根據研究需要靈活劃定,通常有2 種:
類型I,從對象范圍來劃分??蓞^(qū)分為國家、地區(qū)、城市、企業(yè)、項目組、家庭、個人等多個層次。
類型II,從社會職能來劃分。如交通體系、物流體系、商業(yè)體系、教育體系以及城市道路交通體系、車輛停放體系(為了和類型I 作出區(qū)分,故使用“體系”命名)。
②軟件生態(tài)子系統(tǒng)。是軟件生態(tài)系統(tǒng)研究的基本單元,是以軟件為中心,在不同社會人群中建立了相互聯系的特定社會系統(tǒng)(圖8),是一種是在公共技術的基礎上,將能量(人力、物力、財力)以及特定的知識,轉化為某個組織或行業(yè)“負熵”(秩序、效率、降低不確定性、降低風險等)的復雜系統(tǒng)。軟件生態(tài)系統(tǒng)與自然生態(tài)系統(tǒng)一樣,通常固定的層次和大小,視研究場景可大可小。
圖7 軟件生態(tài)負熵流模型的基本構成
例如:電商平臺生態(tài)系統(tǒng),包括:商品供應商、平臺服務商、消費者;打車軟件生態(tài)系統(tǒng),包括司機、乘客、平臺服務商;有些時候也包括廣告商、贊助商。
又比如,在同一個公司內部不同層級的人員通過ERP 軟件構成一個系統(tǒng),其概念和范圍與“該企業(yè)”大致相同,但又存在一些特例,如:公司內部沒有與這個軟件發(fā)生聯系、或關聯關系較弱能夠忽略的人員(保潔、保安)可以不在該軟件生態(tài)系統(tǒng)內,公司之外的個別人員又可能被劃入軟件生態(tài)系統(tǒng),如軟件外包商、服務商以及供應商、合作方、客戶等。
圖8 某軟件生態(tài)子系統(tǒng)的內部關系
(2)環(huán)境因子
類似于自然生態(tài)系統(tǒng)中的陽光、氧氣、溫度??梢圆皇苤萍s使用,使用后不會衰減,使用成本較低可以忽略不計的因素,以及對軟件生態(tài)系統(tǒng)發(fā)展的宏觀制約因素,統(tǒng)稱為環(huán)境因子(圖7 中的梯形表示)。環(huán)境因子的變化,對生態(tài)系統(tǒng)內所有子系統(tǒng)都會產生影響。
①開源技術。能夠直接獲取、免費使用,且在實踐中經過檢驗的,與軟件開發(fā)有關的知識產品,包括:基礎理論、開源軟件、開發(fā)平臺、模型、工具、算法、數據等。
②網絡環(huán)境。軟件開發(fā)、運行、維護所依托的網絡系統(tǒng),主要分為互聯網和專用網絡兩個類別。對于大多數軟件系統(tǒng)而言都是依托互聯網運行,不需要自己建立和維護網絡。但也有一些對網絡安全性、實時性、穩(wěn)定性等要求較高的領域,需自建網絡的場景,網絡環(huán)境的建設、維護成本以及不穩(wěn)定性仍然是不可忽視因素。
③法律和協(xié)議。包括軟件開發(fā)和運行過程中應當普遍遵循的商業(yè)規(guī)律、地區(qū)法律、軟件協(xié)議等。
④社會因素。指社會對軟件的接受能力和普遍態(tài)度,包括基本操作水平、認識水平、價值偏見等。
⑤其他。潛在的,可以對軟件開發(fā)構成影響的因素。例如,“云計算”隨技術的不斷發(fā)展和普及,應用成本將不斷下降,可靠性不斷提升,將會與互聯網一樣成為軟件生態(tài)系統(tǒng)中能夠被普遍低成本使用的公共資源。這也解釋了,互聯網、云計算、開源軟件等技術受到普遍關注,取得巨大成就的原因,可以說,這些技術都引起了環(huán)境因子變化,從底層改變整個軟件生態(tài)系統(tǒng),是推動整個軟件生態(tài)系統(tǒng)發(fā)展的關鍵技術。
(3)負熵流
在自然生態(tài)系統(tǒng)的研究中,通常依托食物鏈或食物網模型,研究能量、營養(yǎng)的流動,分析生物之間的關系和生態(tài)系統(tǒng)的發(fā)展趨勢。對軟件生態(tài)系統(tǒng)而言,可以圍繞“軟件的負熵”來研究軟件系統(tǒng)與環(huán)境之間、在軟件系統(tǒng)之間的關系。為了簡化軟件生態(tài)系統(tǒng)模型,簡化軟件與軟件、軟件與環(huán)境之間的能流交換過程,將系統(tǒng)之間通過軟件實施產生的熵差稱為:軟件負熵流(Software Negative Entropy Flow)。
生物需要從自然界不斷的輸入“負熵”,對抗自身的熵增,維持其生命活動。與之類似,軟件生態(tài)子系統(tǒng)也必須從軟件生態(tài)環(huán)境中持續(xù)的獲得負熵,通常為軟件開發(fā)、運行、維護必須的人力、物力、財力,以及特定的知識或知識產品、軟件產品等。在環(huán)境因素的作用下,通過軟件的開發(fā)、實施等工作,形成可以被目標社會系統(tǒng)接收的“負熵”,例如秩序、規(guī)則、管理效益等。軟件產生的負熵具有如下特征:
①通常只對特定的目標系統(tǒng)有效,移植到其他領域需要再開發(fā)。
②軟件負熵的載體以信息流和能量流為主,物質流通??梢院雎浴?/p>
③軟件輸出的負熵與軟件自身消耗的負熵,通常沒有直接關系。軟件生態(tài)子系統(tǒng)輸入的負熵,主要用于維持該軟件開發(fā)、運行所需,是抵消自身的熵增,通常與軟件復雜度、用戶規(guī)模、開發(fā)團隊組織能力有關;軟件輸出的負熵,是針對目標系統(tǒng)而言的秩序或管理效益,主要取決于通過軟件引入的知識量及知識的有效性。軟件輸出的效益相對于軟件自身消耗的負熵而言,往往不在一個數量級,目標社會系統(tǒng)越大,輸出和輸入的負熵比越大,即收益越大。
圖9 常見的軟件負熵流關系
常見的負熵流關系(圖9)所示:
(1)外包模式。公司A 通過資金向外包公司輸出負熵,外包公司通過軟件產品再將負熵輸出到公司A。
(2)孵化模式。公司A 內設軟件部門,從公司A的整體收入劃撥一部分資源輸入軟件部門,軟件部門通過軟件項目改良公司內部的運行秩序,提高公司A的效率。在后續(xù)的研究中,可以對這種模式進行簡化,默認不需要再畫出負熵的流動關系。
(3)共生模式。多主體的協(xié)作共生模式,通常為軟件公司通過運作某個軟件,對某些社會群體或某種社會秩序產生效益(輸出負熵),再通過第三方得到收益。如:導航軟件生態(tài)系統(tǒng)中最終受益的是整個社會的交通秩序,而使用群體帶來流量形成廣告效益(以及數據效益等),公司A 受益后通過廣告公司向軟件項目提供資金支持,形成負熵的循環(huán)。
(1)分析之一:軟件分包模式
在大型軟件的開發(fā)中,組織者往往需要將項目整體外包或拆分外包,被外包的部分還可能再次被拆分外包,形成復雜的合作關系。圖10 所示,A 公司將項目總包給B,B 又將部分內容外包給5 個分包公司,又向公司C 采購了軟件產品供部門3 使用。
圖10 大型軟件項目的分包模型
(2)分析之二:開源軟件社區(qū)模式
這是近年來新興研究方向,在上一實例中(圖10)各個公司之間主要還是傳統(tǒng)的商業(yè)合作關系,關系較為明確、清楚,但在開源社區(qū)模式中相互關系就更為復雜。圖11 中舉例說明了某開源軟件社區(qū)的運行情況,其中,A 公司將本公司所開發(fā)的項目B 開源,基金F 支持了項目C,生產商1、2 都從開源社區(qū)中獲益,但生產商1 并未向開源社區(qū)做出貢獻,生產商2 通過基金向對開源社區(qū)予以了支持。
圖11 開源軟件社區(qū)模型
(3)可行性總結
通過以上兩個實例的分析,相對現有的模型而言,軟件負熵流模型具有如下特點:
①實現不同層次研究對象的統(tǒng)一。在以往的研究模型中,通常參照自然生態(tài)系統(tǒng)中的作法,區(qū)分為多個層次進行研究,既有宏觀對象如開源社區(qū)的“大系統(tǒng)”,也有微觀對象如軟件項目、用戶、贊助商等“小系統(tǒng)”,無法體現不同層次對象之間的關系。本模型將研究對象統(tǒng)一視為“非穩(wěn)定態(tài)的開放系統(tǒng)”,為研究“小系統(tǒng)”對“大系統(tǒng)”關系提供了便利,更符合軟件行業(yè)中“小系統(tǒng)”、個別企業(yè)、微觀技術,影響或帶動整個軟件生態(tài)系統(tǒng)的獨有特點。
②將復雜的交互關系,簡化為單向流動關系。首先,實現了由復雜向單一的抽象,負熵流能夠覆蓋軟件生態(tài)系統(tǒng)中形式多樣的關聯關系,例如:資金、股權、理論、產品、經驗、人才、數據等,都可以看做為“負熵”。其次,實現了由交互到單向的抽象,系統(tǒng)之間通常存在復雜的物質、能量、信息交互,在本模型中,可以把那些能夠量化關系進行抵消,形成單向的“負熵流”;也可以從研究視角出發(fā)定性的判斷負熵流方向,將交互的關聯關系簡化為單向的負熵傳輸關系。
③實現了內外部效益的統(tǒng)一。在項目管理的研究中,研究人員從提出了軟件熵、管理熵的概念,認為軟件在開發(fā)和運行的過程中,隨著軟件復雜度、使用人群、累積數據、特殊情況的不斷累積,以及軟件團隊人員的變動、知識換代,都將導致軟件項目管理的熵增加[19]。本文將軟件項目內部的熵增,與軟件工程實施所需輸入的負熵,以及軟件實施之后輸出“負熵”三者統(tǒng)一在一起,為同步研究軟件項目管理、軟件生態(tài)系統(tǒng)、軟件實施效益等問題,提供了方法和工具。
采用合適的軟件生態(tài)系統(tǒng)模型,對于復雜系統(tǒng)軟件的研究至關重要,選擇、構建和改良的軟件所處的生態(tài)環(huán)境,將成為未來軟件實施成敗的關鍵環(huán)節(jié)。本文總結了當前軟件生態(tài)系統(tǒng)研究中常用的分析方法和工具模型,引入熵的概念對軟件生態(tài)系統(tǒng)的負熵進行了研究,提出了新的研究模型。但由于研究水平和研究時間的限制,還有很多問題沒有展開,特別是,需要從軟件負熵的角度,對軟件生態(tài)系統(tǒng)的耗散結構、平衡態(tài)、競合關系、生命周期等問題進行研究,形成完整的研究框架。