Software is given ever increasing responsibility for safety-critical systems (e.g., the control of nuclear power plants, medical devices, electronic banking, and air traffic control), which necessitates the production of high-integrity software (i.e., software that can and must be trusted to work dependably). The growing complexity of this software requires increased comprehension, which is obtainable through improved tool support.
The primary objective of this research is to improve programmer productivity by improving comprehension through the use of semantics-based software analysis tools. This particular research will investigate the use of amorphous program slicing in semantics-based tools. A tool that understands and conveys the semantics, or meaning, of a program, provides unique and useful information to a programmer. Program slicing is a program decomposition technique that identifies semantically meaningful portions of a program. Amorphous program slicing is a recent variant of program slicing that reduces the amount of code a programmer must consider.
Achieving these objectives requires building an amorphous slicing tool and then conducting experiments with it. An effective tool will improve programmer productivity; thus increasing programmer understanding, reducing software costs, and, perhaps more importantly, increasing the integrity of software.