Date of Graduation


Document Type



The central challenge in software engineering research and practice is to improve the quality and performance of software systems, while decreasing the cost for producing such systems. While the combination of parallel execution with component-based software construction provides opportunities for addressing the software development challenge, it also raises a fundamental distributed software engineering dilemma, not adequately addressed in the literature. This dilemma is a result of the following two observations: (1) The quality and productivity benefits of reusability accrue only when reusable components are used without modifications. (2) For improved performance in a distributed environment, it must be possible to tune the distribution of the system and its components specifically to offset communication costs of distributed execution in that environment. This dissertation contains a uniform, granularity-independent approach to improve the execution performance of software systems built from layered and non-trivially parameterized reusable objects. The approach facilitates alternative distribution of objects, alternative communication strategies, and parallel execution at various grain levels. The techniques are experimentally validated through CORBA-based distributed execution of C++ components.