Leighton Brough and Paul Bailes
Execution tracing, denotational semantics, trace analysis
Software execution tracing is a popular and effective technique, used to support a range of software engineering activities. Nevertheless execution tracing has rarely been the focus of study in its own right, although many case studies and applications have been described. Existing formal notions of trace in computer science are shown to be based implicitly, and then explicitly, on an operational semantic basis, and the limitations of the resulting trace monoid structure for many practical tracing tasks is highlighted. Justified by the category theoretic notion of duality, this paper introduces the denotational basis for software execution tracing, to address these practical limitations. An example of a language with denotational trace added is presented: a simple program in that language, its denotational traces, and their subsequent analysis are shown to support complex tasks such as specification recovery and reasoning about correctness, as well as simple, informal proofs of space and time complexity – techniques and results of immediate usefulness to the practicing software engineer. While both the theory of denotational trace and its consequences are in an early stage of development, initial results suggest uniquely useful, practical results can be derived from denotational traces.
Important Links:
Go Back