一種支持軟件工程質量自動監(jiān)控的新方法及其裝置制造方法
【專利摘要】本發(fā)明公開了一種支持軟件工程質量自動監(jiān)測的新方法。該方法包括:直接連接待監(jiān)控的軟件工程源代碼的SVN,讀取版本信息并進行核對;提取其源代碼的結構和功能進行必要的分析,并在代碼層面進行全面的檢查;展示代碼質量的變化以及對開發(fā)者每次犯錯時的預報錯;經(jīng)過質量分析,還會給開發(fā)者反饋一個關于如何提高代碼質量的說明。這4個步驟在系統(tǒng)中由多個模塊并行處理,同時運行,并且不停的運轉從而達到無人參與下的系統(tǒng)自動監(jiān)測。通過本發(fā)明解決了現(xiàn)有技術中存在的不能及時、自動地實現(xiàn)軟件質量監(jiān)控的問題。
【專利說明】一種支持軟件工程質量自動監(jiān)控的新方法及其裝置
【技術領域】
[0001]本發(fā)明涉及代碼審核領域,涉及一種軟件工程質量自動監(jiān)控的新方法【背景技術】
[0002]面向對象的大型軟件系統(tǒng)在我們的社會現(xiàn)在無孔不入,他們在我們的日常生活中發(fā)揮了至關重要的作用,也越來越多,越來越復雜。因此,它們的質量如何具有重大意義。此夕卜,外包開發(fā)和維護需要的衡量質量的手段很詳細,并正在演變成為目前的趨勢。因為代碼在地理上分散開發(fā),整個系統(tǒng)在開發(fā)中,通常有一個有限的認識,當改變部分代碼時,無效的原始設計的系統(tǒng)會導致設計效率降低,因此負面影響總體系統(tǒng)的質量。
[0003]隨著項目經(jīng)驗的累積,后期維護的成本將越來越被重視。而開發(fā)過程中的代碼質量直接影響著維護的成本。規(guī)范的代碼會大大提高程序的可讀性,可讀性高的代碼維護成本必然會大大降低。
[0004]但是,維護工作不僅僅是讀懂原有代碼,而是需要在原有代碼基礎上作出修改。統(tǒng)一的風格有利于長期的維護。另外,好的代碼規(guī)范會對方法的度量、類的度量以及程序耦合性作出約束。這樣不會出現(xiàn)需要修改一個上千行的方法或者去擴展一個沒有接口的類的情況。規(guī)范的代碼對程序的擴展性提高,亦能減少維護人員無謂的工作量。
[0005]代碼規(guī)范比比皆是,但是很少有真正做到做好代碼規(guī)范。相比于國外的項目,國內的軟件質量是有很大差距。從代碼審查的角度來看,這樣可以及時糾正一些錯誤,而且可以對開發(fā)人員的代碼規(guī)范作出監(jiān)督。團隊的代碼審查同時也是一個很好的學習機會,對成員的進步也很有益。但是開發(fā)隨意,加重的代碼審查的工作量及難度,并且使得代碼審查工作沒有根據(jù),浪費了大量的時間卻收效甚微。代碼規(guī)范不僅使得開發(fā)統(tǒng)一,減少審查拿督,而且讓代碼審查有據(jù)可查,大大提高了審查效率和效果,同時代碼審查也有助于代碼規(guī)范的實施。
[0006]因此,一個能夠監(jiān)控系統(tǒng)的部分的質量開發(fā)工作,并提供快速的反饋,以控制和提高質量的系統(tǒng)是必不可少的。像Pfleeger —類的許多軟件工程傾向于更多的時間花在與正在系統(tǒng)開發(fā)中的每個人溝通,因為做同一件工作的人需要知道他們這一塊如何融入整個架構。盡早檢測代碼中的缺陷以降低軟件開發(fā)成本非常重要。
[0007]開源社區(qū)已經(jīng)提出的一些質量評估工具,如Sonar、Squale,是最成熟的項目。Sonar使用各種靜態(tài)代碼分析工具,例如使用CheckStyle,PMD,FindBugs以及Clover來提取軟件質量評估指標并使用這些可視化工具來提供質量檢測的信息及結果。Squale實現(xiàn)了根據(jù)現(xiàn)有的標準質量模式的檢測,如IS0/IEC9126,McCall并使用天氣作為比喻來反映系統(tǒng)的質量。雖然這些工具可以適用于系統(tǒng)并評估他們的質量,但他們不能提供連續(xù)化的質量評價手段。此外,相比于SQUANER可以便利的直接訪問源代碼SVN庫,Solar和Squale需要事先培訓一些開發(fā)者和質量管理人員使用相應的工具才能充分發(fā)揮作用,這無疑是復雜且麻煩的。
[0008]這里,我們提出SQUANER(軟件質量分析系統(tǒng)),一個針對面向對象的軟件工程的質量監(jiān)測系統(tǒng)。SQUANER的貢獻與其他的質量評價工具,如Squale和Sonar比較,它的優(yōu)點是持續(xù)評估正在開發(fā)的系統(tǒng),還有它依據(jù)特殊技術的獨立性,類似Maven:它直接連接到SVN的系統(tǒng),提取源代碼,以設計模式,反模式執(zhí)行代碼嗅探等功能,進行質量評估和故障預測,并每次由開發(fā)人員提交。質量分析后,會給開發(fā)人員提供反饋,說明如何提高自己的代碼。與Sonar相反,SQUANER是不依賴Maven的,甚至可以擴展分析Maven項目。
[0009]憑借其專注于早期的缺陷檢測和質量評估,SQUANER將有助于減少大量系統(tǒng)的預算,并節(jié)省開發(fā)時間。在分布式的開發(fā)方案中,SQUANER提供開發(fā)系統(tǒng)中的所有部分開發(fā)人員這個技術,從而返回一個基于整體的反饋;這樣可以提高對系統(tǒng)整體的認知,并實現(xiàn)有效的質量控制。
[0010]有了 SQUANER,社會將會從這個進化研究的新工具中受益。其持續(xù)的質量評估設計模式和設計的代碼嗅探會提供可能進行的有趣的研究,如:分析系統(tǒng)衰變,質量分析工具的有效性,或他們對開發(fā)商的行為和軟件開發(fā)的影響的算法。
【發(fā)明內容】
[0011]本發(fā)明實施例提供的一種支持軟件工程質量自動監(jiān)測的新方法,用以解決現(xiàn)有技術存在的現(xiàn)有技術中存在的不能及時、自動地監(jiān)測軟件工程質量的問題。
[0012]一種支持軟件工程質量自動監(jiān)測的新方法包括:
[0013]該方法從邏輯上劃分為業(yè)務管理層和數(shù)據(jù)處理層。業(yè)務層(即前臺管理端)和SVN直連,用web網(wǎng)頁界面展示功能設置與選項,提供監(jiān)控模式選擇等功能;支撐層(即后臺數(shù)據(jù)端)負責核心的邏輯處理,服務器與SVN并行,讀取其數(shù)據(jù)并按前臺設置進行處理。具體的監(jiān)控方式有嗅探檢測與模式匹配檢測,而數(shù)據(jù)處理采用并行計算的處理方式。
[0014]支撐層只負責支撐業(yè)務層各功能模塊的運作,由業(yè)務層與SVN連接,承擔各種正常業(yè)務,同時也負責代碼分析、修復建議的功能。后臺數(shù)據(jù)庫的分析和處理模塊以某種分工協(xié)作的機制,完成上述功能。
[0015]SQUANER是一個分層構建的框架。每個開發(fā)者上傳到SVN倉庫后,SQUANER自動檢測的新變化并下載新的代碼。然后通過執(zhí)行所描述的各組成部分,對此源代碼進行一系列分析。SQUANER會根據(jù)由開發(fā)者或者質量管理系統(tǒng)預先設置的配置進行分析。配置包括選擇檢測目標,質量模型,分析所占檢測比例和分析頻率,以及設計模式和設計缺陷。業(yè)務層和SVN直連,用web網(wǎng)頁界面展示功能設置與選項,提供監(jiān)控模式選擇等功能;支撐層負責核心的邏輯處理,服務器與SVN并行,讀取其數(shù)據(jù)并按前臺設置進行處理。不僅在前端展示結果,還能以電子郵件的形式將關于軟件代碼質量的評論和建議發(fā)給開發(fā)者或者質量分析人員。
【專利附圖】
【附圖說明】
[0016]圖1為該系統(tǒng)的分析模塊功能示意圖;
[0017]圖2為該系統(tǒng)的體系結構示意圖;
[0018]圖3為產(chǎn)生質量反饋的電子郵件的示例圖;
[0019]圖4為系統(tǒng)業(yè)務端可視化web界面示意圖;【具體實施方式】
[0020]前文已經(jīng)論述,一個能夠監(jiān)控系統(tǒng)的部分的質量開發(fā)工作,并提供快速的反饋,以控制和提聞質量的系統(tǒng)是必不可少的。針對現(xiàn)有技術存在的現(xiàn)有技術中存在的不能系統(tǒng)化、實時化的實現(xiàn)軟件工程質量監(jiān)測的問題,本發(fā)明實施構建一個可靠有效的方法支撐代碼分析環(huán)境,作為支撐層。在此支撐平臺之上,創(chuàng)造出一個功能展示與交互界面,作為業(yè)務層。
[0021]支撐層只負責支撐業(yè)務層各功能模塊的運作,由業(yè)務層與SVN連接,承擔各種正常業(yè)務,同時也負責代碼分析、修復建議的功能。后臺數(shù)據(jù)庫的分析和處理模塊以某種分工協(xié)作的機制,完成上述功能。
[0022]SQUANER是一個分層構建的框架。圖1描述了 SQUANER的分析功能模塊,圖2給出了一個概述SQUANER的體系結構.[0023]一旦向SVN提交一個項目,源代碼會檢查PADL的創(chuàng)造者用于建立一個PADL的系統(tǒng)模型的解析器。PADL的創(chuàng)造者是根據(jù)PADL的元模型,并根據(jù)C#,C++和Java的解析器建造的。度量值的計算是通過這個模型中的系統(tǒng)與POM組件來實行的。POM提供超過60種不同的度量文學類方法的框架,包括進口和出口耦合;對象之間的耦合(CBO)和加權方法計數(shù)(WMC);缺乏凝聚的方法(LC0M5) ;“C” 一類的連通性;新的數(shù)字繼承和覆蓋方法和計算總數(shù)的方法;循環(huán)的clomatic復雜度公制(CC);分層數(shù)低于一類和葉類深度水平。
[0024]模式檢測模塊負責設計模式檢測。這個組件是基于由gueheneuc和Antoniol實現(xiàn)了檢測方法DeMIMA并且由Kaczor等人實施的PTIDEJ,結合這些方法,PTIDEJ能夠探測到所有既有的設計模型。
[0025]嗅探模塊是負責反模式和代碼嗅探。該組件由摸哈等人實現(xiàn)了 DEC0R(修正缺陷檢測),以此來指定和識別反模式和代碼嗅探。DECOR是一種基于檢測方法的基礎上,在整個域間通過文字分析代碼嗅探和反模式的;在其上的分析是基于域的特定語言。DECOR能夠檢測到后續(xù)的反模式,這些反模式是代表設計和實施的概率數(shù)據(jù)的復雜性、大小、以及由類提供的特性。
[0026]SQUANER模型組件考慮系統(tǒng)的歷史的一個超模型作為一個明確實體,類似于Hismo。這個超模型建造在我們的現(xiàn)有超模型PADL上的信息的描述結構。SQUANER模型也可以分析專家項目,因此能集成和提供聲納模塊。
[0027]Qmood組件由Bansiya和戴維斯實現(xiàn)質量模型QM00D。QMOOD由六個方程建立六個面向對象的設計質量特性(可重用性,靈活性,可理解性,功能性,擴展性,和有效性)和確定其中的面向對象的結構設計特性:封裝,耦合,多態(tài)性,數(shù)據(jù)之間的關系抽象和層次結構。QMOOD是在目前研究中最常用和最有參考價值的模型之一。
[0028]Pqmod由Khomh Gu' eh/ eneuc實現(xiàn)質量的模型PQM0D。這個質量模型是由7個系統(tǒng)的質量評價規(guī)則,考慮到他們的設計。這些規(guī)則被定義為在運行時的可擴展性,通用性,模塊化,模塊化,可理解性,可重用性,可擴展性。
[0029]Squad組件實現(xiàn)兩個BBNs,模型考慮其量值進行預測的系統(tǒng)故障類來設計其嗅探和設計模式。
[0030]該方法具體場景描述如下:
[0031]每個開發(fā)者上傳到SVN倉庫后,SQUANER自動檢測的新變化并下載新的代碼。然后通過執(zhí)行所描述的各組成部分,對此源代碼進行一系列分析。SQUANER會根據(jù)由開發(fā)者或者質量管理系統(tǒng)預先設置的配置進行分析。配置包括選擇檢測目標,質量模型,分析所占檢測比例和分析頻率,以及設計模式和設計缺陷。
[0032]系統(tǒng)分析后,會把結果進行總結并以電子郵件的形式發(fā)送給開發(fā)團隊,并將危險的類和提供關于如何提高代碼的咨詢意見的部分高亮。通過這些電子郵件,開發(fā)者可以對代碼相比上一個版本的變化有個整體的概念。此外,整個開發(fā)團隊會知道對系統(tǒng)的整體質量有影響的到底是什么。所有的分析結果都被存儲在SQUANER數(shù)據(jù)庫,監(jiān)測軟件質量的變化過程。
[0033]SQUANER提供兩種方式來訪問數(shù)據(jù)庫里的信息:一是通過系統(tǒng)提供的Web界面,開發(fā)人員和質量分析人員可以通過瀏覽可視化系統(tǒng)來了解不同質量特性的詳細數(shù)據(jù)。第二,開發(fā)者和質量分析人員可以使用Web服務計劃定期自動執(zhí)行質量評估或訪問存儲在數(shù)據(jù)庫中的質量系統(tǒng)信息。他們還可以使用Web服務把對代碼修改行為的建議或評論作為反饋發(fā)送給其他開發(fā)人員,例如,當他們找出問題卻因為他們不適合他們的技能和知識而解決不了。
[0034]綜上所述,在本文中,我們提出了 SQUANER:—個針對面向對象的軟件工程的質量監(jiān)測系統(tǒng)。SQUANER直接連接到一個系統(tǒng)的SVN,提取源代碼,執(zhí)行設計模式、逆向模式和代碼嗅探檢測模式的監(jiān)測,對開發(fā)人員每一次的更新代碼和上傳都進行質量評估和故障預測。經(jīng)過質量分析,SQUANER反饋提供給開發(fā)人員的關于如何提高代碼質量的提示。有了SQUANER,開發(fā)者和質量分析人員還可以使用Web服務安排定期自動質量評估,對通過訪問存儲在數(shù)據(jù)庫的系統(tǒng)質量信息對一些代碼的變化行為給出建議或評論,并作為反饋發(fā)送給其他開發(fā)者。,在SQUANER的幫助下,軟件開發(fā)可大大節(jié)省人力,解決了現(xiàn)有技術中存在的不能系統(tǒng)化、自動化地實現(xiàn)軟件工程質量監(jiān)測的問題。
[0035]顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。
【權利要求】
1.一種支持軟件工程質量自動監(jiān)測的新方法,其特征在于,該方法包括: 提供了一種在源代碼層面實時監(jiān)控軟件工程質量的方法,該系統(tǒng)從邏輯上劃分為業(yè)務管理層和數(shù)據(jù)處理層: 業(yè)務層(即前臺管理端)和SVN直連,用web網(wǎng)頁界面展示功能設置與選項,提供監(jiān)控模式選擇等功能; 支撐層(即后臺數(shù)據(jù)端)負責核心的邏輯處理,服務器與SVN并行,讀取其數(shù)據(jù)并按前臺設置進行處理。具體的監(jiān)控方式有嗅探檢測與模式匹配檢測,而數(shù)據(jù)監(jiān)測處理采用并行計算的處理方式。
2.如權利要求1所述的方法,其特征在于,所述業(yè)務層的處理方法,具體包括: 業(yè)務層節(jié)點主要分為采集節(jié)點與決策結點; 根據(jù)采集到的源代碼特征信息確定所述的決策結點做出處理方法。
3.如權利要求1所述的方法,其特征在于,進行代碼檢測和代碼分析的方法,包括特征采集、分析決策、指令執(zhí)行的流程,以及決策選擇、個性化配置的方法。
4.如權利要求1所述的方法,其特征在于,支撐層對代碼質量的監(jiān)控機制建立在國際標準上,模式檢測的組件是基于由gueheneuc和Antoniol實現(xiàn)的檢測方法DeMIMA,并且由Kaczor等人實施的PTIDEJ。
5.如權利要求1所述的方法,其特征在于,代碼分析模塊的具體方法是: 把代碼分析配置成幾個模塊,可以從發(fā)現(xiàn)原理、檢測手段等角度選擇性處理,從而提高處理效率,而且更有針對性。 支撐層的監(jiān)測模式分為兩模塊:一是嗅探模式,負責反模式和代碼嗅探。該組件由摸哈等人實現(xiàn)了 DEC0R(修正缺陷檢測),以此來指定和識別反模式和代碼嗅探;二是Qmood模式(由Bansiya和戴維斯實現(xiàn)質量模型QM00D)。QMOOD由六個方程建立的六個面向對象的設計,由質量特性確定其中的面向對象的結構設計特性。
6.一種支持軟件工程質量自動監(jiān)測的新方法,其特征在于,該方法包括: 業(yè)務層模塊,用于運行著各種應用,例如Web界面展示、使用配置、功能模式選擇。支撐層模塊,具體的監(jiān)控方式有嗅探檢測與模式匹配檢測,數(shù)據(jù)監(jiān)測處理采用并行計算的處理方式。
7.如權利要求6所述的方法,其特征在于,所述支持軟件工程質量自動監(jiān)測的方法還包括: 支撐層模塊提供兩種方式來訪問數(shù)據(jù)庫里的信息:一是通過系統(tǒng)提供的Web界面,開發(fā)人員和質量分析人員可以通過瀏覽可視化系統(tǒng)來了解不同質量特性的詳細數(shù)據(jù)。第二,開發(fā)者和質量分析人員可以使用Web服務計劃定期自動執(zhí)行質量評估或訪問存儲在數(shù)據(jù)庫中的質量系統(tǒng)信息。
【文檔編號】G06Q10/06GK103985003SQ201310736877
【公開日】2014年8月13日 申請日期:2013年12月25日 優(yōu)先權日:2013年12月25日
【發(fā)明者】李 榮, 王立進, 徐勤, 朱燕濤, 馮桂勇 申請人:北京安碼科技有限公司