正如過去的紙質書籍承載人類文字文明一樣,軟體已經成為信息時代人類文明新的表達方式和承載載體,如何開發軟體是一個大問題。回顧數十年軟體發展的關鍵歷程,軟體開發經歷了個體創作、工業化生産、群體化生産等變革,驅動軟體科技快速創新和軟體産業蓬勃發展。在網絡時代向泛在計算智慧時代轉型的關鍵時期,認識軟體發展背後的核心規律,構建新的軟體方法與技術體系,對軟體科技與産業的可持續發展具有重要意義。
軟體開發呼喚新的範式
軟體開發是人類當代獨特的群體智力活動。在計算技術發展的歷史進程中觀察軟體開發技術的發展,不斷出現的軟體危機推動軟體開發理念、方法和技術的深刻變革。
軟體複雜度的增大導致“軟體危機”開始爆發,IBM OS/360通用操作系統研發過程的失敗經驗促使了“軟體工程”概念的提出,我們將軟體工程遵循的軟體開發理念和方法稱為軟體開發的工程範式。軟體工程潛移默化地繼承了機械的世界觀或科學觀,即世界是一部確定不變的、可被理解表述的、可被線性分解還原的“機器”,由此派生出軟體生産的基本原則和方法:自上而下,逐步求精。軟體開發的工程範式取得了歷史性成功,形成了軟體産業,但在互聯網産業蓬勃發展的趨勢下,面臨著軟體開發過程管理群體協同效率瓶頸和軟體自動化工具能行可表達理論極限瓶頸。
在軟體開發工程範式面臨巨大發展瓶頸之際,發端于自由軟體運動的開源軟體蓬勃發展,産出了一系列高水平的軟體,我們將其所遵循的軟體開發理念和方法統稱為開源範式。作為脫胎于互聯網環境的軟體開發範式,開源範式看似無序狀態背後的邏輯是演化的世界觀和科學觀,即遵循自然演化兩個基本原則:一是遺傳變異,二是適者生存。這種基於達爾文“演化論”科學觀下的開源範式是軟體工程歷史上的又一次重要覺醒,適應了互聯網時代軟體發展趨勢。但是,置身於自然演化生態中,開源範式難逃“物競天擇、適者生存”的自然規律,任何一個開源項目能否成功無法給出確定性的承諾。
在人機物三元融合智慧互聯泛在計算時代,計算平臺的泛在化驅使軟體應用的泛在化,應用場景的多樣化帶來軟體演化的不確定性,軟體從相對獨立的産品演變為多種元素相互依賴、持續演化的生態,“人在回路”的持續成長演化成為軟體系統的一個基本特徵,軟體開發呼喚新的範式。
群智範式核心理念:
宏觀演化,微觀求精
軟體開發是一個大規模群體通過群智激發和匯聚來解決複雜任務的活動,其本質在於“群體智慧”。不論是工程範式還是開源範式,都是面向特定問題實現群智激發和匯聚的一種方式,差別在於:工程範式聚焦線性確定性問題的軟體開發,通過強組織模式實現高效群智“匯聚”,幾乎放棄對不確定性問題的關注;開源範式則全面擁抱不確定性,通過開放共享實現高效的群智“激發”,但對結果不做確定性承諾。群智範式關注的核心問題是:面對不確定的世界,如何高效激發和匯聚群體智慧,以實現軟體的持續演化,主動適應變化的世界。
群智範式強調群智的激發與匯聚,其核心理念可以簡單概括為:宏觀演化,微觀求精。在宏觀(長期)尺度上接受世界的不確定性,以演化論為指導,自覺將軟體核心開發者、外圍軟體涉眾,以及軟體所處的社區生態視為有機整體,持續激發各類群體圍繞軟體項目進行自由創作;在微觀(短期)尺度上,即在軟體長期演化進程的具體階段, 堅持機械論原則,明確階段性里程碑任務的需求規範(以下簡稱“里程碑”),以軟體開發小規模核心團隊為主力軍,採用逐步求精的思路組織任務規劃實施。
在“宏觀演化,微觀求精”的核心理念下,群智軟體的開發方法可以概括為“兩個連接,一個轉化”,即連接核心團隊與外圍群體,連接自由創作與規範生産,實現原型作品與原型版本之間的轉化。
“核心團隊”和“外圍群體”代表了軟體開發生態中兩類典型軟體參與群體,核心團隊通常是軟體項目的創始團隊、管理團隊和核心參與者,主要是初始創新作品的發起者、里程碑和原型版本的發佈者;外圍群體則是參與軟體項目的其他大規模利益相關者群體,在軟體迭代演化過程中貢獻需求和代碼等。隨著軟體的迭代演化,核心團隊負責軟體演化過程中的里程碑規劃決策、核心功能開發、吸納匯聚“外圍群體”貢獻的疑修(Issue)或代碼、發佈新的原型版本。
創作與生産是群智範式下軟體開發活動中兩個相互交織快速迭代的過程。在需求不清晰、任務不明確時,核心團隊通過發佈原型版本吸引並激發“外圍群體”的靈感,收穫並評估外圍群體的貢獻,參與軟體集體創意;在階段性里程碑明確後,核心團隊採用規範化的組織模式快速推進研發任務,基於集成部署和自動化測試等機制生成高質量的軟體原型版本。
原型作品和原型版本是群智範式下軟體開發活動中兩類典型的軟體製品。原型作品通常是靈感驅動下的創意捕獲和表達,具有不可預期性和多樣性;原型版本則通常是在階段性里程碑驅動下,按照工程範式開發産生的軟體原型版本,具有確定性和明確的評判標準。群智範式關注在連接“外圍群體”創作活動與“核心團隊”生産活動的基礎上實現這兩類軟體製品的“轉化”。
群智範式下的軟體項目及其社區生態是大規模軟體涉眾通過“兩個連接、一個轉化”的群智協作不斷形成滿足階段性里程碑的原型版本,然後在大範圍應用中獲取新需求進而迭代演進形成持續循環,其開發過程遵循“持續需求獲取、持續協同開發、持續在線演化”的持續迭代演進模型。
在需求獲取環節,外圍群體使用軟體服務新版本,發現軟體問題、特徵需求等並報告給軟體的核心團隊,核心團隊對疑修有效性進行確認並將相關的疑修加入到對應的里程碑中;在協同開發環節,外圍群體通過復刻(Fork)獲得派生倉庫並進行代碼創作,並通過合併請求(Pull Request)將作品提交給核心團隊進行審查,核心團隊對作品進行評審並將符合標準的代碼合併進項目的主版本庫;在持續在線演化環節,核心團隊將軟體的最新代碼進行持續部署並適時發佈具有里程碑意義的原型版本,外圍群體自由下載使用並對軟體進行反饋評價,驅動軟體項目的進一步迭代演進。
工程範式、開源範式與群智範式這三種範式的産生和發展雖有時間先後順序,但在實踐中三者不是完全替代關係,工程範式與開源範式在很多場景下行之有效並被廣泛實踐。群智範式不是對前面兩個開發範式的否定,而是希望在工程範式與開源範式之間找到平衡點,結合時代特點與應用場景指導我們的軟體開發實踐。
共同推進群智範式落地
實踐群智範式是一個軟體開發的新範式、新理念、新方法和新模型,試圖為人機物融合泛在計算時代軟體開發提供新的認知和方法指導。但群智範式不止於此,還將進一步沉澱形成支持群智範式理念、方法和模型物化落地的面向群智範式的軟體開發平臺,並且其本身也採用群智範式的理念和方法來推進平臺項目的建設,力圖聯合多方力量合力打造支持群智軟體開發的新型基礎設施。
自2006年以來,我們立足於工程範式和開源範式,持續深入地研究群智範式,在國家持續支持下形成了“Trusite確實”技術體系,並建設運營了“Trusite確實”系列工具平臺,開展面向群智範式的軟體開發平臺探索與實踐。2023年6月,中國計算機學會聯合開放原子開源基金會、開源中國等學術界、開源組織及産業界的力量共同發起“群智範式”平臺項目,希望將群智範式的核心理念、開發方法等物化為基礎平臺的機制和能力,共同建設面向群智軟體開發的新型基礎設施,力圖為我國群智生態構建與發展提供支撐。
群智範式項目的總體建設思路是,合力建設開放可擴展的高性能共性能力基礎內核,圍繞共性能力基礎內核拓展形成項目群,進而支持多領域服務平臺的建設和運營。在能力建設方面,群智範式平臺項目將重點圍繞基礎服務、生産關係重構、組織模式重構和生産力工具研發四個方面進行推進。
我們借鑒市場經濟中股權激勵思想,運用區塊鏈技術設計基於知識産權共享的群智持續激勵機制,實現對群智範式下外圍群體與核心團隊間的生成關係重構,實現對大規模群智的激發與匯聚;圍繞外圍群體與核心團隊的連接、軟體創作與規範生産的連接、軟體作品與原型版本的轉化研發相應支撐工具和服務,從而實現對連接協作組織模式的重構;關注AI驅動的智慧化軟體開發工具/服務以及雲原生開發運維一體化工具/服務等工具研發,從而提升群智軟體開發的生産力。
群智範式為我們應對未來不確定性世界的軟體開發提供了理論和方法指導,希望聯合國內學術界和産業界力量一起合作,共同推動這樣一種新範式的落地實踐。