US20170212755A1 - System and method for computing a criticality metric of a unit of source code - Google Patents
System and method for computing a criticality metric of a unit of source code Download PDFInfo
- Publication number
- US20170212755A1 US20170212755A1 US15/399,023 US201715399023A US2017212755A1 US 20170212755 A1 US20170212755 A1 US 20170212755A1 US 201715399023 A US201715399023 A US 201715399023A US 2017212755 A1 US2017212755 A1 US 2017212755A1
- Authority
- US
- United States
- Prior art keywords
- unit
- source code
- criticality
- software
- parameters
- 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.)
- Abandoned
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/75—Structural analysis for program understanding
Definitions
- the present subject matter described herein generally relates to a method and a system for determining a criticality metric of a unit of source code in a software program.
- Software testing or software maintenance is one of a phase in a software development life cycle (SDLC).
- SDLC software development life cycle
- the unit of source code may be a method or a procedure or a function or any particular class defined in the software program for a specific purpose.
- the software engineers generally have to refer various documents and files related to that unit of source code. Moreover, the software engineers may also need to contact peers, or experienced peers who were previously involved in the development of that software program to understand the criticality of the unit of source code and the impact it has on the functionality of the application. All the aforementioned factors divert the software engineer's attention from actual work of updating or testing the unit of source code. Also, these factors leave the software engineer or any other person, working on the unit of source code, in an uncertain state of mind i.e., how critical that unit of source code is and what will be the impact on the software program if the unit of source code is modified. This typically results in over-analysis of the code and consequently loss of time and effort or on the corollary, result in under-analysis leading to degradation of the quality of the application.
- a system for computing a criticality metric of a unit of source code in a software program includes a processor and a memory coupled to the processor.
- the processor may execute a plurality of modules stored in the memory.
- the plurality of modules may include a determining module, an applying module, and a computing module.
- the determining module may determine a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms.
- NLP natural language processing
- the applying module may apply a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters.
- the computing module may compute a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- a method for computing a criticality metric of a unit of source code in a software program may include determining, by a processor, a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms. Further, the method may include a step of applying, by the processor, a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters. The method may further include a step of computing, by the processor, a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- NLP natural language processing
- a non-transitory computer readable medium embodying a program executable in a computing device for computing a criticality metric of a unit of source code in a software program may comprise a program code for determining a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms.
- the program may further comprise a program code for applying a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters.
- the program may comprise a program code for computing a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- FIG. 1 illustrates a network implementation of a system for computing a criticality metric of a unit of source code in a software program, in accordance with an embodiment of the present subject matter.
- FIG. 2 illustrates the system, in accordance with an embodiment of the present subject matter.
- FIG. 3 illustrates detail explanation of the system, in accordance with an embodiment of the present subject matter.
- FIG. 4 illustrates a method for computing a criticality metric of a unit of source code in a software program, in accordance with an embodiment of the present subject matter.
- FIG. 1 a network implementation 100 of system 102 for computing a criticality metric of a unit of source code in a software program is illustrated, in accordance with an embodiment of the present subject matter.
- the system 102 may also be implemented in a variety of computing systems, such as a laptop computer, a desktop computer, a notebook, a workstation, a mainframe computer, a server, a network server, a tablet, a mobile phone, and the like.
- the system 102 may be implemented in a cloud-based environment.
- the system 102 may be accessed by multiple users through one or more user devices 104 - 1 , 104 - 2 , 104 - 3 , 104 -N, collectively referred to as user 104 hereinafter, or applications residing on the user devices 104 .
- Examples of the user devices 104 may include, but are not limited to, a portable computer, a personal digital assistant, a handheld device, and a workstation.
- the user devices 104 are communicatively coupled to the system 102 through a network 106 .
- the network 106 may be a wireless network, a wired network or a combination thereof.
- the network 106 can be implemented as one of the different types of networks, such as intranet, local area network (LAN), wide area network (WAN), the internet, and the like.
- the network 106 may either be a dedicated network or a shared network.
- the shared network represents an association of the different types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), and the like, to communicate with one another.
- the network 106 may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, and the like.
- the system 102 may include at least one processor 202 , an input/output (I/O) interface 204 , and a memory 206 .
- the at least one processor 202 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions.
- the at least one processor 202 is configured to fetch and execute computer-readable instructions or modules stored in the memory 206 .
- the I/O interface 204 may include a variety of software and hardware interfaces, for example, a web interface, a graphical user interface, and the like.
- the I/O interface 204 may allow the system 102 to interact with a user directly or through the user devices 104 . Further, the I/O interface 204 may enable the system 102 to communicate with other computing devices, such as web servers and external data servers (not shown).
- the I/O interface 204 can facilitate multiple communications within a wide variety of networks and protocol types, including wired networks, for example, LAN, cable, etc., and wireless networks, such as WLAN, cellular, or satellite.
- the I/O interface 204 may include one or more ports for connecting a number of devices to one another or to another server.
- the memory 206 may include any computer-readable medium or computer program product known in the art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, a compact disks (CDs), digital versatile disc or digital video disc (DVDs) and magnetic tapes.
- volatile memory such as static random access memory (SRAM) and dynamic random access memory (DRAM)
- non-volatile memory such as read only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, a compact disks (CDs), digital versatile disc or digital video disc (DVDs) and magnetic tapes.
- ROM read only memory
- ROM erasable programmable ROM
- flash memories such as compact disks (CDs), digital versatile disc or digital video disc (DVDs) and magnetic tapes.
- CDs compact disks
- the modules 208 include routines, programs, objects, components, data structures, etc., which perform particular tasks or implement particular abstract data types.
- the modules 208 may include a determining module 210 , an applying module 212 , a computing module 214 , and other modules 216 .
- the other modules 216 may include programs or coded instructions that supplement applications and functions of the system 102 .
- the data 218 serves as a repository for storing data processed, received, and generated by one or more of the modules 208 .
- the data 218 may also include a program database 220 , and other data 222 . Further, each of the aforementioned modules is explained in detail in subsequent paragraphs of the specification.
- FIG. 3 depicts a detailed explanation of the system, in accordance with an embodiment of the present subject matter.
- the software applications or the software programs consist of methods, functions, procedures, classes defined in one or more programming languages.
- the software program executes, it performs a specific purpose.
- the software program is required to be regularly updated or maintained or tested. Further, this regular update or maintenance is also based on requirements of clients or due to some specific need. Highly skilled professionals like software engineers/programmers perform the task of updating or testing of the software programs.
- the software engineer working on the software program may not always be the same person who has developed that particular software program, and therefore, he/she may not understand the criticality of the methods, the functions, the procedures, or the classes defined in that software program. This leads to confusion, in the mind of the software engineer (or any other skilled person) working on the software program, about the impact caused by modifying any method, function, the procedure, or the class defined in the software program.
- the aforementioned methods, functions, procedures, and classes may be collectively referred as “unit of source code”.
- the present subject matter discloses the system 102 and method for determining the criticality of the unit of source code present in the software program.
- the system 102 computes a single metric i.e., a criticality metric which indicates the criticality of the unit of source code.
- the purpose of the present disclosure is to provide a complete visibility to the user (i.e., the software engineer/software programmer/software tester) about the software program before making any changes in the unit of source code.
- the criticality metric computed is numeric in nature which gives a fair idea to the user about the criticality of the unit of source code present in the software program.
- the determining module 210 of the system 102 may determine a logical criticality of the unit of source code by using one or more natural language processing (NLP) algorithms like Open NLP algorithms, Snowball, MALLET and the like.
- NLP natural language processing
- the NLP algorithm may be customized for determining the logical criticality. For example, if the unit of source code comprises an important function name (i.e., factor), then the determining module 210 may determine its logical criticality accordingly.
- the determining module 210 determines the logical criticality accordingly.
- the influence of the aforementioned factors on the unit of source code may be evaluated. Further, based on such evaluation, the logical criticality of the unit of source code may be determined. Further, the logical criticality along with the parameters is further used by the system 102 for computing the criticality metric which is explained in subsequent paragraphs of the specification.
- one or more possible parameters associated with the unit of source code are considered by the system 102 . These parameters considered may include, but not limited to, functional dependencies, type of code, and complexity of code which are associated with the unit of source code.
- the aforementioned parameters are further stored in the program database 220 of the system 102 . Further, the complete view of these parameters is shown in below table 1 .
- the applying module 212 of the system 102 may apply a Bayesian network model on the aforementioned parameters associated with the unit of source code, including the logical criticality to assign a weight to each of the aforementioned parameters. Further, a level of dependency between each parameter and at least one other parameter of the aforementioned of parameters is also determined. Now, the weight and the level of dependency gives more detailed information to the system 102 about the unit of source code present in the software program. Based on the weight and the level of dependency, formulae may be derived by the system 102 for computing the criticality metric. Thus, the computing module 214 of the system 102 computes the criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- the criticality metric computed for the different units of source code of a software program 302 is shown in the FIG. 3 .
- the criticality metric may be computed on scale of M1 to M10, wherein M1 indicates least critical and M10 indicates most critical.
- M1 indicates least critical
- M10 indicates most critical.
- M1 indicates least critical
- M10 indicates most critical.
- the software program 302 has 3 units of source code i.e., Unit of Source code_ 1 ( 304 ), Unit of Source code_ 2 ( 306 ), and Unit of Source code_ 3 ( 308 ).
- the criticality metric is computed as M3 which gives an indication to the user that the Unit of Source code_ 1 ( 304 ) is not so critical. It can be further observed from FIG. 3 that the criticality metric is not only computed for the unit of source code, but it is also computed at a granular level i.e., for each line of code present in the unit of source code.
- the criticality metric is computed is M9, however, the criticality metric computed for the lines of code (i.e., L1, L2, L3, L4, L5 and L6) is different. This way, the system 102 gives more transparency to the user regarding the criticality of the unit of source code of the software program.
- the Unit of Source code_ 2 ( 306 ) is software method written for calculating a simple interest for a banking application, it becomes important to display the criticalness of that method to the user.
- criticality metric displayed for the lines of code L1 to L4 is “M9” and for the lines of code L5 to L6 is “M1”, which shows that the lines of code L1 to L4 are more critical in nature than the lines of code L1 and L2. This may happen because lines of code L1 to L4 may comprise a calculation logic for calculating the simple interest, whereas, the lines of code L5 and L6 may simply has print command for giving a print of a statement.
- the criticality metric computed at the granular level which gives more insightful information to the user regarding the criticalness of the unit of source code.
- the user becomes more careful while working on such unit of source code.
- the system 102 updates the criticality metric of that unit of source code in real-time.
- the history of the criticality metric computed for the unit of source code is also stored in the program database 302 of the system 102 .
- the method 400 may be described in the general context of computer executable instructions.
- computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, functions, etc., that perform particular functions or implement particular abstract data types.
- the method 400 may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network.
- computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
- the order in which the method 400 is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method 400 or alternate methods. Additionally, individual blocks may be deleted from the method 400 without departing from the spirit and scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, the method 400 may be considered to be implemented in the above described system 102 .
- a logical criticality of a unit of source code may be determined, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm.
- NLP natural language processing
- a Bayesian network model may be applied on a plurality of parameters, including the logical criticality in order to perform the steps shown in block 404 A and 404 B.
- a weight may be assigned to each of the plurality of parameters.
- a level of dependency may be determined between each parameter and at least one other parameter of the plurality of parameters.
- a criticality metric of the unit of source code may be computed based on the weight and the level of dependency associated to each parameter.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
The present subject matter discloses system and method for computing criticality metric of a unit of source code in software program. The system includes determining module, applying module, and computing module. The determining module determines a logical criticality of the unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm. Further, the applying module may apply a Bayesian network model on plurality of parameters, including the logical criticality, in order to assign weight to each of the plurality of parameters, and to determine level of dependency between each parameter and at least one other parameter of the plurality of parameters. Further, the computing module computes a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
Description
- The present application claims priority from Indian Patent Application No. 201611002549, filed on Jan. 22, 2016, the entirety of which is hereby incorporated by reference.
- The present subject matter described herein generally relates to a method and a system for determining a criticality metric of a unit of source code in a software program.
- Software testing or software maintenance is one of a phase in a software development life cycle (SDLC). When a change request arises for changing or updating a particular unit of source code present in a software program, software engineers (developers/testers/software professionals) either experienced or novice may not have a complete understanding of the impact caused by changing/modifying the unit of source code. The unit of source code may be a method or a procedure or a function or any particular class defined in the software program for a specific purpose.
- To get the complete view of the unit of source code, the software engineers generally have to refer various documents and files related to that unit of source code. Moreover, the software engineers may also need to contact peers, or experienced peers who were previously involved in the development of that software program to understand the criticality of the unit of source code and the impact it has on the functionality of the application. All the aforementioned factors divert the software engineer's attention from actual work of updating or testing the unit of source code. Also, these factors leave the software engineer or any other person, working on the unit of source code, in an uncertain state of mind i.e., how critical that unit of source code is and what will be the impact on the software program if the unit of source code is modified. This typically results in over-analysis of the code and consequently loss of time and effort or on the corollary, result in under-analysis leading to degradation of the quality of the application.
- This summary is provided to introduce aspects related to systems and methods for computing a criticality metric of a unit of source code in a software program, which are further described below in the detailed description. This summary is not intended to limit the scope of the subject matter.
- In one implementation, a system for computing a criticality metric of a unit of source code in a software program is disclosed. The system includes a processor and a memory coupled to the processor. The processor may execute a plurality of modules stored in the memory. The plurality of modules may include a determining module, an applying module, and a computing module. The determining module may determine a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms. Further, the applying module may apply a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters. Further, the computing module may compute a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- In another implementation, a method for computing a criticality metric of a unit of source code in a software program is disclosed. The method may include determining, by a processor, a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms. Further, the method may include a step of applying, by the processor, a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters. The method may further include a step of computing, by the processor, a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- Yet in another implementation, a non-transitory computer readable medium embodying a program executable in a computing device for computing a criticality metric of a unit of source code in a software program is disclosed. Further, the program may comprise a program code for determining a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithms. The program may further comprise a program code for applying a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to assign a weight to each of the plurality of parameters and to determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters. Further, the program may comprise a program code for computing a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
- The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to refer like features and components.
-
FIG. 1 illustrates a network implementation of a system for computing a criticality metric of a unit of source code in a software program, in accordance with an embodiment of the present subject matter. -
FIG. 2 illustrates the system, in accordance with an embodiment of the present subject matter. -
FIG. 3 illustrates detail explanation of the system, in accordance with an embodiment of the present subject matter. -
FIG. 4 illustrates a method for computing a criticality metric of a unit of source code in a software program, in accordance with an embodiment of the present subject matter. - Referring to
FIG. 1 , anetwork implementation 100 ofsystem 102 for computing a criticality metric of a unit of source code in a software program is illustrated, in accordance with an embodiment of the present subject matter. Although the present subject matter is explained considering that thesystem 102 is implemented for computing the criticality metric on a server, it may be understood that thesystem 102 may also be implemented in a variety of computing systems, such as a laptop computer, a desktop computer, a notebook, a workstation, a mainframe computer, a server, a network server, a tablet, a mobile phone, and the like. In one embodiment, thesystem 102 may be implemented in a cloud-based environment. It will be understood that thesystem 102 may be accessed by multiple users through one or more user devices 104-1, 104-2, 104-3, 104-N, collectively referred to asuser 104 hereinafter, or applications residing on theuser devices 104. Examples of theuser devices 104 may include, but are not limited to, a portable computer, a personal digital assistant, a handheld device, and a workstation. Theuser devices 104 are communicatively coupled to thesystem 102 through anetwork 106. - In one implementation, the
network 106 may be a wireless network, a wired network or a combination thereof. Thenetwork 106 can be implemented as one of the different types of networks, such as intranet, local area network (LAN), wide area network (WAN), the internet, and the like. Thenetwork 106 may either be a dedicated network or a shared network. The shared network represents an association of the different types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), and the like, to communicate with one another. Further, thenetwork 106 may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, and the like. - Referring now to
FIG. 2 , thesystem 102 is illustrated in accordance with an embodiment of the present subject matter. In one embodiment, thesystem 102 may include at least oneprocessor 202, an input/output (I/O)interface 204, and amemory 206. The at least oneprocessor 202 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the at least oneprocessor 202 is configured to fetch and execute computer-readable instructions or modules stored in thememory 206. - The I/
O interface 204 may include a variety of software and hardware interfaces, for example, a web interface, a graphical user interface, and the like. The I/O interface 204 may allow thesystem 102 to interact with a user directly or through theuser devices 104. Further, the I/O interface 204 may enable thesystem 102 to communicate with other computing devices, such as web servers and external data servers (not shown). The I/O interface 204 can facilitate multiple communications within a wide variety of networks and protocol types, including wired networks, for example, LAN, cable, etc., and wireless networks, such as WLAN, cellular, or satellite. The I/O interface 204 may include one or more ports for connecting a number of devices to one another or to another server. - The
memory 206 may include any computer-readable medium or computer program product known in the art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, a compact disks (CDs), digital versatile disc or digital video disc (DVDs) and magnetic tapes. Thememory 206 may includemodules 208 anddata 218. - The
modules 208 include routines, programs, objects, components, data structures, etc., which perform particular tasks or implement particular abstract data types. In one implementation, themodules 208 may include a determiningmodule 210, an applyingmodule 212, acomputing module 214, andother modules 216. Theother modules 216 may include programs or coded instructions that supplement applications and functions of thesystem 102. - The
data 218, amongst other things, serves as a repository for storing data processed, received, and generated by one or more of themodules 208. Thedata 218 may also include aprogram database 220, andother data 222. Further, each of the aforementioned modules is explained in detail in subsequent paragraphs of the specification. - Referring now to
FIG. 3 ,FIG. 3 depicts a detailed explanation of the system, in accordance with an embodiment of the present subject matter. In general, the software applications or the software programs consist of methods, functions, procedures, classes defined in one or more programming languages. When the software program executes, it performs a specific purpose. However, to keep the software program synced with its specific purpose, the software program is required to be regularly updated or maintained or tested. Further, this regular update or maintenance is also based on requirements of clients or due to some specific need. Highly skilled professionals like software engineers/programmers perform the task of updating or testing of the software programs. But, the software engineer working on the software program may not always be the same person who has developed that particular software program, and therefore, he/she may not understand the criticality of the methods, the functions, the procedures, or the classes defined in that software program. This leads to confusion, in the mind of the software engineer (or any other skilled person) working on the software program, about the impact caused by modifying any method, function, the procedure, or the class defined in the software program. Hereinafter, the aforementioned methods, functions, procedures, and classes may be collectively referred as “unit of source code”. - Thus, to address above discussed concern, the present subject matter discloses the
system 102 and method for determining the criticality of the unit of source code present in the software program. According to embodiments of present disclosure, thesystem 102 computes a single metric i.e., a criticality metric which indicates the criticality of the unit of source code. The purpose of the present disclosure is to provide a complete visibility to the user (i.e., the software engineer/software programmer/software tester) about the software program before making any changes in the unit of source code. The criticality metric computed is numeric in nature which gives a fair idea to the user about the criticality of the unit of source code present in the software program. - With each of the unit of source code, there may be several factors and parameters involved. These factors may comprise keywords, function names, calculation logic or any other details based on which an importance of the unit of source code may be determined. The factors are stored in the
program database 220 of thesystem 102. Based on the factors involved with the unit of source code, the determiningmodule 210 of thesystem 102 may determine a logical criticality of the unit of source code by using one or more natural language processing (NLP) algorithms like Open NLP algorithms, Snowball, MALLET and the like. According to embodiments, the NLP algorithm may be customized for determining the logical criticality. For example, if the unit of source code comprises an important function name (i.e., factor), then the determiningmodule 210 may determine its logical criticality accordingly. Similarly, if the unit of source code comprises some calculation logic written as a formulae (i.e., factor), then also the determiningmodule 210 determines the logical criticality accordingly. Thus, by using the customized NLP algorithms for semantically interpreting source code, the influence of the aforementioned factors on the unit of source code may be evaluated. Further, based on such evaluation, the logical criticality of the unit of source code may be determined. Further, the logical criticality along with the parameters is further used by thesystem 102 for computing the criticality metric which is explained in subsequent paragraphs of the specification. - Since the purpose of the present disclosure is to provide complete visibility of the software program to the user, one or more possible parameters associated with the unit of source code are considered by the
system 102. These parameters considered may include, but not limited to, functional dependencies, type of code, and complexity of code which are associated with the unit of source code. The aforementioned parameters are further stored in theprogram database 220 of thesystem 102. Further, the complete view of these parameters is shown in below table 1. -
TABLE 1 The parameters and their details associated with the unit of source code. Functional Complexity dependencies of Code Type of Code i. Requirement/ i. Cyclomatic Executable Non-executable Use-case complexity Code:- Code:- priority ii. Code i. Declarative i. Comments ii. Defects dependencies/ (Class, ii. Class, method, identified call graphs Method, variable iii. Test Efforts variable . . . ) declaration iv. Execution load ii. Structural comments (If/for iii. Logical structural explanation statements . . . ) comments iii. Log statements iv. Flow related iv. Import comments v. Return statements vi. Error handling vii. Design Pattern - From the above table, the details of the parameters associated with the unit of source code can be seen. Thus, in next step, the applying
module 212 of thesystem 102 may apply a Bayesian network model on the aforementioned parameters associated with the unit of source code, including the logical criticality to assign a weight to each of the aforementioned parameters. Further, a level of dependency between each parameter and at least one other parameter of the aforementioned of parameters is also determined. Now, the weight and the level of dependency gives more detailed information to thesystem 102 about the unit of source code present in the software program. Based on the weight and the level of dependency, formulae may be derived by thesystem 102 for computing the criticality metric. Thus, thecomputing module 214 of thesystem 102 computes the criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter. - The criticality metric computed for the different units of source code of a
software program 302 is shown in theFIG. 3 . According to an embodiment of present disclosure, the criticality metric may be computed on scale of M1 to M10, wherein M1 indicates least critical and M10 indicates most critical. However, it must be understood to a person skilled in art that there may be other scales which may be considered by thesystem 102 for indicating the criticalness of the unit of source code. - In
FIG. 3 , it can be seen that thesoftware program 302 has 3 units of source code i.e., Unit of Source code_1 (304), Unit of Source code_2 (306), and Unit of Source code_3 (308). For the Unit of Source code_1 (304), the criticality metric is computed as M3 which gives an indication to the user that the Unit of Source code_1 (304) is not so critical. It can be further observed fromFIG. 3 that the criticality metric is not only computed for the unit of source code, but it is also computed at a granular level i.e., for each line of code present in the unit of source code. Considering another unit of source code (i.e., Unit of Source code_2 (306)) in thesoftware program 302, the criticality metric is computed is M9, however, the criticality metric computed for the lines of code (i.e., L1, L2, L3, L4, L5 and L6) is different. This way, thesystem 102 gives more transparency to the user regarding the criticality of the unit of source code of the software program. - Suppose, the Unit of Source code_2 (306) is software method written for calculating a simple interest for a banking application, it becomes important to display the criticalness of that method to the user. In this case, criticality metric displayed for the lines of code L1 to L4 is “M9” and for the lines of code L5 to L6 is “M1”, which shows that the lines of code L1 to L4 are more critical in nature than the lines of code L1 and L2. This may happen because lines of code L1 to L4 may comprise a calculation logic for calculating the simple interest, whereas, the lines of code L5 and L6 may simply has print command for giving a print of a statement. Thus, the criticality metric computed at the granular level which gives more insightful information to the user regarding the criticalness of the unit of source code. The user becomes more careful while working on such unit of source code. Further, if the user does any changes in the unit of source code of the software program, the
system 102 updates the criticality metric of that unit of source code in real-time. Further, the history of the criticality metric computed for the unit of source code is also stored in theprogram database 302 of thesystem 102. - Referring now to
FIG. 4 , the method of computing a criticality metric of a unit of source code in a software program is shown, in accordance with an embodiment of the present subject matter. Themethod 400 may be described in the general context of computer executable instructions. Generally, computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, functions, etc., that perform particular functions or implement particular abstract data types. Themethod 400 may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices. - The order in which the
method 400 is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement themethod 400 or alternate methods. Additionally, individual blocks may be deleted from themethod 400 without departing from the spirit and scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, themethod 400 may be considered to be implemented in the above describedsystem 102. - At
block 402, a logical criticality of a unit of source code may be determined, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm. - At
block 404, a Bayesian network model may be applied on a plurality of parameters, including the logical criticality in order to perform the steps shown in block 404A and 404B. - At block 404A, a weight may be assigned to each of the plurality of parameters.
- At block 404B, a level of dependency may be determined between each parameter and at least one other parameter of the plurality of parameters.
- At
block 406, a criticality metric of the unit of source code may be computed based on the weight and the level of dependency associated to each parameter. - Although implementations for methods and systems for computing the criticality metric have been described in language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as examples of implementations for computing the criticality metric of the unit of source code in the software program.
Claims (11)
1. A method for computing a criticality metric of a unit of source code in a software program, the method comprising:
determining, by a processor, a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm;
applying, by the processor, a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to
assign a weight to each of the plurality of parameters, and
determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters; and
computing, by the processor, a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
2. The method of claim 1 , wherein the unit of source code comprises at least one of a software line, software function, a software procedure, a software method, and a software class.
3. The method of claim 1 , wherein the one or more factors comprise at least one of keywords, function name, and calculation logic present in the unit of source code.
4. The method of claim 1 , wherein the plurality of parameters further comprises functional dependencies, type of code, and complexity of code.
5. The method of claim 1 , wherein the criticality metric is updated in real-time when a change is detected in the unit of source code.
6. A system for computing a criticality metric of a unit of source code in a software program, and wherein the system comprises:
a processor;
a memory coupled with the processor, wherein the processor executes a plurality of modules stored in the memory, and wherein the plurality of modules comprises:
a determining module to determine a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm;
an applying module to apply a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to
assign a weight to each of the plurality of parameters, and
determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters; and
a computing module to compute a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
7. The system of claim 6 , wherein the unit of source code comprises at least one of a software line, a software function, a software procedure, a software method, and a software class.
8. The system of claim 6 , wherein the one or more factors comprise at least one of keywords, function name, and calculation logic present in the unit of source code.
9. The system of claim 6 , wherein the plurality of parameters further comprises functional dependencies, type of code, and complexity of code.
10. The system of claim 6 , wherein the criticality metric is updated in a real-time when a change is detected in the unit of source code.
11. A non-transitory computer readable medium embodying a program executable in a computing device for computing a criticality metric of a unit of source code in a software program, the program comprising:
a program code for determining a logical criticality of a unit of source code, based on one or more factors associated with the unit of source code, by using a natural language processing (NLP) algorithm;
a program code for applying a Bayesian network model on a plurality of parameters associated with the unit of source code, including the logical criticality, in order to
assign a weight to each of the plurality of parameters, and
determine a level of dependency between each parameter and at least one other parameter of the plurality of parameters; and
a program code for computing a criticality metric of the unit of source code based on the weight and the level of dependency associated to each parameter.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN201611002549 | 2016-01-22 | ||
IN201611002549 | 2016-01-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170212755A1 true US20170212755A1 (en) | 2017-07-27 |
Family
ID=59359095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/399,023 Abandoned US20170212755A1 (en) | 2016-01-22 | 2017-01-05 | System and method for computing a criticality metric of a unit of source code |
Country Status (1)
Country | Link |
---|---|
US (1) | US20170212755A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633099A (en) * | 2017-10-20 | 2018-01-26 | 西北工业大学 | The importance decision method of data base consistency(-tance) mistake |
WO2020036559A3 (en) * | 2018-06-05 | 2020-04-23 | İzmi̇r Yüksek Teknoloji̇ Ensti̇tüsü | Program slicing and bayesian network based method of determining functions to be changed in new version of software |
-
2017
- 2017-01-05 US US15/399,023 patent/US20170212755A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633099A (en) * | 2017-10-20 | 2018-01-26 | 西北工业大学 | The importance decision method of data base consistency(-tance) mistake |
WO2020036559A3 (en) * | 2018-06-05 | 2020-04-23 | İzmi̇r Yüksek Teknoloji̇ Ensti̇tüsü | Program slicing and bayesian network based method of determining functions to be changed in new version of software |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10235141B2 (en) | Method and system for providing source code suggestion to a user in real-time | |
CN109408373B (en) | Test method of intelligent contract, computer readable storage medium and test terminal | |
US10503478B2 (en) | System and method for guiding a user in a software development lifecycle using machine learning | |
US20170192880A1 (en) | Defect prediction | |
CN106796585B (en) | Conditional validation rules | |
AU2017327823B2 (en) | Test case generator built into data-integration workflow editor | |
US8997065B2 (en) | Automatic modularization of source code | |
US10552296B2 (en) | Human-readable, language-independent stack trace summary generation | |
US20150026664A1 (en) | Method and system for automated test case selection | |
US9292281B2 (en) | Identifying code that exhibits ideal logging behavior | |
US20150100945A1 (en) | Resuming a software build process | |
US9898258B2 (en) | Versioning of build environment information | |
US20150347129A1 (en) | Assigning an annotation to a variable and a statement in a source code of a software application | |
TW201235943A (en) | Unchanged object management | |
US11698829B2 (en) | Identifying root causes of software defects | |
US9378478B2 (en) | System and method for facilitating quality assurance of a software application | |
US10310961B1 (en) | Cognitive dynamic script language builder | |
US20170212755A1 (en) | System and method for computing a criticality metric of a unit of source code | |
CN113590593B (en) | Data table information generation method and device, storage medium and electronic device | |
US20220147831A1 (en) | Automatic and unsupervised detached subgraph detection in deep learning programs | |
US20210224053A1 (en) | Deployment scheduling using failure rate prediction | |
US11182272B2 (en) | Application state monitoring | |
US20150020072A1 (en) | Content space environment representation | |
US9542182B2 (en) | Standardization of variable names in an integrated development environment | |
US11893381B1 (en) | Digital processing systems and methods for reducing file bundle sizes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HCL TECHNOLOGIES LIMITED, INDIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SURAPARAJU, RAJESH BABU;KALAISELVAN, LAVANYA;BRAHMANAYAGAM, PRIYADHARSHINI;REEL/FRAME:040860/0557 Effective date: 20161229 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |