The Role of Software Tracing in Software Maintenance
Our society depends greatly on software systems for many critical activities including finance, health, education, telecommunications, aerospace, and more. Maintaining these systems to keep up with new user needs and ever changing technologies is an important task, but also a challenging and costly one. Research shows that software maintenance activities can take up to 80% of the time and effort spent during the lifecycle of software. The constant challenge for software maintainers is to understand what a system does before making any changes to it. In an ideal situation, this understanding should come from system documentation, but, for a variety of reasons, maintaining sufficiently good documentation has been found to be impractical in many organizations.
In this talk, I will discuss techniques to aid software engineers in understanding software systems. I will focus on the techniques that permit the understanding of system behaviour through tracing. Tracing encompasses three main steps: run the system, observe what it does, and make sense of how and why it does it in a certain way. The major challenge is that typical traces can be overwhelmingly large, often millions of lines long. I will present a set of techniques that we have developed to simplify the analysis of large traces. I will report on lessons learned from industrial projects in which my research lab has played a leading role. I will conclude my talk with an outlook on future challenges and research directions.