demos

vancouver trade & convention centre
demo room 3

wednesday 10:00-10:45 a.m.
thursday 10:00-10:45 a.m.

12

The Classification Browser: Architectural Recovery and Maintenance in Large, Evolving Smalltalk Systems

Patrick Steyaert and Koen De Hondt, Vrije Universiteit Brussel; and Wilfried Verachtert, MediaGeniX

Software evolution is crucial to keep up with the evolution of the society we live in. However, bad software comprehension, poor effort estimation and poor insight into the effects of changes make it hard to evolve software correctly. The development process itself may even give rise to software evolution problems such as version proliferation, architectural drift, and overfeaturing. Preserving software from aging is not easy. The fundamental problem is a bad comprehension of the software architecture or the software design architecture - the organisation of the source code as composition of components and the interaction between them. Software documentation as we know it today does not appear to help. In the worst case, no documentation whatsoever exists. In many other cases, if documentation is done at all, it is often done after the fact, that is, after the software has reached a stable state. That explains the popularity of class report generators, which produce pretty-printed class definitions, including all methods and source comments collected from the implementation. One may wonder about the usefulness of such class reports, since they seldom contain more than can be found with the standard development tools.

Without documentation, deducing the required information from the source code is the only option left to the software engineers. However, reading and interpreting source code is error-prone and may result in an incomplete picture of the design. Moreover, if the knowledge gained through reverse engineering  is not entered in the software documentation, the problem persists and possibly the same part of the software is reverse engineered more than once.

As we will show in the demo, proper tool support in the software development environment can alleviate these problems. The basis is a set of tools to reverse engineer architectural elements in an incremental manner. The reverse engineering process is based on software classification. Software classification enables the software engineer to group (classify) related software entities, such as classes, methods, etc. Classifications can be used for many purposes. This work focuses on three of them: classifications as architectural building blocks (modules, software layers, features, *), classifications as collaboration contracts (software entities that formally describe how classes co-operate), and classifications as multiple views on software (in many cases different cross-cutting architectural viewpoints are possible). Reverse engineering is performed within the software development environment and the recovered architectural elements (in the form of classifications) are stored as tangible software entities in a repository. The ability to keep track of knowledge of examined parts of the software provides the software engineer(s) with a mental prosthesis to avoid loss of knowledge due to the limitations of human memory. In the demonstration, two Smalltalk development tools will be shown that together support a team of developers in customising and maintaining a large evolving application.

 

Demos Schedule Demos Descriptions
(in entirety)
Posters Overview Posters Descriptions
(in entirety)

OOPSLA'98 Home
Last updated 15 October 1998 09:28:03