Browse Prior Art Database

Method and system to automatically discover and log main flows of a software program to calibratable continuous levels

IP.com Disclosure Number: IPCOM000246405D
Publication Date: 2016-Jun-06
Document File: 4 page(s) / 68K

Publishing Venue

The IP.com Prior Art Database

Abstract

A method and system are describe to automatically discover main flows or important execution steps of programs. The level of importance for the flows discovered can be configured, and the values of the level is on a continuous domain. A logging scheme can be used to log the main flows. And a display scheme can be used to display all important flows of a program in a unified view.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 28% of the total text.

Page 01 of 4

Method and system to automatically discover and log main flows of a software program to calibratable continuous levels

Complex software systems such as enterprise applications are easily getting big quickly. And the implementations for enterprise applications are mostly for business logic for specific industries. When a software gets bigger quickly, it is hard for engineers to get familiar with all the business flows. However, these business flows are often the most valuable assets of the applications. These business flows may get gradually completed and revolve based on business needs from customers gradually. But the infrastructure or implementations of the business flows may need to be upgraded or refractored when new technologies appear. It is important to conclude for the complete set of business flows so that it'll be easier re-implement the business logic with new technologies. And also the business flows are the most important things for a new engineer to learn about the software.

In this invention, a method and a system are described to automatically discover and log detailed business flows by analyzing statistics of program execution records and program code, and the detail level is calibratable. There are 3 phases of using the system.

Phase 1 is statistics phase. When programs are executed, method or code executions are recorded. And statistics are taken for the code, methods, classes, packages, or Jars. For example such statistics can be how many times a method is called, what is the stack depth when it is called, what is the max depth of stack called from this method, and what are the number of times when it is called at a certain position in the stack etc. After these statistics are taken, criterias of these statistics numbers are set for what number ranges are used to define main flows. These criterias can be from pre-defined value, from user-input after learning about the statistics, or from automatic analysis from the statistics.

In some situations, the statistics phase may also be done in a static way, by scanning code and count the number of entities appear in the program multiplied by the numbers their ancestor entities appear. This may not be exact because of loop statements, conditional statements, and reflex etc.

Phase 2 is main flow filtering phase. When programs are executed, method or code executions are recorded. And these records are filtered based on the criterias. For example, if the main flow is defined by the methods based on "the average number it is called during an execution < 5 + average(the max depth of stack called from this method - the stack depth when it is called)". Based on this condition, the methods called for a small number of times are easy to qualify for main flow. The methods with deep stack called from the methods are easy to qualify for main flow. And the methods with deep stack when they are called are not easy to qualify for main flow. Following is a table to demonstrate exampl...