PREA
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.
See
http://rgai.inf.u-szeged.hu/CSMR2002/PREA.html
CategoryArchitecture |
CategoryReverseEngineering