Program-Transformation.Org: The Program Transformation Wiki
PREA - Panel on Reverse Engineering and Architectural evolution

Co-located with CSMR 2002 Tuesday 12 March 2002, 14:00 - 16:00

ReverseEngineering is the process of recovering software design information (like components and their relationships) and creating representations of a software system at a high level of abstraction. Several different approaches have been proposed by the research community. However, in practice, reverse engineering still presents numerous challenges: scalability of the techniques, usability of tools, visualisation, dealing with multiple perspectives, level of abstraction, and so on. In an industrial context, high level architectural descriptions are an essential means of support for software system development. Reverse engineering should aim at recovering architecturally significant views of the system (ArchitectureExtraction), which can help keep track of the evolution of SoftwareArchitecture.

Architectural evolution has been a subject of increased research effort in the last few years. It is not always true that the bulk of software development happens during product creation. Systems of all sizes (and especially large and complex ones) require extensive SoftwareMaintenance and SoftwareEvolution effort.

So far, the problem of architectural evolution has been approached pragmatically, and industry is still faced with major challenges concerning management of evolution. The problem of architectural evolution is particularly challenging when it concerns product family architecture (e.g., a SoftwareProductLine). In that case, it can happen in two different ways: horizontally, i.e. when the core of the family architecture evolves due to a major common requirement or upgrade; and vertically, i.e. when a new product with new features is added to an existing family.

In the case of large and complex product families, both kinds of architectural evolution can happen without control. Possible mistakes in the architecting phase and violations of architectural rules cannot often be detected before the code is written. This justifies the introduction of reverse architecting activities in an industrial context, which should be done using a multi-disciplinary approach. Thus, reverse architecting becomes an enabler technique that allows to extract software architecture and monitor its evolution throughout all phases of the software lifecycle. So far, the reverse engineering and software architecture research communities have been fairly separated. This panel aims to bring together researchers and practitioners from both fields, in order to debate and extend their ideas, and has the long term aim to make the two communities work together on a more regular basis.


CategoryArchitecture | CategoryReverseEngineering

I Attachment sort Action Size down Date Who Comment
PREA.pdf manage 26.3 K 15 Mar 2002 - 13:49 AndreyATerekhov Notes taken by Andrey A.Terekhov at the panel