Developing software is a complex task involving many technical and non-technical processes. To ensure high quality software systems, adequate software engineering methods must be applied which subdivide the software development process into meaningful phases.
Object-oriented software engineering techniques are suited to managing the complexity of software development and facilitate the decomposition of a software system into extensible and reusable components. This is a very important aspect since it must be taken into account that a software system must be adaptable to new requirements which might not be foreseeable while building it. Thus, it is crucial that the design of these components reflect the need for software evolution.
Software prototyping, component-based software construction and the use of design patterns are all means of coping with the complexity and extensibility of software systems. The main problem of designing software systems is to make appropriate decisions about the structure and interoperability of the various components. How should components be linked together? Which relationships between objects of the application domain need to be present? Which properties of an object, such as attributes and methods, must be specified? There are many more questions to be asked during the design process of software systems and components, and many attempts have been made to support this process by guidelines and methods.
In this thesis, we propose the eXtreme Design (XD) approach which can be regarded as a supplement to existing methods and models supporting the design process of software systems and components with respect to software evolution and persistent data management. XD is based on the XD meta model together with its algebra combining concepts of conceptual modelling and object-oriented software construction on a meta level.
This makes it possible that classification structures, relationships and object properties can be specified in such a way that they can evolve over time without having to change design and implementation specifications such as class and schema descriptions. Thus, also users can be involved in the evolution process of a software system since they can carry out changes, for example, by introducing new object properties without causing a redesign of the corresponding software components.
XD is especially tailored for designing and implementing those parts of a software system which manage persistent data. We present how XD increases the flexibility and adaptability of these parts of the system by showing how we have applied it in the fields of prototyping, component modelling and rapid information modelling. We illustrate how we used XD for prototyping a product information system capable of managing product variants. Further, as an example for component modelling, we describe how XD facilitates the extension of the persistent object management system OMS Java. Finally, we outline how XD supports the construction of information spaces meeting the demands for various information needs.