TWI467481B - 層級式程式源碼管理方法、系統及電腦程式產品 - Google Patents
層級式程式源碼管理方法、系統及電腦程式產品 Download PDFInfo
- Publication number
- TWI467481B TWI467481B TW99117403A TW99117403A TWI467481B TW I467481 B TWI467481 B TW I467481B TW 99117403 A TW99117403 A TW 99117403A TW 99117403 A TW99117403 A TW 99117403A TW I467481 B TWI467481 B TW I467481B
- Authority
- TW
- Taiwan
- Prior art keywords
- program
- file
- hierarchical
- code
- syntax tree
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Description
本發明係有關於一種層級式程式源碼管理系統、方法與電腦程式產品,更具體來說係關於一種模組化的層級式程式源碼管理系統、方法與電腦程式產品。
目前軟體程式設計的發展相當迅速,功能亦日漸強大,相對地程式碼的份量亦大增。因此,多人合作開發程式甚至是跨國團隊共同開發程式已是十分普遍之模式。在這些情況下,程式碼版本的記錄、比較與控管就顯得相當的重要。
傳統的版本控管系統中,程式設計人員開始修改程式碼時,需向控管系統進行取出(check-out)之動作。而在修改完成後,則再進行存入(check-in)之動作,以便控管系統記錄程式的版本。因此,程式設計人員可藉由程式的版本號碼來確保其所編輯的版本是最新的版本。然而,尤其是在多組人員共同開發時,傳統的版本管理係以檔案為單位進行版本控管,在同一檔案包括各種不同面向的功能時,並無法將程式碼的內容有系統地模組化(modular)或階層化(hierarchical),幫助程式設計人員快速而有效率地選擇需要選擇、整合或編輯的各項功能模組,無法符合面向導向程式設計(Aspect-Oriented-Programming,AOP)之需求與基本精神。有關面向導向程式設計請參照以下網址之資料http://en.wikipedia.org/wiki/Aspect-oriented_programming。
舉例來說,程式設計人員在開發程式時,往往需要置入一些暫時性的程式測試碼,例如做為偵錯用的程式碼。然而在現行的版本控管系統中,程式設計人員在執行存入動作前,需先將這類的程式碼刪除,否則可能造成程式碼混亂而造成其他程式開發人員的困擾。然而,下次進行編修程式時,該程式設計人員又要將同樣的測試碼再放回,造成開發過程的困擾。換句話說,不論是暫時性的測式碼或是具有各種功能的程式模組,都沒有辦法在各個開發團隊間有效率地選擇分享及/或忽略不需要的程式碼,造成程式開發效率無法進一步提升。
因此,需要有一種層級式程式源碼管理系統、方法與電腦程式產品,以提升程式設計的效率。
為因應習知技術的狀態,尤其為因應習知技術中可用之網路服務尚未解決的問題及需求,因而完成本發明的數個具體實施例。因此,本發明提供一種自動選擇網路瀏覽器之裝置、方法與電腦程式產品,以克服習知技術許多或所有缺點。
本說明書中所提及的特色、優點、或類似表達方式並不暗示本發明可實現的所有特色及優點應在本發明之任何單一的具體實施例內。而是應明白,有關特色及優點的表達方式是指結合具體實施例所述的特定特色、優點、或特性係包含在本發明的至少一具體實施例內。因此,本說明書中對於特色及優點、及類似表達方式的論述可與相同具體實施例有關,但亦非必要。
此外,可以任何合適的方式,在一或多個具體實施例中結合本發明所述特色、優點、及特性。相關技術者應明白,在沒有特定具體實施例之一或多個特定特色或優點的情況下,亦可實施本發明。在其他例子中應明白,特定具體實施例中的其他特色及優點可能未在本發明的所有具體實施例中出現。
參考以下說明及隨附申請專利範圍或利用如下文所提之本發明的實施方式,即可更加明瞭本發明的這些特色及優點。
本發明一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:讀取程式主檔;建立一階層;在該階層中編輯程式碼;產生相對應該程式碼之抽象語法樹;以及將該抽象語法樹與該程式主檔比對,以產生階層檔。
本發明另一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:讀取程式主檔所關聯之至少一階層檔;顯示程式主檔及至少一階層檔所對應之程式碼;以及依據使用者之操作,選擇是否隱藏階層檔所對應之程式碼。
本發明又一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:使用者選擇至少二階層檔;以及藉由至少二階層檔所對應之抽象語法樹,將二階層檔結合而產生一新的階層檔。
本發明再一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:利用一識別標識,將階層檔所對應之程式碼及程式主檔所對應之程式碼予以區別,其中識別標識包括下列至少其中之一:背景顏色、文字顏色、框線、字體、及透明度。
本發明又另一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:將程式主檔及至少一階層檔所對應之程式碼顯示於程式碼顯示區域;以及將階層檔所對應之說明資訊顯示於階層管理區域中。
本發明又另一方面揭示一種層級式程式源碼管理方法。在一實施例中,包含以下步驟:使用者選擇至少一階層檔;以及藉由至少一階層檔所對應之抽象語法樹,將至少一階層檔與程式主檔合併而產生一新的程式主檔。
本發明又另一方面揭示一種電腦程式產品。在一實施例中,供於一電子裝置上執行時進行下列步驟:讀取程式主檔;建立一階層;在階層中編輯程式碼;產生相對應程式碼之抽象語法樹;以及將抽象語法樹與程式主檔比對,以產生階層檔。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,包括儲存裝置以儲存一程式主檔,以及處理器用以執行程式碼以提供程式開發介面。使用者於程式開發介面建立一階層,並於階層中編輯程式碼。程式開發介面產生相對應於程式碼之抽象語法樹,並將抽象語法樹與程式主檔比對以產生階層檔。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,更包括顯示裝置用以顯示該程式開發介面。程式開發介面讀取程式主檔所關聯之至少一階層檔,並顯示程式主檔及至少一階層檔所對應之程式碼。程式開發介面依據使用者之操作,選擇是否隱藏階層檔所對應之程式碼。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,程式開發介面更因應使用者之操作,藉由至少二階層檔所對應之抽象語法樹,將該二階層檔結合而產生一新的階層檔。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,程式開發介面更利用識別標識,將階層檔所對應之程式碼及程式主檔所對應之程式碼予以區別。識別標識包括下列至少其中之一:背景顏色、文字顏色、框線、字體、及透明度。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,顯示裝置將程式主檔及至少一階層檔所對應之程式碼顯示於程式開發介面之程式碼顯示區域,並將階層檔所對應之說明資訊顯示於程式開發介面之階層管理區域中。
本發明又另一方面揭示一種層級式程式源碼管理系統。在一實施例中,程式開發介面更因應使用者之操作,藉由至少一階層檔所對應之抽象語法樹,將至少一階層檔與程式主檔合併而產生一新的程式主檔。
本說明書中「一具體實施例」或類似表達方式的引用是指結合該具體實施例所述的特定特色、結構、或特性係包括在本發明的至少一具體實施例中。因此,在本說明書中,「在一具體實施例中」及類似表達方式之用語的出現未必指相同的具體實施例。
熟此技藝者當知,本發明本實施為一系統、裝置、方法或作為電腦程式產品之電腦可讀媒體。因此,本發明可以實施為各種形式,例如完全的硬體實施例、完全的軟體實施例(包含韌體、常駐軟體、微程式碼等),或者亦可實施為軟體與硬體的實施形式,在以下會被稱為「電路」、「模組」或「系統」。此外,本發明亦可以任何有形的媒體形式實施為電腦程式產品,其具有電腦可使用程式碼儲存於其上。
一個或更多個電腦可使用或可讀取媒體的組合都可以利用。舉例來說,電腦可使用或可讀取媒體可以是(但並不限於)電子的、磁的、光學的、電磁的、紅外線的或半導體的系統、裝置、設備或傳播媒體。更具體的電腦可讀取媒體實施例可以包括下列所示(非限定的例示):由一個或多個連接線所組成的電氣連接、可攜式的電腦磁片、硬碟機、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除程式化唯讀記憶體(EPROM或快閃記憶體)、光纖、可攜式光碟片(CD-ROM)、光學儲存裝置、傳輸媒體(例如網際網路(Internet)或內部網路(intranet)之基礎連接)、或磁儲存裝置。需注意的是,電腦可使用或可讀取媒體更可以為紙張或任何可用於將程式列印於其上而使得該程式可以再度被電子化之適當媒體,例如藉由光學掃描該紙張或其他媒體,然後再編譯、解譯或其他合適的必要處理方式,然後可再度被儲存於電腦記憶體中。在本文中,電腦可使用或可讀取媒體可以是任何用於保持、儲存、傳送、傳播或傳輸程式碼的媒體,以供與其相連接的指令執行系統、裝置或設備來處理。電腦可使用媒體可包括其中儲存有電腦可使用程式碼的傳播資料訊號,不論是以基頻(baseband)或是部分載波的型態。電腦可使用程式碼之傳輸可以使用任何適體的媒體,包括(但並不限於)無線、有線、光纖纜線、射頻(RF)等。
用於執行本發明操作的電腦程式碼可以使用一種或多種程式語言的組合來撰寫,包括物件導向程式語言(例如Java、Smalltalk、C++或其他類似者)以及傳統程序程式語言(例如C程式語言或其他類似的程式語言)。程式碼可以獨立軟體套件的形式完整的於使用者的電腦上執行或部分於使用者的電腦上執行,或部分於使用者電腦而部分於遠端電腦,或者全部於遠端電腦或伺服器上執行。在後面的情況,遠端電腦可以任何形式的網路連接至使用者的電腦,包括區域網路(LAN)或廣域網路(WAN),或者也可利用外部電腦來做連結(例如利用網際網路服務提供者來連接至網際網路)。
於以下本發明的相關敘述會參照依據本發明具體實施例之系統、裝置、方法及電腦程式產品之流程圖及/或方塊圖來進行說明。當可理解每一個流程圖及/或方塊圖中的每一個方塊,以及流圖及/或方塊圖中方塊的任何組合,可以使用電腦程式指令來實施。這些電腦程式指令可供通用型電腦或特殊電腦的處理器或其他可程式化資料處理裝置所組成的機器來執行,而指令經由電腦或其他可程式化資料處理裝置處理以便實施流程圖及/或方塊圖中所說明之功能或操作。
這些電腦程式指令亦可被儲存在電腦可讀取媒體上,以便指示電腦或其他可程式化資料處理裝置來進行特定的功能,而這些儲存在電腦可讀取媒體上的指令構成一製成品,其內包括之指令可實施流程圖及/或方塊圖中所說明之功能或操作。
電腦程式指令亦可被載入到電腦上或其他可程式化資料處理裝置,以便於電腦或其他可程式化裝置上進行一系統操作步驟,而於該電腦或其他可程式化裝置上執行該指令時產生電腦實施程序以達成流程圖及/或方塊圖中所說明之功能或操作。
在圖式中顯示依據本發明各種實施例的系統、裝置、方法及電腦程式產品可實施的架構、功能及操作之流程圖及方塊圖。因此,流程圖或方塊圖中的每個方塊可表示一模組、區段、或部分的程式碼,其包含一個或多個可執行指令,以實施指定的邏輯功能。另當注意者,某些其他的實施例中,方塊所述的功能可以不依圖中所示之順序進行。舉例來說,兩個圖示相連接的方塊事實上亦可以同時執行,或依所牽涉到的功能在某些情況下亦可以依圖示相反的順序執行。此外亦需注意者,每個方塊圖及/或流程圖的方塊,以及方塊圖及/或流程圖中方塊之組合,可藉由基於特殊目的硬體的系統來實施,或者藉由特殊目的硬體與電腦指令的組合,來執行特定的功能或操作。
圖1所示為一種依照本發明具體實施例之系統架構示意圖,包括伺服器110、客戶端210、220、230與240。伺服器110、客戶端210、220、230與240相互間可以使用任何硬體架構或軟體協定來相互連接及溝通,例如典型地可透過網際網路(Internet)及TCP/IP協定來連線及溝通,或者亦可採用其他可供連結之技術,而不影響本發明之實施。在本實施例中,以一例示性的情境範例來做說明,以便讓熟此技藝者能更清楚地了解本發明之精神與內容。伺服器110為一版本管理系統,用於記錄程式碼及管理程式的版本資訊。常見的版本管理系統例如是Current Version Systems(CVS)、Subversion、及Perforce等。在本範例中,客戶端210透過高速寬頻連線130(例如光纖連線)連接至伺服器110,將修改後的程式主檔UserManager.java回傳至伺服器110。伺服器110將程式主檔儲存,並記錄版本資訊,例如在此範例中為第15版。另外,程式設計人員Jim負責開發此程式之時間資訊記錄模組,透過筆記型電腦配搭相對來說較低速的數據機,並透過電信網路撥接至伺服器110之數據機122來建立連線。另一個程式設計人員Jeffrey則是負責開發使用者資料管理模組,利用專屬電腦設備,即客戶端230,透過高速寬頻固接連線140(例如專屬固接網路)來連接至伺服器110。另一個程式設計人員Johnson則負責開發使用者資料之修改功能模組,因為不在辦公室,因此利用智慧型手機(以下簡稱客戶端240),透過無線收發器242來與伺服器110的無線收發器123建立連線,來做一些簡單的編輯與確認功能。亦即,本發明並不限制各程式開發人員所使用之電腦設備或連線裝置,亦不限制其所使用之軟體開發環境或作業系統,皆不影響本發明之實施。
本實施例中伺服器110的一個實施範例是電腦,例如圖2顯示了一依照本發明實施例的伺服器110之方塊示意圖。在本範例中,伺服器110是通用型電腦,依照所儲存的程式碼或指令而執行本發明所揭示的程序。伺服器110使用一周邊元件互連(PCI)區域匯流排架構114。雖然在此是以PCI匯流排作為範例,但其它的匯流排架構亦可以被使用,例如加速圖形埠(AGP)以及工業標準架構(ISA)。處理器111與主記憶體112係透過PCI橋接器113來連接至PCI區域匯流排114。PCI橋接器113也可以包括一整合的記憶體控制器與快取記憶體,以供處理器111使用。其它對PCI區域匯流排114的連接可以藉由直接元件互連,或是透過附加卡的方式。
在所述的範例中,區域網路(LAN)配接器115、小型電腦系統介面(SCSI)主機匯流排配接器116、以及擴充匯流排介面117係藉由直接連接的方式來連接至PCI區域匯流排114。相較之下,音效配接器118、圖形配接器119、以及音訊/視訊配接器120係藉由將附加卡插入擴充槽的方式來連接至PCI區域匯流排114。擴充匯流排介面117提供連接至鍵盤與滑鼠配接器121、數據機122、以及無線收發器123。SCSI主機匯流排配接器116提供連接至硬碟機124、磁帶機125、以及光碟機126。典型的PCI區域匯流排114的實施會支援三或四個PCI擴充插,或附加連接器。
熟此技藝者應可知,圖2中所述的硬體可以依照不同的實施例而有各種變化。亦有其它的內部硬體或週邊裝置,例如快閃唯讀記憶體(ROM)、等效的非揮發記憶體、或光碟機等等,可以附加或取代圖2所示的硬體。另外,本發明的程序亦可實施於多處理器的資料處理系統。舉例來說,伺服器110若選用地設定為網路電腦,則可以不包括SCSI主機匯流排配接器116、硬碟機124、磁帶機125、以及光碟機126。在這樣的情況下,此電腦包括某些種類的網路通訊介面,例如LAN配接器115、數據機122、無線收發器123或其它類似的元件。作業系統在處理器111上執行,並且用來協調並提供伺服器110之中各種元件的控制。商用作業系統的範例如Microsoft公司的Windows。「Windows XP」為Microsoft公司在美國及/或其他國家的註冊商標。物件導向的程式系統(例如)可以與作業系統共同執行,以提供伺服器110上Java程式或應用程式對作業系統的呼叫。「」為Sun Microsystems公司在美國及/或其他國家的註冊商標。作業系統、物件導向程式系統、以及應用程式或程式的指令,係位於儲存裝置上,例如硬碟機124,而會被載入至主記憶體112以供處理器111執行。
客戶端210、220、230及240可以使用與前述伺服器110相同或類似的硬體架構,亦或者可以利用其他的基礎架構,本發明並不限制。舉例來說,客戶端210、220、230及240可以是桌上型電腦、筆記型電腦、個人數位助理(PDA)、智慧型手機等。然而圖2所示以及上述的範例皆非用於限制本發明的架構。
在本範例中,Jim、Jeffrey及Johnson分別對此程式主檔進行修改,其修改之程式碼各別位於獨立之階層(layer)中,在此稱之為層級式程式源碼管理(Hierarchical Source Management)。有關階層之建立與程式碼之修改、管理、儲存等細節,會在以下進一步詳細。請先參照圖3,藉由一示範性的程式開發介面300來說明本發明之一種示範性的實施方式,以便熟此技藝者能了解本發明之一方面的特色。在程式開發介面300(例如執行在客戶端電腦中的整合式開發環境(Integrated Development Environment,IDE),並透過圖形配接器119顯示於一顯示裝置中,例如LCD顯示器)中,具有程式碼顯示區域310及階層管理區域320。在下方的階層管理區域320中,例示了四項資訊,分別是Jim所建立的時間資訊記錄層322、Jeffrey所建立的使用者資料管理層324、Johnson所建立的使用者資料修改層326、以及做為前三層之基礎的程式主檔328。
在本範例中,當一個新的程式開發人員向伺服器110取出程式主檔時,可同時一併取得相關的階層資訊及程式碼,並顯示在上方的程式碼顯示區域310中。舉例來說,程式碼顯示區域310具有對應到時間資訊記錄層322之程式碼312、對應到使用者資料管理層324之程式碼314、對應到使用者資料修改層326之程式碼316、以及對應到程式主檔328的程式碼318。在顯示不同階層的程式碼時,可以使用清楚而易於識別的方式的強調各階層的區別。舉例來說,在本範例中係使用不同的背景顏色來區別不同階層的程式碼,但是在其他實施例中,亦可以使用例如文字顏色、框線、字體、透明度等不同的方式來區別不同階層的程式碼。
從前述範例可知,程式開發人員可以很容易的識別各種不同階層的程式碼。另外,程式開發人員還可以更進一步地選擇他所需要加入或怱略的程式碼,請參照圖4A至圖4C。在圖4A中,程式開發人員在開發過程中不需要使用到時間資訊記錄層322,他只要在階層管理區域320中將時間資訊記錄層322之選擇取消,例如點選前方的選擇框,如圖示中將勾勾取消,當然在其他實施例中也可以使用不同的選擇方式,例如選擇鈕、拖曳移動、滑鼠右鍵之選單等。此時,上方的程式碼顯示區域310中便不會出現時間資訊記錄層322所對應之程式碼312。類似地,程式開發人員在開發過程中倘若不需要使用者資料管理層324,他只要在階層管理區域320中將使用者資料管理層324之選擇取消。此時,上方的程式碼顯示區域310中便不會出現使用者資料管理層324所對應之程式碼314,如圖4B所示。程式開發人員在開發過程中倘若不需要使用者資料修改層326,他只要在階層管理區域320中將使用者資料修改層326之選擇取消。此時,上方的程式碼顯示區域310中便不會出現使用者資料修改層326所對應之程式碼316,如圖4C所示。
在階層管理區域320中,更可以顯示各階層之說明資訊。舉例來說,時間資訊記錄層322顯示了該階層的描述「Log execution time」、其依附之程式主檔「UserManager.java」(在其他實施例中若為子層,此處可顯示所依附之其他階層)、以及建立此階層之使用者「Jim」。類似地,使用者資料管理層324及使用者資料修改層326亦可以顯示如圖中所示之相對應之說明資訊。這些說明資訊可以是在建立階層時即手動或自動產生,亦或也可以在階層已建立完成後再產生或編輯,本發明並不設限。
當然,在其他實施例中,可以有更多或更少的階層,亦可以有更複雜的依附關係。舉例來說,程式設計人員可以建立依附在某一階層的子層,而使各階層呈現樹狀分佈。此外,程式設計人員亦可以選擇將兩個或多個階層結合(merge),以建立新的階層,或將程式主檔328與全部或部分的階層予以合併(flatten),建立新版本的程式主檔328,例如在本範例中可為第16版。類似地,各個階層亦可以有自己的版本資訊記錄,以便管控。在本發明中,階層相互之間的結合或是與程式主檔的合併可以很容易完成,例如藉由以下將詳述之抽象語法樹(Abstract Syntax Tree,AST),來解構程式碼並產生相對應的階層檔。
在此必需注意的是,本說明書或圖式中所述許多功能單元標示為功能方塊或模組,以更具體地強調其實施獨立性。例如,可將功能方塊或模組實施為硬體電路,其包含自訂VLSI電路或閘極陣列、如邏輯晶片的現成半導體、電晶體、或其他離散組件。亦可在可程式硬體設備中實施模組,如現場可程式閘極陣列、可程式陣列邏輯、可程式邏輯設備、或其類似物。亦可在利用各種類型之處理器執行的軟體中實施模組。例如,可執行碼的識別模組包含電腦指令的一或多個實體或邏輯區塊,例如,可將這些區塊組織為物件、程序、或功能。然而,識別模組的可執行檔實體上不一定位在一起,而是可包含儲存於不同位置的不同指令,這些指令當邏輯結合一起時將包含模組並達成模組的指定目的。
可執行碼模組可為單一指令或許多指令,並可分布於數個不同程式碼片段上、不同程式中、及數個記憶體裝置上。同樣地,操作資料在此可識別及說明於模組內,並可以任何合適形式體現及組織於任何合適類型的資料結構內。可收集操作資料為單一資料集,或操作資料可分布於不同位置(包括分布於不同的儲存設備),且操作資料可僅作為電子信號至少局部地存在於系統或網路上。
圖5進一步說明依照本發明其中一實施例之流程圖。方法500。在本範例中,係以建立時間資訊記錄層322為例來做為說明。於步驟510中,讀取程式主檔328,以便進行程式編修。在此需注意的是,在其他實施例中,此步驟亦可同時讀取其他相關的階層檔,有關階層檔的實施細節,將在以下進一步說明。回到本範例中,Jim讀取程式主檔328,亦即UserManager.java後,便於步驟520中新建時間資訊記錄層322,並於程式碼顯示區域310中編輯程式碼312。編輯時可以使用前述的識別顏色以與主程式檔區別,或者亦可不顯示差別,視程式開發人員之需求而定。當程式碼312編寫完畢後,便在步驟530中產生程式碼之抽象語法樹,以便完成時間資訊記錄層322之建立。
為說明方便起見,圖6A例示了一個簡單的示範性程式碼,以便說明抽象語法樹的概念。圖上方為修改前之程式碼610,而下方則為修改後之程式碼620。接著,程式碼610及620會被分解為相對應之抽象語法樹之612及622,其係以層級式的樹狀圖來表示。有關抽象語法樹亦可參照http://en.wikipedia.org/wiki/Abstract_syntax_tree。而抽象語法樹在實際使用時,可以藉由各種不同的描述或格式,舉例來說,本實施例中係使用延伸標記語言(eXtensible Markup Language,XML)來描述,如圖所示XML格式之AST 614及624。有關XML之細節可參照http://en.wikipedia.org/wiki/XML。但請注意,在其他實施例中亦可採用其他不同型式的解構方式或儲存格式來產生抽象語法樹,並不影響本發明之實施。例如在其他實施例中,亦可以採用如JavaScript Object Notation(JSON)的格式來建立抽象語法樹。
接著在步驟540中,將原始程式之抽象語法樹614及修改程式之抽象語法樹624進行比較,並依照其差異處在步驟550中產生如圖6B所示之階層檔630。亦即,階層檔630即反應出程式修改前後之差異。最後在步驟560中儲存所產生之階層檔630。階層檔630中記錄有基礎程式主檔之檔名,例如本範到為「base.c」。因此,系統只要有階層檔,便可由對應之程式主檔產生出修改後之程式碼。在實際執行時,原始程式之抽象語法樹614亦可以是事先產生,而在步驟510讀取時與原始程式碼610一併讀取,亦或在其他實施例中,亦可將程式主檔直接以抽象語法樹之形式存在,本發明並不限制。
在本範例中,實際儲存在伺服器110時,原始之程式主檔及各階層檔可以被分別儲存為主程式710及階層檔720、730及740,如圖7A所示。在其他實施例中,可以有更多或更少的階層檔及/或子階層檔,甚或更複雜的依附關係。在另一實施例中,伺服器110亦可額外儲存階層檔清單750,以記錄程式主檔710和各階層檔720、730及740的依附關係,以便能迅速取得與程式主檔710所相關之所有階層檔。
圖8顯示另一依照本發明具體實施例之方法流程圖。在方法800中,程式開發人員(或稱為使用者)透過客戶端於步驟810時讀取伺服器之程式主檔。接著於步驟820中判斷是否仍有其他相關之階層,例如藉由前述之階層檔清單750。倘若仍有與此程式主檔相關聯之階層檔,則進入步驟830,判斷是否該階層檔有被啟用,例如圖4A至圖4C中使用者可自由選取需要之階層。倘若該階層有被啟用,則在步驟840中讀取相對應之階層檔。當所有啟用的階層檔都被讀取後,則在步驟850中顯示所需的程式碼850,例如圖4A至圖4C所示。本範例雖僅例示本發明其中一種實施方式,然而熟此技藝者當知,在其他實施例中,亦可以一併讀取所有階層檔,再依據被啟用的情況顯示相對應之階層檔,並不影響本發明。
因此,程式開發人員可以很輕易地依照實際情況建立各種階層,並加入適當之說明。例如供私人使用之程式碼層、暫時性之偵錯層、或其他各種程式開發過程中所需使用到的功能。這些階層可以一併被儲存,但又不影響原始之程式主檔。當任何程式開發人員要修改程式主檔時,亦可一併取得所有相關之階層檔,並依據各階層檔之功能,選擇是否要一併加入該階層檔之程式碼。如此一來,各種不同功能之程式碼可以被模組化或層級化,並輕易地在各使用者之間分享及重複利用。此外,程式開發人員亦不用浪費時間在每次編輯程式碼時加入或移除私人使用或暫時性之程式碼,更加提高了程式開發之效率。
熟此技藝者當知,前述之實施細節及說明僅用於說明而非限制本發明,本發明實仍可以有許多修改及變化而仍不偏離本發明之精神。舉例來說,抽象語法樹及階層檔之產生,可以在客戶端進行,或者亦可以在伺服器端進行,本發明並不限制。或者,在本範例中本發明係實施在整合開發環境中,但在其他實施例中亦可實施於其他的程式編輯器,甚或單純之文字編輯器中。又或者,本實施例中雖例示具有一中央伺服器之多人協同開發環境中,但在其他實施例中,亦可以實施於單一電腦供多使用者開發程式之環境,甚或亦可以僅用於單一使用者亦不影響本發明之操作與特色。
在不脫離本發明精神或必要特性的情況下,可以其他特定形式來體現本發明。應將所述具體實施例各方面僅視為解說性而非限制性。因此,本發明的範疇如隨附申請專利範圍所示而非如前述說明所示。所有落在申請專利範圍之等效意義及範圍內的變更應視為落在申請專利範圍的範疇內。
110...伺服器
111...處理器
112...主記憶體
113...PCI橋接器
114...PCI區域匯流排
115...LAN配接器
116...SCSI主機匯流排配接器
117...擴充匯流排介面
118...音效配接器
119...圖形配接器
120...音訊/視訊配接器
121...鍵盤與滑鼠配接器
122...數據機
123...無線收發器
124...硬碟機
125...磁帶機
126...光碟機
130、140...網路連線
210、220、230、240...客戶端
222...數據機
242...無線收發器
300...程式開發平台
310...程式碼顯示區域
312、314、316、318...程式碼
320...階層管理區域
322...時間資訊記錄層
324...使用者資料管理層
326...使用者資料修改層
328...程式主檔
610、620...原始程式碼
612、622...抽象語法樹
614、624...XML格式之抽象語法樹
630...階層檔
710...程式主檔
720、730、740...階層檔
750...階層檔清單
為了立即瞭解本發明的優點,請參考如附圖所示的特定具體實施例,詳細說明上文簡短敘述的本發明。在瞭解這些圖示僅描繪本發明的典型具體實施例並因此不將其視為限制本發明範疇的情況下,參考附圖以額外的明確性及細節來說明本發明,圖式中:
圖1為一種依據本發明具體實施例之系統示意圖;
圖2為一種依據本發明具體實施例之伺服器示意圖;
圖3為一種依據本發明具體實施例之程式開發介面示意圖;
圖4A、4B及4C為另一依據本發明具體實施例之程式開發介面示意圖;
圖5為一種依據本發明具體實施例之流程圖;
圖6A及6B為一依據本發明具體實施例之抽象語法樹;
圖7A為一種依據本發明具體實施例之程式主檔與階層之示意圖;
圖7B為一種依據本發明具體實施例之階層檔清單之示意圖;以及
圖8為另一依據本發明具體實施例之流程圖。
110...伺服器
122、222...數據機
123、242...無線收發器
130、140...網路連線
210、220、230、240...客戶端
Claims (18)
- 一種層級式程式源碼管理方法,包含:讀取一程式主檔;建立一階層;在該階層中編輯一程式碼;產生相對應該程式碼之一抽象語法樹;以及將該抽象語法樹與該程式主檔比對,以產生一階層檔。
- 如申請專利範圍第1項所述之方法,其中讀取該程式主檔之步驟更包含:讀取該程式主檔所關聯之至少一階層檔;顯示該程式主檔及該至少一階層檔所對應之程式碼;以及依據一使用者之一操作,選擇是否隱藏該階層檔所對應之程式碼。
- 如申請專利範圍第2項所述之方法,更包含:該使用者選擇至少二階層檔;以及藉由該至少二階層檔所對應之抽象語法樹,將該二階層檔結合而產生一新的階層檔。
- 如申請專利範圍第2項所述之方法,其中該顯示之步驟更包含:利用一識別標識,將該階層檔所對應之程式碼及該程式主檔所對應之程式碼予以區別,其中該識別標識包括下列至少其中之一:背景顏色、文字顏色、框線、字體、及透明度。
- 如申請專利範圍第2項所述之方法,其中該顯示之步驟更包含:將該程式主檔及該至少一階層檔所對應之程式碼顯示於一程式碼顯示區域;以及將該階層檔所對應之一說明資訊顯示於一階層管理區域中。
- 如申請專利範圍第1項所述之方法,更包含:該使用者選擇至少一階層檔;以及藉由該至少一階層檔所對應之抽象語法樹,將該至少一階層檔與該程式主檔合併而產生一新的程式主檔。
- 一種電腦程式產品,供於一電子裝置上執行時進行下列步驟:讀取一程式主檔;建立一階層;在該階層中編輯一程式碼;產生相對應該程式碼之一抽象語法樹;以及將該抽象語法樹與該程式主檔比對,以產生一階層檔。
- 如申請專利範圍第7項所述之電腦程式產品,其中於電子裝置上執行時進行之讀取該程式主檔之步驟更包含:讀取該程式主檔所關聯之至少一階層檔;顯示該程式主檔及該至少一階層檔所對應之程式碼;以及依據一使用者之一操作,選擇是否隱藏該階層檔所對應之程式碼。
- 如申請專利範圍第8項所述之電腦程式產品,其中於電子裝置上執行時進行之步驟更包含:該使用者選擇至少二階層檔;以及藉由該至少二階層檔所對應之抽象語法樹,將該二階層檔結合而產生一新的階層檔。
- 如申請專利範圍第8項所述之電腦程式產品,其中於電子裝置上執行時進行之顯示步驟更包含:利用一識別標識,將該階層檔所對應之程式碼及該程式主檔所對應之程式碼予以區別,其中該識別標識包括下列至少其中之一:背景顏色、文字顏色、框線、字體、及透明度。
- 如申請專利範圍第8項所述之電腦程式產品,其中於電子裝置上執行時進行之顯示步驟更包含:將該程式主檔及該至少一階層檔所對應之程式碼顯示於一程式碼顯示區域;以及將該階層檔所對應之一說明資訊顯示於一階層管理區域中。
- 如申請專利範圍第7項所述之電腦程式產品,其中於電子裝置上執行時進行之步驟更包含:該使用者選擇至少一階層檔;以及藉由該至少一階層檔所對應之抽象語法樹,將該至少一階層檔與該程式主檔合併而產生一新的程式主檔。
- 一種層級式程式源碼管理系統,包括:一儲存裝置,儲存有一程式主檔;以及一處理器,用以執行程式碼以提供一程式開發介面;其中一使用者於該程式開發介面建立一階層,並於該階層中編輯一程式碼,且其中該程式開發介面產生相對應於該程式碼之一抽象語法樹,並將該抽象語法樹與該程式主檔比對以產生一階層檔。
- 如申請專利範圍第13項所述之系統,更包含:一顯示裝置,用以顯示該程式開發介面;其中該程式開發介面讀取該程式主檔所關聯之至少一階層檔,並顯示該程式主檔及該至少一階層檔所對應之程式碼;且其中該程式開發介面依據該使用者之一操作,選擇是否隱藏該階層檔所對應之程式碼。
- 如申請專利範圍第14項所述之系統,其中該程式開發介面更因應該使用者之一操作,藉由至少二階層檔所對應之抽象語法樹,將該二階層檔結合而產生一新的階層檔。
- 如申請專利範圍第14項所述之系統,其中該程式開發介面更利用一識別標識,將該階層檔所對應之程式碼及該程式主檔所對應之程式碼予以區別,且其中該識別標識包括下列至少其中之一:背景顏色、文字顏色、框線、字體、及透明度。
- 如申請專利範圍第14項所述之系統,其中該顯示裝置將該程式主檔及該至少一階層檔所對應之程式碼顯示於該程式開發介面之一程式碼顯示區域,並將該階層檔所對應之一說明資訊顯示於該程式開發介面之一階層管理區域中。
- 如申請專利範圍第13項所述之系統,其中該程式開發介面更因應該使用者之一操作,藉由至少一階層檔所對應之抽象語法樹,將該至少一階層檔與該程式主檔合併而產生一新的程式主檔。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99117403A TWI467481B (zh) | 2010-05-31 | 2010-05-31 | 層級式程式源碼管理方法、系統及電腦程式產品 |
US13/108,926 US8578323B2 (en) | 2010-05-31 | 2011-05-16 | Hierarchical program source management |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW99117403A TWI467481B (zh) | 2010-05-31 | 2010-05-31 | 層級式程式源碼管理方法、系統及電腦程式產品 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201142706A TW201142706A (en) | 2011-12-01 |
TWI467481B true TWI467481B (zh) | 2015-01-01 |
Family
ID=45023226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW99117403A TWI467481B (zh) | 2010-05-31 | 2010-05-31 | 層級式程式源碼管理方法、系統及電腦程式產品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8578323B2 (zh) |
TW (1) | TWI467481B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI754269B (zh) * | 2020-04-14 | 2022-02-01 | 大陸商深圳富桂精密工業有限公司 | 監控資料鏈的方法、裝置及計算機可讀存儲介質 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105431817B (zh) * | 2013-08-01 | 2019-01-04 | 石田伸一 | 源程序比较装置以及存储装置 |
CN105446723B (zh) * | 2014-09-02 | 2018-11-23 | 国际商业机器公司 | 用于标识源代码版本之间的语义区别的方法和装置 |
CN114168119B (zh) * | 2021-12-07 | 2024-04-05 | 北京百度网讯科技有限公司 | 代码文件编辑方法、装置、电子设备以及存储介质 |
US20240028327A1 (en) * | 2022-07-20 | 2024-01-25 | Larsen & Toubro Infotech Ltd | Method and system for building and leveraging a knowledge fabric to improve software delivery lifecycle (sdlc) productivity |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6698013B1 (en) * | 2000-10-04 | 2004-02-24 | Mintaka Technology Group | Real time monitoring system for tracking and documenting changes made by programmer's during maintenance or development of computer readable code on a line by line basis and/or by point of focus |
US20040230964A1 (en) * | 2003-02-13 | 2004-11-18 | Waugh Lawrence Taylor | System and method for managing source code and acquiring metrics in software development |
TW200513908A (en) * | 2003-05-07 | 2005-04-16 | Ibm | Display data mapping method, system, and program product |
TW200844855A (en) * | 2007-03-19 | 2008-11-16 | Microsoft Corp | Using collaborative development information in a team environment |
-
2010
- 2010-05-31 TW TW99117403A patent/TWI467481B/zh not_active IP Right Cessation
-
2011
- 2011-05-16 US US13/108,926 patent/US8578323B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6698013B1 (en) * | 2000-10-04 | 2004-02-24 | Mintaka Technology Group | Real time monitoring system for tracking and documenting changes made by programmer's during maintenance or development of computer readable code on a line by line basis and/or by point of focus |
US20040230964A1 (en) * | 2003-02-13 | 2004-11-18 | Waugh Lawrence Taylor | System and method for managing source code and acquiring metrics in software development |
TW200513908A (en) * | 2003-05-07 | 2005-04-16 | Ibm | Display data mapping method, system, and program product |
TW200844855A (en) * | 2007-03-19 | 2008-11-16 | Microsoft Corp | Using collaborative development information in a team environment |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI754269B (zh) * | 2020-04-14 | 2022-02-01 | 大陸商深圳富桂精密工業有限公司 | 監控資料鏈的方法、裝置及計算機可讀存儲介質 |
Also Published As
Publication number | Publication date |
---|---|
US8578323B2 (en) | 2013-11-05 |
US20110296378A1 (en) | 2011-12-01 |
TW201142706A (en) | 2011-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9158518B2 (en) | Collaborative application development environment using a connected device | |
Guerrero-Garcia et al. | A theoretical survey of user interface description languages: Preliminary results | |
US10255045B2 (en) | Graphical representation of data in a program code editor | |
US20230244465A1 (en) | Systems and methods for automated retrofitting of customized code objects | |
US9804862B2 (en) | Translatable texts identification in in-context localization utilizing pseudo-language and an external server | |
US9778921B2 (en) | Method for creating, exporting, sharing, and installing graphics functional blocks | |
US20200326914A1 (en) | Creating an app method and system | |
TWI467481B (zh) | 層級式程式源碼管理方法、系統及電腦程式產品 | |
US20110185294A1 (en) | Pattern-based user interfaces | |
US20110126171A1 (en) | Dynamic native editor code view facade | |
CN114020256A (zh) | 前端页面生成方法、装置、设备及可读存储介质 | |
Benouda et al. | Automatic code generation within MDA approach for cross-platform mobiles apps | |
US9116708B2 (en) | Program creation support apparatus, program, and information system | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
Taivalsaari | Mashware: The future of web applications | |
US20210271458A1 (en) | Managing an app method and system | |
US8719704B2 (en) | Seamless integration of additional functionality into enterprise software without customization or apparent alteration of same | |
Fujima | Building a meme media platform with a JavaScript MVC framework and HTML5 | |
US20130016921A1 (en) | Method for providing localized images for software products | |
US11809844B2 (en) | Creating an app method and system | |
WO2023143746A1 (en) | System and method for managing artifacts related to apps | |
CN105183491A (zh) | 跨平台的桌面gis系统及其启动方法 | |
US9372669B2 (en) | Multiple architecture viewpoints in single unified modeling language (UML) model | |
Costanich | Developing C♯ Apps for IPhone and IPad Using MonoTouch | |
KR20180090415A (ko) | 디자인 가이드 파일을 생성 또는 보기 위한 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |