CN105573906A - 用以视觉化软件程序的系统及方法 - Google Patents

用以视觉化软件程序的系统及方法 Download PDF

Info

Publication number
CN105573906A
CN105573906A CN201410553578.XA CN201410553578A CN105573906A CN 105573906 A CN105573906 A CN 105573906A CN 201410553578 A CN201410553578 A CN 201410553578A CN 105573906 A CN105573906 A CN 105573906A
Authority
CN
China
Prior art keywords
code
software program
program
information
data block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410553578.XA
Other languages
English (en)
Other versions
CN105573906B (zh
Inventor
李信杰
李允中
陈静芳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute for Information Industry
Original Assignee
Institute for Information Industry
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute for Information Industry filed Critical Institute for Information Industry
Publication of CN105573906A publication Critical patent/CN105573906A/zh
Application granted granted Critical
Publication of CN105573906B publication Critical patent/CN105573906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software 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)

Abstract

本发明提供一种用以视觉化一软件程序的系统及方法。该系统用以存储该软件程序及其变化记录。该系统更用以根据数据块信息、分歧变化信息及散弹枪手术信息至少其中之一来建立该软件程序的一视觉化架构,并根据该视觉化架构显示该软件程序。该方法用以使该系统执行上述运作。

Description

用以视觉化软件程序的系统及方法
技术领域
本发明关于一种用以处理软件程序的系统及方法。更具体而言,本发明关于一种用以视觉化软件程序的系统及方法。
背景技术
软件程序现已成为电脑科技产业所必备的一项技术。为了判断软件程序是否能正常运作,通常需要进行各种分析及除错(debug)。为了便于分析及除错软件程序,软件视觉化的相关技术已逐渐受到重视。
随着运算量及运算复杂度的需求增加,软件程序的规模也越来越大,也因此,对于大型软件程序所进行的分析越来越困难。举例而言,针对大型软件程序进行分析时,通常会遇到以下问题:程序注解的不足、测试码(testcodes)的缺乏等等。除此之外,大型软件程序通常需要多人共同处理,也因此,势必面临到交接程序码的完整性、撰写程序的习惯性等等问题。由于撰写程序的习惯不同,大型软件程序容易产生耦合(Coupling)与内聚(Cohesion)的问题。耦合泛指一软件程序中多个程序模块之间具有关联性,而内聚泛指一软件程序中多数程序码聚集在单一程序模块。然而,传统的软件视觉化技术并无法有效地突显大型软件程序中出现耦合及内聚的区域。
有鉴于此,如何针对大型软件程序提供一种有效的软件视觉化技术,确实为本发明所属技术领域中的一项重大需求。
发明内容
本发明的一目的是针对大型软件程序提供一种有效的软件视觉化技术。
为达上述目的,本发明提供一种用以视觉化一软件程序的系统。该系统包含一存储装置、一处理装置及一显示装置。该存储装置用以存储该软件程序及其变化记录(ChangeLogs)。该软件程序包含多个类别程序码(ClassCodes),各该类别程序码包含多个方法程序码(MethodCodes),各该方法程序码包含多个参数(Parameters)。该处理装置用以根据数据块(DataClumps)信息、分歧变化(DivergenceChange)信息及散弹枪(ShotgunSurgery)手术信息至少其中之一建立该软件程序的一视觉化架构。该处理装置计算所述多个类别程序码内属性(Attributes)之间的相关性(Correlations)以侦测该软件程序的数据块并藉此取得该数据块信息。该处理装置根据该变化记录计算所述多个方法程序码之间的相关性以侦测该软件程序的分歧变化并藉此取得该分歧变化信息。该处理装置根据该变化记录计算所述多个类别程序码之间的相关性以侦测该软件程序的散弹枪手术并藉此取得该散弹枪手术信息。该显示装置用以根据该视觉化架构显示该软件程序。
为达上述目的,本发明亦提供一种用以视觉化一软件程序的方法。该方法包含下列步骤:
(a)使一存储装置存储该软件程序及其变化记录,其中该软件程序包含多个类别程序码,各该类别程序码包含多个方法程序码,各该方法程序码包含多个参数;
(b)使一处理装置根据数据块信息、分歧变化信息及散弹枪手术信息至少其中之一建立该软件程序的一视觉化架构,其中该处理装置计算所述多个类别程序码内属性(Attributes)之间的相关性(Correlations)以侦测该软件程序的数据块并藉此取得该数据块信息,根据该变化记录计算所述多个方法程序码之间的相关性以侦测该软件程序的分歧变化并藉此取得该分歧变化信息,以及根据该变化记录计算所述多个类别程序码之间的相关性以侦测该软件程序的散弹枪手术并藉此取得该散弹枪手术信息;以及
(c)使一显示装置根据该视觉化架构显示该软件程序。
综上所述,本发明提供了一种用以视觉化一软件程序的系统及方法。本发明提供的该系统及该方法可根据数据块信息、分歧变化信息及散弹枪手术信息至少其中之一建立一软件程序的一视觉化架构,并根据该视觉化架构显示该软件程序。由于分歧变化是一软件程序出现内聚的一个主要原因,故在本发明根据该分歧变化信息所建立的该视觉化架构中,可有效地突显该软件程序出现内聚的区域。另外,由于数据块以及散弹枪手术是一软件程序出现耦合的一个主要原因,故在本发明根据该数据块信息及该散弹枪手术信息所建立的该视觉化架构中,可有效地突显该软件程序出现耦合的区域。据此,本发明可针对大型软件程序提供一种有效的软件视觉化技术。
于参阅附图及随后描述的实施方式后,本发明所属领域的技术人员便可更了解本发明的目的、技术手段及所达功效。
附图说明
以下是针对附图所记载的简单说明,并非用以限定本发明,其中:
图1为本发明的一实施例用于视觉化一软件程序的一系统的一结构例示图;
图2为本发明的一实施例的一软件程序的一元件组成例示图;
图3A为本发明的一实施例的软件程序的一视觉化架构的一第一层的一例示图;
图3B为本发明的一实施例的软件程序的一视觉化架构的一第二层的一例示图;
图4A为本发明的一实施例的数据块关联性的一例示图;
图4B为本发明的一实施例的分歧变化关联性的一例示图;
图4C为本发明的一实施例的散弹枪手术关联性的一例示图;以及
图5为本发明的一实施例用于视觉化一软件程序的方法的一例示图。
【符号说明】
1:系统
11:存储装置
111:软件程序
113:变化记录
15:显示装置
20:类别程序码
20a-20l:类别程序码
22:方法程序码
22a-22f:方法程序码
24:参数
26:属性
26a-26d:属性
40:视觉化结构的第一层
42:视觉化结构的第二层
60:数据块关联性
62:分歧变化关联性
64:散弹枪手术关联性
S21、S23、S25:步骤
具体实施方式
以下将通过实施例来解释本发明的内容,惟以下实施例并非用以限制本发明须在如其所述的环境、应用、结构、流程或步骤方能实施。换言之,以下实施例的说明仅为了便于说明本发明,而非用以限制本发明。于附图中,与本发明非直接相关的元件皆已省略而未绘示,且各元件之间的尺寸关系仅为了便于说明本发明,而非用以限制实施本发明的实际比例。
本发明的一实施例(简称「第一实施例」)为一种用以视觉化一软件程序的系统。图1为该系统的一结构例示图。如图1所示,系统1可包含一存储装置11、一处理装置13及一显示装置15。存储装置11、处理装置13及显示装置15可直接或间接地电性连接,且相互通讯。系统1可以是一计算机系统,也可以是一云端系统。
存储装置11用以存储至少一软件程序111,且软件程序111可以是由各种不同的程序撰写工具所产生的软件程序。图2为软件程序111的一元件组成例示图。如图2所示,如同一般软件程序,软件程序111可实质包含多个类别程序码(ClassCodes)20,其中各该类别程序码可实质包含多个方法程序码(MethodCodes)22,各该方法程序码可实质包含多个参数(Parameters)24。每一类别程序码20可具有至少一属性(Attribute),该至少一属性可对应至该类别程序码20、对应至该类别程序码20包含的方法程序码22及/或对应至各该方法程序码包含的参数24。
存储装置11还可用以存储软件程序111的变化记录(ChangeLogs)113。变化记录113用以分别记录类别程序码20、方法程序码22及参数24曾经被改变的历史记录,包含曾被修改、被更新、被除错等等的历史记录。
可选择地,存储装置11可更包含一数据库115。数据库115可存储对应至软件程序111的至少一开放软件程序(opensoftwareprogram)。具体而言,该至少一开放软件程序与软件程序111相关,且属于专家公认的开放软件程序,例如安卓(Android)系统、阿帕奇(apache)系统、Chrome系统所提供的开放程序码。这些开放程序码可以是每日编译版(NightlyBuilds)或通过标准制定而释出的开放程序码。数据库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所建立的视觉化架构可以是一阶层式架构(hierarchicalstructure)。该阶层式架构可包含多个层级,用以表示对应至不同层级的信息。举例而言,软件程序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的来源码(sourcecode),而若再次点击该方法程序码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更包含下列步骤:使该处理装置根据该至少一开放软件程序中各个类别程序码的行数、各个方法程序码的行数、各个方法程序码包含的参数的数量、及不同类别程序码中出现相同属性的属性数量界定至少一门槛,并在判断该软件程序中相对应的部分超出该至少一门槛后,才根据该数据块信息、该分歧变化信息及该散弹枪手术信息至少其中之一建立该视觉化架构。
作为本实施例的一范例,该处理装置串行地或并行地计算所述多个类别程序码内属性之间的该相关性、所述多个方法程序码之间的该相关性及所述多个类别程序码之间的相关性。
作为本实施例的一范例,该视觉化架构为一阶层式架构(hierarchicalstructure),该软件程序的所述多个类别程序码对应至该阶层式架构的一第一层,而该软件程序的所述多个方法程序码及其参数与属性对应至该阶层式架构的一第二层。
作为本实施例的一范例,该视觉化架构为一阶层式架构(hierarchicalstructure),该软件程序的所述多个类别程序码对应至该阶层式架构的一第一层,而该软件程序的所述多个方法程序码及其参数与属性对应至该阶层式架构的一第二层。除此之外,该显示装置持续地显示该阶层式架构的该第一层,且选择性地显示该阶层式架构的该第二层。
作为本实施例的一范例,该视觉化架构为一阶层式架构(hierarchicalstructure),该软件程序的所述多个类别程序码对应至该阶层式架构的一第一层,而该软件程序的所述多个方法程序码及其参数与属性对应至该阶层式架构的一第二层。除此之外,该显示装置根据色彩、框线、连接线及轮廓显示该阶层式架构。
第二实施例所揭示的方法实质上包含了对应至第一实施例揭示的系统1的所有运作的步骤。由于本发明所属领域的技术人员可根据前述实施例的相关揭示,而直接了解第二实施例未记载的相对应步骤,于此不多赘述。
综上所述,本发明提供了一种用以视觉化一软件程序的系统及方法。本发明提供的该系统及该方法可根据数据块信息、分歧变化信息及散弹枪手术信息至少其中之一建立一软件程序的一视觉化架构,并根据该视觉化架构显示该软件程序。由于分歧变化是一软件程序出现内聚的一个主要原因,故在本发明根据该分歧变化信息所建立的该视觉化架构中,可有效地突显该软件程序出现内聚的区域。另外,由于数据块以及散弹枪手术是一软件程序出现耦合的一个主要原因,故在本发明根据该数据块信息及该散弹枪手术信息所建立的该视觉化架构中,可有效地突显该软件程序出现耦合的区域。据此,本发明可针对大型软件程序提供一种有效的软件视觉化技术。
上述实施例并非用以限制本发明的实施方式,且任何熟悉此技术者可轻易完成的改变或均等性的安排皆不脱离本发明。本发明的范围以权利要求为准。

Claims (14)

1.一种用以视觉化一软件程序的系统,包含:
一存储装置,用以存储该软件程序及其变化记录(ChangeLogs),该软件程序包含多个类别程序码(ClassCodes),各该类别程序码包含多个方法程序码(MethodCodes),各该方法程序码包含多个参数(Parameters);
一处理装置,用以根据数据块(DataClumps)信息、分歧变化(DivergenceChange)信息及散弹枪(ShotgunSurgery)手术信息至少其中之一建立该软件程序的一视觉化架构;以及
一显示装置,用以根据该视觉化架构显示该软件程序;
其中,该处理装置计算所述多个类别程序码内属性(Attributes)之间的相关性(Correlations)以侦测该软件程序的数据块并藉此取得该数据块信息,根据该变化记录计算所述多个方法程序码之间的相关性以侦测该软件程序的分歧变化并藉此取得该分歧变化信息,以及根据该变化记录计算所述多个类别程序码之间的相关性以侦测该软件程序的散弹枪手术并藉此取得该散弹枪手术信息。
2.如权利要求1所述的系统,其特征在于,该处理装置根据该数据块信息为不同类别程序码中出现的相同属性建立一数据块关联性,根据该分歧变化信息为一类别程序码中共同变化的多个方法程序码建立一分歧变化关联性,根据该散弹枪手术信息为共同变化的多个类别程序码建立一散弹枪手术关联性,以及将该数据块关联性、该分歧变化关联性及该散弹枪手术关联性至少其中之一,纳入该视觉化架构。
3.如权利要求1所述的系统,其特征在于,该存储装置包含一数据库,该数据库存储对应至该软件程序的至少一开放软件程序,该处理装置更根据该至少一开放软件程序中各个类别程序码的行数、各个方法程序码的行数、各个方法程序码包含的参数的数量、及不同类别程序码中出现相同属性的属性数量界定至少一门槛,并在判断该软件程序中相对应的部分超出该至少一门槛后,才根据该数据块信息、该分歧变化信息及该散弹枪手术信息至少其中之一建立该视觉化架构。
4.如权利要求1所述的系统,其特征在于,该处理装置串行地或并行地计算所述多个类别程序码内属性之间的该相关性、所述多个方法程序码之间的该相关性及所述多个类别程序码之间的相关性。
5.如权利要求1所述的系统,其特征在于,该视觉化架构为一阶层式架构(hierarchicalstructure),该软件程序的所述多个类别程序码对应至该阶层式架构的一第一层,而该软件程序的所述多个方法程序码及其参数与属性对应至该阶层式架构的一第二层。
6.如权利要求5所述的系统,其特征在于,该显示装置持续地显示该阶层式架构的该第一层,且选择性地显示该阶层式架构的该第二层。
7.如权利要求5所述的系统,其特征在于,该显示装置更根据色彩、框线、连接线及轮廓显示该阶层式架构。
8.一种用以视觉化一软件程序的方法,包含下列步骤:
(a)使一存储装置存储该软件程序及其变化记录,其中该软件程序包含多个类别程序码,各该类别程序码包含多个方法程序码,各该方法程序码包含多个参数;
(b)使一处理装置根据数据块信息、分歧变化信息及散弹枪手术信息至少其中之一建立该软件程序的一视觉化架构,其中该处理装置计算所述多个类别程序码内属性(Attributes)之间的相关性(Correlations)以侦测该软件程序的数据块并藉此取得该数据块信息,根据该变化记录计算所述多个方法程序码之间的相关性以侦测该软件程序的分歧变化并藉此取得该分歧变化信息,以及根据该变化记录计算所述多个类别程序码之间的相关性以侦测该软件程序的散弹枪手术并藉此取得该散弹枪手术信息;以及
(c)使一显示装置根据该视觉化架构显示该软件程序。
9.如权利要求8所述的方法,其特征在于,该步骤(b)更包含下列步骤:使该处理装置根据该数据块信息为不同类别程序码中出现的相同属性建立一数据块关联性,根据该分歧变化信息为一类别程序码中共同变化的多个方法程序码建立一分歧变化关联性,根据该散弹枪手术信息为共同变化的多个类别程序码建立一散弹枪手术关联性,以及将该数据块关联性、该分歧变化关联性及该散弹枪手术关联性至少其中之一纳入该视觉化架构。
10.如权利要求8所述的方法,其特征在于,该存储装置包含一数据库,该数据库存储对应至该软件程序的至少一开放软件程序,且该步骤(b)更包含下列步骤:使该处理装置根据该至少一开放软件程序中各个类别程序码的行数、各个方法程序码的行数、各个方法程序码包含的参数的数量、及不同类别程序码中出现相同属性的属性数量界定至少一门槛,并在判断该软件程序中相对应的部分超出该至少一门槛后,才根据该数据块信息、该分歧变化信息及该散弹枪手术信息至少其中之一建立该视觉化架构。
11.如权利要求8所述的方法,其特征在于,该处理装置串行地或并行地计算所述多个类别程序码内属性之间的该相关性、所述多个方法程序码之间的该相关性及所述多个类别程序码之间的相关性。
12.如权利要求8所述的方法,其特征在于,该视觉化架构为一阶层式架构(hierarchicalstructure),该软件程序的所述多个类别程序码对应至该阶层式架构的一第一层,而该软件程序的所述多个方法程序码及其参数与属性对应至该阶层式架构的一第二层。
13.如权利要求12所述的方法,其特征在于,该显示装置持续地显示该阶层式架构的该第一层,且选择性地显示该阶层式架构的该第二层。
14.如权利要求12所述的方法,其特征在于,该显示装置根据色彩、框线、连接线及轮廓显示该阶层式架构。
CN201410553578.XA 2014-10-02 2014-10-17 用以视觉化软件程序的系统及方法 Active CN105573906B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW103134342 2014-10-02
TW103134342A TWI570585B (zh) 2014-10-02 2014-10-02 用以視覺化軟體程式之系統及方法

Publications (2)

Publication Number Publication Date
CN105573906A true CN105573906A (zh) 2016-05-11
CN105573906B CN105573906B (zh) 2018-05-08

Family

ID=55632873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410553578.XA Active CN105573906B (zh) 2014-10-02 2014-10-17 用以视觉化软件程序的系统及方法

Country Status (3)

Country Link
US (1) US9760473B2 (zh)
CN (1) CN105573906B (zh)
TW (1) TWI570585B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1970844A2 (en) * 2007-03-15 2008-09-17 Honeywell International Inc. Method and system for metamodeling using dynamic ontology objects
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)

* Cited by examiner, † Cited by third party
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
NL1029182C2 (nl) * 2004-06-03 2009-08-11 John Bernard Olson Werkwijzen en toestellen voor het ontwerp van visuele applicaties.
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
US20090319993A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation, Generalized and extensible software architecture representation
KR100990994B1 (ko) * 2008-10-31 2010-10-29 한국전자통신연구원 향기 재생정보를 갖는 컨텐츠 생성장치, 재생장치 및 그 재생방법
US8826234B2 (en) * 2009-12-23 2014-09-02 Intel Corporation Relational modeling for performance analysis of multi-core processors
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
US8996583B2 (en) * 2012-09-28 2015-03-31 Emc Corporation Interactive visual data mining for increasing classification accuracy
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1970844A2 (en) * 2007-03-15 2008-09-17 Honeywell International Inc. Method and system for metamodeling using dynamic ontology objects
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
US9760473B2 (en) 2017-09-12
CN105573906B (zh) 2018-05-08
US20160098272A1 (en) 2016-04-07
TW201614527A (en) 2016-04-16
TWI570585B (zh) 2017-02-11

Similar Documents

Publication Publication Date Title
US10402194B2 (en) Systems and methods for extracting cross language dependencies and estimating code change impact in software
EP2924579B1 (en) Event correlation
US10459780B2 (en) Automatic application repair by network device agent
CN107145782B (zh) 一种异常应用程序的识别方法、移动终端及服务器
US9256512B1 (en) Quality analysis for embedded software code
CN110347582B (zh) 埋点测试方法和装置
WO2015025694A1 (ja) セキュリティ上の脅威を評価する評価装置及びその方法
US11775412B2 (en) Machine learning models applied to interaction data for facilitating modifications to online environments
WO2019179030A1 (zh) 产品购买预测方法、服务器及存储介质
US11916964B2 (en) Dynamic, runtime application programming interface parameter labeling, flow parameter tracking and security policy enforcement using API call graph
US20170116165A1 (en) System and method for website content management
US11816479B2 (en) System and method for implementing a code audit tool
US9910487B1 (en) Methods, systems and computer program products for guiding users through task flow paths
CN111078579A (zh) 一种Monkey测试方法、装置及终端设备
CN110275903A (zh) 提高机器学习样本的特征生成效率的方法及系统
CN105573906A (zh) 用以视觉化软件程序的系统及方法
CN108491213A (zh) 软件持续集成方法、软件持续集成装置及电子设备
De Pauw et al. Visual debugging for stream processing applications
Muellner et al. Timely reporting and interactive visualization of animal health and slaughterhouse surveillance data in Switzerland
CN111782208A (zh) 指标预警方法、装置、计算机设备及存储介质
CN111078550A (zh) 软件测试方法及装置、计算机装置及存储介质
CN111949510A (zh) 测试处理方法、装置、电子设备及可读存储介质
US10304224B2 (en) Dynamic graphic entity determination
US20180052502A9 (en) Power system monitoring and control system having thread-dependent calculation monitoring function
CN110704726B (zh) 基于神经网络的数据推送方法、及其相关设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant