About: Linear code sequence and jump is a research topic. Over the lifetime, 90 publications have been published within this topic receiving 1870 citations. The topic is also known as: LCSAJ & JJ-path.
TL;DR: In this article, the authors present a system for testing middleware of applications in the N-tiered model, which contains test code generators, test engines to execute multiple copies of the test code and a data analyzer to analyze and present the results to a human user.
Abstract: A system for testing middleware of applications in the N-tiered model. The test system contains test code generators, test engines to execute multiple copies of the test code and a data analyzer to analyze and present the results to a human user. The system is able to automatically generate test code to exercise components of the middleware using information about these components that would otherwise be available to the application under test. Multiple copies of the test code are executed in a synchronized fashion. Execution times of multiple events are recorded and then presented in one of several formats. With the system, an application developer can identify components that represent performance bottlenecks or can gather information on deployment properties of individual components that can be used to enhance the performance of the application under test.
TL;DR: In this article, a test driver program is generated from the test cases and a software test specification identifying the test case and expected results, which are printed out indicating the sequence of block linkages generated by each test case, the expected output values and the actual output values.
Abstract: A computer program is verified, unit by unit, by automatically instrumentating the code and generating a test driver program which executes all branches of an instrumented code unit. The code is instrumented by operating processors to standardize the code format and to insert executable tracer statements into each block of reformatted code between control statements. A pseudocode having only control statements and tables identifying valid linkages between blocks of code are generated by another processor for use by a verifier in selecting values of input variables and expected outputs for test cases which execute each block of code in the selected unit. Another processor generates the test driver program from the test cases and a software test specification identifying the test cases and expected results. The test driver program and instrumented code unit are compiled and linked to repeatively execute the instrumented code unit to implement all the test cases. Results of the test cases are printed out indicating the sequence of block linkages generated by each test case, the expected output values and the actual output values.
TL;DR: The result showed that the presence of duplicate code does not have a negative impact on software evolution, and a new indicator, modification frequency, was defined, which allows us to objectively compare the maintainability of duplicated code and non-duplicate code.
Abstract: Various kinds of research efforts have been performed on the basis that the presence of duplicate code has a negative impact on software evolution. A typical example is that, if we modify a code fragment that has been duplicated to other code fragments, it is necessary to consider whether the other code fragments have to be modified simultaneously or not. In this research, in order to investigate how much the presence of duplicate code is related to software evolution, we defined a new indicator, modification frequency. The indicator is a quantitative measure, and it allows us to objectively compare the maintainability of duplicate code and non-duplicate code. We conducted an experiment on 15 open source software systems, and the result showed that the presence of duplicate code does not have a negative impact on software evolution.
TL;DR: A technique for recovering jump tables and their target addresses in a machine and compiler independent way based on slicing and expression substitution that shows that up to 90% more of the code in a text segment can be found by using it.
Abstract: One of the fundamental problems with the analysis of binary (executable) code is that of recognizing, in a machine-independent way, the target addresses of n-conditional branches implemented via a jump table. Without these addresses, the decoding of the machine instructions for a given procedure is incomplete, as well as any analysis on that procedure. We present a technique for recovering jump tables and their target addresses in a machine and compiler independent way. The technique is based on slicing and expression substitution. The assembly code of a procedure that contains an indexed jump is transformed into a normal form which allows us to determine where the jump table is located and what information it contains (e.g. offsets from the table or absolute addresses). The technique has been tested on SPARC and Pentium code generated by C, C++, Fortran and Pascal compilers. Our tests show that up to 90% more of the code in a text segment can be found by using this technique.
TL;DR: In this paper, a new approach for software debugging, verification and validation is disclosed, which utilizes a knowledge-based reasoning approach to build a functional model of software code for identifying and isolating failures in the software code.
Abstract: A new approach for software debugging, verification and validation is disclosed. The present invention utilizes a knowledge-based reasoning approach to build a functional model of the software code for identifying and isolating failures in the software code. The knowledge-based reasoning approach of the present invention uses the software design, which is preferably based upon a flow chart or block diagram representation of the software functionality, to build the functional model. The software block diagram contributes to the functional model by defining the inputs and outputs of the various blocks of code, as well as defining data interconnections between the various blocks of code. In accordance with a method of the present invention, test points are strategically inserted throughout the code, and each test point is associated with a corresponding block of code. Expected values of the test points for an expected proper-operation execution of the computer program are generated. The computer program is then executed on a computer, and the actual values of the test points from the program execution are compared with the expected values of the test points. Failed test points which do not agree with corresponding expected values are determined. The functional model, which includes information functionally relating the various test points to one another, is then used to isolate the failed test points to one or more sources of failure in the code.