TWI570585B - 用以視覺化軟體程式之系統及方法 - Google Patents
用以視覺化軟體程式之系統及方法 Download PDFInfo
- Publication number
- TWI570585B TWI570585B TW103134342A TW103134342A TWI570585B TW I570585 B TWI570585 B TW I570585B TW 103134342 A TW103134342 A TW 103134342A TW 103134342 A TW103134342 A TW 103134342A TW I570585 B TWI570585 B TW I570585B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- software program
- information
- correlation
- architecture
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/323—Visualisation of programs or trace data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- 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/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Instructional Devices (AREA)
Description
本發明關於一種用以處理軟體程式之系統及方法。更具體而言,本發明關於一種用以視覺化軟體程式之系統及方法。
軟體程式現已成為電腦科技產業所必備的一項技術。為了判斷軟體程式是否能正常運作,通常需要進行各種分析及除錯(debug)。為了便於分析及除錯軟體程式,軟體視覺化之相關技術已逐漸受到重視。
隨著運算量及運算複雜度的需求增加,軟體程式的規模也越來越大,也因此,對於大型軟體程式所進行的分析越來越困難。舉例而言,針對大型軟體程式進行分析時,通常會遇到以下問題:程式註解的不足、測試碼(test codes)的缺乏等等。除此之外,大型軟體程式通常需要多人共同處理,也因此,勢必面臨到交接程式碼的完整性、撰寫程式之習慣性等等問題。由於撰寫程式之習慣不同,大型軟體程式容易產生耦合(Coupling)與內聚(Cohesion)之問題。耦合泛指一軟體程式中複數程式模組之間具有關聯性,而內聚泛指一軟體程式中多數程式碼聚集在單一程式模組。然而,傳統的軟體視覺化技術並無法有效地突顯大型軟體程式中出現耦合及內聚的區域。
有鑑於此,如何針對大型軟體程式提供一種有效的軟體視覺化技術,確實為本發明所屬技術領域中的一項重大需求。
本發明之一目的乃是針對大型軟體程式提供一種有效的軟體視覺化技術。
為達上述目的,本發明提供一種用以視覺化一軟體程式之系統。該系統包含一儲存裝置、一處理裝置及一顯示裝置。該儲存裝置用以儲存該軟體程式及其變化記錄(Change Logs)。該軟體程式包含複數類別程式碼(Class Codes),各該類別程式碼包含複數方法程式碼(Method Codes),各該方法程式碼包含複數參數(Parameters)。該處理裝置用以根據資料塊(Data Clumps)資訊、分歧變化(Divergence Change)資訊及散彈槍(Shotgun Surgery)手術資訊至少其中之一建立該軟體程式的一視覺化架構。該處理裝置計算該等類別程式碼內屬性(Attributes)之間的相關性(Correlations)以偵測該軟體程式之資料塊並藉此取得該資料塊資訊。該處理裝置根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊。該處理裝置根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊。該顯示裝置用以根據該視覺化架構顯示該軟體程式。
為達上述目的,本發明亦提供一種用以視覺化一軟體程式之方法。該方法包含下列步驟:
(a)使一儲存裝置儲存該軟體程式及其變化記錄,其中該軟體程式包含複數類別程式碼,各該類別程式碼包含複數方法程式碼,各該方法程式碼包含複數參數;
(b)使一處理裝置根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立該軟體程式的一視覺化架構,其中該處理裝置計算該等類別程式碼內屬性(Attributes)之間的相關性(Correlations)以偵測該軟體程式之資料塊並藉此取得該資料塊資訊,根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊,以及根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊;以及
(c)使一顯示裝置根據該視覺化架構顯示該軟體程式。
(a)使一儲存裝置儲存該軟體程式及其變化記錄,其中該軟體程式包含複數類別程式碼,各該類別程式碼包含複數方法程式碼,各該方法程式碼包含複數參數;
(b)使一處理裝置根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立該軟體程式的一視覺化架構,其中該處理裝置計算該等類別程式碼內屬性(Attributes)之間的相關性(Correlations)以偵測該軟體程式之資料塊並藉此取得該資料塊資訊,根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊,以及根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊;以及
(c)使一顯示裝置根據該視覺化架構顯示該軟體程式。
綜上所述,本發明提供了一種用以視覺化一軟體程式之系統及方法。本發明提供之該系統及該方法可根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立一軟體程式的一視覺化架構,並根據該視覺化架構顯示該軟體程式。由於分歧變化是一軟體程式出現內聚的一個主要原因,故在本發明根據該分歧變化資訊所建立的該視覺化架構中,可有效地突顯該軟體程式出現內聚的區域。另外,由於資料塊以及散彈槍手術是一軟體程式出現耦合的一個主要原因,故在本發明根據該資料塊資訊及該散彈槍手術資訊所建立的該視覺化架構中,可有效地突顯該軟體程式出現耦合的區域。據此,本發明可針對大型軟體程式提供一種有效的軟體視覺化技術。
於參閱圖式及隨後描述的實施方式後,本發明所屬技術領域中具有通常知識者便可更瞭解本發明之目的、技術手段及所達功效。
1‧‧‧系統
11‧‧‧儲存裝置
111‧‧‧軟體程式
113‧‧‧變化記錄
15‧‧‧顯示裝置
20‧‧‧類別程式碼
20a-20l‧‧‧類別程式碼
22‧‧‧方法程式碼
22a-22f‧‧‧方法程式碼
24‧‧‧參數
26‧‧‧屬性
26a-26d‧‧‧屬性
40‧‧‧視覺化結構的第一層
42‧‧‧視覺化結構的第二層
60‧‧‧資料塊關聯性
62‧‧‧分歧變化關聯性
64‧‧‧散彈槍手術關聯性
S21、S23、S25‧‧‧步驟
以下是針對圖式所記載之簡單說明,並非用以限定本發明,其中‧‧‧
第1圖為本發明之一實施例用於視覺化一軟體程式之一系統的一結構例示圖;
第2圖為本發明之一實施例的一軟體程式之一元件組成例示圖;
第3A圖為本發明之一實施例的軟體程式之一視覺化架構之一第一層的一例示圖;
第3B圖為本發明之一實施例的軟體程式之一視覺化架構之一第二層的一例示圖;
第4A圖為本發明之一實施例的資料塊關聯性之一例示圖;
第4B圖為本發明之一實施例的分歧變化關聯性之一例示圖;
第4C圖為本發明之一實施例的散彈槍手術關聯性之一例示圖;以及
第5圖為本發明之一實施例用於視覺化一軟體程式的方法之一例示圖。
以下將透過實施例來解釋本發明的內容,惟以下實施例並非用以限制本發明須在如其所述的環境、應用、結構、流程或步驟方能實施。換言之,以下實施例的說明僅為了便於說明本發明,而非用以限制本發明。於圖式中,與本發明非直接相關的元件皆已省略而未繪示,且各元件之間的尺寸關係僅為了便於說明本發明,而非用以限制實施本發明的實際比例。
本發明之一實施例(簡稱「第一實施例」)為一種用以視覺化一軟體程式之系統。第1圖為該系統的一結構例示圖。如第1圖所示,系統1可包含一儲存裝置11、一處理裝置13及一顯示裝置15。儲存裝置11、處理裝置13及顯示裝置15可直接或間接地電性連接,且相互通訊。系統1可以是一計算機系統,也可以是一雲端系統。
儲存裝置11用以儲存至少一軟體程式111,且軟體程式111可以是由各種不同的程式撰寫工具所產生的軟體程式。第2圖為軟體程式111之一元件組成例示圖。如第2圖所示,如同一般軟體程式,軟體程式111可實質包含複數類別程式碼(Class Codes)20,其中各該類別程式碼可實質包含複數方法程式碼(Method Codes)22,各該方法程式碼可實質包含複數參數(Parameters)24。每一類別程式碼20可具有至少一屬性(Attribute),該至少一屬性可對應至該類別程式碼20、對應至該類別程式碼20包含的方法程式碼22及/或對應至各該方法程式碼包含的參數24。
儲存裝置11還可用以儲存軟體程式111的變化記錄(Change Logs)113。變化記錄113用以分別記錄類別程式碼20、方法程式碼22及參數24曾經被改變的歷史記錄,包含曾被修改、被更新、被除錯等等的歷史記錄。
可選擇地,儲存裝置11可更包含一資料庫115。資料庫115可儲存對應至軟體程式111之至少一開放軟體程式(open software program)。具體而言,該至少一開放軟體程式與軟體程式111相關,且屬於專家公認的開放軟體程式,例如安卓(Android)系統、阿帕契(apache)系統、Chrome系統所提供的開放程式碼。這些開放程式碼可以是每日編譯版(Nightly Builds)或透過標準制定而釋出的開放程式碼。資料庫115儲存的該至少一開放軟體程式可包含複數類別程式碼20,其中各該類別程式碼可實質包含複數方法程式碼22,各該方法程式碼可實質包含複數參數24。每一類別程式碼可具有至少一屬性,該至少一屬性可對應至該類別程式碼、對應至該類別程式碼包含的方法程式碼及/或對應至各該方法程式碼包含的參數。然而,資料庫115儲存的該至少一開放軟體程式並不包含軟體程式111本身。
在儲存裝置11包含資料庫115的情況下,處理裝置13可根據資料庫115儲存的該至少一開放軟體程式,對軟體程式111進行初步分析。具體而言,處理裝置13可計算資料庫115儲存的該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量。然後,處理裝置13可根據該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量界定至少一門檻。
舉例而言,處理裝置13可分別針對該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量計算一統計參數(例如平均值及/或標準差)。然後,處理裝置13可根據各個統計參數分別界定一門檻,或者根據這些統計參數共同界定一門檻。
在界定該至少一門檻後,處理裝置13可比對軟體程式111中相對應的部分是否超出該至少一門檻。舉例而言,處理裝置13可針對該至少一開放軟體程式中某一類別程式碼的行數界定一門檻,然後判斷軟體程式111中相對應的類別程式碼20的行數是否超出該門檻。同理,處理裝置13可針對該至少一開放軟體程式中某一方法程式碼的行數、某一方法程式碼的行數、某一方法程式碼包含的參數的數量、或不同類別程式碼中出現相同屬性的屬性數量界定一門檻,然後判斷軟體程式111中相對應的方法程式碼22的行數、相對應的方法程式碼22包含的參數24的數量、或相對應的不同類別程式碼20中出現相同屬性的屬性數量是否超出該門檻。由於資料庫儲存的是專家所公認的開放軟體程式,故若軟體程式111中相對應的部分超出前述界定的門檻,則軟體程式111出現耦合、內聚或其他問題的可能性就相對來得高。
在判斷軟體程式111中相對應的部分超出該至少一門檻後,處理裝置13可根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立軟體程式111的一視覺化架構。然而,在儲存裝置11不包含資料庫115的情況下,處理裝置13亦可直接根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立軟體程式111的一視覺化架構。在處理裝置13建立該視覺化架構後,顯示裝置15可用以根據該視覺化架構顯示軟體程式111。顯示裝置15可以是各種已知的顯示裝置,例如液晶顯示器、二極體顯示器、觸控顯示器等等。
資料塊資訊可包含軟體程式111中出現資料塊的各種資訊,其中資料塊泛指軟體程式111中不同的類別程式碼20出現相同屬性的一種現象,這也是軟體程式111產生耦合的一個主要原因。為了取得資料塊資訊,處理裝置13可計算軟體程式111包含的該等類別程式碼20內屬性之間的相關性(Correlations),以偵測軟體程式111是否出現資料塊。
分歧變化資訊包含軟體程式111中出現分歧變化的各種資訊,其中分歧變化泛指軟體程式111中某一類別程式碼20中出現複數會共同變化的方法程式碼22的一種現象,這也是軟體程式111產生內聚的一個主要原因。舉例而言,在一類別程式碼20中多個方法程式碼22會共同變化的原因可能是因為呼叫、引用等功能,造成不同的方法程式碼22之間具有相依性、或是不同的方法程式碼22所包含的參數24之間具有相依性。為了取得分歧變化資訊,處理裝置13可根據變化記錄113計算軟體程式111中每一類別程式碼20包含的方法程式碼22之間的相關性,以偵測軟體程式111是否出現分歧變化。實質上,可採用各種已知的相關性演算法來計算每一類別程式碼20所包含的方法程式碼22之間的上述相關性。
散彈槍手術資訊包含軟體程式111中出現散彈槍手術的各種資訊,其中散彈槍手泛指軟體程式111中不同類別程式碼20會共同變化的一種現象,這也是軟體程式111產生耦合的一個主要原因。舉例而言,多個類別程式碼20會共同變化的原因可能是因為呼叫、引用等功能,造成不同的類別程式碼20之間具有相依性、不同的類別程式碼20所包含的方法程式碼22之間具有相依性、及/或不同的類別程式碼20所包含的方法程式碼22,其包含的參數24之間具有相依性。為了取得散彈槍手術資訊,處理裝置13可根據變化記錄113計算軟體程式111包含的類別程式碼20之間的相關性,以偵測軟體程式111是否出現散彈槍手術。實質上,可採用各種已知的相關性演算法計算多個類別程式碼20之間上述相關性。
可選擇地,處理裝置13可串列地或平行地計算軟體程式111中該等類別程式碼20內屬性之間的上述相關性、該等方法程式碼22之間的上述相關性及該等類別程式碼20之間的上述相關性。當採用串列計算時,上述三種相關性的計算順序可根據需求而改變。
可選擇地,處理裝置13為軟體程式111所建立的視覺化架構可以是一階層式架構(hierarchical structure)。該階層式架構可包含複數層級,用以表示對應至不同層級的資訊。舉例而言,軟體程式111包含的類別程式碼20可對應至該階層式架構之一第一層,而軟體程式111包含的方法程式碼22及其參數24與相關的屬性可對應至該階層式架構之一第二層。
可選擇地,顯示裝置15可根據不同的色彩、框線、連接線及/或輪廓等,來顯示處理裝置13為軟體程式111所建立的視覺化架構。以下將以第3A圖及第3B圖為例,說明處理裝置13為軟體程式111所建立的視覺化架構,其中第3A圖為軟體程式111之一視覺化架構之一第一層之一例示圖,而第3B圖為軟體程式111之一視覺化架構之一第二層之一例示圖。
如第3A圖所示,軟體程式111之一視覺化架構之第一層40包含複數類別程式碼20a-20l,其中每一類別程式碼20a-20l是以方形輪廓予以顯示。類別程式碼20之間的相關性的連結可以透過連接線予以表示,例如實線表示實作(implementation) 關係與結合(association)關係,而虛線表示繼承(inheritance)關係。實線可使用不同的端點符號進一步作細分,例如箭頭表示為實作關係,而直線表示為結合關係。另外,實線與虛線有端點符號的一端可表示成引用(reference)的方向。如第3A圖所示,依據連接線的類型,類別程式碼20g與類別程式碼20c具備連結關係,也就是在類別程式碼20g中,將類別程式碼20c視為參照(reference)變數。舉例而言,若類別程式碼20g對應至電話,則類別程式碼20c對應至該電話上的按鈕。另外,顯示裝置15可以利用不同的色彩,代表類別程式碼20b的警示程度。舉例而言,可以用綠色為底色來表示安全,用黃色為底色來表示須注意,而用紅色為底色來表示危險。第3A圖所示的類別程式碼20a-20l,其數量、位置、呈現方式及連接方式僅作為本實施例之一說明範例,而非用以限制本發明。
如第3B圖所示,軟體程式111之一視覺化架構之第二層42呈現了第3A圖所示某一類別程式碼20包含的方法程式碼22及屬性26,其中每一方法程式碼22是以六角形輪廓予以顯示,而每一屬性26是以橢圓形輪廓予以顯示。每一方法程式碼22包含的參數的數量,可以不同框線顏色或類型予以表示。舉例而言,以紅色框線圍繞而成的六角形表示一方法程式碼22包含較多的參數數量,以綠色框線圍繞而成的六角形表示一方法程式碼22包含相對較少的參數數量。第3B圖所示的類別程式碼20、方法程式碼22及屬性26,其數量、位置、呈現方式及連接方式僅作為本實施例之一說明範例,而非用以限制本發明。
可選擇地,顯示裝置15可持續地顯示該階層式架構之第一層40,而選擇性地顯示該階層式架構之第二層42。舉例而言,顯示裝置15最初可呈現如第3A圖所示之多個類別程式碼20及其相關資訊,而當第3A圖所示的某一類別程式碼20被使用者點擊後,顯示裝置15再如第3B圖所示一般,展開 該被點擊的類別程式碼20所包含的方法程式碼22、屬性26及相關資訊。若使用者再次點擊被展開的類別程式碼20,則顯示裝置15將如第3A圖所示,重新呈現該等類別程式碼20及其相關資訊 。
於其他實施例,處理裝置13為軟體程式111所建立的視覺化架構可更包含一第三層(未繪示)。具體而言,當使用者點擊第3B圖所示的某一方法程式碼22,可在該第三層上顯示該方法程式碼22的來源碼(source code),而若再次點擊該方法程式碼22,則會返回第二層42所顯示的內容。
當軟體程式111出現耦合及內聚時,處理裝置13為軟體程式111所建立的視覺化架構可納入第4A圖所示的資料塊關聯性60、第4B圖所示的分歧變化關聯性62及第4C圖所示的散彈槍手術關聯性64,藉以突顯軟體程式111中出現耦合及內聚的區域。 第4A-4B圖所示的內容,僅作為本實施例的一說明範例,並非用以限制本發明。
針對軟體程式111,處理裝置13可根據前述資料塊資訊,為不同類別程式碼中20出現的相同屬性建立一資料塊關聯性。舉例而言,如第4A圖所示,假設處理裝置13發現判斷類別程式碼20b與類別程式碼20f之間相同的屬性有屬性26a、屬性26b、屬性26c、屬性26d,則處理裝置13會判斷軟體程式111出現了資料塊,並連接類別程式碼20b、類別程式碼20f與屬性26a-26d,藉以建立一資料塊關聯性60。然後,處理裝置13為軟體程式111所建立的視覺化架構將會納入資料塊關聯性60,而顯示裝置15在顯示該視覺化架構時,也會一併顯示出資料塊關聯性60。
針對軟體程式111,處理裝置13可根據前述分歧變化資訊,為每一類別程式碼中20中共同變化的複數個方法程式碼建立一分歧變化關聯性。舉例而言,如第4B圖所示,假設處理裝置13根據變化記錄113發現類別程式碼20b中,方法程式碼22a、方法程式碼22b及方法程式碼22c會共同變化(例如曾共同被修改、被更新、被除錯等),而方法程式碼22d及方法程式碼22e會共同變化(例如曾共同被修改、被更新、被除錯等),則處理裝置13會判斷方法程式碼22d出現了分歧變化,並將會共同變化方法程式碼22a-22c區分為一第一群組,且將會共同變化方法程式碼22d-22e區分為一第二群組,以及將方法程式碼22f區分為一第三群組,藉以建立一分歧變化關聯性62。屬於相同群組的方法程式碼22會被相鄰設置,以與其他群組有所區隔。然後,處理裝置13為軟體程式111所建立的視覺化架構將會納入分歧變化關聯性62,而顯示裝置15在顯示該視覺化架構時,也會一併顯示出分歧變化關聯性62。
針對軟體程式111,處理裝置13可根據前述散彈槍手術資訊,為共同變化的複數類別程式碼20建立一散彈槍手術關聯性。舉例而言,如第4C圖所示,假設處理裝置13根據變化記錄113發現類別程式碼20a、類別程式碼20b、類別程式碼20c及類別程式碼20d會共同變化(例如曾共同被修改、被更新、被除錯等),而類別程式碼20e、及類別程式碼20f會共同變化(例如曾共同被修改、被更新、被除錯等),則處理裝置13會判斷軟體程式111出現了散彈槍手術,並將會共同變化類別程式碼20a-20d區分為一第二群組,以及將類別程式碼20e-20f區分為一第二群組,藉以建立一散彈槍手術關聯性64。屬於相同群組的方法程式碼22會被相鄰設置,以與其他群組有所區隔。然後,處理裝置13為軟體程式111所建立的視覺化架構將會納入散彈槍手術關聯性64,而顯示裝置15在顯示該視覺化架構時,也會一併顯示出散彈槍手術關聯性64。
本發明的另一實施例(簡稱「第二實施例」)為一種用以視覺化一軟體程式之方法。第5圖為第二實施例揭示之方法之一例示圖。如第5圖所示,本實施例揭示之方法包含:步驟S21,使一儲存裝置儲存該軟體程式及其變化記錄,其中該軟體程式包含複數類別程式碼,各該類別程式碼包含複數方法程式碼,各該方法程式碼包含複數參數;步驟S23,使一處理裝置根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立該軟體程式的一視覺化架構,其中該處理裝置計算該等類別程式碼內屬性之間的相關性以偵測該軟體程式之資料塊並藉此取得該資料塊資訊,根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊,以及根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊;以及步驟S25,使一顯示裝置根據該視覺化架構顯示該軟體程式。
步驟S21-S25中所述的儲存裝置、處理裝置及顯示裝置可實質地對應至前述實施例之儲存裝置11、處理裝置13及顯示裝置15。另,步驟S21-S25所呈現的順序並非用以限制本發明,且在不脫離本發明之精神的前提下,可以適當地進行調整。
作為本實施例之一範例,步驟S23更包含下列步驟:使該處理裝置根據該資料塊資訊為不同類別程式碼中出現的相同屬性建立一資料塊關聯性,根據該分歧變化資訊為一類別程式碼中共同變化的複數方法程式碼建立一分歧變化關聯性,根據該散彈槍手術資訊為共同變化的複數類別程式碼建立一散彈槍手術關聯性,以及將該資料塊關聯性、該分歧變化關聯性及該散彈槍手術關聯性至少其中之一納入該視覺化架構。
作為本實施例之一範例,該儲存裝置包含一資料庫,該資料庫儲存對應至該軟體程式之至少一開放軟體程式。除此之外,步驟S23更包含下列步驟:使該處理裝置根據該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量界定至少一門檻,並在判斷該軟體程式中相對應的部分超出該至少一門檻後,才根據該資料塊資訊、該分歧變化資訊及該散彈槍手術資訊至少其中之一建立該視覺化架構。
作為本實施例之一範例,該處理裝置串列地或平行地計算該等類別程式碼內屬性之間的該相關性、該等方法程式碼之間的該相關性及該等類別程式碼之間的相關性。
作為本實施例之一範例,該視覺化架構為一階層式架構(hierarchical structure),該軟體程式的該等類別程式碼對應至該階層式架構之一第一層,而該軟體程式的該等方法程式碼及其參數與屬性對應至該階層式架構之一第二層。
作為本實施例之一範例,該視覺化架構為一階層式架構(hierarchical structure),該軟體程式的該等類別程式碼對應至該階層式架構之一第一層,而該軟體程式的該等方法程式碼及其參數與屬性對應至該階層式架構之一第二層。除此之外,該顯示裝置持續地顯示該階層式架構之該第一層,且選擇性地顯示該階層式架構之該第二層。
作為本實施例之一範例,該視覺化架構為一階層式架構(hierarchical structure),該軟體程式的該等類別程式碼對應至該階層式架構之一第一層,而該軟體程式的該等方法程式碼及其參數與屬性對應至該階層式架構之一第二層。除此之外,該顯示裝置根據色彩、框線、連接線及輪廓顯示該階層式架構。
第二實施例所揭示之方法實質上包含了對應至第一實施例揭示之系統1之所有運作的步驟。由於本發明所屬技術領域中具有通常知識者可根據前述實施例的相關揭示,而直接瞭解第二實施例未記載的相對應步驟,於此不多贅述。
綜上所述,本發明提供了一種用以視覺化一軟體程式之系統及方法。本發明提供之該系統及該方法可根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立一軟體程式的一視覺化架構,並根據該視覺化架構顯示該軟體程式。由於分歧變化是一軟體程式出現內聚的一個主要原因,故在本發明根據該分歧變化資訊所建立的該視覺化架構中,可有效地突顯該軟體程式出現內聚的區域。另外,由於資料塊以及散彈槍手術是一軟體程式出現耦合的一個主要原因,故在本發明根據該資料塊資訊及該散彈槍手術資訊所建立的該視覺化架構中,可有效地突顯該軟體程式出現耦合的區域。據此,本發明可針對大型軟體程式提供一種有效的軟體視覺化技術。
上述實施例並非用以限制本發明的實施方式,且任何熟悉此技術者可輕易完成的改變或均等性的安排皆不脫離本發明。本發明的範圍以申請專利範圍為準。
國內寄存資訊【請依寄存機構、日期、號碼順序註記】
國外寄存資訊【請依寄存國家、機構、日期、號碼順序註記】
S21、S23、S25‧‧‧步驟
Claims (12)
- 一種用以視覺化一軟體程式之系統,包含:一儲存裝置,用以儲存該軟體程式及其變化記錄(Change Logs),該軟體程式包含複數類別程式碼(Class Codes),各該類別程式碼包含複數方法程式碼(Method Codes),各該方法程式碼包含複數參數(Parameters);一處理裝置,用以根據資料塊(Data Clumps)資訊、分歧變化(Divergence Change)資訊及散彈槍(Shotgun Surgery)手術資訊至少其中之一建立該軟體程式的一視覺化架構;以及一顯示裝置,用以根據該視覺化架構顯示該軟體程式;其中,該處理裝置計算該等類別程式碼內屬性(Attributes)之間的相關性(Correlations)以偵測該軟體程式之資料塊並藉此取得該資料塊資訊,根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊,以及根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊;以及其中,該處理裝置根據該資料塊資訊為不同類別程式碼中出現的相同屬性建立一資料塊關聯性,根據該分歧變化資訊為一類別程式碼中共同變化的複數方法程式碼建立一分歧變化關聯性,根據該散彈槍手術資訊為共同變化的複數類別程式碼建立一散彈槍手術關聯性,以及將該資料塊關聯性、該分歧變化關聯性及該散彈槍手術關聯性至少其中之一,納入該視覺化架構。
- 如請求項1所述之系統,其中該儲存裝置包含一資料庫,該資料庫儲存對應至該軟體程式之至少一開放軟體程式,該處理裝置更根據該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量界定至少一門檻,並在判斷該軟體程式中相對應的部分超出該至少一門檻後,才根據該資料塊資訊、該分歧變化資訊及該散彈槍手術資訊至少其中之一建立該視覺化架構。
- 如請求項1所述之系統,其中該處理裝置串列地或平行地計算該等類別程式碼內屬性之間的該相關性、該等方法程式碼之間的該相關性及該等類別程式碼之間的相關性。
- 如請求項1所述之系統,其中該視覺化架構為一階層式架構(hierarchical structure),該軟體程式的該等類別程式碼對應至該階層式架構之一第一層,而該軟體程式的該等方法程式碼及其參數與屬性對應至該階層式架構之一第二層。
- 如請求項4所述之系統,其中該顯示裝置持續地顯示該階層式架構之該第一層,且選擇性地顯示該階層式架構之該第二層。
- 如請求項4所述之系統,其中該顯示裝置更根據色彩、框線、連接線及輪廓顯示該階層式架構。
- 一種用以視覺化一軟體程式之方法,包含下列步驟:(a)使一儲存裝置儲存該軟體程式及其變化記錄,其中該軟體程式包含複數類別程式碼,各該類別程式碼包含複數方法 程式碼,各該方法程式碼包含複數參數;(b)使一處理裝置根據資料塊資訊、分歧變化資訊及散彈槍手術資訊至少其中之一建立該軟體程式的一視覺化架構,其中該處理裝置計算該等類別程式碼內屬性(Attributes)之間的相關性(Correlations)以偵測該軟體程式之資料塊並藉此取得該資料塊資訊,根據該變化記錄計算該等方法程式碼之間的相關性以偵測該軟體程式之分歧變化並藉此取得該分歧變化資訊,以及根據該變化記錄計算該等類別程式碼之間的相關性以偵測該軟體程式之散彈槍手術並藉此取得該散彈槍手術資訊;以及(c)使一顯示裝置根據該視覺化架構顯示該軟體程式;其中,該步驟(b)更包含下列步驟:使該處理裝置根據該資料塊資訊為不同類別程式碼中出現的相同屬性建立一資料塊關聯性,根據該分歧變化資訊為一類別程式碼中共同變化的複數方法程式碼建立一分歧變化關聯性,根據該散彈槍手術資訊為共同變化的複數類別程式碼建立一散彈槍手術關聯性,以及將該資料塊關聯性、該分歧變化關聯性及該散彈槍手術關聯性至少其中之一納入該視覺化架構。
- 如請求項7所述之方法,其中該儲存裝置包含一資料庫,該資料庫儲存對應至該軟體程式之至少一開放軟體程式,且該步驟(b)更包含下列步驟:使該處理裝置根據該至少一開放軟體程式中各個類別程式碼的行數、各個方法程式碼的行數、各個方法程式碼包含的參數的數量、及不同類別程式碼中出現相同屬性的屬性數量界定至少一門檻,並在判斷該軟體程式中相對應的部分超出該至少一門檻後,才根據該資料塊資訊、該分 歧變化資訊及該散彈槍手術資訊至少其中之一建立該視覺化架構。
- 如請求項7所述之方法,其中該處理裝置串列地或平行地計算該等類別程式碼內屬性之間的該相關性、該等方法程式碼之間的該相關性及該等類別程式碼之間的相關性。
- 如請求項7所述之方法,其中該視覺化架構為一階層式架構(hierarchical structure),該軟體程式的該等類別程式碼對應至該階層式架構之一第一層,而該軟體程式的該等方法程式碼及其參數與屬性對應至該階層式架構之一第二層。
- 如請求項10所述之方法,其中該顯示裝置持續地顯示該階層式架構之該第一層,且選擇性地顯示該階層式架構之該第二層。
- 如請求項10所述之方法,其中該顯示裝置根據色彩、框線、連接線及輪廓顯示該階層式架構。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103134342A TWI570585B (zh) | 2014-10-02 | 2014-10-02 | 用以視覺化軟體程式之系統及方法 |
CN201410553578.XA CN105573906B (zh) | 2014-10-02 | 2014-10-17 | 用以视觉化软件程序的系统及方法 |
US14/599,538 US9760473B2 (en) | 2014-10-02 | 2015-01-18 | System and method for visualizing software programs |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW103134342A TWI570585B (zh) | 2014-10-02 | 2014-10-02 | 用以視覺化軟體程式之系統及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201614527A TW201614527A (en) | 2016-04-16 |
TWI570585B true TWI570585B (zh) | 2017-02-11 |
Family
ID=55632873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103134342A TWI570585B (zh) | 2014-10-02 | 2014-10-02 | 用以視覺化軟體程式之系統及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9760473B2 (zh) |
CN (1) | CN105573906B (zh) |
TW (1) | TWI570585B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3623948B1 (en) * | 2018-09-14 | 2021-09-29 | Tata Consultancy Services Limited | Method and system for code analysis to identify causes of code smells |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201145015A (en) * | 2009-12-23 | 2011-12-16 | Intel Corp | Relational modeling for performance analysis of multi-core processors |
US20130047140A1 (en) * | 2011-08-16 | 2013-02-21 | International Business Machines Corporation | Tracking of code base and defect diagnostic coupling with automated triage |
US20130097582A1 (en) * | 2011-10-18 | 2013-04-18 | International Business Machines Corporation | Hierarchical functional and variable composition diagramming of a programming class |
US20140137076A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Indicating hierarchy diversion in a class diagram |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6429860B1 (en) * | 1999-06-15 | 2002-08-06 | Visicomp, Inc. | Method and system for run-time visualization of the function and operation of a computer program |
US7406677B2 (en) * | 2003-06-18 | 2008-07-29 | Microsoft Corporation | Generating program classes for use with localized resources |
DE102005025644A1 (de) * | 2004-06-03 | 2006-01-26 | MDL Information Systems, Inc., San Leandro | Verfahren und Vorrichtung zum visuellen Applikationenentwurf |
US7934192B2 (en) * | 2005-12-15 | 2011-04-26 | International Business Machines Corporation | Computer method and apparatus for connection tree routing in visual modeling of software |
US20080163063A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Graphical user interface system and method for presenting information related to session and cache objects |
US20080228812A1 (en) * | 2007-03-15 | 2008-09-18 | Honeywell International Inc. | Method and System for Metamodeling Using Dynamic Ontology Objects |
US20090319993A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation, | Generalized and extensible software architecture representation |
KR100990994B1 (ko) * | 2008-10-31 | 2010-10-29 | 한국전자통신연구원 | 향기 재생정보를 갖는 컨텐츠 생성장치, 재생장치 및 그 재생방법 |
US9047399B2 (en) * | 2010-02-26 | 2015-06-02 | Red Hat, Inc. | Generating visualization from running executable code |
US9716632B2 (en) * | 2010-08-24 | 2017-07-25 | Hewlett Packard Enterprise Development Lp | Interactive layered visualization of a layered software architecture |
CN102385505B (zh) | 2010-08-30 | 2013-03-20 | 北京理工大学 | 针对面向对象程序设计语言源代码的软件可视化方法 |
CN101957757B (zh) | 2010-09-30 | 2012-11-14 | 北京理工大学 | 一种适用于软件可视化过程的图形布局方法 |
US8799859B2 (en) * | 2011-05-19 | 2014-08-05 | Siemens Aktiengesellschaft | Augmented design structure matrix visualizations for software system analysis |
CN103699541B (zh) * | 2012-09-28 | 2018-01-19 | 伊姆西公司 | 用于提高分类精度的交互式可视数据挖掘 |
US20140258968A1 (en) * | 2013-03-05 | 2014-09-11 | Research In Motion Limited | Visual Representation Of Edits For Collaborative Application Development |
US8904389B2 (en) * | 2013-04-30 | 2014-12-02 | Splunk Inc. | Determining performance states of components in a virtual machine environment based on performance states of related subcomponents |
US9437021B2 (en) * | 2013-11-27 | 2016-09-06 | Globalfoundries Inc. | Dynamic visualization for optimization processes |
-
2014
- 2014-10-02 TW TW103134342A patent/TWI570585B/zh active
- 2014-10-17 CN CN201410553578.XA patent/CN105573906B/zh active Active
-
2015
- 2015-01-18 US US14/599,538 patent/US9760473B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201145015A (en) * | 2009-12-23 | 2011-12-16 | Intel Corp | Relational modeling for performance analysis of multi-core processors |
US20130047140A1 (en) * | 2011-08-16 | 2013-02-21 | International Business Machines Corporation | Tracking of code base and defect diagnostic coupling with automated triage |
US20130097582A1 (en) * | 2011-10-18 | 2013-04-18 | International Business Machines Corporation | Hierarchical functional and variable composition diagramming of a programming class |
US20140137076A1 (en) * | 2012-11-13 | 2014-05-15 | International Business Machines Corporation | Indicating hierarchy diversion in a class diagram |
Also Published As
Publication number | Publication date |
---|---|
CN105573906A (zh) | 2016-05-11 |
CN105573906B (zh) | 2018-05-08 |
US20160098272A1 (en) | 2016-04-07 |
TW201614527A (en) | 2016-04-16 |
US9760473B2 (en) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020207190A1 (zh) | 一种三维信息确定方法、三维信息确定装置及终端设备 | |
CN109993316B (zh) | 执行机器学习流程的方法及系统 | |
US20140046892A1 (en) | Method and system for visualizing information extracted from big data | |
WO2015025694A1 (ja) | セキュリティ上の脅威を評価する評価装置及びその方法 | |
JP2016521422A5 (zh) | ||
US9910487B1 (en) | Methods, systems and computer program products for guiding users through task flow paths | |
US10481961B1 (en) | API and streaming solution for documenting data lineage | |
US20180137570A1 (en) | Devices, methods and computer program products providing user interfaces for visualization of user inputs and responses thereto | |
WO2020038089A1 (zh) | 终端、在终端上执行操作的方法、装置及存储介质 | |
JP5539301B2 (ja) | ロジック図面検索装置 | |
TWI570585B (zh) | 用以視覺化軟體程式之系統及方法 | |
KR20150110063A (ko) | 빅데이터 처리를 위한 맵리듀스를 통합하는 장치 및 방법 | |
US20170212736A1 (en) | Management apparatus and management method | |
US20150213069A1 (en) | Tag Based System For Leveraging Design Data | |
JP2013210756A5 (ja) | ワークフロー作成方法、プログラム | |
US20130055168A1 (en) | Multi-select tools | |
CN111143572A (zh) | 关联图谱构建方法、装置、计算机设备、及存储介质 | |
CN108345791B (zh) | 处理器安全检测方法、系统及检测装置 | |
US20180052948A1 (en) | Analysis mesh manufacturing equipment and method | |
CN114048487A (zh) | 网络靶场的攻击过程评估方法、装置、存储介质及设备 | |
TWM554206U (zh) | 房價地理資訊評估系統 | |
CN107729478B (zh) | 一种数据分析方法和装置 | |
CN108880835A (zh) | 数据分析方法及装置、计算机存储介质 | |
JP7058498B2 (ja) | 構造解析シミュレーションプログラム、構造解析シミュレーション方法及び情報処理装置 | |
US20140156969A1 (en) | Verification of a vector execution unit design |