Download PDF

Middleware for the Inspection of Complex Software Systems (Middleware voor de inspectie van complexe software systemen)

Publication date: 2014-06-18

Author:

De Borger, Wouter

Abstract:

With the increasing impact of computers on society, we are faced with the obligation of maintaining increasingly complex software systems. Thiscomplexity makes it difficult to verify whether the actual behavior corresponds to the intended behavior. This creates an ever increasing need for inspection. However, this is far from trivial, as information about the run-time state and behavior is distributed over different machines and different infrastructural layers. In addition, multiple stakeholders (developers, performance engineers, operators, business owners) demand for different types of information. The central goal of thisthesis is to enable comprehension of complex software, by representing the running system in terms of the abstractions that the various stakeholders can understand. We specifically focus on the abstraction gap between the information present in the run-time environment and the information required by the stakeholders.We have addressed this problem through four research activities. We first investigate the particular abstraction gap created by aspect oriented programming languages in two ways: through a debugger (AODA) and through a run-time policy enforcement system (AOPS). This experience is then generalized to the domain of large scale distributed software systems, through two additional solutions: a framework to reconstruct higher-level abstractions just-in-time at runtime, based on the stakeholder at hand (QVTD) and an integrated and distributed monitoring architecture to support higher-level abstractions when inspecting large-scale distributed systems with multiple applications (MonArch). The following paragraphs briefly summarize each ofthese four independent results.AODA, the aspect oriented debugging architecture, provides a debugger for AspectJ-like languages. The compilation of AspectJ to Java produces run-time structures that are hard to understand. AODA restores the original AspectJ abstractions through atransformation, to allow more convenient debugging. AODA was applied toboth AspectJ (a compiled language) and JBoss AOP (a middleware). We have validated AODA through a number of concrete scenarios. AODA was presented on the 8th international conference on aspect oriented software development(AOSD).AOPS, the aspect oriented permissions system, is arun-time policy enforcement system for AspectJ. AOPS addresses the challenge of untrusted third part aspects. When applying untrusted aspects to an application, it becomes hard to ensure that this does not lead to misbehavior. AOPS enforces security policies on third party aspects through a built-in model of the security state. We have built a prototype forAspectJ and illustrate its use in a realistic case study. Our evaluation shows that practical use of such a solution is feasible and that run-time overhead can be limited. AOPS was presented at 9th international conference on Aspect Oriented Software Development. QVTD provides a generic middleware that enables declarative specification of complex, statefull transformations, allowing transformations to be executed in an on-demand fashion. To be able to inspect complex composed (or distributed) systems in terms of specific abstractions, the abstraction gap must be bridged. This requires complex transformations. Such transformations are difficult to implement without tool support. QVTD provides the required tools support for run-time inspection system based on dynamic model transformation capabilities. QVTD is lightweight in terms of performance overhead and agile in the sense that it can selectively (and on-demand) generate these high-level views. Our prototype implementation has been applied to inspect distributed applications using RMI. In a case study, we inspect the distributed RMI system using our integrated overview over the collection of distributed objects that interact using remote method invocation. QVTD was presented on the ACM/IFIP/USENIX 12th International Middleware Conference. MonArch integrates the previous solutions into an overarching framework for monitoring of large scale distributed systems. It is an open middleware architecture for application level monitoring that enables cost-effective multi-stakeholder monitoring. It supports advanced aggregation capabilities, to make abstractionof low-level system and middleware complexity, and collects both state and events. MonArch supports reification of application-level abstractions and cost-effective extensions towards new (additional) stakeholders, as well as new application domains and abstractions. MonArch is validated in an industry relevant case study. We show that it can support multiple high level abstractions, such as billing or service oriented abstractions, at a low cost, both in terms of development overhead and run-time overhead.In summary, this work aims to enable run-time inspection of complex software systems. Via a partly experience driven and incremental process, we have come to an overarching architecture, that enablesmulti-abstraction and multi-stakeholder inspection of large scale distributed systems.