dynamic analysis, the implementation components
relevant to each thread (Wilde 1997).
We have previously published a survey of the
many existing trace visualization tools; this included
descriptions of their advantages and limitations
(Hamou-Lhadj 2004). These tools support features
ranging from simple trace exploration techniques to
more sophisticated types of analysis (e.g. querying
of trace model, etc). Traces have been represented in
various ways depending on their type. Traces of
routine (method) calls are often visualized using tree
structures (De Pauw 1998), UML sequence diagrams
(Jerding 1997, Systä 2000, Richner 2002), and Use
Case Maps (Amyot 2002). Traces of inter-process
messages are usually represented using crossing
lines among the processes (De Pauw 2002). Tools
that support traces of architectural components use
boxes and lines to represent the components and
their dynamic interactions (Walker 1998).
5 CONCLUSIONS
In this paper, we discussed ongoing research in the
area of reverse engineering of software systems with
an emphasis on information systems. Our approach
is based on analysing the content of large traces.
Traces, however, can be extremely large.
Therefore, there is a need to investigate ways to
reduce their size and complexity while keeping as
much of their essence as possible. We discussed
three research topics that we are currently
investigating. The first one focuses on shrinking
traces by grouping various sequences as instances of
the same pattern. The key challenges consist of
finding the proper matching criteria as a measure of
similarity. We proposed developing a set of
simplification algorithms based on these criteria.
Design recovery techniques, which are
representative of the second category, focus on
recovering behavioural design models from large
traces. These models can be used by software
engineers to explore a trace by looking at the main
content first and then dig into the details.
Finally, the last research topic focuses on
developing a visualization environment for
representing traces. The environment should support
multiple views so as to allow software engineers
browse the content of traces at different levels of
abstraction.
REFERENCES
Amyot, D., Mussbacher, G., and Mansurov, N., 2002.
Understanding Existing Software with Use Case Map
Scenarios. In SAM’02, 3rd SDL and MSC Workshop,
LNCS Vol.2599, Springer-Verlag.
Ball T, 1999. The Concept of Dynamic Analysis. In
ESEC’99, 7th European Software Engineering
Conference, Springer-Verlag.
Chan A., Holmes R., Murphy G. C., and Ying A. T. T.,
2003. Scaling an Object-Oriented System Execution
Visualizer through Sampling. In IWPC’03, 11th
International Workshop on Program Comprehension,
IEEE Computer Society.
De Pauw W., Lorenz D., Vlissides J., and Wegman M.,
1998. Execution Patterns in Object-Oriented
Visualization. In USENIX’98, 4th Conference on
Object-Oriented Technologies and Systems.
De Pauw W., Jensen E., Mitchell N., Sevitsky G., and
Vlissides J., Yang J., 2002. Visualizing the Execution
of Java Programs. In LNCS Vol. 2269, Springer-
Verlag.
Hamou-Lhadj, A., Braun, E., Amyot, D and Lethbridge,
T.C., 2005. Recovering Behavioral Design Models
from Execution Traces. In CSMR’05, 9th European
Conference on Software Maintenance and
Reengineering, IEEE Computer Society.
Hamou-Lhadj, A., and Lethbridge T., 2004. A Survey of
Trace Exploration Tools and Techniques. In
CASCON’04, 14th Annual IBM Centers for Advanced
Studies Conferences, IBM Press.
Hamou-Lhadj, A., and Lethbridge, T.C., 2004. Reasoning
About the Concept of Utilities. In ECOOP-PPPL’04,
1st International Workshop on Practical Problems of
Programming in the Large, LNCS Vol 3344,
Springer-Verlag.
Jerding D., Stasko J. and Ball T., 1997. Visualizing
Interactions in Program Executions. In ICSE’97, 19th
International Conference on Software Engineering,
ACM Press.
Richner T. and Ducasse S., 2002. Using Dynamic
Information for the Iterative Recovery of
Collaborations and Roles. In ICSM’02, 18th
International Conference on Software Maintenance,
IEEE Computer Society.
Systä T., 2000. Understanding the Behaviour of Java
Programs. In WCRE’00, 7th Working Conference on
Reverse Engineering, IEEE Computer Society.
Walker R. J., Murphy G. C., Freeman-Benson B.,
Swanson D., and Isaak J., 1998. Visualizing Dynamic
Software System Information through High-level
Models. In OOPSLA’98, 13th Object-Oriented
Programming Systems, Languages, and Applications,
ACM Press.
Wilde N., Casey C., Vandeville J., Trio G., Hotz D.,
1997. Reverse Engineering of Software Threads: A
Design Recovery Technique for Large Multi-Process.
The Journal of Systems and Software, Elsevier.
ICEIS 2007 - International Conference on Enterprise Information Systems
502