Premium
Conditioned semantic slicing for abstraction; industrial experiment
Author(s) -
Ward Martin,
Zedan Hussein,
Ladkau Matthias,
Natelberg Stefan
Publication year - 2008
Publication title -
software: practice and experience
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.437
H-Index - 70
eISSN - 1097-024X
pISSN - 0038-0644
DOI - 10.1002/spe.869
Subject(s) - computer science , program slicing , programming language , abstraction , slicing , listing (finance) , programmer , assembly language , transformation (genetics) , semantics (computer science) , program transformation , code (set theory) , debugging , software , set (abstract data type) , philosophy , biochemistry , chemistry , epistemology , finance , world wide web , economics , gene
Abstract One of the most challenging tasks a programmer can face is attempting to analyse and understand a legacy assembler system. Many features of assembler make analysis difficult, and these are the same features that make migration from assembler to a high‐level language difficult. In this paper, we discuss the application of program transformation technology to assist with analysing and understanding legacy assembler systems. We briefly introduce the fundamentals of our program transformation theory and program slicing, which generalizes to conditional semantic slicing. These transformations are applied to a large commercial assembler system to automatically generate high‐level abstract descriptions of the behaviour of each assembler module, with error handling code sliced away. The assembler system was then migrated to C. The result is a dramatic improvement in the understandability of the programs; on average a 6000‐line assembler listing is condensed down to a 132‐line high‐level language abstraction. A second case study, involving over one million lines of source code from many different assembler systems, showed equally dramatic results. Copyright © 2008 John Wiley & Sons, Ltd.