|
Abstract : |
Software systems are composed of numerous software components. These components could be developed as a part of the system, or provided by a separate software development environment (e.g., a library which provides a graphical user interface). However, over the lifetime of the software, additional components or modifications to those currently available, may be required. For example, new versions of software components may be necessary due to bug fixes. Therefore, software is often required to be extensible, enabling modifications to occur with minimal effect on existing users. To allow this extensibility, components should only be available through interfaces that are clearly separated from their implementations, allowing users to be isolated from any implementation changes. Object-oriented programming techniques offer a good basis upon which this separation can be provided. This paper describes a model for constructing extensible software based upon this separation, and illustrates this with a software development system we have implemented which supports these ideas in C++. This software development system has been designed so that no modifications are required to either the compiler or operating system, hence making it portable. 1, |