1 GRK Number of the graduate school: Name of the graduate school
1.1 Dynamic Service Analysis: Test-Driven Views for Enhancing Software Maintenance Michael Perscheid (
[email protected]) Supervisor: Prof. Dr. Robert Hirschfeld Although service implementations spend most of their life time in software maintenance, most practices, artifacts, and tools slightly support this phase. Typical activities include fixing bugs, adding new features, and assuring quality but in fact developers require more than 50 % of their time for understanding a possibly unknown system. For supporting program comprehension, they rely primarily on external documentation, former developers, source code or tests. Unfortunately, documentation is often out of date, previous stakeholders have forgotten details, source code is laboriously readable and test cases only verify functionality. However, test cases are an underestimated source of information for program comprehension and software maintenance in general. Within the scope of this work, we consider test cases not only as never outdated interface documentation but rather as entry points into behavior which reveal how the system works. Thus, the question that leads our research can be stated as follows: How can we enhance typical software maintenance activities by considering the hidden knowledge of test case behavior? We investigate various test-driven views on software systems by observing and enriching concrete examples of program executions. We support software maintenance activities by our Path tool suite. It is seamlessly integrated into the Squeak/Smalltalk development environment and based on elaborated dynamic analysis techniques. For program comprehension, developers can introspect exemplified behavior and state of the system under test. We ensure software quality by merging static and dynamic metrics at the architectural level. New perspectives guide developers to potential locations for caching, refactoring, or unused methods. Debugging of reproducible failures is simplified by our test-driven fault navigation that combines spectrum-based fault localization with back in time debugging and a new developer ranking metric. For adding features, we propose a new requirements traceability approach that combines feature localization techniques with acceptance tests. By unifying tests and requirements into one first class entity, we are able to offer a completely automatic approach. Thus, developers can comprehend the system from the user’s point of view without creating any manual link. Last but not least, we support verification by generalizing sane state and behavior of test case executions. For instance, we harvest run-time type information in a dynamically typed programming language and abstract it for supporting implementation tasks.
6