Architecture Recovery and
Software Evolution Analysis


Main
Home

Projects
CAFÉ (done)
FAMILIES (new!)

People
TU Vienna
Partners

Publications
Papers
Technical Reports

References
Architecture Recovery
Software Evolution

For Students
Praktika
Master's Theses

Investigating existing software systems and their evolution is a fascinating research area of software engineering that aids engineers in understanding and assessing software systems, their design and evolution. In this context our group concentrates on two research topics: Architecturey Recovery and Software Evolution Analysis. Interested? - please contact us!

Architecture Recovery

Architecture recovery refers to all techniques, tools and processes used to abstract higher-level representations from available artifacts of software systems such as source code, profiling information, design documentation, and expert knowledge. Basically, such higher-level represetations provide different views on existing software systems and aid engineers in maintaining and evolving it. Concerning software maintenance they show, for example, impacts of changes such as which modules or classes are affected by a change or which classes and methods do I have to to take care of when changing a particular class/method. With respect to software evolution these views indicate or at least help engineers to indicate weak points in the software architecture that should be resolved to ease software evolution.

There are several techniques and tools available that aid engineers in extracting these higher-level views. A detailed list and description of techniques and tools is given on the Reengineering Wiki site. However, the capabilities of existing tools in reconstructing software architectures lack on automation - abstracting information has to be done by engineers manually.

We work on an approach that focuses on the extraction of architectural styles and patterns. They constitute basic building blocks of software systems and express former design decisions. Typically, styles and patterns are used for implementing certain aspects such as for example communication, persistence, security, or synchronization. The extraction of styles and patterns and consequently architectural aspects leads to the understanding of the architecture of software systems - our primary objective.

Currently, we are reverse engineering Mozilla applying and testing our approach and other existing tools.

Software Evolution Analysis

Software evolution analysis is concerned with the analysis of historical data of software projects and systems. Large amounts of this data are collected during the liftime of software projects and stored by version control systems such as CVS and bug tracking systems such as Bugzilla. Since this information describes various aspects of the evolutinoary changes of software systems, they are a valuable source for a retrospective analysis. Analysis results constitute views that characterize the evolution of a system and point out critical spots in its design.

In our approach we combine modification (CVS) and bug reports (Bugzilla) in a Release History Database (RHDB) and on top of that use various analysis techniques to extract evolutionary characteristics of software projects. In addition, we enrich the database with feature data extracted from execution traces and investigate the evolution of features to identify hidden dependencies between features and locations of design erosion.


This page was created by Martin Pinzger, 2002.