Using Procedure Or Function Call Graph Patents (Class 717/133)
  • Patent number: 11163876
    Abstract: A method may include generating a callgraph by performing a static analysis of code that includes event handlers, and selecting, using the callgraph, a state of the code, selecting, using the callgraph, an event enabled in the selected state. The event corresponds to an event handler. The method may further include obtaining an input, obtaining a next state by executing the event handler with the obtained input in the selected state, in response to executing the event handler, generating an input modification rule using the obtained input, and generating, using the input modification rule and the obtained input, a modified input that bypasses a guard in the code that controls access to the point of interest.
    Type: Grant
    Filed: January 29, 2019
    Date of Patent: November 2, 2021
    Assignee: Oracle International Corporation
    Inventors: Behnaz Hassanshahi, Hyunjun Lee
  • Patent number: 11157591
    Abstract: A collaborative software development environment includes a centralized repository security service that monitors a repository database of the collaborative software development environment for change notifications or events. When a change is noticed (e.g., pull request), the source repository is cloned and suitable images are spun up by an orchestrator, each of which is configured to perform a static analysis operation against the source code of the cloned repository. Results of each static analysis operation are stored in a database that can be accessed by client devices.
    Type: Grant
    Filed: April 21, 2020
    Date of Patent: October 26, 2021
    Assignees: ATLASSIAN PTY LTD., ATLASSIAN INC.
    Inventors: Mark Adams, Chris Walz, Ming Chang, Erin Jensby, Robbie Gallagher
  • Patent number: 11119899
    Abstract: Example implementations relate to determining potential test actions. Some implementations may include a data capture engine to capture data points during test executions of the application under test. The data points may include, for example, test action data and application action data. Additionally, some implementations may include a data correlation engine to correlate each of the data points with a particular test execution of the test executions, and each of the data points may be correlated based on a sequence of events that occurred during the particular test execution. Furthermore, some implementations may also include a test verification engine to determine, based on the correlation of the data points, a potential test action to perform during a future test execution of the application under test.
    Type: Grant
    Filed: May 28, 2015
    Date of Patent: September 14, 2021
    Assignee: MICRO FOCUS LLC
    Inventors: Inbar Shani, Amichai Nitsan, Yaron Burg
  • Patent number: 11061813
    Abstract: Systems and methods for performing a consistency check test on a refactored method are disclosed. The method includes: at a computer, at execution time, receiving a refactored result generated by executing a refactored method and an old result generated by executing a corresponding original method associated with the refactored method; defining the refactored result generated by executing the refactored method as a first object and defining the old result generated by executing the original method as a second object; comparing the first object with the second object to identify any differences between the refactored result and the old result; and upon identifying one or more differences between the first object and the second object logging the differences in a log file.
    Type: Grant
    Filed: November 20, 2019
    Date of Patent: July 13, 2021
    Assignees: ATLASSIAN PTY LTD., ATLASSIAN INC.
    Inventor: Dominik Kapusta
  • Patent number: 11036751
    Abstract: A platform includes a time series database. The platform also includes one or more instance data tables. A function library of the platform includes a set of function definitions and a scripting engine of the platform executes scripts. An advanced insight endpoint of the platform is communicatively coupled to and accessible by an advanced insights explorer user interface. The advanced insight endpoint receives one or more expressions from an expression component of the advanced insights explorer user interface, parses the one or more expressions and validates the one or more expressions against the set of function definitions. The endpoint generates and provides one or more scripts corresponding to the one or more expressions and receives results of execution the one or more scripts. Results are provided to a visualization component of the advanced insight user interface, to cause rendering of the results within the advanced insights explorer user interface.
    Type: Grant
    Filed: May 7, 2018
    Date of Patent: June 15, 2021
    Assignee: ServiceNow, Inc.
    Inventors: Kanwaldeep Kaur Dang, Austin James Steeno, Ritika Goyal, Purushottam Shridhar Amradkar
  • Patent number: 10878103
    Abstract: In one implementation, a method for providing security on controllers includes detecting computer-readable code running on a controller, the computer-readable code including code portions that each include instructions to be performed by the controller; identifying a current code portion of the computer-readable code; accessing an in-memory graph that models an operational flow of the computer-readable code, wherein the in-memory graph includes a plurality of nodes, each of the nodes corresponding to one of the code portions and each of the nodes having a risk value for the associated code portion that is a measure of security risk for the associated code portion; identifying the risk value for the current code portion; selecting, from a plurality of available flow control integrity (IMV) schemes, an IMV scheme based on the identified risk value; and applying, to the code portion as the code portion is running on the controller, the selected IMV scheme.
    Type: Grant
    Filed: June 5, 2017
    Date of Patent: December 29, 2020
    Assignee: KARAMBA SECURITY LTD.
    Inventors: Assaf Harel, Amiram Dotan, Tal Efraim Ben David, David Barzilai
  • Patent number: 10789054
    Abstract: Disclosed herein is a system for facilitating Change Impact Analysis (CIA) using modular program dependency graphs. Further, the system may include a communication device configured for receiving a source code for a software application and one or more changed lines corresponding to the source code from a user device, and transmitting one or more impacted lines from the source code associated with the software application to the user device. Further, the system may include a processing device configured for analyzing the source code to determine one or more modules, generating one or more modular Program Dependency Graphs (mPDGs) based on the analysis, updating at least one mPDG based on the one or more changed lines to obtain the at least one updated mPDG, searching the mPDG based on search expressions associated with the one or more changed lines, and calculating one or more impacted lines based on the searching.
    Type: Grant
    Filed: May 24, 2019
    Date of Patent: September 29, 2020
    Assignee: FIND IT EZ SOFTWARE CORP.
    Inventors: Kenneth Nicholas Joseph Gnazdowsky, Hao Men, Robert James Walker
  • Patent number: 10747652
    Abstract: Techniques are described herein that are capable of performing automatic risk analysis of software. An automatic risk analyzer may determine correlations between binaries of the software and source files of the software, between the source files and functions (i.e., sub-routines) of the software, between changes to source code of the software and defects, new features, and/or feature enhancements in the software, between attributes of the software (e.g., attributes associated with the changes to the source code), etc. at various time instances. The automatic risk analyzer may compare the correlations corresponding to a first time instance and the correlations corresponding to a second time instance to determine any of a variety of temporal relationships regarding underlying factors, including but not limited to new feature(s), feature enhancement(s), defect(s), churn rate, code coverage, code complexity, etc.
    Type: Grant
    Filed: December 5, 2017
    Date of Patent: August 18, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Vishwanath Narasimhan, Anandha K. Ganesan
  • Patent number: 10740222
    Abstract: A system and method for automatically identifying and reporting test units of computer-executable code corresponding to computer-executable code changes within an integrated development environment application so that the code affected by the code changes are tested by the determined test units. The determining of the test units corresponding to the code changes may include determining both direct affectations and indirect affectations to avoid unnecessary testing and an incomplete identification of unit tests.
    Type: Grant
    Filed: October 23, 2018
    Date of Patent: August 11, 2020
    Assignee: SAP SE
    Inventors: Krishnamoorthy Sathyamoorthy, Sriharsha Venkata Teegavarapu, Vivek Dwivedi
  • Patent number: 10725867
    Abstract: Techniques for tracking microservices and facilitating rollbacks in response to exceptions are described herein. In an embodiment, a server computer system receives, from one or more sets of microservices program instructions, digital data identifying a plurality of tasks and a sequence of the tasks, the digital data specifying a particular computational workflow for execution by a computer. During execution of the workflow by the server computer system, the system identifies a particular failure in a first task of the plurality of tasks. The system causes displaying on a client computing device, a graphical user interface comprising a plurality of nodes, the nodes corresponding to the tasks. Within the graphical user interface, the system further causes displaying, with a particular node of the plurality of nodes corresponding to the first task, a graphical indication that the first task failed.
    Type: Grant
    Filed: March 21, 2018
    Date of Patent: July 28, 2020
    Assignee: Cisco Technology, Inc.
    Inventor: Fabio Giannetti
  • Patent number: 10719414
    Abstract: In one embodiment, a sequence of microservice steps may be performed according to a programmed microservice workflow, while determining which executed tasks within the performed sequence of microservice steps have an individually corresponding rollback defined within the particular task. As such, a rollback path is stored corresponding to reversing the sequence of those executed tasks having an individually corresponding rollback, and, for each executed task having an individually corresponding rollback, a current status of the microservice workflow is also stored as a respective rollback status within the rollback path.
    Type: Grant
    Filed: May 11, 2018
    Date of Patent: July 21, 2020
    Assignee: Cisco Technology, Inc.
    Inventor: Fabio Giannetti
  • Patent number: 10719424
    Abstract: A method for performing a static analysis may include extracting, from a caller function in code, a context-free inter-procedural rule including a callsite and a return value of a callee function. The callsite may invoke the callee function. The method may further include extracting, from the caller function, a context-sensitive parameter mapping rule that maps an input parameter of the callee function to an invocation value provided by the caller function at the callsite, deriving a derived value for the callsite using the context-free inter-procedural rule and the context-sensitive parameter mapping rule, and identifying a defect in the code by performing the static analysis using the derived value for the callsite.
    Type: Grant
    Filed: March 18, 2019
    Date of Patent: July 21, 2020
    Assignee: Oracle International Corporation
    Inventors: Padmanabhan Krishnan, Raghavendra Kagalavadi Ramesh, Yang Zhao
  • Patent number: 10664771
    Abstract: A product development management system presents the product specification traceability of the work items of the product requirement specification defining, the product function item planning, the product software and hardware architecture designing during the life cycle of the product development, such that the user and manager can handle the development work completeness, work item allocation and dispersion index and fineness index to which the specification item of each level extends. Through the product development management system of the present disclosure, the work team can understand the relation of their responsible engineering works, and establish confirmation and data change notification mechanism, so as to achieve a cooperation result.
    Type: Grant
    Filed: December 5, 2017
    Date of Patent: May 26, 2020
    Assignee: NATIONAL CHUNG SHAN INSTITUTE OF SCIENCE AND TECHNOLOGY
    Inventors: Tzu-Ming Chan, Yung-Chang Chou
  • Patent number: 10614243
    Abstract: Privacy violation detection of a mobile application program is disclosed. Regular histories of the mobile application are mined. A call-graph representation of the mobile application program can be created and sequences of events of interest according to the platform specification of the mobile application can be collected. A plurality of learnable features are extracted from the regular histories. The plurality of learnable features are combined into a single feature vector which is fed into a machine-learning-based classification algorithm. Whether the mobile application program includes one or more permissions for accessing unauthorized privacy data of a mobile application user is determined based on a machine learning classification of the single feature vector. The collected sequences can be reduced into a plurality of feature vectors which can include at least one of a happens-before feature and a multiplicity of occurrences feature.
    Type: Grant
    Filed: August 21, 2018
    Date of Patent: April 7, 2020
    Assignee: International Business Machines Corporation
    Inventors: Pietro Ferrara, Marco Pistoia, Omer Tripp
  • Patent number: 10466987
    Abstract: Optimizing program execution includes performing, to obtain an expanded call graph, an expansion of an initial call graph. The expanded call graph includes nodes. The initial call graph is defined for a program that includes a root method and a child method. The method may further include calculating a cost value and a benefit value for inlining the child method, calculating an inlining priority value as a function of the cost value and the benefit value, and inlining, based on analyzing the expanded call graph and comparing the inlining priority value to a dynamic threshold, the child method into the root method. The child method may correspond to a node in the expanded call graph.
    Type: Grant
    Filed: February 22, 2019
    Date of Patent: November 5, 2019
    Assignee: Oracle International Corporation
    Inventors: Aleksandar Prokopec, Thomas Wuerthinger
  • Patent number: 10452635
    Abstract: Methods, systems, apparatuses, and computer program products are described herein that enable files, such as source code files used in building executable code, to be synchronized between two computing devices in a manner that utilizes file anchors or other time-stamped objects generated by and stored on each computing device. The file anchors can be used to determine which source code files on each computing device have been updated since a prior synchronization with another computing device and also to determine which version of a source code file stored on each computing device is the newer version, even when both computing devices have a different notion of time.
    Type: Grant
    Filed: April 27, 2016
    Date of Patent: October 22, 2019
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Olga Arkhipova, Bogdan I. Mihalcea
  • Patent number: 10430318
    Abstract: The disclosed method may include (1) identifying a software update that includes at least one software function that has changed since a previous software update, (2) determining, based at least in part on the software update, one or more call paths that include (A) the software function that has changed since the previous software update and (B) at least one additional software function, (3) mapping the changed software function to one or more test scripts, (4) mapping the additional software function to one or more additional test scripts, (5) identifying at least one test script that is commonly mapped to both the changed software function and the additional software function, and then (6) performing a regression test by executing the test script that is mapped to both the changed software function and the additional software function. Various other systems, methods, and computer-readable media are also disclosed.
    Type: Grant
    Filed: July 11, 2017
    Date of Patent: October 1, 2019
    Assignee: Juniper Networks, Inc
    Inventors: Omar Shihadeh Ansari, Chi-Hung Chan
  • Patent number: 10416967
    Abstract: A method, an apparatus, and a computer program product for optimizing variable size arguments in a programming language are provided. The method includes finding, in a target program, a call site having a variable-length argument. The method also includes generating a converted code for a callee of the call site, the generating including converting the variable-length argument to a plurality of arguments. The method further includes translating the call site to a call code for calling the converted code with the plurality of arguments instead of the variable-length argument.
    Type: Grant
    Filed: October 13, 2017
    Date of Patent: September 17, 2019
    Assignee: Internationa Business Machines Corporation
    Inventor: Takeshi Ogasawara
  • Patent number: 10409570
    Abstract: A processing device includes an instruction memory to store executable applications that are executable by a target processor, and a compiler. The compiler includes a builder module and a call graph generator. The builder module to build executable applications for the target processor based on a set of instructions. The call graph generator to create a first call graph that indicates a stack usage for each call path of the executable applications. If a first executable application built by the builder module includes a call path that exceeds a stack size constraint of the target processor, the builder module to optimize only functions within the call path that exceeds the stack size constraint in response to the request from the evaluation monitor, and to build a second executable application based on the set of instructions. The second executable application is optimized for stack memory usage of the target processor.
    Type: Grant
    Filed: October 19, 2016
    Date of Patent: September 10, 2019
    Assignee: NXP USA, Inc.
    Inventors: Michal Silbermintz, John Russo
  • Patent number: 10353802
    Abstract: A connection can be made to a processing element of a remotely deployed and live streaming application executed by a first data processing system, the processing element containing at least one operator that processes at least one tuple. As the live streaming application is executed, without slowing or modifying data flow of the live streaming application execution to client devices, a copy of the tuple and a memory dump of state data for a state of the operator can be received, and the tuple can be tracked through a call graph. The state data can be loaded into a local instance of the operator loaded into a debugger. At least a portion of the call graph can be presented to a user, and a flow of the tuple through the call graph based on the state data for the operator can be indicated.
    Type: Grant
    Filed: November 4, 2016
    Date of Patent: July 16, 2019
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Alexander Cook, David M. Koster, Jason A. Nikolai, Alexander J. Pogue
  • Patent number: 10310927
    Abstract: A method is provided for operating a trace procedure, which traces execution of a computer program, where the program uses different callable modules. A program stack is used to store trace buffer information and an error state, and the modules include calls of the trace procedure. The method includes: (i) when entering execution of a module, storing the current write position of the trace buffer and a cleared error flag in the current frame of the stack; (ii) in case of an error condition during execution of the program, setting the error flag in the current frame; and (iii) when leaving execution of a module, determining if the error flag is set, and if not, then rewinding the trace buffer to the write position stored in the current frame, and deleting the current write position of the trace buffer and the error flag from the stack.
    Type: Grant
    Filed: October 26, 2015
    Date of Patent: June 4, 2019
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Thomas Hess, Martin Raitza, Ralf Richter, Philip Sebastian Schulz, Markus K. Strasser
  • Patent number: 10241890
    Abstract: Computer program, methods, and systems for code modification of a programming language platform and a software application in an intermediate language at different times are disclosed. The methods and system may modify a portion of the programming language platform in the intermediate language at a first time to alter a functionality of or add a new functionality to the programming language platform; and may modify the software application in the intermediate language at a second time different from the first time, where the software application may be modified based on a runtime analysis rule that uses the altered or added new functionality of the programming language platform. The modified programming language platform may be included in a first package, and the modified software application may be included in a second package, and executed on the modified programming language platform.
    Type: Grant
    Filed: July 28, 2016
    Date of Patent: March 26, 2019
    Assignee: SALESFORCE.COM, INC.
    Inventor: Sergey Gorbaty
  • Patent number: 10180894
    Abstract: Techniques for identifying a stack frame responsible for resource usage are described. For instance, techniques described herein enable a particular process and a particular stack frame and/or set of stack frames of the process that are high resource consumers to be identified. According to various implementations, resource usage of a process is observed and recorded over a period of time. A data structure is generated that characterizes the resource usage of the process over the sampling period. The data structure be evaluated to identify a stack frame that is responsible for excess resource consumption. In at least some implementations, a remedial procedure can be performed to attempt to reduce the process's resource usage.
    Type: Grant
    Filed: June 13, 2017
    Date of Patent: January 15, 2019
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Sk Kajal Arefin Imon, Navid Jalali Heravi, Ivan Michael Berg, Cong Chen, Feng Liang, Michael D. Moshofsky, David Gregory Grant
  • Patent number: 10102039
    Abstract: Converting a hybrid flow can include combining each of a plurality of task nodes with a plurality of corresponding operators of the hybrid flow and converting the combined plurality of task nodes and the plurality of corresponding operators of the hybrid flow to a data flow graph using a code template.
    Type: Grant
    Filed: May 17, 2013
    Date of Patent: October 16, 2018
    Assignee: ENTIT SOFTWARE LLC
    Inventors: Petar Jovanovic, Alkiviadis Simitsis, William K. Wilkinson
  • Patent number: 10083029
    Abstract: An example method of detecting incompatibility between an application and an application dependency includes identifying a first set of contracts exposed in a first version of an application dependency. Each contract includes a symbol and a corresponding signature. The example method also includes comparing the first set of contracts to a corresponding second set of contracts exposed in a second version of the application dependency. The example method further includes determining, based on the comparing, whether the first set of contracts matches the second set of contracts. If the first set of contracts matches the second set of contracts, an indication that the second set of contracts is compatible with the application is provided. If the first set of contracts does not match the second set of contracts, an indication that the second set of contracts is not compatible with the application is provided.
    Type: Grant
    Filed: November 9, 2016
    Date of Patent: September 25, 2018
    Assignee: Red Hat, Inc.
    Inventors: Pavel Odvody, Fridolin Pokorny, Jan Chaloupka
  • Patent number: 10055210
    Abstract: A method for expanding inline function calls in inlining scenarios includes receiving an ordered list of inlining options for a computer program and a relational data structure representing dependencies between the inlining options, wherein each inlining option includes an associated cost value and an associated benefit value. A maximum-benefit inlining plan for a selected inlining option of the ordered list is then determined, wherein the maximum-benefit inlining plan includes a set of inlining options from the ordered list that provide a maximum combined benefit value for a combined cost value that is equal to or less than a maximum cost budget, subject to the following conditions: each inlining option of the set precedes, or is, the selected inlining option in the ordered list, and for each inlining option of the set, the set also includes each inlining option that the respective inlining option is dependent on.
    Type: Grant
    Filed: August 24, 2016
    Date of Patent: August 21, 2018
    Assignee: International Business Machines Corporation
    Inventors: Andrew J. Craik, Rachel E. Craik, Patrick R. Doyle
  • Patent number: 9753791
    Abstract: A method, an apparatus, and a computer program product which capture and use analytics data relating to the internal activity of software programs executing in a message-passing runtime environment, such as that provided by Objective-C. The invention exploits the well documented interfaces of these environments together with their dynamic runtime capabilities to insert data collection and analysis code into an application without modification of the target application.
    Type: Grant
    Filed: July 12, 2016
    Date of Patent: September 5, 2017
    Assignee: AppDynamics LLC
    Inventors: Vishweshwar Ghanakota, Fred McClain, Stephen Mickelsen
  • Patent number: 9747242
    Abstract: An apparatus can include a first state machine engine configured to receive a first portion of a data stream from a processor and a second state machine engine configured to receive a second portion of the data stream from the processor. The apparatus includes a buffer interface configured to enable data transfer between the first and second state machine engines. The buffer interface includes an interface data bus coupled to the first and second state machine engines. The buffer interface is configured to provide data between the first and second state machine engines.
    Type: Grant
    Filed: September 6, 2016
    Date of Patent: August 29, 2017
    Assignee: Micron Technology, Inc.
    Inventors: David R. Brown, Harold B Noyes, Inderjit S. Bains
  • Patent number: 9733927
    Abstract: In an approach for determining compatibility between a computing device and a software application, a processor receives code of a software application. A processor generates a call graph for the software application using the code, wherein the call graph describes at least a first type of hardware component required to execute the software application. A processor identifies a set of one or more hardware components included within a computing device. A processor determines whether the computing device is compatible with the software application based on, at least, the call graph and the determined set of one or more hardware components included within the computing device.
    Type: Grant
    Filed: November 11, 2015
    Date of Patent: August 15, 2017
    Assignee: International Business Machines Corporation
    Inventors: Julian T. Dolby, Pietro Ferrara, Marco Pistoia, Omer Tripp
  • Patent number: 9582667
    Abstract: In an aspect of managing resource exhaustion, a method includes receiving a program code that is configured for generating a random number. The generating is identified as vulnerable to a resource exhaustion. The method also includes identifying a statement in the program code at which a value of a variable associated with the generating of the random number is affected, inserting a hooking code in the statement for monitoring the variable at the statement, and running the program code in a plurality of iterations. A consumption level of the resource is varied in the plurality of iterations. The method further includes monitoring a plurality of values of the variable in the plurality of iterations. The method also includes executing a regression analysis on the plurality of values and returning a root cause of the vulnerability.
    Type: Grant
    Filed: September 30, 2013
    Date of Patent: February 28, 2017
    Assignee: GLOBALFOUNDRIES INC.
    Inventors: Roee Hay, Roi Saltzman, Omer Tripp
  • Patent number: 9582275
    Abstract: In one embodiment, a processor includes a performance monitor including a last branch record (LBR) stack to store a call stack to an event of interest, where the call stack is collected responsive to a trigger for the event. The processor further includes logic to control the LBR stack to operate in a call stack mode such that an entry to a call instruction for a leaf function is cleared on return from the leaf function. Other embodiments are described and claimed.
    Type: Grant
    Filed: May 31, 2011
    Date of Patent: February 28, 2017
    Assignee: Intel Corporation
    Inventors: Michael W. Chynoweth, Peggy J. Irelan, Matthew C. Merten, Seung-Woo Kim, Laura A. Knauth, Stanislav Bratanov
  • Patent number: 9495141
    Abstract: A method for expanding inline function calls in inlining scenarios includes receiving an ordered list of inlining options for a computer program and a relational data structure representing dependencies between the inlining options, wherein each inlining option includes an associated cost value and an associated benefit value. A maximum-benefit inlining plan for a selected inlining option of the ordered list is then determined, wherein the maximum-benefit inlining plan includes a set of inlining options from the ordered list that provide a maximum combined benefit value for a combined cost value that is equal to or less than a maximum cost budget, subject to the following conditions: each inlining option of the set precedes, or is, the selected inlining option in the ordered list, and for each inlining option of the set, the set also includes each inlining option that the respective inlining option is dependent on.
    Type: Grant
    Filed: December 1, 2015
    Date of Patent: November 15, 2016
    Assignee: International Business Machines Corporation
    Inventors: Andrew J. Craik, Rachel E. Craik, Patrick R. Doyle
  • Patent number: 9448965
    Abstract: An apparatus can include a first state machine engine configured to receive a first portion of a data stream from a processor and a second state machine engine configured to receive a second portion of the data stream from the processor. The apparatus includes a buffer interface configured to enable data transfer between the first and second state machine engines. The buffer interface includes an interface data bus coupled to the first and second state machine engines. The buffer interface is configured to provide data between the first and second state machine engines.
    Type: Grant
    Filed: October 28, 2013
    Date of Patent: September 20, 2016
    Assignee: Micron Technology, Inc.
    Inventors: David R. Brown, Harold B Noyes, Inderjit S. Bains
  • Patent number: 9367426
    Abstract: In one embodiment, a method for call graph analysis is provided. The method includes determining a plurality of nodes in a call graph. The plurality of nodes represent resource consumption of functions of a software program executed in a software system. A simplification factor is determined. A first set of nodes in the plurality of nodes is then eliminated based on exclusive values for the plurality of nodes, inclusive values for the plurality of nodes, and the simplification factor. An inclusive value for a node is a first amount of resources consumed by the node and any descendent nodes of that node. An exclusive value for the node is a second amount of resources consumed by the node. A simplified call graph is output including a second set of nodes in the plurality of nodes. The second set of nodes does not include the eliminated first set of nodes.
    Type: Grant
    Filed: March 4, 2015
    Date of Patent: June 14, 2016
    Assignee: SAP SE
    Inventors: Cheolman Park, Chan Young
  • Patent number: 9292315
    Abstract: For each of a plurality of different tenants configured to concurrently execute in a virtual environment, a respective class loader graph can be constructed. For each respective class loader graph, unique types of edges between nodes that affect class loading can be identified. The edges can be traversed. Based on traversing the edges of the class loader graph, a respective unique dependency identifier (UDI) can be assigned to each class loader request. Class loader requests that are assigned the same UDI can be identified in at least two of the tenants. Responsive to identifying the class loader requests that are assigned the same UDI, a shared class loader can be assigned to each of the class loader requests. Each respective class loader request that is assigned the same UDI can be configured to call the shared class loader to load at least one class required by the respective tenant.
    Type: Grant
    Filed: March 16, 2015
    Date of Patent: March 22, 2016
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Michael H. Dawson, Bentley J. Hargrave, Thomas J. Watson
  • Patent number: 9274768
    Abstract: Runtime code hooking techniques are described in which a place holder instruction within a compiled module is used as an entry point to enable code hooking. A hook function to modify a target function is developed. At runtime, the target function to be modified is located. A place holder instruction within the target function is overwritten with instructions to cause execution of the hook function when the target function is called.
    Type: Grant
    Filed: June 17, 2014
    Date of Patent: March 1, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ashwin S. Needamangala, Daniel S. Mihai, Hristo H. Ivanov, Marius Popa, Mariyan D. Fransazov
  • Patent number: 9244666
    Abstract: A mechanism is provided to globally inline a callee with high cost-effectiveness on the basis only of profile information in a call graph, without looking through all call-graph edges. The mechanism provides a technique for inlining. An inline cost-effectiveness ratio for the callee reachable from a caller to be compiled is calculated. Calculating the inline cost-effectiveness ration includes using a ratio of a frequency of calls to the callee to a total of call frequencies as effectiveness and using a ratio of a code size of the callee to a total size of inlinable code as cost. A determination is made as to whether to inline the callee by comparing the inline cost-effectiveness ratio with a predetermined threshold. The callee is inlined into a source code in response to determining that the callee method is to be inlined.
    Type: Grant
    Filed: February 25, 2015
    Date of Patent: January 26, 2016
    Assignee: International Business Machines Corporation
    Inventors: Takuya Nakaike, Toshio Suganuma
  • Patent number: 9177143
    Abstract: A disclosed method includes determining modifications have been made to a program and deriving data flow seeds that are affected by the modifications. The method includes selecting one of the data flow seeds that are affected by the modifications or data flow seeds that are not affected by the modifications but that are part of flows that are affected by the modifications and performing a security analysis on the program. The security analysis includes tracking flows emanating from the selected data flow seeds to sinks terminating the flows. The method includes outputting results of the security analysis. The results comprise one or more indications of security status for one or more of the flows emanating from the selected data flow seeds. At least the deriving, selecting, and performing are performed using a static analysis of the program. Apparatus and program products are also disclosed.
    Type: Grant
    Filed: May 17, 2013
    Date of Patent: November 3, 2015
    Assignee: International Business Machines Corporation
    Inventors: Omer Tripp, Marco Pistoia, Salvatore A. Guarnieri
  • Patent number: 9158504
    Abstract: A system and computer-executed method automatically generate a sequence diagram from Class-Responsibility-Collaborator (CRC) information. The CRC information identifies objects, responsibility information for each object, and collaborator information for each object, and the CRC information corresponds with each activity in an activity diagram. The method includes storing, in a storage device, the objects and corresponding class types of the objects according to the CRC information and associating, by a processor, each of the objects with one or more other objects according to the collaborator information of the CRC information. The method also includes determining, by the processor, messages from each of the objects to associated objects according to the responsibility information, and the processor automatically generating the sequence diagram including the objects and the messages among the objects.
    Type: Grant
    Filed: October 2, 2013
    Date of Patent: October 13, 2015
    Assignee: Baker Hughes Incorporated
    Inventor: David W. Green
  • Patent number: 9135441
    Abstract: A disclosed method includes determining modifications have been made to a program and deriving data flow seeds that are affected by the modifications. The method includes selecting one of the data flow seeds that are affected by the modifications or data flow seeds that are not affected by the modifications but that are part of flows that are affected by the modifications and performing a security analysis on the program. The security analysis includes tracking flows emanating from the selected data flow seeds to sinks terminating the flows. The method includes outputting results of the security analysis. The results comprise one or more indications of security status for one or more of the flows emanating from the selected data flow seeds. At least the deriving, selecting, and performing are performed using a static analysis of the program. Apparatus and program products are also disclosed.
    Type: Grant
    Filed: September 12, 2013
    Date of Patent: September 15, 2015
    Assignee: International Business Machines Corporation
    Inventors: Omer Tripp, Marco Pistoia, Salvatore A. Guarnieri
  • Patent number: 9026988
    Abstract: To which method on each method call order pattern included in a series of application codes executed in response to a request a method included in an application code executed in response to a request corresponds is detected; a code is generated based on identification information corresponding to the detected method on the call order pattern; and the generated code is inserted to the application code.
    Type: Grant
    Filed: March 7, 2012
    Date of Patent: May 5, 2015
    Assignee: Fujitsu Limited
    Inventor: Motoyuki Kawaba
  • Patent number: 9021451
    Abstract: In one embodiment, a method for call graph analysis is provided. The method includes determining a plurality of nodes in a call graph. The plurality of nodes represent resource consumption of functions of a software program executed in a software system. A simplification factor is determined. A first set of nodes in the plurality of nodes is then eliminated based on exclusive values for the plurality of nodes, inclusive values for the plurality of nodes, and the simplification factor. An inclusive value for a node is a first amount of resources consumed by the node and any descendent nodes of that node. An exclusive value for the node is a second amount of resources consumed by the node. A simplified call graph is output including a second set of nodes in the plurality of nodes. The second set of nodes does not include the eliminated first set of nodes.
    Type: Grant
    Filed: June 25, 2013
    Date of Patent: April 28, 2015
    Assignee: SAP SE
    Inventors: Cheolman Park, Chan Young
  • Patent number: 9021448
    Abstract: A technique for detecting patterns in the execution of an application. The technique identifies a sequence of methods which are invoked and obtains information regarding attributes of the methods. For example, attribute information such as a class hierarchy can be obtained from an instrumentation API. A data structure representing a hierarchy of the attributes can be created and compared to one or more reference data structures which describe patterns of interest. A decision can be made to provide instrumentation for the methods having the matching attributes. The decision can consider how frequently the pattern is detected and overhead costs of the instrumentation.
    Type: Grant
    Filed: February 28, 2013
    Date of Patent: April 28, 2015
    Assignee: CA, Inc.
    Inventors: Marco Gagliardi, Andreas Reiss
  • Publication number: 20150106794
    Abstract: Methods and systems for performance inference include inferring an internal application status based on a unified call stack trace that includes both user and kernel information by inferring user function instances. A calling context encoding is generated that includes information regarding function calling paths. Application performance is analyzed based on the encoded calling contexts. The analysis includes performing a top-down latency breakdown and ranking calling contexts according to how costly each function calling path is.
    Type: Application
    Filed: October 13, 2014
    Publication date: April 16, 2015
    Inventors: Junghwan Rhee, Hui Zhang, Nipun Arora, Guofei Jiang, Chung Hwan Kim
  • Patent number: 9009682
    Abstract: 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.
    Type: Grant
    Filed: December 13, 2010
    Date of Patent: April 14, 2015
    Assignee: SAP SE
    Inventors: Efstratios Tsantilis, Klaus Steinbach
  • Patent number: 8997065
    Abstract: A device creates a graph based on source code, and analyzes the source code to identify private variables and functions of the source code and public variables and functions of the source code. The device determines, based on the graph, a size threshold and semantics-related characteristics of functions and variables for each module, of multiple modules, and assigns, based on the graph, the private variables and functions to a corresponding module of the multiple modules. The device reduces, based on the graph, a number of the public variables and functions assigned to each module, and generates the multiple modules based on one or more of the graph, the size threshold, the assigned private variables and functions, and the number of the public variables and functions assigned to each module.
    Type: Grant
    Filed: December 3, 2012
    Date of Patent: March 31, 2015
    Assignee: The MathWorks, Inc.
    Inventors: Michael E. Karr, Gael Mulat
  • Patent number: 8990792
    Abstract: A method of generating a dynamic call graph of an application is disclosed. The method includes collecting information on what program code pages are accessed during each sampling period, defining parts of an executable program code which are accessible during each sampling period according to the collected information, defining a set of functions within the defined parts of the executable program code, generating dynamic call graphs using the defined set of functions for each sampling period, and generating dynamic call graphs for an observation period by combining accurate dynamic call graphs of each sampling period.
    Type: Grant
    Filed: May 26, 2009
    Date of Patent: March 24, 2015
    Assignee: Samsung Electronics Co., Ltd.
    Inventor: Ekaterina Gorelkina
  • Patent number: 8984485
    Abstract: Use of an Abstract Syntax Tree (AST) to select portions of source code when analyzing the affect of changes in that source code from one version to another. In this way, it is possible to better focus on how changes in the source code, especially changes which only impact limited portion(s) of the source code, affect code quality with respect to measures like code complexity, performance and so on.
    Type: Grant
    Filed: May 1, 2013
    Date of Patent: March 17, 2015
    Assignee: International Business Machines Corporation
    Inventors: Hisham E. Elshishiny, Sherif Sabry, Ghada H. Selim, Ossama Shokry
  • Patent number: 8984495
    Abstract: A method includes determining, as part of a static analysis of a program, links between functions in the program and performing, as part of the static analysis, string analysis on strings used in the program to determine additional links between the functions in the program. The method further includes outputting, as part of the static analysis, indications of at least the links between the functions and the additional links between the functions. Apparatus, computer programs, and program products are also disclosed.
    Type: Grant
    Filed: January 3, 2013
    Date of Patent: March 17, 2015
    Assignee: International Business Machines Corporation
    Inventors: Salvatore A. Guarnieri, Marco Pistoia, Takaaki Tateishi, Omer Tripp
  • Patent number: 8978020
    Abstract: In an aspect, the present application relates to a computer-implemented method, computer system, and computer program product for (automatically) generating reusable test components to test software applications. The computer-implemented method for generating reusable test components to test software applications may comprise: accessing an object model relating to at least part of a software application; and generating at least one test component applicable to test the software application, comprising: analyzing the object model, generating a meta-description from the object model and store the meta information in at least one descriptor according to a meta model, and generating the test component and a corresponding component implementation based on the descriptor.
    Type: Grant
    Filed: October 8, 2010
    Date of Patent: March 10, 2015
    Assignee: SAP SE
    Inventor: Claude Rossi