999精品,丝袜综合,大陆老熟妇性,中国老女人AV,亚洲精品国产第一区二区三区

描繪GitHub中的汽車軟件形勢 動態(tài)
發(fā)布時間:2023-06-19 17:34:43 文章來源:面包芯語
當(dāng)前位置: 主頁 > 資訊 > 專題 > 正文

汽車行業(yè)已經(jīng)從一個電子機械行業(yè)過渡到一個軟件密集型行業(yè)。目前一輛高端生產(chǎn)型汽車包含1億多行代碼,在代碼規(guī)模上超過了現(xiàn)代飛機、大型強子對撞機、安卓操作系統(tǒng)和Facebook的前端軟件,差距很大。如今,據(jù)報道,包括蘋果、谷歌、華為、百度和索尼在內(nèi)的全球軟件公司都在努力讓自己的汽車上路。本文涉足開源中的汽車軟件景觀,對這個有著長期封閉源代碼開發(fā)歷史的多學(xué)科行業(yè)進行了初步的了解。通過描述汽車軟件的特點和開發(fā)風(fēng)格,我們在GitHub上描繪了汽車軟件的景觀。


(資料圖片)

景觀是由15,000多個用戶貢獻的≈600個積極開發(fā)的汽車軟件項目所定義的,這些項目創(chuàng)建于2010年至2021年的12年間。這些項目包括與車輛動態(tài)相關(guān)的軟件;LiDAR和攝像頭等傳感器的固件和驅(qū)動程序;感知和運動控制的算法;以及整合上述內(nèi)容的完整操作系統(tǒng)。該領(lǐng)域的發(fā)展是由工業(yè)界和學(xué)術(shù)界共同推動的,其中三分之一的汽車軟件庫由一個組織擁有并積極開發(fā)。我們觀察到多個方面的轉(zhuǎn)變,包括首選語言從MATLAB到Python,以及感知和決策相關(guān)軟件比傳統(tǒng)汽車軟件更受歡迎。這項研究見證了開源汽車軟件的蓬勃發(fā)展,對未來的研究和實踐有很多啟示。

今天,汽車是一個軟件密集型產(chǎn)業(yè)[8,44]。在這個價值5萬億美元的產(chǎn)業(yè)中,最新的創(chuàng)新(包括自動駕駛、直觀信息娛樂和電氣化)更多地依賴于軟件創(chuàng)新,而不是機械創(chuàng)新。到2020年,一輛汽車的軟件和運行它的硬件的成本預(yù)計將從4,800美元到10,650.2美元不等,到2030年,這一成本預(yù)計將翻一番,占汽車總成本的50%

最近,開放源代碼軟件(OSS)進入汽車行業(yè),對于一個主要由商業(yè)驅(qū)動、嚴(yán)重依賴于保護其知識產(chǎn)權(quán)的行業(yè)來說,這是一個具有里程碑意義的變化。這使得由原始設(shè)備制造商(簡稱汽車制造商)、其不同層次的供應(yīng)商和工具供應(yīng)商組成的汽車軟件行業(yè),除了有趣和相關(guān)的項目外,還能接觸到全球范圍內(nèi)的貢獻者網(wǎng)絡(luò)。為了了解這一里程碑式的變化所帶來的機遇,本研究探索了開源軟件中汽車軟件項目的前景,如GitHub所示。

許多研究已經(jīng)探索了OSS的前景,盡管是針對不同的領(lǐng)域。有關(guān)于AI-ML軟件的研究[10],大型科技公司的軟件[15],甚至特定的應(yīng)用領(lǐng)域,如視頻游戲[36]和機器人[45]。在此基礎(chǔ)上,我們增加了自動駕駛軟件,它將非安全關(guān)鍵軟件、安全關(guān)鍵軟件和信息娛樂軟件獨特地融合在一起,形成了一個單一的系統(tǒng)。我們進行了調(diào)查:

開源的汽車軟件項目有什么特點?

我們探討了以下兩個方面:

(1) 類別和特點: 我們確定哪些類型的汽車軟件項目是開源的,并將它們相互比較。我們還將汽車項目與非汽車項目進行了比較。此外,我們還探討了汽車項目的特點(例如,領(lǐng)域的規(guī)模和成熟度)及其利益相關(guān)者(例如,主要參與者和附屬機構(gòu))。

(2) 軟件開發(fā)風(fēng)格: 我們研究軟件開發(fā)的不同方面,如合作(如貢獻者的類型,他們的貢獻和互動)和貢獻風(fēng)格(如獨立與依賴)。

我們的分析基于2010年至2021年12年間在GitHub上創(chuàng)建的≈600個汽車項目和類似數(shù)量的非汽車項目。我們的主要貢獻是:

? 一個人工策劃的、首創(chuàng)的、積極開發(fā)的汽車軟件的數(shù)據(jù)集,以及它們在四個流行維度上的分類,包括安全關(guān)鍵型軟件和工具[23]。該數(shù)據(jù)集有助于本研究的復(fù)制和未來對汽車軟件的探索。

? 汽車軟件的特點,包括它的時間趨勢、流行程度、編程語言、用戶分布和開發(fā)活動。

據(jù)我們所知,這項研究是第一個介紹開源汽車軟件情況的研究。本研究提出的見解與快速增長的領(lǐng)域有關(guān),但從軟件工程的角度來看卻知之甚少。

本文的其余部分組織如下:第2節(jié)介紹了我們對數(shù)據(jù)收集和分析的設(shè)計選擇。第3和第4節(jié)介紹了我們的發(fā)現(xiàn)和見解,以及我們得出這些見解的方法。第5節(jié)介紹了本研究對汽車和軟件工程研究和實踐的意義。我們在第6節(jié)中回顧了對有效性的威脅,在第7節(jié)中描述了相關(guān)的研究,并在第8節(jié)中總結(jié)了本文。

我們之所以選擇GitHub來探索汽車軟件領(lǐng)域,是因為該平臺上有大量的開源軟件項目,而且在全球范圍內(nèi)都很普遍。僅在2021年,就有6400萬個新倉庫被創(chuàng)建,來自全球200多個國家的7300多萬貢獻者和84%的財富100強企業(yè)使用GitHub。

這項調(diào)查有三個部分。首先,我們定義了汽車軟件,并提出了區(qū)分汽車軟件和一般軟件系統(tǒng)的標(biāo)準(zhǔn);以及確定作為比較基線的一般資源庫的標(biāo)準(zhǔn)。第二和第三部分使用了兩組選定的資源庫的元數(shù)據(jù)。在第二部分,我們提出了資源庫的描述性統(tǒng)計(在第三部分),而在第三部分,我們探討了用戶統(tǒng)計以及貢獻模式(在第四部分)。在第二和第三部分中,我們從汽車領(lǐng)域中獲得了洞察力,并與基線進行比較。特別是,在第二部分中,我們通過GitHub API(使用PyGithub--GitHub API搜索的python包裝器5)挖掘檔案數(shù)據(jù)。在第三部分中,我們用GHTorrent數(shù)據(jù)[12]進一步充實這一數(shù)據(jù)。一般來說,我們的研究設(shè)計從最近與開放源碼軟件有關(guān)的景觀研究中獲得靈感(例如,[10,15])。

2.1.什么是汽車軟件?

在不同的科學(xué)界流行著許多關(guān)于汽車軟件的定義(例如,[6,8,14])。這些定義的一些共同要素是 (a) 構(gòu)成汽車一部分的軟件,(b) 通過API或其他類似機制與汽車互動的軟件,以及(c) 專門用于創(chuàng)建(a)和(b)的軟件[5, 8, 11,14]。第3節(jié)將介紹汽車軟件的更詳細(xì)的特征。

2.2. 鑒別汽車軟件項目

為了識別GitHub上的特定類型的軟件項目,傳統(tǒng)的方法,如主題建模[17,39]被發(fā)現(xiàn)是不合適的[10]。另一種方法是使用GitHub上的 "主題"功能。主題是由項目定義的標(biāo)簽,或由GitHub向項目建議的標(biāo)簽,可用于發(fā)現(xiàn)類似的存儲庫網(wǎng)絡(luò)。我們初步的人工分析顯示,與之前的研究[10]不同,幾個汽車庫沒有使用GitHub的 "話題"功能。因此,除了通過 "主題"來識別軟件庫外,我們還在GitHub上搜索特定的關(guān)鍵詞,如果在 "README "文件中發(fā)現(xiàn)這些關(guān)鍵詞,就有可能識別出一個汽車軟件庫。

為了利用GitHub的 "主題 "功能識別汽車軟件,首先我們定義了種子詞。我們擇"automotive"、"automobile"、"drive"、"driving"、"vehicle"、"vehicular"和"car"作為種子詞。為了捕捉一系列相關(guān)的詞匯,我們將種子詞匯轉(zhuǎn)換為它們的基礎(chǔ)詞匯。例如,"automo"代表汽車和汽車。同樣地,其他的關(guān)鍵詞變成了:drive、vehic和car。使用這些基本術(shù)語,我們組成了一個搜索字符串,排除了與汽車軟件無關(guān)的術(shù)語。例如google-drive、電商和設(shè)備驅(qū)動的相關(guān)主題。我們最后的(4個)搜索查詢是:

automo

vehic

driv NOT driven NOT drives NOT license

NOT google-drive NOT linux-driver

car NOT cart NOT card NOT caro

NOT carp NOT care

使用這些搜索查詢,我們確定了主題,這些主題共同定義了汽車軟件庫的搜索空間。我們總共識別了2797個主題標(biāo)簽。我們手動分析每個主題,以確定它是否與汽車軟件相關(guān)。如果主題標(biāo)簽沒有提供信息,我們會查看鏈接到該主題的前10個存儲庫的名稱和描述來做出決定。最終,我們確定了286個主題,并選擇了它們所有的鏈接庫。這些主題的完整列表(連同其搜索詞)可作為我們復(fù)制包的一部分[23]。

此外,為了識別不使用主題的相關(guān)資料庫,我們從四個搜索查詢中的每一個中選擇了基于資料庫數(shù)量的前五個主題結(jié)果(來自前一步的286個主題),這些結(jié)果是在前一步中選擇的(共產(chǎn)生20個)。為了提高搜索結(jié)果的信噪比,我們刪除了最常見的術(shù)語(例如,汽車、轎車),結(jié)果是12個術(shù)語。我們在不使用 "主題 "標(biāo)簽的資源庫的 "README "文件中搜索這些術(shù)語,以確定更多的資源庫。值得注意的是,只有高達50%的與汽車有關(guān)的資源庫使用了"主題"功能,在584個被選中的汽車資源庫中,有301個沒有使用這一功能。請注意,在上述每個人工分析步驟中,隨機抽樣和邊緣案例都由兩名研究人員獨立分析,以確保嚴(yán)謹(jǐn)性和可重復(fù)性。

2.3.篩選和淘汰標(biāo)準(zhǔn)

為了策劃一個有代表性的活躍項目樣本,我們采用了以下過濾標(biāo)準(zhǔn)(受[10]的啟發(fā)):

大小:存儲庫的大小應(yīng)大于0KB。

流行:星級和分叉是版本庫的流行指標(biāo)。

為了收集一個有代表性的存儲庫樣本(而不僅僅是流行的),我們選擇至少有5個分叉或5顆星的存儲庫。

活動:我們使用提交作為開發(fā)活動的代理,并選擇最后一次提交是在2021年的存儲庫,這是選擇積極開發(fā)項目的一個標(biāo)準(zhǔn)。

數(shù)據(jù):倉庫數(shù)據(jù)應(yīng)該可以通過GitHub API獲得。

上述四個標(biāo)準(zhǔn)適用于入圍的軟件庫,產(chǎn)生了一個1981個軟件庫的子集。

內(nèi)容:為了衡量一個軟件庫是否是汽車軟件,第一作者根據(jù)以下納入和排除標(biāo)準(zhǔn),手動檢查了項目的標(biāo)題、描述和README文件。

納入標(biāo)準(zhǔn)

? 選擇汽車專用軟件

? 選擇有助于開發(fā)汽車專用軟件的軟件

? 只選擇與公路車輛有關(guān)的軟件

? 文本用英文書寫,有README文件排除標(biāo)準(zhǔn)

? 與汽車無關(guān)或與(汽車)銷售和營銷有關(guān)的資料庫、教程、課程項目、學(xué)士和碩士論文、文件、數(shù)據(jù)集、玩具車、游戲、交通基礎(chǔ)設(shè)施、地圖,以及與汽車沒有直接互動的資料庫。

我們采取了保守的方法來選擇資料庫。這意味著,屬于灰色地帶的案例被排除在外。為了保證程序的可重復(fù)性,另一位在軟件工程實證研究方面有經(jīng)驗的研究人員使用上述納入和排除標(biāo)準(zhǔn)對隨機選擇的資源庫子集(大約100個)進行了獨立分類。用Cohen"s Kappa[33]計算,這兩個分類之間的評判員之間的一致性為0.83,表明幾乎完全一致。兩位研究人員討論了他們的不同意見,直到達成決定。最后,我們確定了585個汽車軟件庫。

2.4.確定基線存儲庫

為了將我們的洞察力與基線進行比較,我們需要積極開發(fā)與汽車無關(guān)的資源庫。我們的第一個選擇是重新使用以前的一個相關(guān)研究的基線[10]。然而,這個數(shù)據(jù)集有三個問題:(1)不包含最近的存儲庫(在2019年中期之后創(chuàng)建),(2)系統(tǒng)地排除了AI-ML存儲庫,以及(3)代表最流行的存儲庫,不一定代表一般的軟件項目。為了減輕這些擔(dān)憂,我們建立了具有以下特點的基線。首先,我們使用與汽車軟件項目相同的標(biāo)準(zhǔn)(規(guī)模、受歡迎程度、活動和數(shù)據(jù)可用性)來確定積極開發(fā)的項目(參見2.3節(jié))。我們唯一的偏差是選擇有五顆或更多星星和分叉的存儲庫。

這個決定是為了減輕搜索API的實際執(zhí)行限制。然后,對于每一年(從2010年到2021年),我們按照多年來所有活躍開發(fā)的GitHub存儲庫的百分比分布,對存儲庫進行子抽樣,并根據(jù)每個子抽樣中最近的活動進行選擇。我們選擇的軟件庫,使其總數(shù)量接近600個軟件庫。為了避免與汽車軟件的重疊,我們排除了含有汽車、轎車和車輛等術(shù)語的軟件庫。我們得到的數(shù)據(jù)集有566個資源庫作為基線。

2.5. 數(shù)據(jù)分析

我們的數(shù)據(jù)分析有兩個部分:(1)我們報告了關(guān)于選擇汽車和基線庫的描述性統(tǒng)計。我們描述了汽車軟件系統(tǒng)的類型以及它們與基線軟件系統(tǒng)的關(guān)系。我們這部分的分析是基于使用PyGithub提取的元數(shù)據(jù)。詳情請參考第3節(jié)。(2) 我們通過結(jié)合PyGithub和GHTorrent[12]的洞察力,對開發(fā)風(fēng)格進行了更深入的了解。由于GHTorrent數(shù)據(jù)集只包含截至2021年7月的開發(fā)數(shù)據(jù)(我們在2021年12月使用PyGitHub收集數(shù)據(jù)),GHTorrent中沒有基于PyGitHub數(shù)據(jù)的一些軟件庫。因此,我們只剩下585個汽車庫中的436個和565個基線庫中的503個。關(guān)于更深入的實施細(xì)節(jié)和獲得的見解,請參考第4節(jié)。

本節(jié)介紹了GitHub上的汽車軟件的類型和它們的特點。首先,我們介紹汽車軟件的不同分類方法。下一小節(jié)介紹了我們的研究結(jié)果,以及汽車軟件與一般軟件系統(tǒng)的比較集的獨特特征。這一分析是基于2010年至2021年12年間創(chuàng)建的584個汽車軟件庫(使用PyGitHub提?。W罱囊粋€是在2021年12月30日創(chuàng)建的。

3.1.方法

非正式地,汽車軟件可以被定義為 (1)運行或與汽車互動的軟件;(2)支持運行或與汽車互動的軟件的不同生命周期階段(如開發(fā)、確認(rèn)和驗證)的工具。我們將以上兩類分別稱為車載軟件和工具。

車載軟件:在文獻中,有許多方法可以對車載軟件進行分類。我們使用以下兩種方案:

(1) 安全關(guān)鍵型和基于應(yīng)用的安全關(guān)鍵型: 安全關(guān)鍵型軟件被定義為執(zhí)行任務(wù)的軟件,如果不正確執(zhí)行,可能會導(dǎo)致人類受傷、死亡或?qū)Νh(huán)境造成危害[1, 16, 22, 24, 25, 34]。在對汽車軟件進行人工分類的過程中,我們注意到,除了安全關(guān)鍵型和非安全關(guān)鍵型軟件系統(tǒng)外,還有第三類軟件系統(tǒng):基于應(yīng)用的安全關(guān)鍵型。這些軟件系統(tǒng)可能是安全的關(guān)鍵,這取決于(預(yù)期的)應(yīng)用環(huán)境。例如,用于感知的軟件系統(tǒng)在用于完全自動駕駛(即沒有主動的人類駕駛員)時是安全的關(guān)鍵。

在這種情況下,感知軟件系統(tǒng)的任何故障、功能失常或意外功能都可能導(dǎo)致撞車,對交通參與者造成傷害,并對其周圍環(huán)境造成傷害。同樣的系統(tǒng)在用作駕駛員警告系統(tǒng)時,由人類駕駛員負(fù)責(zé),可以被歸類為非安全關(guān)鍵。在這種情況下,操縱車輛的責(zé)任由人類駕駛員承擔(dān)。我們根據(jù)應(yīng)用將這類軟件庫劃分為安全關(guān)鍵型。

(2) Broy的分類: 2007年,Broy等人[5]將自動化軟件分為以下5類:(a) 人機界面(HMI)、多媒體和遠程信息處理相關(guān)軟件;(b) 車身/舒適性軟件,例如,控制汽車門各方面的軟件;(c) 用于安全電子的軟件,這是有嚴(yán)格安全要求的硬實時、基于離散事件的軟件;(d) 動力系統(tǒng)和底盤控制軟件,其中包括控制算法和控制發(fā)動機的軟件;以及 (e) 基礎(chǔ)設(shè)施軟件,如用于診斷和軟件更新的軟件。

自2007年以來,汽車軟件和軟件系統(tǒng)領(lǐng)域總體上有所發(fā)展。例如,2012年使用神經(jīng)網(wǎng)絡(luò)證明了以(相對)較低的計算能力進行高度準(zhǔn)確的圖像識別[30]。汽車軟件在感知系統(tǒng)和自動決策方面取得了進展,這使得完全自動駕駛成為可能。雖然自動駕駛的其他方面如線控駕駛在目前的分類中得到了體現(xiàn),但感知和決策這一方面卻沒有。我們通過增加第六個類別來擴展Broy的分類:(f)感知和決策軟件。感知和決策軟件包括任何有助于感知(了解車輛周圍環(huán)境)和決策(例如,決定啟動、轉(zhuǎn)向和制動)的軟件,適用于任何級別的自動駕駛(即駕駛輔助、部分自動駕駛和完全自動駕駛)。

工具:行業(yè)標(biāo)準(zhǔn)(如ISO26262[18,29])定義了多個階段,如汽車生命周期中的驗證和核實。我們認(rèn)為所有為汽車生命周期的一個或多個階段提供工具的軟件庫都屬于這一類別。為了簡潔起見,我們從這個分類中排除了我們只有一個資源庫的階段(以及相應(yīng)的工具)。選定的資源庫分為以下四類:(1)開發(fā)工具,(2)與模擬或仿真有關(guān)的工具,(3)驗證和核實的工具,以及(4)診斷工具。

請注意,傳統(tǒng)上與模擬(和仿真)有關(guān)的工具被認(rèn)為是驗證和核實的一部分。然而,隨著神經(jīng)網(wǎng)絡(luò)的出現(xiàn),許多仿真工具被用于訓(xùn)練(開發(fā))神經(jīng)網(wǎng)絡(luò)。因此,我們在此單獨研究這些工具。

為了確保對汽車資源庫進行嚴(yán)格的、可重復(fù)的分類,第一作者和另一位在經(jīng)驗性軟件工程方面有經(jīng)驗的研究人員,對隨機選擇的資源庫和邊界案例的子集進行了獨立分類。

在隨后的小節(jié)中,我們根據(jù)上述分類報告了汽車軟件的分布情況,以提供GitHub上開源的汽車軟件類型的概述。在本文中,我們將繼續(xù)深入研究這些流行和突出的汽車軟件類別。

圖1:2010年至2021年期間,參照GitHub中所有積極開發(fā)的軟件庫,積極開發(fā)的自動軟件庫的時間演變。

為了描述汽車軟件的特點,我們報告了汽車軟件庫的描述性統(tǒng)計,并將其與同樣來自GitHub的非汽車軟件庫的對比集進行了比較。我們的分析突出了四個關(guān)鍵領(lǐng)域,首先是GitHub上存儲庫的時間趨勢和演變。這一分析表明了該領(lǐng)域的成熟度和增長。接下來,我們將討論汽車軟件的所有權(quán)(用戶與組織),指出該領(lǐng)域的主要參與者,以及他們?nèi)绾嗡茉炱囓浖木坝^。沿著同樣的思路,我們繼續(xù)從開發(fā)活動(從分叉數(shù)推斷)和一般(使用星級和訂閱者)方面探索流行的汽車軟件。最后,我們探討了不同汽車軟件使用的主要編程語言的選擇,正如使用上述類別所確定的那樣。

3.2. 研究結(jié)果

創(chuàng)世紀(jì)--開始與時間趨勢: 2010年,第一個仍在積極開發(fā)的汽車項目,Veins,在GitHub中創(chuàng)建(2010年4月26日)。這個車輛網(wǎng)絡(luò)模擬框架定義了汽車軟件開發(fā)進入GitHub,標(biāo)志著這個行業(yè)在過去50年的軟件使用過程中傳統(tǒng)上是封閉的,這是一個轉(zhuǎn)折點。

從那時起,每年都有更多的軟件庫加入,在12年的時間里,總共有584個(積極開發(fā))汽車軟件庫。圖1顯示了汽車軟件庫(基于其創(chuàng)建年份)在GitHub中活躍開發(fā)的軟件庫總數(shù)中的百分比分布。時間趨勢表明,從2018年到2019年,汽車軟件的增長比例翻了一番,而從2019年到2020年又翻了一番。與整個GitHub上積極開發(fā)的軟件庫(在2014年達到頂峰)相比,汽車軟件仍處于起步階段,預(yù)計在未來會有所增長。

起源和時間趨勢:Veins--一個模擬工具,是第一個由用戶在2010年創(chuàng)建的汽車軟件庫,目前仍在積極開發(fā)中。這項研究見證了開源汽車動力軟件的蓬勃發(fā)展,它處于起步階段。

新機遇的曙光--所有權(quán):2010年,沒有任何組織在GitHub上開發(fā)任何仍在積極開發(fā)的汽車軟件。在接下來的6年里(2011-2016),小型組織、愛好者團體和非營利組織涉足開源領(lǐng)域;擁有14個軟件項目。第一個組織擁有(仍在積極開發(fā))的項目是Open-Vehicle-Monitoring-System,這是一個來自愛好者團體OpenVehicles的車載軟件。

2017年標(biāo)志著大公司進入開源領(lǐng)域。今年,中國搜索引擎公司百度(Baidu)創(chuàng)建了阿波羅項目(project Apollo),這是一個用于全自動駕駛的完整軟件堆棧。其他大公司,即亞馬遜、英特爾、微軟和Udacity很快就加入了,它們各自開源了一個工具來構(gòu)建自動駕駛解決方案。在我們的數(shù)據(jù)集中,每三個(或584個中的194個)汽車軟件庫中就有一個是由組織擁有的。累計起來,我們發(fā)現(xiàn)有163個組織和343個用戶擁有至少一個軟件庫。

今天,汽車開放源碼軟件的開發(fā)是由工具供應(yīng)商、學(xué)術(shù)和工業(yè)研究實驗室?guī)ь^的,學(xué)術(shù)研究團體擁有30多個資源庫。

在GitHub上的汽車軟件中,唯一的汽車制造商是豐田,它有兩個倉庫,一個工具和一個車載軟件。請注意,我們可能遺漏了汽車制造商的不同層級的供應(yīng)商,因為沒有直接的方法從GitHub元數(shù)據(jù)中識別供應(yīng)商。

目前,從事汽車軟件工作的前5個組織(按資源庫數(shù)量計算)是:EPFL的VITA實驗室(5個資源庫),LG硅谷實驗室(4個),MathWorks開源和社區(qū)項目(4個),AutonomouStuff(3個),以及CARLA(3個)。

存儲庫所有權(quán):每三個汽車軟件庫中就有一個是由某個組織擁有的。該領(lǐng)域見證了來自學(xué)術(shù)界和工業(yè)界(工具供應(yīng)商)研究實驗室的高度參與,只有一家汽車制造商(豐田)走在前列。

處于有利地位--受歡迎程度:根據(jù)受歡迎程度的三個指標(biāo)(星級、分叉和訂閱者;見表1),各組織的前5個受歡迎的汽車項目是仿真工具(共4個),其次是關(guān)于感知和決策系統(tǒng)的車載軟件(fizyr/keras-retinanet)和自動駕駛堆棧Apollo。

關(guān)于汽車軟件的流行用戶庫更加多樣化,包括車內(nèi)軟件和工具。排名前五的車載軟件涉及(a)人機界面和遠程信息處理,以及(b)感知和決策。排在前五位的工具涉及(a)感知和決策相關(guān)軟件的開發(fā)和(b)診斷。

圖2展示了汽車軟件中的星級、分叉和訂閱者的分布情況,以及基線庫。一般來說,項目的星級比分叉和訂閱者多。這對汽車和基線軟件庫來說也是如此。值得注意的是,汽車軟件遠沒有基線軟件系統(tǒng)那么受歡迎,這進一步加強了該領(lǐng)域的初級階段的概念。使用Mann-Whitney-Wilcoxon測試[4],即兩個獨立數(shù)據(jù)樣本的非參數(shù)測試,計算出P值<0.05時,汽車庫和基線庫之間的分布差異具有統(tǒng)計學(xué)意義。

圖2:參照比較集,汽車資源庫的受歡迎程度分布(以星級、分叉和訂閱者計)(去掉離群值)

汽車資源庫的星級、分叉和訂閱者的中位數(shù)分別為24、9和4,而基線庫的中位數(shù)分別為297、121和36。在此,我們想提醒讀者,盡管我們試圖選擇一個有代表性的項目樣本作為基線,但我們的數(shù)據(jù)集可能在某種程度上偏向于更受歡迎的軟件庫(詳見第6節(jié)的有效性威脅),從而進一步歪曲了分布。即使在汽車軟件庫中,組織擁有的軟件庫也至少是用戶擁有的軟件項目的兩倍。

受歡迎程度:汽車軟件作為一個領(lǐng)域,在GitHub上不如一般軟件受歡迎。百度的自動駕駛軟件棧Apollo是目前最受歡迎的汽車軟件庫。一般來說,組織擁有的軟件項目比用戶擁有的項目要受歡迎兩倍。

表1:前5個受歡迎的組織和用戶庫(基于訂閱者、分叉和星級)及其數(shù)量

Genera - 汽車軟件的類型:大體上,與工具(233)相比,車載軟件(375)非常豐富。

表2列出了汽車軟件類型(包括車載軟件和工具)的詳細(xì)分布。請注意,一個軟件庫可以屬于多個類別。因此,所有類別的資源庫數(shù)量之和可能大于實際的資源庫數(shù)量。關(guān)于單個資源庫分類的更多細(xì)節(jié)可在復(fù)制包[23]中找到。

在車內(nèi)軟件中,大多數(shù)資源庫與感知和決策相關(guān)的軟件有關(guān)。值得注意的是,Broy對車載軟件的分類[5]只是整體中的一小部分(375個中的108個)。在這108個中,人機界面(71個)和基礎(chǔ)設(shè)施(38個)是最主要的類別,并且主要由用戶開發(fā)。

開放源代碼中的安全關(guān)鍵軟件的發(fā)展仍處于初始階段(21個軟件庫)。雖然,許多軟件庫屬于基于應(yīng)用類別的安全關(guān)鍵型軟件(大約60%的車載軟件)。大多數(shù)安全關(guān)鍵軟件與感知和基于決策的軟件有關(guān),旨在用于全自動駕駛系統(tǒng)。這些軟件包括基于神經(jīng)網(wǎng)絡(luò)的語義分割、路徑規(guī)劃、物體、行人和意圖檢測相關(guān)軟件。

汽車軟件中的 "工具 "類別以模擬器和相關(guān)軟件為主。這在工業(yè)界的五大汽車軟件中很明顯(見表1),其中三個是模擬器。就整個工具而言,用戶(100)和組織(133)的所有權(quán)幾乎相等。我們看到在開發(fā)工具(32個來自組織,31個來自用戶)和驗證和核查工具(18個來自組織,22個來自用戶)的所有權(quán)方面有類似的趨勢。唯一的例外是診斷工具,它在用戶(28個)中的地位比組織(5個)高五倍。除此以外,我們還注意到少量的汽車軟件庫(32個)與(駕駛員)安全(如瞌睡檢測)和安全(安全測試工具或用于車輛安全的車載軟件)有關(guān)。

汽車軟件的類型: 最受歡迎的開源汽車軟件類型是車載軟件(375個軟件庫),其次是工具(233個軟件庫)。在車載軟件中,感知和決策軟件最受歡迎,而在工具中,模擬是最突出的。傳統(tǒng)的車輛軟件和安全關(guān)鍵軟件在開放源碼中的代表性不足。

兩個世界;兩種語言 - 語言:汽車軟件是用33種主要語言開發(fā)的,如果考慮到所有的開發(fā)語言,則有96種語言。最受歡迎的編程語言是Python,有291個項目使用它作為主要語言,多達415個項目使用它作為語言之一。排名前五的主要編程語言是Python(291)、C++(98)、C(33)、JupyterNotebook(33)和MATLAB(30)。從技術(shù)上講,Jupyter Notebook不是一種編程語言,而是一種文本和代碼的混合。我們不對筆記本中使用的編程語言做任何假設(shè),而是根據(jù)GitHub的標(biāo)簽來考慮它們。各機構(gòu)普遍喜歡(根據(jù)資源庫數(shù)量)Python(82)、C++(37)、C(16)、MATLAB(10)和Jupyter Notebook(7)用于他們的項目。值得注意的是,用戶也喜歡同樣的語言,但順序略有不同:Python(209),C++(61),Jupyter Notebook(26),MATLAB(20),和C(17)。

表2:GitHub上的汽車軟件類型及其分布

大多數(shù)安全關(guān)鍵型軟件是用C++編寫的(14),其次是Python(4),MATLAB(1)和C(1)。

各個項目的編程語言的分布顯示,從MATLAB作為首選開發(fā)語言[2]到Python的轉(zhuǎn)變。同樣地,傳統(tǒng)上大多數(shù)安全關(guān)鍵軟件都是用C或Ada開發(fā)的,而現(xiàn)在GitHub中的C++語言已經(jīng)轉(zhuǎn)變了[20]。

語言:開源汽車軟件開發(fā)的首選語言已經(jīng)從MATLAB(30個存儲庫)轉(zhuǎn)移到Python(291個存儲庫)。同樣地,安全關(guān)鍵軟件的開發(fā)也從 C 或 Ada 轉(zhuǎn)向C++。

在上一節(jié)得出的見解的基礎(chǔ)上,本節(jié)深入探討了汽車軟件的用戶分布、開發(fā)活動的類型以及開發(fā)模式的選擇。我們將其與基線進行比較,以了解汽車軟件的獨特特征,如果有的話。請注意,由于本分析結(jié)合了使用PyGithub(2021年12月)獲得的數(shù)據(jù)和GHTorrent的數(shù)據(jù)(2021年7月前的數(shù)據(jù)),我們錯過了GHTorrent上不存在的軟件庫。此外,根據(jù)個別資源庫的開發(fā)活動和GHTorrent數(shù)據(jù)集中的缺失數(shù)據(jù),資源庫的總計數(shù)在不同的分析中可能有所不同。

4.1. 方法

用戶分布:在這一節(jié)中,我們探討了不同項目的用戶類型和分布情況。

我們研究兩種類型的用戶:外部和內(nèi)部[10],基于他們在汽車軟件中的活動。內(nèi)部用戶通過對實際的軟件進行修改(提交)和調(diào)節(jié)決定是否包含/排除建議的修改(如合并和關(guān)閉拉動請求和關(guān)閉問題),直接對項目的發(fā)展做出貢獻。另一方面,外部用戶通過要求提供功能、報告問題和發(fā)表評論來間接做出貢獻。我們認(rèn)為,調(diào)查內(nèi)部和外部用戶在各個項目中的分布情況,可以看出一個社區(qū)是如何運作的。為了更深入的了解,我們還探討了不同組織和用戶項目的貢獻模式的變化(如果有的話)。要了解開發(fā)者的貢獻和協(xié)作模式,下一步自然是研究開發(fā)者的角色(如主力,或報告者)和他們的分布。然而,鑒于社區(qū)規(guī)模小,發(fā)展活動有限,要提供有意義的見解和結(jié)論性的統(tǒng)計分析是不可行的。因此,我們不報告合作模式。

開發(fā)活動:GitHub上的開發(fā)活動可以大致分為提交、問題和拉動請求。問題事件表明更廣泛的用戶群(除貢獻者外)的參與,要求增加功能或指出問題。參與議題活動表明軟件的用戶如何與開發(fā)者互動,影響其發(fā)展。下一組開發(fā)活動是拉動請求,這表明對軟件的影響相對較強,它提出了一些變化,以納入軟件系統(tǒng)或其相關(guān)工件。這些活動記錄決定包括或排除提議的變更。最后,提交是一個更復(fù)雜的活動,涉及在軟件中創(chuàng)建所需更改的技術(shù)方面在這里,我們也探討了項目所有權(quán)是否會影響跨項目的開發(fā)活動模式。

開發(fā)模式與自主性:最后,我們分析了汽車軟件中開發(fā)模式的選擇。在GitHub上有兩種類型的開發(fā)模式:(1)共享儲存模式;(2)fork& pull模式。這兩種模式在貢獻者的自主性水平上是不同的。在共享資源庫模式中,作者可以自己合并他們提出的代碼修改,表明他們的自主性。fork & pull模式意味著作者提出的修改要經(jīng)過維護者的審查。在這種模式下,作者要依靠審查者的行動來決定是否包含或排除所提出的修改。為了研究一個項目的自主性或依賴性水平,我們匯總了拉動請求和提交的分布,并提交了作者將更改(自合并)與其他貢獻者(其他合并)合并的請求。我們把有更多自我合并的項目稱為實行共享庫模式,否則就是fork and pull模式。

4.2.研究結(jié)果

真正的星級--用戶和他們的分布:所有的汽車資料庫累計有15,260個獨立用戶,而基線資料庫有439,032個獨立用戶。在自動軟件中,每個軟件庫的用戶數(shù)中位數(shù)是5,而我們的基線中的一般項目是115(參考圖3的分布)。

8https://docs.github.com/en/get-started/quickstart/github-flow

9https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models

圖3:與基線相比,儲存庫的用戶分布情況(省略離群值)

圖4:用戶和組織所擁有的汽車資料庫的內(nèi)部和外部用戶(省略異常值)

用Mann-Whitney-Wilcoxon檢驗計算,兩個分布有顯著差,P值<0.05。在此,我們再次提醒讀者,我們的基準(zhǔn)線在某種程度上偏向于積極開發(fā)的流行軟件系統(tǒng)。因此,差異可能看起來比實際大。請注意,我們對個人貢獻者的識別依賴于GitHub的唯一用戶標(biāo)識。然而,一個人可以有多個獨特的身份[41]。因此,實際的用戶數(shù)量可能比報告的數(shù)量要少。

觀察汽車軟件中的用戶分布,每個項目的中位數(shù)是3個內(nèi)部用戶和5個外部用戶。當(dāng)我們在所有權(quán)類型上進一步分離用戶分布時(參見圖4),我們觀察到組織在每個存儲庫上有更多的用戶。使用Mann-Whitney-Wilcoxon檢驗在p值<0.05時計算出這兩個分布是不同的。組織記錄的中位數(shù)為6個內(nèi)部用戶和8個外部用戶,而用戶擁有的汽車存儲庫分別為3個和5個。

跨存儲庫的用戶分布:開源汽車軟件有一個小的開發(fā)人員社區(qū),每個存儲庫平均只有5個用戶。值得注意的是,與用戶存儲庫相比,組織存儲庫需要更多的內(nèi)部和外部參與。

原生代 - 發(fā)展活動: 我們注意到,汽車軟件中最常見的開發(fā)活動(基于活動的中位數(shù))是以提交(32)的形式出現(xiàn),其次是問題(9),然后是拉動請求(6)。

圖5:組織擁有的汽車存儲庫與用戶擁有的存儲庫中的開發(fā)活動(省略了異常值)

我們進一步調(diào)查了基于所有權(quán)和汽車軟件類型的開發(fā)活動的分布。

圖5展示了組織擁有的汽車軟件存儲庫與用戶擁有的存儲庫的開發(fā)活動。通常,組織項目比用戶項目擁有更多的開發(fā)活動(就中位數(shù)而言),盡管有一些用戶項目的提交活動級別與組織存儲庫的級別相匹配。這表明用戶項目之間的差異性,在開發(fā)活動的分布上具有極端性。請注意,用Mann-Whitney-Wilcoxon檢驗法計算,兩個分布是不同的(P值<0.05)。

圖6顯示了整個車載軟件和工具的開發(fā)活動的比較。在這里,跨問題(p值=0.29)和拉動請求(p值=0.40)的開發(fā)活動具有可比性,而在提交方面則有重大差異(p值=0.0013)。這些P值是用Mann-Whitney-Wilcoxon檢驗計算的,這樣P值<0.05表示分布有差異,否則沒有差異。我們注意到,與車載軟件相比,工具中的承諾活動更多。我們認(rèn)為,這種差異是由于工具供應(yīng)商組織在汽車軟件中的參與度更高。提醒一下,在233個組織擁有的資源庫中,有100個屬于工具類,而在375個車載軟件類中有97個。

我們還探討了感知和決策相關(guān)軟件的開發(fā)活動的分布情況,這些軟件構(gòu)成了車載軟件的大部分(有相當(dāng)數(shù)量的軟件庫可供統(tǒng)計比較),與車載軟件中其他軟件庫的開發(fā)活動相比。圖7顯示,與感知和決策相關(guān)的軟件相比,傳統(tǒng)軟件在提交、問題和拉動請求方面的開發(fā)更為活躍。在屬于所有Broy類別的存儲庫上的開發(fā)活動分布的差異與屬于感知和決策軟件的存儲庫相比,使用Mann- Whitney-Wilcoxon檢驗在p值<0.05的情況下測量顯著不同。這意味著,雖然感知和決策相關(guān)的軟件在數(shù)量上更多,但它們的開發(fā)活動卻比傳統(tǒng)軟件少。

圖6:車內(nèi)軟件與工具的開發(fā)活動(省略離群值)

圖7:與感知和決策相關(guān)的車載軟件與其他車載軟件的開發(fā)活動(省略異常值)

開發(fā)活動:組織擁有的資源庫在所有類別中都吸引了更多的貢獻。然而,與組織擁有的軟件庫的開發(fā)活動水平相匹配的用戶擁有的軟件庫數(shù)量較少。工具的開發(fā)比車載軟件更積極 在車載軟件中,傳統(tǒng)的車載軟件的開發(fā)比感知相關(guān)的軟件更積極。

守護者-開發(fā)模式: 通過查看每個項目的協(xié)作模式,我們將每個項目分類為共享存儲庫或分拆開發(fā)模型。我們注意到,雖然有41個資源庫遵循共享資源庫模式,但有182個資源庫實行叉拉取模式。這表明自主開發(fā)的項目較少,大多數(shù)開發(fā)團隊(資源庫的貢獻者)都沒有自主權(quán)。這一觀察結(jié)果與叉拉式是最突出的模式的基線相吻合,也與之前關(guān)于其他軟件子社區(qū)的工作相吻合[10]。

開發(fā)模式:汽車軟件 —— 盡管是一個小型的開發(fā)社區(qū) —— 在其開發(fā)活動中大多采用叉拉模式。

本研究介紹了GitHub上公開的汽車軟件項目的情況。我們根據(jù)文獻中的定義和定義明確的經(jīng)驗方法,對約600個汽車資料庫進行了識別和分類。

我們還確定了類似數(shù)量的非汽車項目進行比較。我們分析了項目的起源、時間趨勢、主要參與者、項目的受歡迎程度、開發(fā)的語言、用戶在資源庫中的分布以及開發(fā)活動。我們還提出了一個首創(chuàng)的手工策劃的汽車項目數(shù)據(jù)集和一個非汽車項目的比較集,供復(fù)制和未來研究使用。

對于一個在半個世紀(jì)的軟件使用歷史中傳統(tǒng)上處于封閉狀態(tài)的行業(yè)來說,軟件項目的開放源代碼標(biāo)志著一個里程碑式的變化。這項研究表明,汽車領(lǐng)域正在經(jīng)歷多個方面的轉(zhuǎn)變,包括自動駕駛軟件開發(fā)的盛行,首選語言從MATLAB到Python的變化,以及軟件公司和初創(chuàng)公司進入該領(lǐng)域。

我們預(yù)見到,最近軟件工程的發(fā)展,使自動駕駛成為可能,這將進一步加速開源汽車軟件的發(fā)展。我們相信,自動駕駛的軟件堆棧將受益于目前開源開發(fā)的感知和決策軟件。由于這些系統(tǒng)是獨立于汽車制造商而開發(fā)的,因此讓開放源碼社區(qū)參與其中以加速其發(fā)展,是一個合乎邏輯的步驟。

參考文獻:

分享不易,懇請點個【】和【在看】

標(biāo)簽:

最近更新