A system for identifying and characterizing code changes

The system efficiently characterizes changes in software application code by generating key/value pairs and applying custom rules, addressing the inefficiencies of existing techniques and enabling informed software upgrade decisions through visualized changes.

JP7689514B2Active Publication Date: 2025-06-06エスアーペーエスエー
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2022199441
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2022-04-19
Filing Date
2022-12-14
Publication Date
2025-06-06
Estimated Expiration
2042-12-14

AI Technical Summary

Technical Problem

Existing techniques for characterizing changes in software application code are inefficient and not scalable, requiring custom application-specific and object-specific algorithms that need to be constantly updated and maintained.

Method used

A system that compares two versions of software application code by generating key/value pairs for each code artifact, identifying changes, and applying custom rules to determine a functional context and visualization of the changes, allowing for efficient characterization of code changes without requiring extensive recoding.

Benefits of technology

The system provides an efficient and scalable method for characterizing code changes, enabling users to make informed decisions about software upgrades by presenting a functional context and visualization of the changes, thus reducing the complexity and resource intensity of the comparison process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007689514000001
    Figure 0007689514000001
  • Figure 0007689514000002
    Figure 0007689514000002
  • Figure 0007689514000003
    Figure 0007689514000003
Patent Text Reader

Abstract

To provide a system and method for efficiently characterizing changes to software application code.SOLUTION: A system and method comprises: determining a first code artifact and a second code artifact; generating a first plurality of key / value pairs based on the first code artifact and a second plurality of key / value pairs based on the second code artifact; identifying a plurality of changes between the first plurality of key / value pairs and the second plurality of key / value pairs, wherein the plurality of changes are represented by a third plurality of key / value pairs; determining, for each of a plurality of rules, whether or not the third plurality of key / value pairs includes at least one key / value pair associated with the rule, and if so, determining a parsing output associated with each of the at least one key / value pair by applying the rule to the at least one key / value pair respectively; and generating visualizations based on the parsing output.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to efficient characterization of changes to software application code. [Background technology]

[0002] Software applications that run on-premise or in the cloud have greatly improved the efficiency of many tasks. Modern software development cycles result in new versions of such software applications being released on a regular basis. These new versions may, for example, add features, address programming errors (i.e., bugs), or deprecate features. Therefore, using the most recent version of a software application is usually desirable for users.

[0003] However, users may be hesitant to upgrade their software applications to the latest versions. Upgrades may involve system downtime as well as temporary loss of efficiency (e.g., while users learn to operate the new features). Thus, users may be reluctant to upgrade to new versions of software applications when the expected benefits of such upgrades (e.g., additional functionality provided by the new version) are marginal.

[0004] Users may also be concerned that upgrading to a new version of a software application may break existing workflows that were created by or that are otherwise dependent on the software application. This concern is increasingly prevalent due to the integrated nature of modern distributed computing landscapes. For example, an upgrade that introduces changes to input parameters of a software application may invalidate a system that relies on another application to enable input to the upgraded software application.

[0005] Conventional techniques for addressing the above include application-specific algorithms for comparing two versions of a software application. Such algorithms identify differences in various objects of the two versions of a particular software application. Then, for each changed object, an object-specific algorithm is applied to determine a functional description of the changes to the object. Such approaches not only require the coding of separate application-specific and object-specific comparison algorithms, but also the algorithms must be recoded when new properties are added to an object. Moreover, to ensure quality, each algorithm should be unit tested and maintained over a period of time. As such, these techniques are not very efficient and scalable. Summary of the Invention [Problem to be solved by the invention]

[0006] A system that provides efficient characterization of changes to software application code is desirable. [Means for solving the problem]

[0007] An embodiment of the present disclosure provides a system, comprising: A memory for storing program code executable by a processor; The processor executes executable program code to provide the system with determining a first code artifact of the first application and a second code artifact of the first application; generating a first plurality of key / value pairs based on the first code artifact and a second plurality of key / value pairs based on the second code artifact; identifying a plurality of changes between the first plurality of key / value pairs and the second plurality of key / value pairs, the plurality of changes including a third plurality of key / value pairs; determining a plurality of rules associated with the first application; For each of the multiple rules, determining whether the third plurality of key / value pairs includes at least one key / value pair associated with a rule; if the third plurality of key / value pairs includes at least one key / value pair associated with a rule, applying the rule to each of the at least one key / value pair to determine an analysis output associated with each of the at least one key / value pair; Generate visualizations based on the analysis output A processing device for causing Equipped with. [Brief description of the drawings]

[0008] [Figure 1] FIG. 1 is a block diagram of a system architecture according to some embodiments. [Diagram 2] FIG. 1 is a flow diagram of a method for identifying and characterizing code changes according to some embodiments. [Figure 3A] FIG. 1 illustrates a portion of program code according to some embodiments. [Figure 3B]FIG. 3B illustrates key, value pairs generated based on the program code of FIG. 3A according to some embodiments. [Figure 4A] FIG. 1 illustrates a portion of program code according to some embodiments. [Figure 4B] FIG. 4B illustrates key / value pairs generated based on the program code of FIG. 4A according to some embodiments. [Diagram 5] FIG. 2 is a flow diagram of a method for generating key / value pairs based on program code according to some embodiments. [Figure 6] FIG. 2 is a flow diagram of a method for identifying code changes based on key / value pairs according to some embodiments. [Figure 7] FIG. 2 illustrates a list of key / value pairs representing code modifications according to some embodiments. [Figure 8] FIG. 2 depicts a rule schema according to some embodiments. [Figure 9] FIG. 1 depicts an analysis object schema according to some embodiments. [Figure 10] 1 is a diagram of a user interface illustrating characterization of code changes according to some embodiments. [Figure 11] FIG. 1 is a block diagram of a computing system implementing a system architecture according to some embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009] The following description is provided to enable any person skilled in the art to make and use the described embodiments, however various modifications will still be readily apparent to those skilled in the art.

[0010] Some embodiments provide a generic algorithm for incorporating custom rules that compare a first version of a program code with a second version and determine a functional context that corresponds to the results of the comparison. These functional contexts, and in some embodiments, the corresponding scores, can then be presented to a user to aid the user in deciding whether to upgrade from the first version to the second version. Because the generic algorithm remains the same regardless of the type of code being compared, applying the algorithm to new or changed code types does not consume development resources for the generic algorithm. Rather, new rules may be required only to analyze changes to specific properties detected by the generic algorithm.

[0011] According to some embodiments, first, two code artifacts are compared. Code artifacts may include by-products of construction methods, as known in the art. Code artifacts may include, but are not limited to, source code, compiled code, dependencies, binaries, or resources. To compare two code artifacts, embodiments generate a signature associated with each code artifact. As described below, the signature may include a set of key / value pairs corresponding to each line of code in the artifact.

[0012] The sets of key / value pairs for each artifact are compared to determine three subsets of key / value pairs: new, deleted, and updated. Rules are then applied to the subsets of key / value pairs to determine a functional context and / or an incremental functional score for the corresponding code change. In this regard, each key / value pair contains information about the code represented by the key / value pair. As described in more detail below, rules may determine a functional context (and / or a functional score) based on this information and based on the subset to which the key / value pair belongs (i.e., new, deleted, or updated).

[0013] 1 is a block diagram of an architecture 100 according to some embodiments. The illustrated components of architecture 100 may be implemented using any suitable combination of computing hardware and / or software known or to become known. Such a combination may include one or more programmable processors (microprocessors, central processing units, microprocessor cores, execution threads), one or more non-transitory electronic storage media, and processor-executable program code. In some embodiments, two or more components of architecture 100 are implemented by a single computing device and / or two or more components of architecture 100 are co-located. One or more components of architecture 100 may be implemented using cloud-based resources and / or other systems that elastically distribute computing resources according to demand, need, price, and / or any other metric.

[0014] The components of architecture 100 may operate to identify and characterize differences between artifact A 110 and artifact B 115. Artifact A 110 and artifact B 115 may each include a portion of code conforming to any object-oriented programming language known or to become known. Such code may conform to JavaScript, C#, Java, or C++, for example. Artifact A 110 and artifact B 115 may include different versions of the same software application, such that each artifact may include various module data type enumerations, and the like. For the purposes of the following example, assume that artifact B is a more recent version than artifact A.

[0015] A signature generator 120 generates signature A based on artifact A 110 and signature B based on artifact B 115. Each signature consists of a list of key / value pairs. In general, the keys represent the structure of the artifact and the values ​​represent the property values ​​associated with each artifact. An implementation for generating the signatures is described in more detail below.

[0016] Signature comparator 130 compares signature A with signature B. The comparison results in a list that identifies those keys that are present in signature B but not in signature A (i.e., "new" keys), identifies those keys that are present in signature A but not in signature B (i.e., "removed" keys), and identifies those keys that are present in both signature A and signature B but are associated with different values ​​therein (i.e., "updated" keys). The identified keys (and their associated values) are included in respective New, Added, and Updated lists, shown as changes 135 in FIG. 1.

[0017] Change analyzer 140 analyzes changes 135 based on analysis rules 150. As described in more detail below, each analysis rule 150 includes information used to identify a key in the change 135 to which the analysis rule should be applied. Each analysis rule 150 also includes a function that returns an analysis object 155 associated with the key to which the analysis rule should be applied. According to some embodiments, each analysis object 155 identifies the type of code entity that was changed, whether the changed code entity is "new", "deleted", or "updated", and identifies a message that describes the change in language that the user can understand.

[0018] In some embodiments, analysis object 155 may also include an alert level property to indicate whether a change is compatible (e.g., expected), incompatible (e.g., unexpected), or potentially problematic (i.e., should be checked). Analysis object 155 may also, or alternatively, specify an importance level (e.g., very important, important, medium, low, very low) for the associated change.

[0019] The analysis object 155 associated with the change also includes an incremental score that can indicate the desirability of the change. In some embodiments, all the incremental scores of all analysis objects 155 are added together to determine a function score associated with the comparison of Artifact A 110 to Artifact B 115. The function score, in some embodiments, can be limited to values ​​between 0 and 100. The function score can indicate to a user the degree to which upgrading from Artifact A 110 to Artifact B 115 is desirable.

[0020] Analysis objects 155, according to some embodiments, can be consumed by visualization generator 160. Visualization generator 160 can, for example, generate a hypertext markup language visualization 170 of the changes specified in analysis objects 155. Examples of such visualizations are described below.

[0021] 2 is a flow diagram of a method for identifying and characterizing code changes according to some embodiments. Method 200 can be performed using any suitable combination of hardware and software. Software program code embodying the method can be stored by any non-transitory tangible medium, including fixed disks, volatile or non-volatile random access memory, DVDs, flash drives, or magnetic tapes, and executed by any number of processing devices, including, but not limited to, processors, processor cores, and processor threads. Such processors, processor cores, and processor threads may be implemented by virtual machines provisioned in a cloud-based architecture. The embodiments are not limited to the examples described below.

[0022] Method 200 may be initiated in response to a user request for information regarding a proposed or potential update from a first software version to a second software version. In some embodiments, method 200 is performed as a sub-process of a larger process, such as, but not limited to, an automated process for generating a software development kit based on source code. Initiation of method 200 is not limited to these examples.

[0023] First, in S210, a first code artifact and a second code artifact are determined. As described above, each artifact may include a portion of a code. For example, FIG. 3A shows a portion of a first code artifact 310, and FIG. 4A shows a portion of a second code artifact 410, which are determined in S210 according to some embodiments. The artifacts 310 and 410 are in JavaScript Object Notation (JSON) format, although embodiments are not limited thereto.

[0024] The artifact 310 includes a hierarchical structure of code entities, although embodiments are not so limited. For clarity within this specification, entity names are italicized. The root level of the artifact 310 includes the entities name, description, type, and header. The entity activities is located at a first sublevel of the entity header, and the entities newInstance and closeInstance are located at a second sublevel of the entity header (and at a first sublevel of the entity activities). The child entities of the entity activities are associated with the entities name, async, and inputs, respectively, of which inputs is the parent entity of the entities identifier, default, optional, and type. The entities in each row of the artifact 310 are either associated with a value (e.g., "description": "Collection of functions") or not (e.g., "header": {). Entities that are associated with a value are referred to herein as properties, while entities that are not associated with a value are referred to as objects.

[0025] The artifact 410 differs from the artifact 310 in several ways: the value of the property name of the object NewInstance has been changed from "Open Instance" to "New Instance", and the value of the property async of the object NewInstance has been changed from "false" to "true". Moreover, the value of the property default of the object inputs of the object NewInstance has been changed from "true" to "false". The name of the object closeInstance has also been changed to closeCurrentInstance. Finally, the property optional has been removed from the object inputs of the object closeInstance (now the renamed closeCurrentInstance).

[0026] Next, in S220, a first signature is generated based on the first code artifact, and a second signature is determined based on the second code artifact. Each signature includes a list of key / value pairs. Continuing with the example, FIG. 3B shows a first signature 320 generated in S220 based on the first code artifact 310. Similarly, FIG. 4B shows a second signature 420 generated in S220 based on the second code artifact 410.

[0027] 5 can be executed to generate a signature based on a code artifact at S220 according to some embodiments. Implementations of S220 are not limited to methods that conform to method 500.

[0028] The first entity of the code artifact is read in S510. Using artifact 310 as an example, the entity read is "name": "Application". Each line of artifacts 310 and 410 corresponds to a single entity. Thus, S510 involves reading a single line of the artifact. For artifacts where entities are not organized in such a structure, S510 involves parsing the code artifact to read the next entity.

[0029] A key is created for the entity in S520. The key should uniquely identify the entity within the artifact, in that no two keys created for the same artifact should be identical. For clarity, square brackets ("[]") are used in this text to denote keys, and key / value pairs are enclosed in the notation <key> → <value>Since the object name is at the root level of the artifact, the key created in S520 is [name].

[0030] Next, in S530, it is determined whether the retrieved entity is associated with a value. According to this example, the entity name is associated with the value "Application", so flow proceeds from S530 to S540. In S540, it is determined that the value of the key / value pair for the entity is the value associated with the entity. Thus, the notation <key> → <value>, the key / value pair determined for the entity "name": "Application" is name → Application. FIG. 3B illustrates a signature 320 generated based on an artifact 310 in accordance with some embodiments, where the first row of signature 320 illustrates a key / value pair generated based on the first entity of artifact 310.

[0031] Flow proceeds from S540 to S560 to determine whether any entities of the artifact have yet to be processed. If so, flow returns to S510. In this example, the second and third entities of the artifact 310 are processed in S510-S540 as described above to generate the corresponding key / value pairs description→Collection of functions and type→module. These key / value pairs are shown in the corresponding second and third rows of signature 320.

[0032] The flow returns to S510 again after processing the first, second, and third entities of the artifact 310. After reading the next entity (i.e., "header": {) and generating the corresponding key [header], in S530 it is determined that there is no value associated with the entity header. Therefore, the flow proceeds to S550, where it is determined that the value corresponding to the key [header] is the same as the key, i.e., "header". Thus, the key / value pair determined for the fourth entity of the artifact 310 is header → header, as shown in signature 320.

[0033] In some embodiments, S550 assigns a NULL value, or other predefined identifier, to the value of the key / value pair. In general, embodiments may generate key / value pairs for entities (i.e., objects) that are not associated with a value in any manner that allows the generated key / value pairs to be identified as such. As a result, any downstream algorithms that perform subsequent processing in the signature will be able to distinguish between key / value pairs associated with objects and key / value pairs associated with properties.

[0034] The flow then returns to S510 to retrieve the entity "activities": {. A key is created in S520 for the retrieved property. According to some embodiments, the retrieved entity is located within a parent object, so the created key includes a prefix that corresponds to the parent object's key. In this example, the parent object header is associated with the key [header], and the key created in S520 for the retrieved entity "activities": { is [header.activities]. Embodiments are not limited to the "." delimiter.

[0035] Then, in S530, it is determined that there is no value associated with the object activities. Therefore, the flow proceeds to S550, where it is determined that the value corresponding to the key [header.activities] is identical to the key, i.e., "header.activities". Thus, the determined key / value pair for the fifth entity of the artifact 310 is header.activities → header.activities, as shown in signature 320. The sixth entity of the artifact 310 is similarly processed in S510, S520, S530, and S550 as described above to generate the corresponding key / value pair header.activities.newInstance → header.activities.newInstance, as shown in the sixth line of signature 320.

[0036] Next, the seventh entity, "name": "Open Instance", is retrieved in S510. As described above, the key created in S520 takes its parent object's key (i.e., [header.activities.newInstance]) as a prefix, resulting in the key [header.activities.newInstance.name]. Because the entity type of the entity is a property, the value of the property is determined in S530 as the value of the key / value pair. The resulting key / value pair is shown in signature 320 as header.activities.newInstance.name → Open Instance.

[0037] Method 500 proceeds as described above for each entity of artifact 310 until it is determined at S560 that none of the entities have yet been processed. At this point, signature 320 has been generated, as shown in FIG. 3B. Notably, each key / value pair of signature 320 is unique from each other key / value pair of signature 320. Such uniqueness may facilitate identification of altered pairs during subsequent comparisons with other signatures.

[0038] Returning to Figure 2, method 500 may also be applied to artifact 410 at S220 to generate signature 420 of Figure 4B. Embodiments are not limited to the particular signature generation steps described above. However, subsequent comparison of the generated signatures may be facilitated by applying the same signature generation step to both artifacts, regardless of the details of the signature generation step.

[0039] In this regard, changes between the keys of the first signature and the keys of the second signature are identified in S230. The identification may identify those keys that are present in the second signature but not in the first signature (i.e., “new” keys), those keys that are present in the first signature but not in the second signature (i.e., “deleted” keys), and those keys that are present in both signatures but associated with different values ​​therein (i.e., “updated” keys).

[0040] 6 is a flow diagram of a method 600 for implementing S230 according to some embodiments. A key of a second signature is identified in S610. In S620, the first signature is traversed to determine whether the identified key is identical to any key of the first signature. If so, as in the case of the first keys of signatures 320 and 420, it is determined in S630 whether the values ​​associated with the identical keys are also identical. If the values ​​associated with the identical keys are also identical, again as in the case of the first keys of signatures 320 and 420, the key / value pair is removed from the first signature in S640, and the flow returns from S650 to S610 to identify the next key of the second signature.

[0041] If the keys are determined to be identical in S620 but the associated values ​​are determined to be not identical in S630, such as in the case of the seventh key / value pair of signatures 320 and 420 (i.e., header.activities.newInstance.name → Open Instance and header.activities.newInstance.name → New Instance), the key / value pair of the second signature is added to the Updated list and the key / value pair of the first signature is removed from the first signature in S640.

[0042] If it is determined in S620 that the key identified in S610 is not located in the first signature (e.g., all keys contain "closeCurrentInstance"), the key / value pair of the second signature is added to the New list in S670. Flow proceeds from S650 back to S610 to identify the next key of the second signature as long as there are key / value pairs of the second signature that remain unprocessed.

[0043] Once it is determined that all of the key / value pairs in the second signature have been processed, flow proceeds from S650 to S680. Due to the removal of key / value pairs from the first signature in S640, any key / value pairs still remaining in the first signature at this point in the method 600 must be associated with a key that is no longer present in the second signature. Thus, any key / value pairs remaining in the first signature are added to a Removed list in S680.

[0044] 7 shows New list 710, Updated list 720, and Removed list 730 that are generated based on the example signatures 320 and 420. Using lists 710-730, a functional context that describes the differences between a first artifact and a second artifact may be analyzed and provided. Notably, because lists 710-730 may be generated from any object-oriented artifact using the generic algorithms described herein, a developer wishing to identify and characterize code changes for a particular application need only develop rules that can be used to identify keys of interest in the lists and determine the functional results of the changes represented by the lists.

[0045] In this regard, returning to method 200, a number of rules associated with the code artifact are identified in S240. The rules may be associated with an application associated with the artifact. Different applications may be associated with different analysis rules, but all analysis rules may operate on the list of key / value pairs generated as described above. The analysis rules may be used to provide relevant information about the changes to a user.

[0046] 8 illustrates a schema 800 of parsing rules according to some embodiments. As shown, each rule includes a name of the rule, a key-matching attribute (e.g., a regex expression) that is used to identify the key / value pairs to which the rule should apply. For example, a rule may be associated with a child object (i.e., activities) of the activities object. Thus, the key-matching attribute of such a rule may be usable to parse the lists 710-730 to find keys prefixed with "header.activities."

[0047] Each rule according to the schema 800 is also associated with a parsing function. The parsing function serves to process the key / value pairs identified by the key matching attributes and generate one or more corresponding parsing objects. At S250, each of the multiple rules is evaluated based on the multiple modifications to generate multiple parsing objects.

[0048] In general, a first analysis rule is selected in S250 and its key matching attribute may be used to identify matching key / value pairs from the list of changes. The analysis function of the analysis rule is then applied to the key / value pairs to generate an analysis object. The analysis function may also consider other key / value pairs in the list of changes.

[0049] In one example, the analysis rule may count the number of activities added by the second artifact. Thus, the rule may count the number of activities added by the second artifact in the activity object (e.g., header.activities. <xxxxxx>A parsing rule is executed to identify and count all keys in the New list that represent activities that are removed by the second artifact. Similarly, a parsing rule may count the number of activities that are removed by the second artifact by parsing the keys in the Removed list. The latter parsing rule may generate warnings and / or incompatibility messages for each removed activity.

[0050] In another example, the analysis rule is intended to count the number of new properties added by a second artifact. Thus, the analysis rule may identify all key / value pairs in the New list where the value and key are not identical. However, if a new activity is added, all properties of the new activity will be represented in the New list. Thus, the analysis function of the analysis rule can act to identify newly added activities (e.g., as described in the example above) and not count the properties of those newly added activities.

[0051] Another parsing rule may determine whether an input parameter has been deleted or its identifier has been changed, for example, if such changes are undesirable. Such a rule may be used to determine whether an input parameter has been deleted or its identifier has been changed, for example, if such changes are undesirable. <xxxxxxx>.inputs or header.activities. <xxxxxxx>The rule may identify a key in the Updated or Removed list that conforms to the .identifier. Depending on the identified key, the rule may generate a corresponding message, warning, etc.

[0052] According to some embodiments, analysis rules can be used to identify specific changes to property values ​​and generate corresponding messages. For example, changing the type of an input or output parameter may be undesirable unless the type is changed to "any". Thus, such rules would identify any change to the value of an output parameter type that is not a change to type "any" and generate a corresponding message, warning, etc. In another example, an activity's async property should not be changed from "true" to "false".

[0053] Some analysis rules may identify undesirable transitions of property values ​​from one value to another. For example, the value of a lifecycle status property should not transition from one value (e.g., active) to an earlier value (e.g., beta). Evaluation of such an analysis rule may require identifying a lifecycle status property associated with an update value and determining a value associated with the lifecycle status property in the first artifact.

[0054] 9 illustrates a schema 900 of an analysis object created by an analysis function of an analysis rule according to some embodiments. The Type field can specify the object or property to which the object pertains (e.g., Activity), the Status field can indicate New, Updated, or Removed, and the Message field can indicate the function context (e.g., "Activity <xxxxx>has been updated (Activity <xxxxx>"# activities have been removed", "Activity <xxxxx>has changed from asynchronous to synchronous (Activity <xxxxx>As shown, the analysis object may also include a Warning message (or level), an Importance indicator, and / or a Score that may be populated by the analysis function that creates the object. The analysis objects created in S250 may be grouped by Warning or Importance, as appropriate.

[0055] The analysis function may determine a score associated with a change based on the type and status of the change. The score may be hard-coded by the analysis function based on the importance of the type / status to determining whether the code version should be updated. By way of a non-exhaustive example, a change of type Module and status New may be associated with a score of 20, a change of type Activity and status New may be associated with a score of 5, a change of type Activity and status Updated may be associated with a score of 2, and a change of type Activity.Name and status New may be associated with a score of 0.01. Scores determined by the analysis function may be negative. For example, a change of type Activity and status Removed may be associated with a score of -10 since an update that removes functionality may be undesirable.

[0056] A visualization is generated and rendered in S260 based on the analysis object. Advantageously, the generic schema of the analysis object may facilitate the use of the same or similar visualization generators regardless of the type of application with which the artifact is associated. Application-specific visualization generators may also be employed.

[0057] 10 is a diagram of a visualization 1000 generated in S260 according to some embodiments. The visualization 1000 may include a web page provided by a cloud-based server application and displayed by a web browser running on a local system. The visualization 1000 may also include a user interface of a standalone local application. The embodiments are not limited to the form or content of the visualization 1000.

[0058] The visualization 1000 includes an area 1005 that identifies code artifacts under comparison. The visualization 1000 enables visualization of information encapsulated by the analysis objects generated as described above. This information may be parsed, aggregated, or otherwise used to provide any suitable visual representation thereof. For example, any suitable algorithm may be employed to determine and present a compatibility flag 1010 based on the generated analysis objects. In one implementation, the compatibility flag 1010 indicates "no" if any of the generated analysis objects indicate an incompatible change.

[0059] The Functional score area 1015 presents a functional score associated with the upgrade from version 1.18.28 to version 1.18.29. The functional score may be determined based on the analysis objects generated as described above. According to some embodiments, the functional score is determined by summing the scores associated with each generated analysis object. The functional score is limited to a range between 0 and 100 to improve its interpretability. In this regard, some embodiments may provide additional text in the Functional score area 1015 that is based on the value of the functional score. For example, a functional score below 30 may be associated with text indicating that an upgrade is not particularly desirable (as shown in FIG. 10) due to the small amount of additional functionality provided by the newer code version. A functional score between 30 and 70 may be associated with text indicating that an upgrade may be beneficial, while a functional score above 70 may be labeled with text indicating that an upgrade will provide many new features and is recommended.

[0060] The Overview area 1020 provides a brief summary of the Removed, Updated, and Added changes. The contents of the Overview area 1020 may be aggregated based on the Type and Status fields of the analysis objects. As mentioned above, the properties of added activities may be ignored in the Added region of area 1020 for clarity.

[0061] The By Module area 1030 presents a count of changes per object type per module of the target application. This example assumes that changes only exist in the core module. Any number of modules may be analyzed according to some embodiments.

[0062] The What's New area 1040 may include a message associated with the generated analysis object. The message may be intended to facilitate understanding of the functional context of the change. Similarly, the Warnings area 1050 includes any warnings associated with the analysis object, and the Incompatibilities area 1060 includes any incompatibilities associated with the analysis object. These warnings and incompatibilities are generated by the analysis functions of the analysis rules, as described above.

[0063] 11 is a block diagram of a cloud-based system 1100 according to some embodiments. In this regard, application servers 1120 and artifact repositories 1130 may include cloud-based computing resources, such as virtual machines, allocated by a public cloud provider that offers self-service and instant provisioning, auto-scaling, security, compliance, and identity management capabilities.

[0064] The client device 1110 may interact with user interfaces of services or applications executing on the application server 1120, for example, via a web browser executing on the client device 1110. These user interfaces may allow for selection of alternative versions of the services or applications. Selection of the alternative version may initiate a change identification and characterization method as described herein. The method may be performed by an artifact repository 1130, which stores artifacts of the current and alternative versions, and / or by the application server 1120. Execution of the method may result in the presentation of a visualization that characterizes the changes between the current and alternative versions as described herein.

[0065] The foregoing figures represent logical architectures for describing methods according to some embodiments, and actual implementations may include more or different components arranged in other manners. Other topologies may be used in conjunction with other embodiments. Moreover, each component or device described herein may be implemented by any number of devices communicating over any number of other public and / or private networks. Two or more of such computing devices may be located remotely from each other and may communicate with each other over any known manner of network and / or dedicated connections. Each component or device may also comprise any number of hardware and / or software elements suitable for providing the functionality described herein as well as any other functionality. For example, any computing device used in implementing the architecture described herein may include a programmable processor that executes program code such that the computing device operates as described herein.

[0066] All systems and methods discussed herein may be embodied in program code stored on one or more non-transitory computer-readable media. Such media may include, for example, DVD-ROMs, flash drives, magnetic tapes, and solid-state random access memory (RAM) or read-only memory (ROM) storage devices. Thus, embodiments are not limited to any particular combination of hardware and software.

[0067] Elements described herein as in communication with one another may communicate directly or indirectly via any number of different systems for transferring data, including, but not limited to, shared memory communications, local area networks, wide area networks, telephone networks, cellular networks, fiber optic networks, satellite networks, infrared networks, radio frequency networks, and any other type of network that may be used to transmit information between devices. Moreover, communication between systems may occur via any one or more transmission protocols that are known or become known, such as Asynchronous Transfer Mode (ATM), Internet Protocol (IP), Hypertext Transfer Protocol (HTTP), and Wireless Application Protocol (WAP).

[0068] The embodiments described herein are for illustrative purposes only, and those skilled in the art will recognize that other embodiments may be implemented with modifications and alternatives to those described above. [Explanation of symbols]

[0069] 100 Architecture 110 Artifact A 115 Artifact B 120 Signature Generator 130 Signature Comparator 135 Changes 140 Change Analyzer 150 Analysis Rules 155 Analysis Objects 160 Visualization Generator 170 Visualization 200, 500, 600 methods 310, 410 Code Artifacts 320, 420 Signature 710 New List 720 Updated List 730 Removed List 800, 900 Schema 1000 visualization 1005 Code Artifact Identification Area 1010 Compatibility Flag 1015 Functional score area 1020 Overview Area 1030 By Module area 1040 What's New Area 1050 Warnings Area 1060 Incompatibilities Area 1100 System 1120 Application Server 1130 Artifact Repository< / xxxxx> < / xxxxx> < / xxxxx> < / xxxxx> < / xxxxxxx> < / xxxxxxx> < / xxxxxx> < / value> < / key> < / value> < / key>

Claims

1. 1. A system comprising: A memory for storing program code executable by a processor; The processor executes executable program code to cause the system to determining a first code artifact of a first application and a second code artifact of the first application; generating a first plurality of key / value pairs based on the first code artifact and a second plurality of key / value pairs based on the second code artifact; identifying a plurality of modifications between the first plurality of key / value pairs and the second plurality of key / value pairs, the modifications being third key / value pairs corresponding to key / value pairs that have changed from the first key / value pairs to the second key / value pairs; determining a plurality of rules associated with the first application; For each of the plurality of rules, determining whether the third plurality of key / value pairs includes at least one key / value pair associated with the rule; if the third plurality of key / value pairs includes at least one key / value pair associated with the rule, applying the rule to each of the at least one key / value pair to determine an analysis output associated with each of the at least one key / value pair; generating a visualization based on said analysis output; A processing device for causing Equipped with a first analysis output associated with a first key / value pair including a text message that an object associated with the key of the first key / value pair in the first code artifact does not exist in the second code artifact; a second analysis output associated with a second key / value pair including a second text message that a value of a property associated with the key of the second key / value pair in the first code artifact has been changed in the second code artifact; the visualization includes the text message and the second text message; system.

2. 2. The system of claim 1, wherein the third plurality of key / value pairs includes a fourth plurality of key / value pairs associated with added keys, a fifth plurality of key / value pairs associated with deleted keys, and a sixth plurality of key / value pairs associated with updated keys.

3. 4. The method of claim 3, wherein generating the visualization comprises: determining a first number of added keys, a second number of deleted keys, and a third number of updated keys; generating the visualization including the first number, the second number, and the third number; The system of claim 2 , comprising:

4. 4. The method of claim 3, wherein generating said visualization comprises: determining a score associated with each of the added keys, the removed keys, and the updated keys; determining a function score based on the determined scores; and generating said visualization including said function scores; The system of claim 3, comprising:

5. generating the first plurality of key / value pairs; determining that a first line of code of the first code artifact includes an object associated with a first object name; determining a first key of a first key / value pair based on the first object name; determining a first value of the first key / value pair based on the first object name; The system of claim 1 , comprising:

6. generating the first plurality of key / value pairs; determining that a second line of code of the first code artifact includes a property of the object that is associated with the first object name; and determining a second key of a second key / value pair based on the first object name and the name of the property; determining a second value of the second key / value pair based on a value associated with the property in the second line of code; The system of claim 5 , comprising:

7. determining a first code artifact and a second code artifact; generating a first plurality of key / value pairs based on the first code artifact and a second plurality of key / value pairs based on the second code artifact; identifying a plurality of modifications between the first plurality of key / value pairs and the second plurality of key / value pairs, the modifications being third key / value pairs corresponding to key / value pairs that have changed from the first key / value pairs to the second key / value pairs; For each of the multiple rules, determining whether the third plurality of key / value pairs includes at least one key / value pair associated with the rule; if the third plurality of key / value pairs includes at least one key / value pair associated with the rule, applying the rule to each of the at least one key / value pair to determine an analysis output associated with each of the at least one key / value pair; generating a visualization based on the analysis output; Including, a first analysis output associated with a first key / value pair including a text message that an object associated with the key of the first key / value pair in the first code artifact does not exist in the second code artifact; a second analysis output associated with a second key / value pair including a second text message that a value of a property associated with the key of the second key / value pair in the first code artifact has been changed in the second code artifact; the visualization includes the text message and the second text message; Computer-implemented method.

8. 8. The method of claim 7, wherein the third plurality of key / value pairs includes a fourth plurality of key / value pairs associated with added keys, a fifth plurality of key / value pairs associated with deleted keys, and a sixth plurality of key / value pairs associated with updated keys.

9. 4. The method of claim 3, wherein generating the visualization comprises: determining a first number of added keys, a second number of deleted keys, and a third number of updated keys; generating the visualization including the first number, the second number, and the third number; 9. The method of claim 8, comprising:

10. 4. The method of claim 3, wherein generating the visualization comprises: determining a score associated with each of the added keys, the removed keys, and the updated keys; determining a function score based on the determined scores; generating the visualization including the function scores; 10. The method of claim 9, comprising:

11. generating the first plurality of key / value pairs, determining that a first line of code of the first code artifact includes an object associated with a first object name; determining a first key of a first key / value pair based on the first object name; determining a first value of the first key / value pair based on the first object name; 8. The method of claim 7, comprising:

12. generating the first plurality of key / value pairs, determining that a second line of code of the first code artifact includes a property of the object that is associated with the first object name; determining a second key of a second key / value pair based on the first object name and the name of the property; determining a second value of the second key / value pair based on a value associated with the property in the second line of code; 12. The method of claim 11, comprising:

13. A non-transitory computer readable medium storing program code executable by a processing unit of a computing system, the program code being configured to: determining a first code artifact of a first application and a second code artifact of the first application; generating a first plurality of key / value pairs based on the first code artifact and a second plurality of key / value pairs based on the second code artifact; identifying a plurality of modifications between the first plurality of key / value pairs and the second plurality of key / value pairs, the modifications being third key / value pairs corresponding to key / value pairs that have changed from the first key / value pairs to the second key / value pairs; determining a plurality of rules associated with the first application; For each of the plurality of rules, determining whether the third plurality of key / value pairs includes at least one key / value pair associated with the rule; if the third plurality of key / value pairs includes at least one key / value pair associated with the rule, applying the rule to each of the at least one key / value pair to determine an analysis output associated with each of the at least one key / value pair; generating a visualization based on said analysis output; Let them do so, a first analysis output associated with a first key / value pair including a text message that an object associated with the key of the first key / value pair in the first code artifact does not exist in the second code artifact; a second analysis output associated with a second key / value pair including a second text message that a value of a property associated with the key of the second key / value pair in the first code artifact has been changed in the second code artifact; the visualization includes the text message and the second text message; Non-transitory computer-readable medium.

14. generating the first plurality of key / value pairs; determining that a first line of code of the first code artifact includes an object associated with a first object name; determining a first key of a first key / value pair based on the first object name; determining a first value of the first key / value pair based on the first object name; The medium of claim 13, comprising:

15. generating the first plurality of key / value pairs; determining that a second line of code of the first code artifact includes a property of the object that is associated with the first object name; and determining a second key of a second key / value pair based on the first object name and the name of the property; determining a second value of the second key / value pair based on a value associated with the property in the second line of code; The medium of claim 14, comprising:

16. the third plurality of key / value pairs includes a fourth plurality of key / value pairs associated with added keys, a fifth plurality of key / value pairs associated with deleted keys, and a sixth plurality of key / value pairs associated with updated keys; 4. The method of claim 3, wherein generating said visualization comprises: determining a first number of added keys, a second number of deleted keys, and a third number of updated keys; generating the visualization including the first number, the second number, and the third number; The medium of claim 13, comprising:

17. 4. The method of claim 3, wherein generating said visualization comprises: determining a score associated with each of the added keys, the removed keys, and the updated keys; determining a function score based on the determined scores; and generating said visualization including said function scores; The medium of claim 16, comprising:

Citation Information

Patent Citations

  • Logical difference discrimination system for source program

    JP1997062498A

  • System for generating source program comparison information

    JP2003280903A

  • Method and system of difference extraction of source code using syntax analysis

    JP2013257639A

  • Test specification generation device, method, and computer program

    JP2015075872A

  • Test case selection device

    JP2016164727A