Composition and Recovery of Design Components

(joint talk with Reinhard Schauer)

TakeFive Software AG, Salzburg, Austria, 98-08-25


As part of the project SPOOL, a joint university/industry collaboration
between the GELO group of the University of Montreal and Bell Canada, we are
working on an environment that helps avoid this creeping loss of design
information, which we have so often experienced in large-scale software
development projects. Our approach is based on the idea to raise the level of
software construction to the design level and build software as a composition
of design components, that is, conceptual design building blocks that are
packaged as physical software components (e.g., JavaBeans) and allow for
composition, specialization, adaptation, and revision. Design components
incorporate not only structural and behavioral design descriptions, but also
the more informal design documentation, such as intent, applicability,
trade-offs, and the like.  Source code can be attached to design components,
thus gluing design and implementation together. Furthermore, design components
are active in the sense of "software watchdogs" that "bark" on violation of
design rules, and "bite" when the conceptual integrity of the software at hand
is at stake.

Besides not losing track of the original design intents during implementation
and maintenance, the very challenge for software engineering in the large is
to integrate new or changed requirements into existing systems for which, all
too often, the only available artifacts are source code files. To recover the
logic behind the source code, state-of-the-art reverse-engineering tools may
be used to identify its decomposition and the direct interactions among its
constituents; but to a large extent these tools leave reasoning about the
overall design up to the developer. We have addressed this issue, by
conducting experiments on design component recovery, based on several
well-known design patterns, on large-scale software systems.

In this presentation, we will present the tool we have been developing,
explain the techniques for composition and refinement of software at the
design level, and discuss the results of pattern-based design recovery based
on two telecommunications systems of each 500K lines of C++ source code.



< retour à (back to) Conférences récentes (Recent Talks)
Dernière mise à jour par (last update by):
keller@iro.umontreal.ca,
Sat Oct 3 15:26:50 EDT 1998.