專利名稱:客制化軟件源碼的更新方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于一種更新客制化(customize)軟件源碼的方法,尤指當(dāng)公版的核心程序代碼作局部修改時(shí),能快速且精確地針對(duì)新舊版本間的異動(dòng)及差異,而作增益修改, 以產(chǎn)生符合客戶需求的最終軟件源碼。
背景技術(shù):
在軟件公司的營(yíng)運(yùn)模式里,通常有超過(guò)50%以上的項(xiàng)目性質(zhì)是在既有開(kāi)發(fā)廠商提供的軟件源碼(Source Code)(即所謂公版)基礎(chǔ)下作客制化修改;當(dāng)然,愈少的人工介入修改,其所花成本及工作時(shí)間也會(huì)相對(duì)減少,這樣就能創(chuàng)造更多的利潤(rùn)。以高階應(yīng)用軟件為例,軟件開(kāi)發(fā)廠商會(huì)在既有的Windows API函數(shù)、驅(qū)動(dòng)程序 (Driver)、自訂基底函式庫(kù)及Third-Party組件(Component)的基礎(chǔ)下,依功能作模塊化切害I],當(dāng)客戶不需要某些功能模塊時(shí),必須以人工依功能需求修改相對(duì)應(yīng)的邏輯程序代碼。而且,隨著底層引用的基礎(chǔ)共享函式庫(kù)或Third-Party組件的版本更迭,呼叫程序代碼也得隨的修改。再以硬件芯片軔體為例,多數(shù)計(jì)算機(jī)統(tǒng)廠商會(huì)有自己的計(jì)算機(jī)平臺(tái)(platform) 規(guī)劃,為自己的產(chǎn)品添加特色,或者要市場(chǎng)上做功能區(qū)隔,例如增加不同的零組件(如EC 芯片、Super 1/0芯片、南橋芯片、SCSI控制器芯片、IDE/RAID控制芯片或100/1000Mbps Etherent等等),以及加入不同控制程序、除錯(cuò)程序等。因此不見(jiàn)得都與芯片廠商提供的公版設(shè)計(jì)相同,此時(shí),為配合計(jì)算機(jī)廠商的不同需求,硬件芯片廠商所提供的標(biāo)準(zhǔn)軟件源碼模塊(如EC, BIOS)就得有所變動(dòng)。由于,在軟件源碼的架構(gòu)都具有核心共享部分,這樣可貫徹軟件開(kāi)發(fā)工程的reuse 精神,所述核心共享部分我們稱為核心基底源碼(KernelCodebase,以下簡(jiǎn)稱KC)。所述核心基底源碼有時(shí)候是向外購(gòu)買而來(lái),例如芯片廠商會(huì)提供其控制硬件的核心軟件程序代碼;再通過(guò)軟件開(kāi)發(fā)廠商在其核心基底源碼基礎(chǔ)上作整合性的客制化功能增減,以達(dá)到計(jì)算機(jī)廠商的需求。然而,所述軟件源碼隨著時(shí)間不斷演進(jìn)及更新,增加所述軟件源碼版本上控制的復(fù)雜度,因此作好版本控制是很重要的,然而,即使不同版本的軟件源碼獨(dú)立成一份,每次要配合使用者作客制化修改時(shí),軟件開(kāi)發(fā)廠商必須追蹤及了解每版本間的軟件源碼異動(dòng)及差異,即使用比對(duì)軟件來(lái)列出差異處,仍然得用人工方式對(duì)新版源碼作修正。因此,本發(fā)明人有鑒于現(xiàn)有更新客制化軟件源碼功能應(yīng)用上的不足現(xiàn)狀,本案發(fā)明人即著手研發(fā)其解決方案,希望能開(kāi)發(fā)出一種更具效果性及經(jīng)濟(jì)性的更新軟件源碼的方法,以服務(wù)社會(huì)大眾及促進(jìn)此業(yè)的發(fā)展,遂經(jīng)多時(shí)的構(gòu)思而有本發(fā)明的產(chǎn)生。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的,在提供一種客制化軟件源碼的更新方法,其主要方法是當(dāng)組件開(kāi)發(fā)廠商所提供的核心基底源碼(KC)作局部修改時(shí),軟件開(kāi)發(fā)廠商能追蹤及了解新舊版本間的異動(dòng)及差異,能及時(shí)且快速地整合新版的核心基底源碼,及配合使用者需求而所開(kāi)發(fā)的功能客制化程序代碼作增益修改,以符合使用者需求。本發(fā)明的再一個(gè)目的,在提供一種客制化軟件源碼的更新方法,借助批次軟件工具自動(dòng)地依腳本(Script)追蹤及了解軟件源碼版本間的異動(dòng)及差異,而作增益修改,以產(chǎn)生符合客戶需求的最終軟件源碼,這樣可增加項(xiàng)目生產(chǎn)力及降低工時(shí)成本時(shí)間,保持高昂的競(jìng)爭(zhēng)力。為達(dá)上述 目的,本發(fā)明一種客制化軟件源碼的更新方法,應(yīng)用于各種源碼的軟件/ 軔體客制化修改(如 UI Code,Base Library, API/Driver, BIOS, Chipset Firmware)的軟件更新,該方法,所采用的技術(shù)手段包括(1)將配合使用者需求的軟件源碼區(qū)分為兩部分,一個(gè)為公版核心程序代碼及另一個(gè)為功能客制化程序代碼;其中,所述公版核心程序代碼為控制硬件的軟件程序代碼; 其中,所述功能客制化程序代碼為配合使用者的需求所作的功能增減的軟件程序代碼;(2)將新版的公版核心程序代碼寫在軟件更新工具(Porting Script)里,并借助所述軟件更新工具分析所述公版核心程序代碼的指令及數(shù)據(jù),其指令內(nèi)容有邏輯判斷、開(kāi)文件、搜尋指令、加行、減行等指令;(3)同時(shí),選擇前版的公版核心程序代碼及功能客制化程序代碼的腳本 (Script),借助軟件更新工具分析其指令及數(shù)據(jù);(4)承上述(2),判斷功能客制化程序代碼的腳本邏輯條件,并依序執(zhí)行修改指令;(5)產(chǎn)生新版的軟件源碼。其中,指令內(nèi)容有邏輯判斷、開(kāi)文件、搜尋指令、加行、減行等指令。其中,邏輯指令為判定區(qū)塊內(nèi)指令是否執(zhí)行,包括條件定義(IFDEF),或取消條件定義(IFNDF),或結(jié)束條件執(zhí)行(ENDIF)。其中,定義指令為定義區(qū)塊卷標(biāo),包括定義/字符串置換(DEF),或取消DEF定義 (NDEF)。其中,開(kāi)啟文件指令為開(kāi)啟(OPEN)檔案。其中,操作指令如搜尋、加行、減行或如批注字符、修改范圍自訂mark等指令。其中,所述軟件更新工具提供軟件源碼的還原(Restore)及記錄(Log)等功能。其中,所述軟件更新工具處理的軟件源碼對(duì)象為Assembly,C/C++,C#, Java等各種程序語(yǔ)言。其中,軟件更新工具具有開(kāi)文件字符串編碼支持,且是使用二進(jìn)制(Binary)方式讀文件且作字符串操作。其中,軟件更新工具在程序代碼的腳本加載時(shí),進(jìn)行多次的語(yǔ)意篩選及精簡(jiǎn)過(guò)濾, 達(dá)到智能與效能的雙效俱進(jìn)。其中,軟件更新工具具有模糊字符串搜尋比對(duì)。其中,軟件更新工具具有檔案多層路徑處理,可以讀取多層子目錄的檔案,最后輸出時(shí)也依多層目錄方式建立。其中,軟件更新工具具有內(nèi)存處理操作,其是使用鏈接串行(LinkingList)達(dá)接技術(shù)來(lái)實(shí)作字符串的插入及移除。
本發(fā)明的有益效果當(dāng)公版核心程序代碼作更新時(shí),借助批次軟件工具自動(dòng)地依腳本(Script)追蹤及了解軟件源碼版本間的異動(dòng)及差異,而作增益修改,以產(chǎn)生符合客戶需求的最終源碼,這樣可增加項(xiàng)目生產(chǎn)力及降低工時(shí)成本,保持高昂的競(jìng)爭(zhēng)力。
圖1為本發(fā)明作用流程示意圖。組件的圖號(hào)說(shuō)明SOl將配合使用者需求的軟件源碼區(qū)分為1.公版核心碼2.功能客制化程序代碼;S02將新版的公版核心程序代碼寫在軟件更新工具(Porting Script);S03選擇前版的公版核心程序代碼及功能客制化程序代碼的腳本,借助軟件更新工具分析其指令及數(shù)據(jù);S04判斷功能客制化程序代碼的腳本邏輯條件,并依序執(zhí)行修改指令;S05產(chǎn)生新版的軟件源碼。
具體實(shí)施例方式為對(duì)本發(fā)明能具更深入的認(rèn)識(shí)與了解,茲舉實(shí)施例配合圖式,詳細(xì)說(shuō)明如下本發(fā)明是一種客制化軟件源碼的更新方法,可以應(yīng)用在各種源碼的軟件/軔體客制化修改(如 UI Code, Base Library, API/Driver, BIOS, ChipsetFirmware),并不局限特定領(lǐng)域或程序語(yǔ)言。下列應(yīng)用于嵌入式控制(Embedded Controller)的軔體更新為例,請(qǐng)參照?qǐng)D1所示,所述方法包括有步驟SOl 將配合使用者需求的軟件源碼區(qū)分為兩部分,一個(gè)為公版核心程序代碼及另一個(gè)為功能客制化程序代碼;其中,所述公版核心程序代碼為控制硬件的軟件程序代碼;其中,所述功能客制化程序代碼為配合使用者的需求所作功能增減的軟件程序代碼;步驟S02 將新版的公版核心程序代碼寫在軟件更新工具(PortingScript)里, 并借助所述軟件更新工具分析所述公版核心程序代碼的指令及數(shù)據(jù),其指令內(nèi)容有邏輯判斷、開(kāi)文件、搜尋指令、加行、減行等指令,其指令內(nèi)容進(jìn)一步包含有邏輯指令其是判定區(qū)塊內(nèi)指令是否執(zhí)行包括條件定義(IFDEF),或取消條件定義(IFNDF),或結(jié)束條件執(zhí)行(ENDIF);定義指令其是定義區(qū)塊卷標(biāo),包括定義/字符串置換(DEF),或取消DEF定義 (NDEF);開(kāi)文件指令其是開(kāi)啟(OPEN)檔案;操作指令,如搜尋、加行、減行;或批注字符、修改范圍自訂mark等指令;并且所述軟件更新工具也提供軟件源碼的還原(Restore)及記錄(Log)等功能, 方便軟件人員測(cè)試比對(duì)。步驟S03 同時(shí),選擇前版的公版核心程序代碼(KC Codebase)及前版的功能客制化程序代碼的腳本,并借助軟件更新工具分析其指令及數(shù)據(jù);
步驟S04:承上述步驟S02,判斷功能客制化程序代碼的腳本邏輯條件,并依序執(zhí)行修改指令;步驟S05 產(chǎn)生新的軟件源碼。同時(shí),本發(fā)明的軟件更新工具批處理的軟件源碼對(duì)象不限程序語(yǔ)言,可用在 Assembly, C/C++,C#, Java等各種程序語(yǔ)言;其技術(shù)重點(diǎn)如下1.開(kāi)文件字符串編碼支持本軟件更新工具使用二進(jìn)制(Binary)方式讀文件且作字符串操作,以克服開(kāi)檔源碼的問(wèn)題;由于核心基底源碼的寫作風(fēng)格或檔案特性都不同,有些芯片廠商會(huì)在核心基底源碼內(nèi)放入不可視的特殊隱藏字符,假如只以ASCII方式開(kāi)啟源碼作處理,會(huì)發(fā)生問(wèn)題。2.軟件更新工具分析編譯
要正確執(zhí)行程序代碼的腳本(Script)內(nèi)的指令,必須對(duì)程序代碼的腳本具有良好的分析及解讀能力,所述軟件更新工具在程序代碼的腳本加載時(shí),進(jìn)行多次的語(yǔ)意篩選及精簡(jiǎn)過(guò)濾,達(dá)到智能與效能的雙效俱進(jìn)。3.模糊字符串搜尋比對(duì)在一個(gè)文字源碼文件內(nèi),要在適當(dāng)?shù)奈恢貌迦牖蛞迫胱杂喿址?,必須先使用搜尋指令以達(dá)到定位效果。然而,搜尋的字符串若使用精確比對(duì)(意即一模一樣)方式,往往所述核心基底源碼被芯片廠商異動(dòng)就搜尋失敗(例如多加上一些空白或作排版,甚至加上批注文字)。本軟件更新工具在搜尋字符串時(shí),除了非采精確比對(duì)的方式外,還使用模糊比對(duì),即將欲比對(duì)的文字經(jīng)過(guò)重新整理過(guò)濾,即使雙方字符串字?jǐn)?shù)不同,但只要語(yǔ)意上是相同的,也可被搜尋到。4.檔案多層路徑處理所述核心基底源碼目錄下檔案,往往以許多子目錄存放,本軟件更新工具可以讀取多層子目錄的檔案,最后輸出時(shí)也依多層目錄方式建立。5.內(nèi)存處理操作本軟件使用鏈接串行(Linking List)達(dá)接技術(shù)來(lái)實(shí)作字符串的插入及移除,以快速的內(nèi)存為操作空間,最后處理完才寫入檔案,比起頻繁使用子檔案作處理的方式,效能上快上數(shù)倍。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,當(dāng)不能限定本發(fā)明實(shí)施的范圍,故凡是類似的變更或置換,或依本發(fā)明權(quán)利要求所作的均等變化與修飾,皆應(yīng)仍屬本發(fā)明專利涵
蓋的范疇。
權(quán)利要求
1.一種客制化軟件源碼的更新方法,應(yīng)用于各種源碼的軟件/軔體客制化修改的軟件更新,其特征在于,該方法包括如下(1)將軟件源碼區(qū)分為兩部分,一個(gè)為公版核心程序代碼,其是控制硬件的軟件程序代碼;一個(gè)功能客制化程序代碼,其是針對(duì)個(gè)別需求控制硬件的軟件程序代碼;(2)將新版的公版核心程序代碼寫在軟件更新工具里,并借助所述軟件更新工具分析所述公版核心程序代碼的指令及數(shù)據(jù);(3)同時(shí),選擇前版的公版核心程序代碼及前版的功能客制化程序代碼的腳本,并借助軟件更新工具分析其指令及數(shù)據(jù);(4)承上述O),判斷所述功能客制化程序代碼的腳本邏輯條件,并依序執(zhí)行修改指令;(5)產(chǎn)生新的軟件源碼。
2.如權(quán)利要求1所述的客制化軟件源碼的更新方法,其特征在于,其指令內(nèi)容有邏輯判斷、開(kāi)文件、搜尋指令、加行、減行指令。
3.如權(quán)利要求2所述的客制化軟件源碼的更新方法,其特征在于,其邏輯指令為判定區(qū)塊內(nèi)指令是否執(zhí)行,該邏輯指令包括為條件定義(IFDEF),或取消條件定義(IFNDF),或結(jié)束條件執(zhí)行(ENDIF)。
4.如權(quán)利要求2所述的客制化軟件源碼的更新方法,其特征在于,其定義指令為定義區(qū)塊卷標(biāo),該定義指令包括為定義/字符串置換(DEF),或取消DEF定義(NDEF)。
5.如權(quán)利要求2所述的客制化軟件源碼的更新方法,其特征在于,其開(kāi)文件指令為開(kāi)啟(OPEN)檔案。
6.如權(quán)利要求2所述的客制化軟件源碼的更新方法,其特征在于,其操作指令為搜尋、 加行、減行或批注字符、修改范圍自訂mark指令。
7.如權(quán)利要求1所述的客制化軟件源碼的更新方法,其特征在于,所述軟件更新工具提供軟件源碼的還原及記錄功能。
8.如權(quán)利要求1所述的客制化軟件源碼的更新方法,其特征在于,所述軟件更新工具處理的軟件源碼對(duì)象為Assembly,C/C++,C#, Java各種程序語(yǔ)言。
9.如權(quán)利要求8所述的客制化軟件源碼的更新方法,其特征在于,其軟件更新工具具有開(kāi)文件字符串編碼支持,且是使用二進(jìn)制方式讀文件且作字符串操作。
10.如權(quán)利要求8所述的客制化軟件源碼的更新方法,其特征在于,其軟件更新工具在程序代碼的腳本加載時(shí),進(jìn)行多次的語(yǔ)意篩選及精簡(jiǎn)過(guò)濾,達(dá)到智能與效能的雙效俱進(jìn)。
11.如權(quán)利要求8所述的客制化軟件源碼的更新方法,其特征在于,其軟件更新工具具有模糊字符串搜尋比對(duì)。
12.如權(quán)利要求8所述的客制化軟件源碼的更新方法,其特征在于,其軟件更新工具具有檔案多層路徑處理,可以讀取多層子目錄的檔案,最后輸出時(shí)也依多層目錄方式建立。
13.如權(quán)利要求8所述的客制化軟件源碼的更新方法,其特征在于,其軟件更新工具具有內(nèi)存處理操作,其是使用鏈接串行(Linking List)達(dá)接技術(shù)來(lái)實(shí)作字符串的插入及移除。
全文摘要
本發(fā)明是一種客制化軟件源碼的更新方法,其主要是在舊版的軟件源碼基礎(chǔ)下,當(dāng)公版核心程序代碼作更新時(shí),能將所述舊版軟件源碼作增益修改,以產(chǎn)生新版的軟件源碼的方法;所述軟件源碼至少包括有一個(gè)公版核心程序代碼及一個(gè)客制化程序代碼兩部分;其中,所述公版核心程序代碼為控制硬件的軟件程序代碼;其中,所述客制化程序代碼為配合使用者的需求作功能增減的軟件程序代碼;當(dāng)公版核心程序代碼作更新時(shí),借助軟件更新工具自動(dòng)地依腳本追蹤及了解軟件源碼版本間的異動(dòng)及差異,而作增益修改,以產(chǎn)生符合客戶需求的最終源碼,這樣可增加項(xiàng)目生產(chǎn)力及降低工時(shí)成本,保持高昂的競(jìng)爭(zhēng)力。
文檔編號(hào)G06F9/44GK102156638SQ201010121570
公開(kāi)日2011年8月17日 申請(qǐng)日期2010年2月11日 優(yōu)先權(quán)日2010年2月11日
發(fā)明者歐坤宗 申請(qǐng)人:崴聯(lián)科技股份有限公司