2 research outputs found

    Composing Non-Functional Concerns in Web Services

    Get PDF
    In software development, two types of concerns must generally be addressed: functional and non-functional ones. Functional concerns relate to the main or core functionality of a software, whereas non-functional concerns represent quality characteristics of the same. It is widely accepted that the two types of concerns should be strictly separated from one another to increase maintainability, understandability and reusability of a software. In component-based software systems, this strict separation of concerns results in the implementation of the respective concerns as functional as well as non-functional components. From the current perspective, web services are the prevalent technology for implementing such component-based software systems. They adhere to open standards and describe a well-defined interface which is strictly separated from the implementation of the service. This allows the realization of systems consisting of loosely coupled and platform-independent services. Non-functional concerns could also be implemented as web services; however, a well-defined mechanism is required to integrate these non-functional components with functional ones. This mechanism should not interfere with the aforementioned platform independence and loose coupling, and it should not require changes in the implementation of the functional component. For reuse purposes, it should be possible to integrate one non-functional component with several functional components. Furthermore it should be possible to integrate multiple non-functional components with a single functional component. The latter, however, requires a well-defined ordering of the consumption of the non-functional components. The justification for this is that, generally,different orderings of non-functional concerns would cause different behavior. Furthermore, it is not possible to define generally valid (default) orderings, because the ordering may be specific to a particular functional component. Thus, a mechanism for specifying these orderings explicitly is required. Furthermore, a component must be available which is able to enforce this specification at runtime. This dissertation analyzes the applicability of state-of-the-art approaches for the composition of non-functional concerns in web services in terms of the concrete requirements to be met. In this analysis it turns out that there is no appropriate approach which sufficiently supports most of the requirements. Hence, the dissertation presents NFComp, a novel, model-driven approach for composing non-functional concerns in web services. This approach takes different dimensions into account. Firstly, it aims at both specification as well as enforcement of concern compositions. Secondly, it covers different views on web services in which only particular parts of the service are available. Thirdly, it provides an abstract framework which could be applied to all component-based approaches and a concrete, instantiable one which can be applied to web services in particular. In this approach, a modeler can specify concern composition in terms of non-functional actions each representing distinct and fine-grained non-functional behavior. Those actions, their logical composition and mapping to functional components, can be modeled in a graphical way. The model is mainly process-oriented and shows directly in which order and for which services actions must be executed. The approach is structured in six phases: requirements specification, action definition, action composition, service mapping, middleware mapping and code generation. In each phase, the model is processed by various participants in different roles and enriched by new information. The resulting model can be validated at design time against a set of constraints imposed by different types of interdependencies modeled in the action definition phase. In this regard, the problem of finding interdependencies which crosscut different non-functional domains has been addressed. A mechanism has been defined to systematically analyze data dependencies to infer control flow constraints. This mechanism helps to enrich the modeled set of interdependencies by discovering even cross-domain interdependencies and thus enables a more precise validation. In addition to the classical validation where constraint violations are directly shown in the model, a guided modeling procedure has been invented. This procedure supports the modeler by showing the next safe modeling steps always resulting in a valid model. Finally, a generator takes the model as input in order to produce code which enforces the modeled composition at runtime. The generator, however, does not produce the implementation of non-functional components which must be implemented manually. Instead, it provides a composition component which takes over the task of integrating and invoking these components in the specified order according to the model. The whole approach has been implemented for web services as a set of Java-based modeling tools and a code transformer which generates either the configuration for an Enterprise Service Bus or, alternatively, a set of aspects implementing the composition component. The aspect-based approach is not only applicable to web services but also generally to component-based software written in Java

    Composing Non-functional Concerns in Web Services

    No full text
    Support for non-functional concerns (NFC) is essential for the success and adoption of web services. This support encompasses two aspects: the specification of NFCs and their realization. However, state-of-the-art works offer only limited support for these aspects. This is especially true for the composition of multiple non-functional concerns with one web service, which is a highly complex task. It is complex because specific knowledge from different domains is required, as well as an understanding of the interdependencies between non-orthogonal NFCs. In this paper, we present an approach and a toolset for the specification and realization of the composition of multiple NFCs in web services. We also present a well-defined process involving different roles and we introduce graphical modeling notations for specifying non-functional requirements, actions realizing the requirements, action compositions and the mapping of actions to web services. These specification models are used for the generation of code that realizes the NFCs
    corecore