Managing Dependencies in Component-based Systems

Mark Northcott

Abstract

Software systems are typically developed by integrating third-party products including components, applications and frameworks. As these integrated systems develop, and particularly as they evolve, it is becoming increasingly difficult to understand and manage all the dependencies that exist between all the third-party software within a system. It is often the case that the system is comprised of a hybrid of internally and externally developed software, each evolving independently. The developers of the software often do not know all the contexts in which their product will be used, and do not know a priori all the dependencies that their product may have with other products. System integrators are left with the increasingly intractable problem of determining how to make all the software elements work together, and how to keep them working together.

This research is concerned with developing techniques to allow integrators to manage system interdependencies in a rigorous and formal way. A formal model of system assemblies and dependencies has been developed. Constraints within the dependencies provide a means for specifying and verifying whether the dependencies are satisfied within a particular deployment. Tool support can be provided that not only assists with the specification and verification of dependencies, but also borrows from the open source community allowing developers, deployers, and users to take part in the dependency management process usingof a co-operative approach.