Entries |
Document | Title | Date |
20080307398 | Method and System for Finding Problems Caused by Access to Partially Uninitialized Data Storage Which is Accessed Using Index Expressions - The present invention provides a system and method for detecting problems caused by access to incompletely initialized data storage in assembler and high-level language programs. An internal representation of the control flow of the source code of the assembler program is generated and a data-flow analysis method is applied to the internal representation. | 12-11-2008 |
20080320451 | Procedure Summaries for Pointer Analysis - Pointer analysis is used for different applications, e.g., compilers, debugging tools and programs understanding tools, each having different requirements. A framework for pointer analysis is provided that defines a multidimensional space, for example a three-dimensional space, containing an order sensitivity dimension, a predicate sensitivity dimension and a value persistence dimension. A point in the three-dimensional space is identified. This point yields values for order sensitivity, predicate sensitivity and value persistence. Pointer analysis is then conducted on a computer program in accordance with the identified values for order sensitivity, predicate sensitivity and value persistence. | 12-25-2008 |
20090007079 | CALLING AN ENTITY OF A GRAPHICAL MODEL WITH A NON-GRAPHICAL ENTITY AND CALLING A NON-GRAPHICAL ENTITY OF A GRAPHICAL MODEL WITH A GRAPHICAL ENTITY - The present invention provides a graphical model in a computing environment, where the graphical model includes at least a caller entity. A call command associated with the caller entity is executed, where the call command includes at least a partial name of the callee entity. The at least one callee entity may be identified based on the partial name of the at least one callee entity provided in the call command. The at least one callee entity may then be called. | 01-01-2009 |
20090077542 | METHODS FOR SELECTIVELY PRUNING FALSE PATHS IN GRAPHS THAT USE HIGH-PRECISION STATE INFORMATION - Methods are provided that allow a false path pruner to traverse a directed acyclic graph in conjunction with one or more checker programs that are analyzing a program for defects or other artifacts of interest. While the checkers may have ways of avoiding re-traversal of portions of the graph that have already been traversed, the false path pruner may override such decisions made by the checkers as a result of a false path in order to allow re-traversal during a future different traversal when that same defect or artifact may not lie along a false path, and therefore avoid missing a valid defect or artifact. Computer programs stored on tangible media are provided that implement the methods of the invention. | 03-19-2009 |
20090217248 | SYSTEMS AND METHODS FOR INFORMATION FLOW ANALYSIS - Computer-implemented methods for analyzing computer programs written in semi-structured languages are disclosed. The method is based on unification of the two classic forms of program flow analysis, control flow and data flow analysis. As such, it is capable of substantially increased precision, which increases the effectiveness of applications such as automated parallelization and software testing. Certain implementations of the method are based on a process of converting source code to a decision graph and transforming that into one or more alpha graphs which support various applications in software development. The method is designed for a wide variety of digital processing platforms, including highly parallel machines. The method may also be adapted to the analysis of (semi-structured) flows in other contexts including water systems and electrical grids. | 08-27-2009 |
20090249308 | Efficient Encoding of Instrumented Data in Real-Time Concurrent Systems - A mechanism for encoding and reporting instrumented data is disclosed that requires less storage space and incurs less processor overhead than other methods of the prior art. In accordance with the illustrative embodiment, a bit vector in shared memory corresponds to nodes of a program's control-flow graph that have been instrumented, and the contents of the vector indicate which of these nodes have executed; in addition, character strings in shared memory indicate what file, class, and method each node belongs to. A process that executes concurrently with those of the program under test transmits instrumented data from the shared memory to a database. The illustrative embodiment enables efficient, rapid reporting and storage of instrumented data, and is therefore especially well-suited for run-time analysis of real-time concurrent systems. | 10-01-2009 |
20090249309 | Efficient Program Instrumentation - A method for determining the number and location of instrumentation probes to be inserted into a program is disclosed. The method advantageously inserts the minimum number of probes that are required to obtain execution coverage for every node in the program's control-flow graph. In addition, the method requires only type of node marking and one bit to store each probe, and does not require the assignment of weights to arcs or nodes of the control-flow graph. In the illustrative embodiment, the nodes of a control-flow graph are partitioned into non-empty sets, where each non-empty set corresponds to a super nested block of the program. | 10-01-2009 |
20090282393 | Securing Software By Enforcing Data Flow Integrity - The majority of such software attacks exploit software vulnerabilities or flaws to write data to unintended locations. For example, control-data attacks exploit buffer overflows or other vulnerabilities to overwrite a return address in the stack, a function pointer, or some other piece of control data. Non-control-data attacks exploit similar vulnerabilities to overwrite security critical data without subverting the intended control flow in the program. We describe a method for securing software against both control-data and non-control-data attacks. A static analysis is carried out to determine data flow information for a software program. Data-flow tracking instructions are formed in order to track data flow during execution or emulation of that software. Also, checking instructions are formed to check the tracked data flow against the static analysis results and thereby identify potential attacks or errors. Optional optimisations are described to reduce the resulting additional overheads. | 11-12-2009 |
20090328009 | METHOD AND SYSTEM FOR FAST STATIC TAINT ANALYSIS - A method for detecting user input dependence in software code. The method including representing the software code with a reachability graph having: a plurality of nodes, where a root node of the plurality of nodes represents an input controlled by a user; a first directed edge connecting a first node of the plurality of nodes and a second node of the plurality of nodes, where the first directed edge represents a data dependency; and a second directed edge connecting a third node of the plurality of nodes and a fourth node of the plurality of nodes, wherein the second directed edge represents a data dependency. The method also includes identifying a fifth node of the plurality of nodes as a reachable node from the root node by traversing the reachability graph from the root node to the reachable node; and marking a portion of the software code represented by the reachable node as user input dependant. | 12-31-2009 |
20100153928 | Developing and Maintaining High Performance Network Services - A network service runtime module executing on a processor is configured to accept a directed acyclic service graph representing elements of a network service application. During execution of the service graph, runtime events are stored. The service graph may by optimized by generating alternate service graphs, and simulating performance of the alternate service graphs in a simulator using the stored runtime events. A hill climber algorithm may be used in conjunction with the simulator to vary alternate service graphs and determine which alternate service graphs provide the greatest utility. Once determined, an alternate service graph with the greatest utility may be loaded into the network service runtime module for execution. | 06-17-2010 |
20100275186 | SEGMENTATION FOR STATIC ANALYSIS - Various embodiments provide techniques to segment program code that may be the subject of static analysis. In one or more embodiments, an algorithm is applied to an abstract representation of the program code to derive segments for the program code. In at least some embodiments, multiple segments can be derived based at least in part upon of one or more “boxed” portions of the program code that are designated to remain intact within the segments. Each segment can then be subjected individually to static analysis to verify compliance with one or more prescribed behaviors. Verification results can be output for each individual segment and the individual results can be combined to obtain results for the program code overall. | 10-28-2010 |
20100299656 | Concurrent Static Single Assignment for General Barrier Synchronized Parallel Programs - Techniques for generating concurrent static single assignment (CSSA) are provided. The techniques include generating a clocked control flow graph of a program, for each thread of the program created through async instruction, determining each part of the program that can execute concurrently with each thread to create a pair comprising a thread and a parallel program part, for each pair that can execute concurrently, using one or more flow equations to perform node-by-node matching, and using the node-by-node matching to generate CSSA form for the program. | 11-25-2010 |
20110010692 | APPLICATION DEVELOPMENT SUPPORT DEVICE, PROGRAM AND STORAGE MEDIUM - The development of an application program that includes a user interface (UI), which can provide a processing parameter to be handed to a web service when a UI screen is called via a link, is realized without coding operations. When the UI screen is called via the link, in which link information is embedded with the processing parameter, a platform program obtains the processing parameter and stores the processing parameter in a corresponding storage region. A call program that has been attached to an unconditional starting button, which is located in the UI screen by a developer, in advance activates the web service by using the processing parameter in the storage region as an argument. After the processing for storing the output variables of the web service in the corresponding storage region is carried out, the processing, in which the called UI screen is generated and distributed, is carried out. | 01-13-2011 |
20110067009 | SOURCE CODE INSPECTION METHOD AND SYSTEM - A source code inspection method and system. The method includes receiving by a computing system, source code files associated with a specified project. The computing system retrieves metrics data comprising software metrics associated with the source code files. The computing system generates first evaluation scores associated with the source code files. The computing system generates and presents to a user, a graph displaying the first evaluation scores. The computing system calculates parameter values associated with an evaluation function used to calculate second evaluation scores associated with the source code files. The computing system calculates the second evaluation scores by enabling the evaluation function using the parameter values. The computing system generates and presents to the user, a second graph displaying the second evaluation scores. | 03-17-2011 |
20110067010 | Method for Characterization of a Computer Program Part - The invention relates to a method for characterizing a computer program section held in a computer memory system, comprising the steps of breaking down the computer program section into segments, wherein program commands contained in the computer program section are used to define a program flow relationship between the segments, and determining characteristic data which can be associated with the program flow relationship of the segments, wherein the characteristic data are compressed to form a signature which identifies the computer program section. | 03-17-2011 |
20110107314 | STATIC CODE RECOGNITION FOR BINARY TRANSLATION - In one embodiment, the present invention includes a method for creating a control flow graph (CFG) node for a starting address, parsing code beginning at the starting address until a control transfer is encountered and statically determining a destination address for the control transfer, and creating a CFG node for the destination address, and parsing code beginning at the destination address. In this way, virtually all executed code of an application can be recognized. Other embodiments are described and claimed. | 05-05-2011 |
20110145799 | PATH-SENSITIVE DATAFLOW ANALYSIS INCLUDING PATH REFINEMENT - Methods, systems, and computer-readable media are disclosed to perform path-sensitive dataflow analysis including path refinement. A path-insensitive dataflow analysis may be performed on a control flow graph (CFG) of a computer program to detect a set of potential defects in the computer program. A path-sensitive dataflow analysis may be performed to identify one or more infeasible paths of the CFG without modifying the CFG. Potential defects associated with the one or more infeasible paths may be removed from the set of potential defects to produce a resulting reduced set of potential defects. The resulting reduced set of potential defects may be output. | 06-16-2011 |
20110161939 | APPARATUS FOR DISPLAYING THE RESULT OF PARALLEL PROGRAM ANALYSIS AND METHOD OF DISPLAYING THE RESULT OF PARALLEL PROGRAM ANALYSIS - According to one embodiment, an apparatus includes a delay data calculator configured to calculate data delay data and task delay data based on a target ability parameter describing an ability of an environment of executing a parallel program, profile data of the parallel program, and a task-dependency graph representing dependence of tasks described in the parallel program, the data delay data representing time elapsing from a start of obtaining variables needed for executing a task comprised in the tasks to acquisition of all of the needed variables, the task delay data representing the time elapsing from the acquisition of the variable to execution of the task, and a display module configured to display, on a display screen, an image showing the task, a task on which the task depends, the task delay data, and the data delay data, based on the task delay data and the data delay data. | 06-30-2011 |
20110179400 | System and method for overflow detection USING PARTIAL EVALUATIONS - A method for overflow detection using partial evaluations. The method includes obtaining a section of code from a source code file stored on a storage device, analyzing the section of code to identify a buffer with an index, determining a plurality of statements that are statically-computable and dependent on the index of the buffer, and generating a code segment including the plurality of statements. The method further includes replacing an access statement of the plurality of statements with a conditional statement returning true when bounds of the buffer are exceeded, where the access statement uses the index to access the buffer, adding an unconditional statement returning false to the code segment, and executing the code segment on a computer processor to obtain a determination of whether the bounds of the buffer are exceeded. | 07-21-2011 |
20110191753 | Incremental deployment and execution of a program on an embedded device - System and method for deploying and executing a program, e.g., a graphical program, on an embedded device. The program and a plurality of execution system components are stored on a host computer. The program is analyzed programmatically to determine a subset of the plurality of components required for execution of the program. The subset of components and the program are combined into a file while preserving execution order of the program. The file is transmitted to the device. The file is used to construct a combined program which includes executable code for the program and the subset of components. The device includes a minimal execution engine which executes the subset of components to execute the program. The file may be streamed to the device for streaming execution, where received portions of the subset of components needed for execution of received portions of the program are stored until no longer needed. | 08-04-2011 |
20110225570 | PROGRAM FLOW ROUTE CONSTRUCTOR - A method and corresponding tool, the method comprising: receiving as an input (a) a higher-level structure representing control flow through an executable program, the higher-level structure comprising one or more levels of parent nodes, each parent node representing internal structure comprising a group of one or more child nodes and one or more associated edges between nodes; and (b) an indication of at least one start and end instruction. The method further comprises probing the levels of the higher-level structure to extract a substructure representing a route through the program from the start to the end instruction, by selectively extracting nodes of different levels of parent to represent different regions along the route in dependence on a location of the start and end instructions relative to the levels of parent nodes; and based on the extracted substructure, estimating an execution time for the route through the program. | 09-15-2011 |
20110246970 | INTERVAL ANALYSIS OF CONCURRENT TRACE PROGRAMS USING TRANSACTION SEQUENCE GRAPHS - A method for the verification of multi-threaded computer programs through the use of concurrent trace programs (CTPs) and transaction sequence graphs (TSGs). | 10-06-2011 |
20110307873 | SYSTEM AND METHOD FOR ENTROPY POOL VERIFICATION - Disclosed are systems, methods, and non-transitory computer-readable storage media for detecting changes in a source of entropy. A system configured to practice the method generates a cyclic graph based at least in part on the values in the entropy pool. Using the cyclic graph and one or more starting points, the system establishes one or more baseline properties for the cyclic graph. These properties can include the number of steps required to identify a cycle in the graph or the number of steps required to traverse the graph from one or more starting points to a selected end point. The computed properties are then stored for later use. As execution progresses, the system monitors the entropy pool to detect a change by regenerating the cyclic graph and using the stored properties. | 12-15-2011 |
20120011492 | SYSTEMS AND METHODS FOR CONCURRENCY ANALYSIS - Systems and methods are disclosed to check properties of bounded concurrent programs by encoding concurrent control flow graph (CFG) and property for programming threads as a first-order formula F | 01-12-2012 |
20120017201 | System and Method for Comparing Software Frameworks - In one embodiment, a method may include symbolically executing application code on a first framework. The method may also include creating a first model based on the symbolic execution of the first framework. The method may additionally include symbolically executing the application code on a second framework. The method may further include creating a second model based on the symbolic execution of the first framework. The method may also include determining one or more parameters associated with the first framework based on the first model. The method may additionally include determining one or more parameters associated with the second framework based on the second model. The method may also include selecting one of the first framework and the second framework as a desired framework for execution of the application code based on a comparison of the one or more parameters associated with the first framework and the one or more parameters associated with the second framework. | 01-19-2012 |
20120084761 | Interprocedural Exception Method - An interprocedural exception analysis and transformation framework for computer programming languages such as C++ that (1) captures the control-flow induced by exceptions precisely, and (2) transforms the given computer program into an exception-free program that is amenable for precise static analysis, verification, and optimizations. | 04-05-2012 |
20120096443 | METHOD OF ANALYZING SINGLE THREAD ACCESS OF VARIABLE IN MULTI-THREADED PROGRAM - A method of analyzing single thread access by a variable of a multi-threaded program is provided. The method includes computing a thread identifier of a thread to be executed in a node of the multi-thread program; computing multiple threads configured to concurrently execute the node; and computing thread accessibility by deducing one or more variables that are executed in a single thread of the program from one or more pairs of the computed threads that concurrently execute the node. | 04-19-2012 |
20120131559 | Automatic Program Partition For Targeted Replay - Program partitioning of an application can include creating execution flow graphs and static flow graphs of targeted functions or operations of the application. Based on the execution flow graphs or static flow graphs, replay interfaces are created. The replay interfaces provide data flows that are usable in re-execution of the application during program development. | 05-24-2012 |
20120151455 | Enhanced Unit Test Framework - Implementations of the present disclosure provide methods including analyzing a plurality of units of a software application to determine a dependency graph defining that at least a first unit depends on a second unit. Each unit includes executable instructions. An execution order is determined for the units based on the dependency graph, wherein the execution order specifies execution of the second unit before the first unit. Unit tests are executed for the units according to the execution order, including executing a unit test of the second unit before the first unit. Executing a unit test for a unit comprises executing the executable instructions of the unit and comparing a resulting value to an expected value. | 06-14-2012 |
20120167060 | System and Method for Software Immunization Based on Static and Dynamic Analysis - Disclosed herein are systems, methods, and non-transitory computer-readable storage media for analyzing source code and identifying potential defects. The methods employ both static analysis and dynamic testing to detect program defects early in the development stage for better quality with less cost. The analysis also ranks identified potential defects and reports only the most likely defects to a human developer. Once defects are detected, they can be removed right away and similar defects can be prevented automatically. | 06-28-2012 |
20120167061 | IDENTIFYING FACTORABLE CODE - Various embodiments are disclosed that relate to the automated identification of one or more computer program functions for potentially placing on a remote computing device in a split-computational computing environment. For example, one disclosed embodiment provides, on a computing device, a method of determining a factorable portion of code to locate remotely from other portions of the code of a program to hinder unauthorized use and/or distribution of the program. The method includes, on a computing device, receiving an input of a representation of the code of the program, performing analysis on the representation of the code, the analysis comprising one or more of static analysis and dynamic analysis, and based upon the analysis of the code, outputting a list of one or more functions determined from the analysis to be candidates for locating remotely. | 06-28-2012 |
20120180028 | SETTING PROGRAM, WORKFLOW CREATING METHOD, AND WORK FLOW CREATING APPARATUS - A computer-readable, non-transitory medium storing a program that causes a computer to execute a procedure, the procedure includes acquiring a state from each of a plurality of components of a first server device group before and after execution of an execution control process in which the first server device group is caused to execute processes, the components being hardware or software and whose dependencies are previously defined, and storing, in a storage unit, information in which a component whose state is different before and after the execution of the execution control process is associated with the execution control process. | 07-12-2012 |
20120246626 | DONUT DOMAINS - EFFICIENT NON-CONVEX DOMAINS FOR ABSTRACT INTERPRETATION - A computer implemented program analysis method employing a set of new abstract domains applicable to non-convex invarients. The method analyzes programs statically using abstract interpretation while advantageously considering non-convex structures and in particular those situations in which an internal region of an unreachable state exists within a larger region of reachable states. The method employs a new set of non-convex domains (donut domains) based upon the notion of an outer convex region of reachable states (Domain D1) and an inner region of unreachable states (Domain D2) which advantageously permits capture of non-convex properties by using convex regions and operations. | 09-27-2012 |
20120260236 | Visualization Of JVM And Cross-JVM Call Stacks - A method for diagnosing problems in a computer system by visualizing flows through applications and other subsystems in a directed graph on a user interface. The user interface represents multiple instances of each application or other subsystem by a respective node, and edges indicate which nodes depend on one another. Aggregate metrics which are based on the multiple instances, and associated alerts, can be provided for the nodes and edges. An aging process can indicate which nodes have not been recently invoked. The user interface can also indicate which nodes and edges are associated with a given business transaction. In a summary view, a node hides the identity of invoked components such as servlets of the application, while in a detailed view these details are provided. | 10-11-2012 |
20120304158 | POINTS-TO ANALYSIS AS VALUE FLOW - In general, in one aspect, the invention relates to a method for performing points-to analysis by generating a value flow graph for source code. The method steps include: initializing the value flow graph including a set of memory objects and a set of edges based on Base and Assignment instructions, where the set of edges represents inclusion constraints between the set of memory objects and a set of pointer variables; determining a pointed-to-by set including at least one pointer variable of the set of pointer variables; updating the value flow graph by introducing a flow edge based on an indirect reference, where the flow edge is related to a memory object of the set of memory objects that is added to a working list; updating the pointed-to-by set based on the memory object in the working list; and analyzing the source code using the pointed-to-by set. | 11-29-2012 |
20120311545 | Lossless Path Reduction for Efficient Symbolic Execution and Automatic Test Generation - In one embodiment, symbolically executing a software module having a number of execution paths; and losslessly reducing the number of execution paths during the symbolic execution of the software module. | 12-06-2012 |
20130014090 | Weighted Code Coverage Tool - Evaluating software test comprehensiveness of an application. A subset of the software-under-test basic blocks is identified for emphasized and/or deemphasized testing. During test, execution of the basic blocks is monitored, and then aggregated into a weighted code coverage result which factors in the prioritization assignments of the subset of basic blocks. | 01-10-2013 |
20130055220 | Tracking Variables in Javascript Software Using a Control Flow Graph - In one embodiment, marking a variable in source code of a software program written in JavaScript; constructing a control flow graph (CFG) for the software program; and tracking the marked variable through the CFG. | 02-28-2013 |
20130055221 | Detecting Errors in Javascript Software Using a Control Flow Graph - In one embodiment, accessing a control flow graph (CFG) of a software program written in JavaScript; accessing a set of specification requirements of the software program; and determining if there is any portion of the CFG that violates any specification requirement of the software program. | 02-28-2013 |
20130081002 | SELECTIVE DATA FLOW ANALYSIS OF BOUNDED REGIONS OF COMPUTER SOFTWARE APPLICATIONS - Performing data flow analysis of a computer software application, including, for a data flow analysis type, identifying within a computer software application code base a plurality of seeds relating to the data flow analysis type, for each of the plurality of seeds, defining a portion of the computer software application code base to a predefined depth of calls backward from the seed and to a predefined depth of calls forward from the seed, thereby resulting in a plurality of bounded portions of the computer software application code base, detecting a change in the computer software application code base, and performing, on any of the bounded portions affected by the change, a data flow analysis relating to the data flow analysis type. | 03-28-2013 |
20130081003 | SELECTIVE DATA FLOW ANALYSIS OF BOUNDED REGIONS OF COMPUTER SOFTWARE APPLICATIONS - Performing data flow analysis of a computer software application, including, for a data flow analysis type, identifying within a computer software application code base a plurality of seeds relating to the data flow analysis type, for each of the plurality of seeds, defining a portion of the computer software application code base to a predefined depth of calls backward from the seed and to a predefined depth of calls forward from the seed, thereby resulting in a plurality of bounded portions of the computer software application code base, detecting a change in the computer software application code base, and performing, on any of the bounded portions affected by the change, a data flow analysis relating to the data flow analysis type. | 03-28-2013 |
20130086561 | STATIC ANALYSIS OF COMPUTER SOFTWARE APPLICATIONS - Static analysis of a computer software application can be performed by applying a first level of abstraction to model a plurality of run-time objects, thereby producing a set of object abstractions. Static data-flow analysis of the computer software application can be performed using the set of object abstractions, thereby producing a first data-flow propagation graph. A data-flow bottleneck can be identified within the data-flow propagation graph. A second level of abstraction can be applied to model any of the run-time objects having in the set of object abstractions a corresponding object abstraction that is traceable to the data-flow bottleneck. The applying the second level of abstraction can decompose the corresponding object abstraction into a set of object abstractions, thereby modifying the set of object abstractions. Static data-flow analysis of the computer software application can be performed using the modified set of object abstractions. | 04-04-2013 |
20130086562 | STATIC ANALYSIS OF COMPUTER SOFTWARE APPLICATIONS - Static analysis of a computer software application can be performed by applying a first level of abstraction to model a plurality of run-time objects, thereby producing a set of object abstractions. Static data-flow analysis of the computer software application can be performed using the set of object abstractions, thereby producing a first data-flow propagation graph. A data-flow bottleneck can be identified within the data-flow propagation graph. A second level of abstraction can be applied to model any of the run-time objects having in the set of object abstractions a corresponding object abstraction that is traceable to the data-flow bottleneck. The applying the second level of abstraction can decompose the corresponding object abstraction into a set of object abstractions, thereby modifying the set of object abstractions. Static data-flow analysis of the computer software application can be performed using the modified set of object abstractions. | 04-04-2013 |
20130152057 | OPTIMIZING DATA PARTITIONING FOR DATA-PARALLEL COMPUTING - A data partitioning plan is automatically generated that—given a data-parallel program and a large input dataset, and without having to first run the program on the input dataset—substantially optimizes performance of the distributed execution system that explicitly measures and infers various properties of both data and computation to perform cost estimation and optimization. Estimation may comprise inferring the cost of a candidate data partitioning plan, and optimization may comprise generating an optimal partitioning plan based on the estimated costs of computation and input/output. | 06-13-2013 |
20130198725 | METHODS FOR SELECTIVELY PRUNING FALSE PATHS IN GRAPHS THAT USE HIGH-PRECISION STATE INFORMATION - Methods are provided that allow a false path pruner to traverse a directed acyclic graph in conjunction with one or more checker programs that are analyzing a program for defects or other artifacts of interest. While the checkers may have ways of avoiding re-traversal of portions of the graph that have already been traversed, the false path pruner may override such decisions made by the checkers as a result of a false path in order to allow re-traversal during a future different traversal when that same defect or artifact may not lie along a false path, and therefore avoid missing a valid defect or artifact. Computer programs stored on tangible media are provided that implement the methods of the invention. | 08-01-2013 |
20130247015 | PLAN-BASED PROGRAM SLICING - A method for generating a slice from a plan-based representation of a program is provided. The method comprises constructing a plan representation of a program, wherein the plan representation comprises a plurality of nodes, edges, and ports; and receiving one or more slicing criteria from a user. The slicing criteria comprise one or more variable occurrences or statements from the program, according to which a slice is generated from the plan representation. | 09-19-2013 |
20140013313 | Editor/Development Tool for Dataflow Programs - A dataflow source program is processed by a program development tool. Processing includes retrieving stored dataflow source program instructions from a memory. The tool ascertains a target model of computation (e.g., via an indicator embedded within the source program itself) to which the retrieved dataflow source program instructions are intended to conform. A dynamic behavior of the retrieved dataflow source program instructions is analyzed, and a compliance result is produced therefrom that includes an indication of whether the retrieved dataflow source program instructions conform to the target model of computation. The compliance result is then output to a user of the program development tool, so that it can inform and guide the improvement and further development of the program. | 01-09-2014 |
20140019946 | LAYERED DECOMPOSITION FOR SCALABLE STATIC DATA RACE DETECTION OF CONCURRENT PROGRAMS - Disclosed is a method of performing static data race detection in concurrent programs wherein a control flow graph (CFG) is decomposed into layers of bounded call-depth which are then used to perform a resulting analysis. Next, a set of pointers of interest are segmented into classes such that each pointer may only be aliased to pointers within its own class, these classes related to computation of shared variables, locksets, waitsets, and notifysets. A flow sensitive context sensitive points-to-analysis for program statements that impact aliases of members within the given class is performed—advantageously reducing the overall size of the problem at hand. Notably, the analysis for individual threads is performed independently of one another, on multiple layers of the CFG, and subsequently merging the results from the individual layers. | 01-16-2014 |
20140137084 | SECURITY ANALYSIS USING RELATIONAL ABSTRACTION OF DATA STRUCTURES - Analyzing program code can include detecting an instance of a container within the program code using a processor, selecting a model container correlated with the container using the processor, and creating an instance of the model container within memory using the processor. A data-flow of the program code can be tracked through the instance of the model container instead of the instance of the container. | 05-15-2014 |
20140143760 | DYNAMIC GRAPH PERFORMANCE MONITORING - Methods, systems, and apparatus, including computer programs encoded on computer storage media, for dynamic graph performance monitoring. One of the methods includes receiving multiple units of work that each include one or more work elements. The method includes determining a characteristic of the first unit of work. The method includes identifying, by a component of the first dataflow graph, a second dataflow graph from multiple available dataflow graphs based on the determined characteristic, the multiple available dataflow graphs being stored in a data storage system. The method includes processing the first unit of work using the second dataflow graph. The method includes determining one or more performance metrics associated with the processing. | 05-22-2014 |
20140181796 | AUTOMATED PARALLEL SOFTWARE CODE IMPACT ANALYSIS - A server device is configured to receive a request to identify a manner in which changed code propagates within an application; generate a group of blocks that correspond to code associated with a parent function corresponding to the application and which includes the changed code; perform an intra-procedural analysis on the group of blocks to identify a block that is affected by the changed code included within an epicenter block; perform an inter-procedural analysis on functions associated with the block, where, when performing the inter-procedural analysis, the server device is to generate another group of blocks associated with the functions, and identify another block that is affected by the changed code included within the epicenter block; and present, for display, information associated with the block or the other block that enables the application to be tested based on the block or the other block. | 06-26-2014 |
20140201722 | IDENTIFICATION OF PERFORMANCE BOTTLENECKS - Embodiments are directed to identifying, by an apparatus comprising a processing device, a pattern in a graph that has a support value greater than a threshold, wherein: the graph comprises a plurality of weighted nodes coupled to one another by one or more weighted edges, and each of the plurality of nodes is associated with at least one weighted attribute. | 07-17-2014 |
20140215445 | DOMINANT-STATE-BASED COVERAGE METRIC - A method, apparatus and product for dominant state based coverage metric. The method comprising: determining whether all possible states of a computer program were examined based on an analysis of states that were examined excluding controlled states that are dominated by a self-dominating states; wherein the controlled states are associated with a controlled nodes in a control flow graph of the computer program, wherein the self-dominating states are associated with a self-dominating node in the control flow graph; wherein each execution path in the control flow graph that reaches the controlled nodes also includes the self-dominating node; and wherein there exists an execution path in the control flow graph that both starts and ends at the self-dominating node and further includes at least one controlled node. | 07-31-2014 |
20140289712 | Effective Lifetime Dependency Analysis and Typestate Analysis - Disclosed are typestate and lifetime dependency analysis methods for identifying bugs in C++ programs. Disclosed are an abstract representation (ARC++) that models C++ objects and which makes object creation/destruction, usage, lifetime and pointer operations explicit in the abstract model thereby providing a basis for static analysis on the C++ program. Also disclosed is a lifetime dependency analysis that tracks implied dependency relationships between lifetimes of objects, to capture an effective high-level abstraction for issues involving temporary objects and internal buffers, and subsequently used in the static analysis that supports typestate checking for the C++ program. Finally disclosed a framework that automatically genarates ARC++ representations from C++ programs and performs typestate checking to detect bugs that are specified as typestate automata over ARC++ representations. | 09-25-2014 |
20140298302 | METHOD AND SYSTEM FOR DETECTING MEMORY LEAKS IN A PROGRAM - A method and a system have been disclosed for detecting one or more memory leaks in a program. The method includes receiving the program code. After receiving the program, the program is tokenized automatically in a predefined format. The predefined format may correspond to a format which is up-loadable to a database. Thereafter, the tokenized program code is analyzed to determine control flows in the program by using a memory leak pattern. The memory leak pattern is an incorrect control flow between the combination of memory allocation and memory de-allocation functions. After analyzing the tokenized program, the memory leaks are identified based on the determined control flows in the program. The memory leaks are identified during the development phase of the program code. Subsequently, the memory leaks are fixed by a programmer. | 10-02-2014 |
20140380283 | Systems and Methods of Detecting Power Bugs - Embodiments of the present invention provide a system and methods for detecting power bugs. In one embodiment, a computer-implemented method for analyzing a computer code includes generating a control flow graph for at least a portion of the computer code at a processor. The method further includes identifying power bugs by traversing the control flow graph if the control flow graph exits without performing a function call to deactivate power to any component of a device configured to execute computer executable instructions based on the computer code after performing a function call to activate power. | 12-25-2014 |
20150082288 | SYSTEM AND METHOD FOR ANALYZING AND TUNING A MARKETING PROGRAM - A method for permitting a program to be analyzed and tuned includes the steps of receiving a program which itself includes a plurality of stages, where execution of the program follows a plurality of distinct paths, each of the distinct paths including one or more of the stages. The method further includes determining unique paths of the program and determining execution boundaries of the program. In addition, the method includes persisting the unique paths and the execution boundaries in a database, and changing an execution of the program based on the persisted unique paths and execution boundaries. | 03-19-2015 |
20150095895 | TESTING FRAMEWORK FOR POLICY-BASED WORKFLOWS - A system comprehensively tests each feasible path in a policy-based Extensible Markup Language (XML) workflow. The system may receive an input workflow and parse workflow (or proxy code of the workflow) to construct a policy control flow graph. The system may identify paths in the policy control flow graph, such as each feasible path in the policy control flow graph. The system may determine path constraints for the identified paths, where the path constraints identify path conditions for traversing the identified path in the policy control flow graph. Then, the system may generate a set of test inputs for the workflow using the path constraints that, when input into the policy-based XML workflow, cause the workflow to traverse the identified paths. | 04-02-2015 |
20150121349 | SCREEN ORIENTED DATA FLOW ANALYSIS - A method for performing data flow analysis of computer code, comprising: providing computer code of a computer program having a plurality of user interface screens; dividing the computer code to a plurality of portions such that each one of the portions includes code for inducing at least one of loading and using one of the user interface screens; performing a variable usage analysis to detect which variables are at least one of calculated and used in each one of the portions; constructing a data dependence model defining dependencies among the portions based on the variable usage analysis; and identifying, for at least one of the portions and using the data dependence model, at least one unnecessary variable loaded in one of the user interface screens and not used in a respective portion and in a group of portions depending on the respective portion. | 04-30-2015 |
20150309913 | IDENTIFYING POTENTIALLY UNINITIALIZED SOURCE CODE VARIABLES - Computer program source code is represented by nodes in a control flow graph. A set of target nodes is identified, where each node in the set of target nodes includes at least one line of source code that defines a modification to a particular variable used in the computer program. A usage score relating to the variable is calculated for each target node. Each usage score is then recalculated based on the earlier scores and also based on the modifications to the variable that are defined by the lines of source code. Each recalculated score is compared to its corresponding earlier score, and if any score has changed, then the process repeats. Scores are recalculated based on the most recently calculated scores until the scores stop changing. The final scores may then be displayed. | 10-29-2015 |
20150339209 | DETERMINING OVERALL PERFORMANCE CHARACTERISTICS OF A CONCURRENT SOFTWARE APPLICATION - One embodiment of the present invention includes a dependency extractor and a dependency investigator that, together, facilitate performance analysis of computer systems. In operation, the dependency extractor instruments a software application to generate run-time execution data for each work task. This execution data includes per-task performance data and dependency data reflecting linkages between tasks. After the instrumented software application finishes executing, the dependency investigator evaluates the captured execution data and identifies the critical path of tasks that establishes the overall run-time of the software application. Advantageously, since the execution data includes both task-level performance data and dependencies between tasks, the dependency investigator enables the developer to effectively optimize software and hardware in computer systems that are capable of concurrently executing tasks. By contrast, conventional performance analysis may not correctly identify critical paths in software applications that execute tasks in parallel across multiple processing units and, consequently, may misdirect optimization efforts. | 11-26-2015 |
20150339217 | METHODS AND SYSTEMS FOR AUTOMATICALLY TESTING SOFTWARE - An automatic software testing machine may be configured to provide an advanced symbolic execution approach to software testing that combines dynamic symbolic execution and static symbolic execution, leveraging the strengths of each and avoiding the vulnerabilities of each. One or more software testing machines within a software testing system may be configured to automatically and dynamically alternate between dynamic symbolic execution and static symbolic execution, based on partial control flow graphs of portions of the software code to be tested. In some example embodiments, a software testing machine begins with dynamic symbolic execution, but switches to static symbolic execution opportunistically. In static mode, instead of checking entire programs for verification, the software testing machine may only check one or more program fragments for testing purposes. Thus, the software testing machine may benefit from the strengths of both dynamic and static symbolic execution. | 11-26-2015 |
20150347126 | AGGREGATING SOURCE CODE METRIC VALUES - Methods, systems, and apparatus, including computer programs encoded on computer storage media, for aggregating source code metric values. One of the methods includes obtaining data representing a directed graph, wherein one or more nodes of the graph are associated with a respective set of one or more metric instances, wherein each set of metric instances for each node includes all metric instances occurring in sets of any node descendant from the node in the graph, wherein each metric instance identifies a location in a source code base, and wherein each metric instance has a respective metric value, a respective identifier, and a respective attribute type. An attribute value is computed for a first node in the graph from the respective metric value of each metric instance in a first set of metric instances associated with the first node. | 12-03-2015 |
20150363294 | Systems And Methods For Software Analysis - Systems, methods, and computer program products are provided for identifying software files, flaws in code, and program fragments by obtaining a software file, determining a plurality of artifacts, accessing a database which stores a plurality of reference artifacts for reference software files, comparing at least one of the artifacts to at least one of the reference artifacts stored in the database, and identifying the software file by identifying the reference software file having the reference artifacts that correspond to the plurality of artifacts. Certain embodiments can also automatically provide updated versions of files, patches to be applied, or repaired blocks of code to replace flawed blocks. Example embodiments can accept a wide variety of file types, including source code and binary files and can analyze source code or convert files to an intermediate representation (IR) and analyze the IR. | 12-17-2015 |
20150363305 | METHOD FOR TEST CASE REDUCTION BASED ON PROGRAM BEHAVIOR SLICES - The present invention provides a method of test cases reduction based on program behavior slices. In the case that there is no need to scan all program paths, a test suite capable of covering all program behaviors is generated to relieve the state-space explosion problem confronted by program tests. In the present invention, during a static analysis stage, analyzing a control flow and an information flow of a program according to input program codes, extracting control dependence and data dependence of the program; calculating potential dependence of the program according to the control dependence and the data dependence of the program; on the basis of the control dependence, the data dependence and the potential dependence, constructing combination dependence of the program; during a dynamic execution stage, according to an execution path and the dependence relation, calculating program behavior slices covered by the path and program behavior slices uncovered by the path, and guiding symbolic execution to generate a path capable of covering new program slices according to the uncovered program behavior slices. Compared with the existing symbolic execution technique, the present invention can ensure the validity of the test suite, while at the same time reducing the number of the generated test cases remarkably. | 12-17-2015 |
20160004622 | WORKFLOW TEST CASE GENERATION - Workflow test case generation may include receiving an intermediate output of a workflow. The intermediate output of the workflow may reference a plurality of workflow building blocks that provide a specified functionality at each step of the workflow. Workflow definitions of the intermediate output of the workflow may be analyzed to generate a graph structure that represents the workflow. Building block attributes that include an identification of attributes for the plurality of workflow building blocks, and the graph structure may be analyzed to generate building block and attribute information for the workflow. The building block and attribute information and the graph structure may be analyzed to generate test paths for the workflow. The building block and attribute information, the test paths, and a plurality of test case templates may be analyzed to generate test artifacts that include testing to be performed for the workflow. | 01-07-2016 |
20160140015 | DISTRIBUTED ANALYSIS AND ATTRIBUTION OF SOURCE CODE - Methods, systems, and apparatus, including computer programs encoded on computer storage media, for distributing analysis tasks and attribution tasks. One of the methods includes receiving data representing a plurality of snapshots of a code base, wherein each snapshot comprises source code files, wherein one or more snapshots have a parent snapshot in the code base according to a revision graph of snapshots in the code base. An attribution set is generated from the plurality of snapshots, the attribution set having a target set of attributable snapshots to be attributed and a support set of all parent snapshots of all snapshots in the target set. An attribution task is distributed for the attribution set to a particular worker node of a plurality of worker nodes. | 05-19-2016 |
20160140030 | AUTOMATIC CORRECTION OF APPLICATION BASED ON RUNTIME BEHAVIOR - A method and associated system for automatically correcting an application based on runtime behavior of the application. An incident indicates a performance of the application in which a problem object produces an outcome that had not been expected by a user. An incident flow for the problem object is automatically analyzed. Actual run of the application renders a forward data flow and at least one backward data flow is simulated from an expected outcome of the problem object. The forward data flow and the at least one backward data flow are compared to create a candidate fault list for the problem object. A technical specification that corrects the incident by use of the candidate fault list and a specification of the application is generated. | 05-19-2016 |
20160170859 | GENERATING AND UTILIZING FINITE INPUT OUTPUT MODELS, COMPARISON OF SEMANTIC MODELS AND SOFTWARE QUALITY ASSURANCE | 06-16-2016 |
20220137959 | DETECTING DUPLICATED CODE PATTERNS IN VISUAL PROGRAMMING LANGUAGE CODE INSTANCES - In various embodiments, a process for detecting duplicated code patterns in visual programming language code instances includes analyzing a repository of graph based visual programming language code instances and detecting a similar code portion pattern duplicated among a group of graph based visual programming language code instances included in the repository of graph based visual programming language code instances including by using an index and tokenizing a flow corresponding to at least one graph based visual programming language code instance in the group of graph based visual programming language code instance. The process includes visually indicating elements belonging to the detected similar code portion pattern within a visual representation of at least one of the group of graph based visual programming language code instances. | 05-05-2022 |