Mainenance and evolution of software systems cause 50-80% of the costs that incur in the software lifecycle. The project Bauhaus aims to develop analytic methods and tools that improve program comprehension on the code and architectural level and help software engineers to raise the quality and effectiveness of their maintenance tasks.
Bauhaus is the flagship project for the various research activities of our group. Established in 1996 as a cooperation of the University of Stuttgart, Germany and the Fraunhofer Institute for Experimental Software Engineering, it today forms one of the most active research groups in the field of software reengineering. Since the call of co-founder Rainer Koschke and the establishment of the Software Engineering Group, a new research site exists in the north of the country.
The project has been awarded various times in the recent past. Besides the DoIT Award 2003 research publications have been repeatedly decorated as best papers on the notable reengineering conferences ICSM (2001), CSMR (2006 & 2009) and WCRE (2007).
The Bauhaus project provides a framework to our manifold reseach activities in the fields of program comprehension, software quality and maintenance tasks in general (a complete list of our publications can be found on these pages):
Software systems contain a large portion of redundancy in their code base - so called clones. Such duplication is suspected to increase the efforts needed for maintenance tasks. Our group currently contributes to this reseach field in three ways. We develop methods to detect clones in software, investigate the effects of clones on the maintainability of software and we develop methods and tools for clone management.
One of the main question of reseach is how software quality can be expressed, measured, monitored and how it's decline, that many real-world projects suffer from, can be counteracted. Currently the focus lies on the development of comprehensive methods quality engineering and prediction models on quality attributes.
Software Architecture: Reconstruction & Conformance Checking
A major challenge in the maintenance and evolution of (legacy) systems is keeping the doucmentation up to date. Often little or no documentation is available, escpecially regarding the architecture of the software. Part of our reseach is directed to the methods and tools for the reconstruction of actual software architectures. We also apply these to monitor if the source code of a program still adheres the achitectural specifications.
Software Product Lines
Software product lines form families of software products that implement similar functionality but differ in some details. Commonly such products share a lot of documents including source code, architecture, manuals etc. A software product line aims to unify the common parts and manage the development of the product variants. Often a product line is not planned ahead, but evolves from single products. So the consolidation of variants that emerged over time is a central task that we focus our reseach on.