999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

開源軟件FreeBSD內核進化研究

2008-12-31 00:00:00
計算機應用研究 2008年11期

(廣東技術師范學院 自動化學院, 廣州 510635)

摘要:歸納開源軟件項目的數據源及數據收集方法,給出FreeBSD內核的軟件進化分析方法和相關分析結果。重點分析了FreeBSD系統和主要子系統的復雜性進化趨勢及推動進化的主要原因,提出了快速測算大型開源軟件復雜性的方法。

關鍵詞:FreeBSD; 開源軟件; 軟件進化; 軟件度量

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2008)11-3361-02

Evolution research on open source software FreeBSD kernel

ZHENG Wei

(Guangdong Polytechnic Normal University, Guangzhou 510635, China)

Abstract:This essay pointed out the data source, concluded the method of data collecting and provided us with the analysis method and result on software evolution of FreeBSD kernel. It mainly focused on analyzing the complex software evolution and evolution reason and trend of FreeBSD system and main subsystem. It put forward a fast metrics method of the open source software complex.

Key words:FreeBSD; open source software; software evolution; software metrics

推動軟件進化的動力有三個,即修正(改正需求、體系結構、設計、代碼等方面錯誤)、改進(改進性能、可用性、可維護性等)、增強(增加新特性和新功能,適應系統資源的進化)[1]。過去軟件進化的大量研究主要將研究對象集中在單個公司采用傳統管理技術開發的較大型軟件上。Lehman通過研究IBM OS/360操作系統等軟件進化提出了軟件進化相關理論和進化的八個定律[2,3],提出大型的軟件系統隨著系統規模越來越大,系統變得越來越復雜,進化趨勢應該為亞線性趨勢?,F在自由和開源軟件以其獨特的高度使用網絡工具、世界范圍的開發志愿者、獨特的管理方法和軟件數目眾多等特點,使得近些年國內外的一些軟件工程研究人員逐漸將自由和開源軟件作為重要的研究對象[4,5]。研究這些公共信息可以揭示軟件進化過程和項目的開發及維護客觀規律,進而優化軟件工程管理和不斷改進軟件質量[6]。本文針對世界上廣泛使用和不斷完善的操作系統FreeBSD的內核進化進行了多角度分析,并與Lehman的理論進行對比。

1數據收集及處理方法

選取的開源軟件研究對象必須規模較大,有30個月以上的進化過程(多版本)。選取對象確定之后,研究和確定數據的提取方法。根據數據的組織方式,有的存放在CVS(concurrent versions system)等版本管理庫中,有的存放在FTP服務器中,采用相應工具(如WinCVS、SmartFTP、rsync等)收集數據,也可自行開發數據收集軟件工具,自動下載所需數據。數據下載完之后,需對數據進行整理和挖掘,把可用信息提取出來,再轉入分析階段,存儲分析結果(產生XML文件或存入RDB中),最后利用分析結果數據產生各種報告圖表。

自由和開源軟件進化分析處理流程如圖1所示。

本文使用的主要軟件進化分析方法和工具見表1。

表1分析方法及工具

軟件進化分析方法軟件進化分析工具

軟件源代碼行分析(代碼行、注釋行統計)Sloccount

圈復雜度分析CCCC、Cyclo、Metrics

C、C++程序的軟件規模和類的復雜度分析(CK metrics suite) [7]CCCC

軟件模塊變化分析SoftChange

源代碼開發語言比例分析Sloccount

2FreeBSD內核進化分析

FreeBSD操作系統內核是自由和開源軟件中極好的研究軟件進化的對象。FreeBSD從1993年11月發行1.0版到2007年1月的6.2版,中間進化的版本眾多。本文選取了表2所示的相關版本數據進行分析。

表2選取的FreeBSD版本數據

版本1.02.02.0.52.2.83.03.24.14.2

發行日期1993-11-151994-11-151995-6-151998-12-151998-10-151999-5-152000-7-152000-11-15

版本4.85.05.25.45.56.06.16.2

發行日期2003-4-152003-1-202004-1-152005-5-272006-5-152005-11-52006-5-82007-1-15

使用Sloccount工具軟件進行FreeBSD version 6.2內核代碼使用的編程語言和各種語言開發的源代碼行數(SLOC)分析,獲得FreeBSD version 6.2編程語言使用了九種,97.65%的源代碼使用ANSIC開發,1.81%的代碼使用匯編語言開發,0.54%的代碼使用YACC、AWK等七種語言開發。

FreeBSD的內核文件數隨版本的變化可宏觀觀察軟件進化趨勢,如圖2所示。FreeBSD從1993年11月15日的version 1.0文件數696個,到2007年1月15日的version 6.2文件數6 393個,共發行了45個版本,平均每個版本增加文件數129個。從進化曲線看,今后進化趨勢為超線性趨勢。

FreeBSD的源代碼行(含代碼和注釋)進化數據可以較精確地反映軟件進化和軟件復雜度趨勢,如圖3所示,曲線呈現超線性。其中FreeBSD version 1.0為144514 SLOC,FreeBSD version 6.2為1891749 SLOC,平均每個版本增加源代碼行39710。使用f=y0+a×x+b×x2進行回歸分析,相關參數如表3所示。今后可以根據公式f=95 490+297.8×x+0.01715×x2(其中:x為軟件進化天數;f為SLOC),在新的FreeBSD版本發行時,根據進化天數快速估算SLOC。

FreeBSD的源程序(C、C++部分)的圈復雜度(McCabe’s cyclomatic number)進化數據也可以較精確地反映軟件復雜度進化趨勢,如圖4所示。從圖中可以看出軟件的復雜度呈超線性增長。從曲線的形態看與SLOC進化曲線相近。平均每模塊的復雜度進化情況如圖5所示。平均每模塊的復雜度控制稍差,呈現遞增趨勢。而與Linux內核進化對比看,Linux的平均每模塊的復雜度呈現遞減趨勢,盡管Linux的整體復雜度呈現超線性增長,但Linux在進化過程中不斷增加軟件模塊控制其單位模塊的平均復雜度[9]。

FreeBSD操作系統由CPU體系結構、內存管理、文件系統、驅動程序和網絡等若干子系統組成。FreeBSD內核源碼的各個目錄進行歸類與此相對應。其中CPU Arch子系統包括了所有與CPU體系結構相關的核心代碼(包括Alpha、AMD64、ARM、i386、PC98、PowerPC、SPARC64等目錄內容);ddb目錄包括核心調試的源碼;dev目錄包含設備驅動的代碼;vm目錄包含了所有的內存管理代碼;kern目錄包含了內核管理的核心代碼;libkern目錄包含了核心庫的源碼;fs目錄存放FreeBSD支持的文件系統代碼;sys目錄包含了獨立于機器體系結構的一部分源碼;net子系統包含了網絡部分代碼。 

分析各個FreeBSD的子系統源代碼進化,可以揭示FreeBSD系統級進化中各種現象的內部驅動因素,對研究軟件系統體系結構的穩定性和預測今后系統的改變提供了基礎。通過度量子系統的SLOC進化過程(圖6)可以得出結論,FreeBSD系統不論從圈復雜度的超線性增長,還是系統級SLOC的超線性增長,主要是dev(設備驅動)子系統的快速變化和net、CPU Arch子系統的快速變化推動的。而這些變化又是由于近十年計算機硬件快速發展,新技術和新設備不斷更新,必然涉及硬件體系結構方面的代碼和設備驅動程序方面的代碼要不斷更新。從整體看FreeBSD的軟件體系結構比較穩固,除了dev子系統和net、CPU Arch子系統由于上述原因變化大以外,其余子系統變化較小。

3結束語

根據上面的研究結果可以看出,FreeBSD從1.0版到目前6.2版,十四年間由于在世界范圍的廣泛使用、BUG的不斷修正、硬件的快速發展、新需求的推動,版本發行了45個,平均三個月左右一個版本。從分析結果看,FreeBSD的體系結構是較穩固的,系統結構和子系統數變化不大,但平均每模塊的McCabe復雜度控制得稍差,呈上升趨勢。系統整體規模和復雜性呈現超線性增長。無論從Linux內核進化看[9],還是從FreeBSD內核進化看,兩個著名的開源操作系統軟件進化都呈現超線性增長,與Lehman結論相反。而呈現超線性增長的一個主要原因是這些開源軟件有大量的世界范圍的開發志愿者參與開發,貢獻大量的代碼造成的,這也是開源軟件的重要特點之一。

根據分析結果看,FreeBSD系統不論從圈復雜度的超線性增長,還是系統級的SLOC超線性增長,主要是dev和net等子系統的快速變化推動的。FreeBSD進化的主要推動力是Perry所歸納的推動軟件進化的第三個動力系統增強(增加新特性和新功能,適應系統資源的進化)。

大型自由和開源軟件的常規進化分析需要大量的數據和較長的下載時間及分析時間,而FreeBSD的進化分析結果給人們提示了一個簡便、快捷的軟件復雜性度量方法,使用軟件進化天數(可以很快獲得)快速估算系統的SLOC。

綜上所述,研究大型自由和開源軟件進化可以幫助人們經驗性地估計軟件體系結構的穩定性;可以較準確地預報軟件進化結果和軟件進化趨勢。今后對軟件進化的研究可以分為宏觀進化和微觀進化兩個研究方向。宏觀進化重點研究系統級的進化趨勢及快速度量方法。微觀進化重點研究子系統、模塊和組件的演變過程、演變內容及演變原因。另外,開發遠程分析工具實現自由和開源軟件的遠程聯機進化分析和測量也成為今后的熱點[8]。

大型軟件的復雜度和規模計算或估算方法需不斷完善,以適應今后快速和準確分析的要求。

參考文獻:

[1]PERRY D E. Dimensions of software evolution[C]//Proc ofInternational Conference on Software Maintenance.[S.l.]: IEEE Computer Society, 1994:296-303.

[2]LEHMAN M, BELADY L A. Program evolution: processes of software change[M]. London:Academic Press, 1985:138-142.

[3]LEHMAN M, RAMIL J, WERNICK P,et al. Metrics and laws of software evolution: the nineties view[C]//Proc of the 4th International Software Metrics Symposium.Washington DC: IEEE Computer Society, 1997:20-26.

[4]ROBLES G. Empirical software engineering research on free/libre/open source software[C]//Proc of the 22nd IEEE International Conference on Software Maintenance. Washington DC: IEEE Computer Society, 2006:347-350.

[5]HERRAIZ I, ROBLES G. Comparison between SLOCs and number of files as size metrics for software evolution analysis[C]//Proc of Conference on Software Maintenance and Reengineering. Washington DC: IEEE Computer Society, 2006:206-213.

[6]KOCH S, SCHNEIDER G. Results from software engineering research into open source development projects using public data[EB/OL]. (2000) [2007].http://opensource.mit.edu/papers/koch-ossoftwareengineering.pdf.

[7]PRESSMAN R S. Software engineering, apractitioner’s approach[M]. 4th ed. Beijing: China MachinePress, 1999:462-465.

[8]ROBLES G, KOCH S. Remote analysis and measurement of libre software systems by means of the CVSAnalY tool[C]//Proc of the 2nd ICSE Workshop on Remote Analysis and Measurement of Software Systems (RAMSS), the 26th International Conference on Software Engineering. Edinburg:[s.n.], 2004:51-56.

[9]鄭巍,許旻鴻. 開源軟件Linux內核的進化研究[J].華南理工大學學報:自然科學版, 2007,9(3):126-130.

主站蜘蛛池模板: 国产91透明丝袜美腿在线| 欧美日韩免费| 国产又黄又硬又粗| 四虎亚洲国产成人久久精品| 天天爽免费视频| 欧洲熟妇精品视频| 中国丰满人妻无码束缚啪啪| 天堂网亚洲系列亚洲系列| 看看一级毛片| 亚洲无码熟妇人妻AV在线| 尤物午夜福利视频| 久久黄色视频影| 日韩 欧美 小说 综合网 另类| 亚洲无码37.| 尤物视频一区| 国产网站免费| 亚洲人成亚洲精品| 国产在线观看91精品| 亚洲一区二区约美女探花| 欧美一级特黄aaaaaa在线看片| 人妻一区二区三区无码精品一区| 欧美激情视频一区| 国产成人盗摄精品| 九九这里只有精品视频| a毛片免费在线观看| 久久中文字幕不卡一二区| 亚洲欧美人成电影在线观看| 久久精品aⅴ无码中文字幕| 欧美在线视频不卡第一页| 91福利片| 午夜免费小视频| 国产精品天干天干在线观看| 99精品福利视频| 亚洲成人动漫在线| 在线观看国产精品日本不卡网| 国产99在线| 精品国产福利在线| 91热爆在线| 亚洲人成影院午夜网站| 精品一区二区无码av| 国产精品私拍在线爆乳| 成人年鲁鲁在线观看视频| 热99re99首页精品亚洲五月天| 亚洲三级a| 色哟哟国产成人精品| 亚洲国产精品一区二区高清无码久久 | 免费AV在线播放观看18禁强制| 国产一国产一有一级毛片视频| 91久久夜色精品国产网站| 蜜桃臀无码内射一区二区三区| 久热中文字幕在线观看| 亚洲色图欧美| 在线播放国产一区| 青青草原国产| 色网站在线视频| 国产特级毛片aaaaaaa高清| 丁香亚洲综合五月天婷婷| 色婷婷色丁香| 国产精品中文免费福利| 国产天天色| 精品91视频| 欧美区在线播放| 国产亚洲精品资源在线26u| 三级视频中文字幕| 成年av福利永久免费观看| 国产波多野结衣中文在线播放| 国产H片无码不卡在线视频| 尤物国产在线| AV不卡国产在线观看| 日韩小视频在线播放| www.亚洲天堂| 久久亚洲天堂| www.99在线观看| 全免费a级毛片免费看不卡| 国产精品美女网站| jizz国产在线| 小蝌蚪亚洲精品国产| 国产激情在线视频| 青青青伊人色综合久久| 日韩精品亚洲一区中文字幕| 香蕉久久永久视频| 午夜精品区|