Anders Andersen, Frank Eliassen (Supervisor), Gordon Blair (Supervisor), OOPP, A Reflective Middleware Platform including Quality of Service Management, Department of Computer Science, University of Tromsø, Tromsø, 2002, ISBN 82-7747-097-5.
Middleware has emerged in distributed systems to present a unified programming model to application programmers and mask out the problems of heterogeneity and distribution. The reason to introduce middleware is to ease the process of creating complex (distributed) applications. Software developers recently have observed a related change in the software industry. This change is called software components (or just components) and it has changed the way software can be developed, deployed and maintained. A component is self-contained code that can be independently developed and deployed. This ease the process of building a complex application containing a composition of different components (possible from different providers) that interacts to provide the functionality of the application. Present middleware are made available to the application programmer through a (static) Application Programming Interface (API). Different application domains have different demands made upon the middleware platform. The results are complex and huge middleware implementations providing a lot of functionality with few possibilities to change and adapt its behaviour. Continuous media streams need communication protocols quite different from traditional remote procedure calls. Some applications might have to adapt to different net characteristics at run-time. Such special needs are rarely supported in current middleware implementations. The design of the next generation middleware should adopt an open engineering approach for the support of configuration and adaption. Reflection provides a principled (as opposed to ad hoc) means of achieving such open engineering. The OOPP platform presented in this work is an implementation of a reflective middleware platform with an expressive programming model. It is an investigation into how to implement such a platform, and an investigation into what programming model it should provide. Quality of service management is essential for many application domains. An open engineering approach provides the mechanisms to manipulate (adapt) the middleware for given quality of service demands. A quality of service management system can use these mechanisms to perform its management tasks. However, it has to implement the policies for what to do when based on observation of the behaviour of the system made available with an open engineering approach. Describing management policies in a formal language has a lot of advantages. The obvious one is the possibility to formally reason about the consequences of a given policy applied on a (formally described) system. A formal description can also be interpreted and executed on a computer. The possibility to actually interpret (and run) a formally described management policy can in fact be used in a running system. In OOPP, quality of service management is successfully introduced in the running system based on components with their behaviour (management policies) described in the formal language of timed automata. The actual timed automata descriptions are either generated by tools (for example from temporal logic describing the management constraints or from simulation of the running system) or made manually by programmers specialised in such tasks. The OOPP platform has been successfully used in several research activities looking into special enhancements to the platform. It has also been used successfully to build applications that needs a system that can adapts its behaviour.