Life-Cycle Aware Modelling of Software Components



Similar documents
Parametric Performance Contracts for Software Components and their Compositionality

A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor

Online Performance Prediction with Architecture-Level Performance Models

Coupled Model Transformations for QoS Enabled Component-Based Software Design

Explicit Connectors in Component Based Software Engineering for Distributed Embedded Systems. Dietmar Schreiner and Karl M.

ProGUM-Web: Tool Support for Model-Based Development of Web Applications

Software Industrialization and Architecture Certification

Integrating the Palladio-Bench into the Software Development Process of a SOA Project

Performance Evaluation of Component-based Software Systems: A Survey

From Monolithic to Component-based Performance Evaluation of Software Architectures

Performance Modeling in Industry: A Case Study on Storage Virtualization

Using Java EE ProtoCom for SAP HANA Cloud

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

Seamless UML Support for Service-based Software Architectures

Towards Performance Awareness in Java EE Development Environments

7 Component-based Development Process and Component Lifecycle

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

Using Dynatrace Monitoring Data for Generating Performance Models of Java EE Applications

GECO: Automatic Generator-Composition for (Aspect-oriented) DSLs

Systems Integration: Co C mp m onent- t bas a e s d s o s ftw ft a w r a e r e ngin i eeri r n i g

Defining and Checking Deployment Contracts for Software Components

Component-Based and Service-Oriented Software Engineering: Key Concepts and Principles

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

An Overview of Challenges of Component Based Software Engineering

Round-Trip Software Engineering Using UML: From Architecture to Design and Back

An Architecture-Based Approach for Component-Oriented Development

Architectural Templates: Engineering Scalable SaaS Applications Based on Architectural Styles

Distributed Objects and Components

Towards a Performance Model Management Repository for Component-based Enterprise Applications

Revel8or: Model Driven Capacity Planning Tool Suite

Self-Aware Software and Systems Engineering: A Vision and Research Roadmap

Dynamic Scheduling of Object Invocations in Distributed Object Oriented Real-Time Systems Jørgensen, Bo Nørregaard; Joosen, Wouter

Structuring Product-lines: A Layered Architectural Style

A SYSTEMATIC APPROACH FOR COMPONENT-BASED SOFTWARE DEVELOPMENT

Development of Enterprise Architecture of PPDR Organisations W. Müller, F. Reinert

Contracts and Quality Attributes of Software Components

Development of a CASE-tool for the Service-Based. software construction.

Using Performance Models to Support Load Testing in a Large SOA Environment Industrial Track

Component-based approach for embedded systems

Representing Exceptional Behaviour at the earlier Phases of Software Development

Model Driven Development of Inventory Tracking System*

Component-Based Software Engineering: Building systems from Components at 9th IEEE Conference and Workshops on Engineering of Computer-Based Systems

Workload-aware System Monitoring Using Performance Predictions Applied to a Large-scale System

Common Warehouse Metamodel (CWM): Extending UML for Data Warehousing and Business Intelligence

EMBEDDED SOFTWARE DEVELOPMENT: COMPONENTS AND CONTRACTS

Lightweight Data Integration using the WebComposition Data Grid Service

Issues in Component-Based Development: Towards Specification with ADLs

Software Construction

A UML 2 Profile for Business Process Modelling *

CoSMIC: An MDA Tool Suite for Application Deployment and Configuration

A Framework for Software Product Line Engineering

Component-Oriented Engineering

Definition of a Software Component and Its Elements

An MDA approach to tame component based software development

The PECOS Software Process

Software Configuration Management Related to Management of Distributed Systems and Services and Advanced Service Creation

Common Criteria For Information Technology Security Evaluation

GECO: Automatic Generator-Composition for (Aspect-oriented) DSLs

Formal Specification of Non-functional Properties of Component-Based Software

Preserving Architectural Choices throughout the Component-based Software Development Process

Software Component Specification Using Design by Contract

Advanced and secure architectural EHR approaches

An Approach to Distributed Component-based Real-time Application Software Development

ECE 750 T11 Component-Based Software System Project Proposal. Web-based Course Registration System using Component-Based Development

MODELING OF SERVICE ORIENTED ARCHITECTURE: FROM BUSINESS PROCESS TO SERVICE REALISATION

From Business World to Software World: Deriving Class Diagrams from Business Process Models

A Model-driven Approach for Grid Services Engineering

Managing and Tracing the Traversal of Process Clouds with Templates, Agendas and Artifacts

A Service Modeling Approach with Business-Level Reusability and Extensibility

Towards an Adaptive Distributed Multimedia Streaming Server Architecture Based on Service-oriented Components

Component Based Software Engineering: A Broad Based Model is Needed

Service Oriented Architectures in the Delivery of Capability

On the Adequacy of i* Models for Representing and Analyzing Software Architectures

Using Model-Driven Development Tools for Object-Oriented Modeling Education

A Framework for Automatic Performance Monitoring, Analysis and Optimisation of Component Based Software Systems

Process Patterns for Component-Based Software Development

A Multi-Variant Approach to Software Process Modelling

Reusable Connectors in Component-Based Software Architecture

3 Software Architecture

A Management Tool for Component-Based Real-Time Supervision and Control Systems

A Methodology for the Development of New Telecommunications Services

Database Scheme Configuration for a Product Line of MPC-TOOLS

Tool Support for Software Variability Management and Product Derivation in Software Product Lines

Towards Integrating Modeling and Programming Languages: The Case of UML and Java

jeti: A Tool for Remote Tool Integration

Continual Verification of Non-Functional Properties in Cloud-Based Systems

Exploring Architectural Design Decision Management Paradigms for Global Software Development

VARIABILITY MODELING FOR CUSTOMIZABLE SAAS APPLICATIONS

Development of Tool Extensions with MOFLON

Business-Driven Software Engineering Lecture 3 Foundations of Processes

Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk

On Dynamic Service Composition and Its Applicability to E-Business Software Systems

PATTERN-BASED BUSINESS-DRIVEN ANALYSIS AND DESIGN OF SERVICE ARCHITECTURES

Process-Family-Points

Architecture Paradigms and Their Influences and Impacts on Component-Based Software Systems

Predictive Modelling of Peer-to-Peer Event-driven Communication in Component-based Systems

Reverse Engineering Software-Models of Component-Based Systems

2 nd UML 2 Semantics Symposium: Formal Semantics for UML

The Performance Cockpit Approach: A Framework for Systematic Performance Evaluations

Applying Configuration Management Techniques to Component-Based Systems

Transcription:

Life-Cycle Aware Modelling of Software Components Heiko Koziolek 1, Steffen Becker 3, Jens Happe 2, and Ralf Reussner 2 1 ABB Corporate Research Wallstadter Str. 59, 68526 Ladenburg, Germany 2 Chair for Software Design and Quality Am Fasanengarten 5, University of Karlsruhe (TH), 76131 Karlsruhe, Germany 3 FZI Forschungszentrum Informatik Haid-und-Neu-Straße 10-14, 76131 Karlsruhe, Germany {koziolek,sbecker,happe,reussner}@ipd.uka.de Abstract. Current software component models insufficiently reflect the different stages of component life-cycle, which involves design, implementation, deployment, and runtime. Therefore, reasoning techniques for component-based models (e.g., protocol checking, QoS predictions, etc.) are often limited to a particular life-cycle stage. We propose modelling software components in different design stages, after implemenatation, and during deployment. Abstract models for newly designed components can be combined with refined models for already implemented components. As a proof-of-concept, we have implemented the new modelling techniques as part of our Palladio Component Model (PCM). 1 Introduction Methods for model-based reasoning about component-based software architectures shall enable software architects to assess functional properties (e.g., correctness, interoperability, etc.) and extra-functional (e.g., performance, reliability, etc.) properties already during design [20]. By composing individual component specifications and running different analysis and simulation tools, the properties of the whole system shall be evaluated based on the properties of its individual parts. These methods shall avoid the implementation of designs which exhibit insufficient functional or extra-functional properties. During component-based system design, software architects specify new components and incorporate existing components in their architectures [4]. To support this mixed (i.e., top-down and bottom-up) development process, modelling and analysis methods must account for different stages in the component life-cycle. A step-wise refinement of component specifications is desirable as components progress from the design to implementation stage. Existing models for component-based systems support different stages in the component life-cycle only insufficiently [9]. Industrial component models, such as EJB [6], COM [5], or CCM [14], only refer to component implementations, but not to component designs. Furthermore, their support for functional and extra-functional analysis is limited. We propose modelling software components during different design stages and allow combining coarse specifications of new components with refined specifications of M.R.V. Chaudron, C. Szyperski, and R. Reussner (Eds.): CBSE 2008, LNCS 5282, pp. 278 285, 2008. c Springer-Verlag Berlin Heidelberg 2008

Life-Cycle Aware Modelling of Software Components 279 already implemented components to improve functional and extra-functional analysis. When the development of a component-based system progresses, coarse models of individual components can be refined with additional information thereby increasing the accuracy of analysis methods. Our approach improves functional and extra-functional reasoning for component-based software architectures, as it better reflects the different life-cycle stages of a software component than existing approaches. The contributions of this paper is a component type hierarchy that enables modelling software components at different design stages. We meta-modelled both concepts (which should be included into other component models) and added them to our Palladio Component Model (PCM) [2]. To illustrate the benefits of our approach, we model the components of a business reporting component during different stages of their lifecycle in this paper. This paper is organised as follows. Section 2 discusses related work, before Section 3 sketches the component-based development process with separated developer roles. Section 4 introduces our concepts for modelling software component during different development stages. Section 5 shows how the new concepts were implemented in the PCM. Finally, Section 6 concludes the paper. 2 Related Work We compare the component type hierarchy proposed in this paper with common definitions of software components (i.e., [20,4,9]), to different realisations of component definitions in current software component models, and to ADLs [11]. Common Component Definitions: Szyperski s well-known definition of software components [20] does not explicitly distinguish between component type and implementation. It mainly states how a component should be specified with provided and required interfaces, but does not refer to the whole life-cycle of a software component. Cheesman et al. [4] distinguish four different stages in the component life-cycle: component specification, component implementation, installed component, and component object. Our component type-hierarchy supports modelling components and reasoning on their properties in the first two of these stages (i.e., with complete component types, basic components). The PCM also contains a context model (not described in this paper) to describe installed components, and component objects. In addition to Cheesman s viewpoint, we distinguish between different stages of component specification. Lau et al. [9] distinguish between component design, deployment, and runtime as the stages of component life-cycle. Lau s view does not include reasoning for mixed architectures of software components modelled at the design or implementation stage. Software Component Models: The following briefly analyses UML, industrial component models, and component models from research [9]. The UML [13] supports modelling software components with component diagrams. With additional UML profiles (e.g., UML SPT [12]), designers may also specify QoS attributes to reason about extrafunctional properties. However, the UML does not explicitly support modelling different life-cycle stages of a software component.

280 H. Koziolek et al. Component models used in industry, such as EJB [6], COM [5], and CCM [14], target the implementation of component-based systems, and do not explicitly support early reasoning about component-based designs. Fractal [15] is a component model targeting the runtime stage of software components. There is no type hierarchy for Fractal components, as it is assumed that an implementation of each component is available. SOFA [16] does not distinguish between different design stages. ROBOCOP [3] targets performance prediction for embedded, component-based software architectures. There are no different design stages for software components in ROBOCOP. Architecture Description Languages: Medividovic and Taylor have provided a classification and comparison framework for ADLs [11]. While all ADLs differentiate between component types and component instances, only a few of them provide facilities for refining component specifications according to their life-cycle. For example, Aesop [7] allows component subtypes and enforces preservation of component behaviour. C2 [10] supports different subtyping relationships for interfaces, behaviours and implementations. However, these approaches are tied to object-oriented inheritance relationships and do not explicitly distinguish between discrete component life-cycle stages. 3 Component-Based Development Process The component-based development process involves several developer roles with specific responsibilities. The following roles are particularly relevant in our setting [8]: Component Developers specify and implement software components either from scratch or using existing components. They develop components for a market as well as per request. They make as few as possible assumptions about a specific deployment environment to ensure broad reuse. Software Architects lead the development process for a component-based application. They design the software architecture and delegate tasks to other involved roles. For the design, they decompose the planned application s specification into single component specifications. QoS Experts collect QoS-relevant information from the different developer roles and assess the extra-functional properties of the system. In practice, the process has to consider the desired reuse of components as well as new requirements. Software architects can use existing components from repositories or specify new ones for specific requirements, which shall be implemented by component developers. During the specification of a software architecture, some of the used components are already specified and implemented while others are only sketched. As a consequence, the component-based development process does not follow a strict separation into classical top-down (i.e., going from requirements to implementation) and bottom-up (i.e., assembling existing component to create an application) categories. Instead, it is a mixture of both approaches. Any software component model should account for the mixed top-down and bottomup development process. It is beneficial as it allows software architects to reason about the properties of their architecture during early development stages when some components are not yet implemented, but at the same time allows to rely on refined models

Life-Cycle Aware Modelling of Software Components 281 of already implemented (e.g., third-party) components. However, at this stage it is less costly to change design decisions. 4 Component Design To support model-based reasoning about component-based designs in a mixed topdown and bottom-up development process, it is necessary to model components in different development stages. It must be possible to successively refine components from early development stages. There are at least three different stages of component specification as depicted in Fig. 1 and described in the following from top to bottom. Component Type Provides Type Complete Type ImplementationType n <<conforms>> m n <<impl-conforms>> m IProvidedInterface IProvidedInterface IProvidedInterface CompositeComponent IRequiredInterface IRequired Interface Recommendatory Required Interfaces (may be used, but others may be used as well) Restricting Required Interfaces (only the specified interfaces may be used) Compulsory Required Interfaces (must be used in a certain way, e.g. according to protocol) Fig. 1. Component specification in different development stages 4.1 Bundling Provided Services into Components At the first stage, software architects specify components based on their desired functionality using provided interfaces. The architects might be unsure, which other components are required to provide this functionality, but nevertheless they want to include the desired functionality in their model for early reasoning. We call such component specifications, which include provided interfaces, but only optionally include required interfaces provides component types. These components are merely stubs for reasoning and can for example contain estimated QoS-annotations (e.g., execution times, failure probabilities) for early QoS predictions. Fig.2 shows the example of a component specified for business reporting functionality and includes estimated execution times as QoS-annotations. <<QoSAnnotation>> exectime = 50 ms <<QoSAnnotation>> exectime = 35 ms IBusinessReport report() monitor() Business Reporting IDB Fig. 2. Example of a Provides Component Type

282 H. Koziolek et al. 4.2 Full Specification of Required Services At the second stage, the software architect refines components with interfaces needed to provide a certain functionality. In this stage, the implementation of the component is still unknown and there are multiple possibilities to realise a component conforming to the specified interfaces. For example, component developers can use different algorithms and data structures behind the same interfaces. The specified required interfaces in this stage can (but need not) be used by component developers implementing the component. However, they must not use additional required interfaces in order to remain type-conform. <<QoSAnnotation>> exectime = 40 ms + 2 exectime (IDB.select) IBusinessReport Business IDB <<QoSAnnotation>> report() Reporting select() monitor() update() exectime = 30 ms + exectime(idb.select) Fig. 3. Example of a Complete Component Type We call such component specifications, which include provided interfaces and required interfaces, complete component types, as all their interfaces are known. Software architects can pass these component specifications to component developers as requirements specifications. A complete component conforms to a provided component (and thus can substitute it), if and only if it provides at least the services specified in the provided type. With complete component type, functional and extra-functional analysis can be refined, as for example estimated QoS-annotations can now also refer to required services, as depicted in Fig. 3. 4.3 Modelling Component Implementations At the third stage, a component specification has been implemented, and a model of the implementation (with refined information) should be included in the architectural design model to improve the accuracy of analyses. Developers can either assemble other components to implement a component (i.e., a so-called composite component) ordirectly implement them (i.e., a so-called basic component). The models of these component implementations can be refined with service effect specifications (SEFF) (cf. Fig. 4), which are a high-level abstractions of the behaviour of component services and model how provided services of a component call the required interfaces. SEFFs are useful for many kinds of functional and extra-functional analysis (e.g., protocol checking [17], reliability prediction [18], performance prediction [2], testability [19]). A basic or composite component impl-conforms to a complete type (and thus can substitute it) if and only if it provides at least the services specified in the provided interfaces of the complete type and it requires at most the services specified in its the required interfaces of the complete type. This principle is known as contra variance [20]. The conforms as well as the impl-conforms are n:m relations. Each basic or composite

Life-Cycle Aware Modelling of Software Components 283 Internal Computation <<ServiceEffectSpecification>> Ext.Call select() Internal Computation Ext.Call select() <<ResourceDemand>> 2400 CPU cycles <<ResourceDemand>> 420 CPU cycles BusinessReporting IBusinessReport report() monitor() Report2 Report1 Cache IDB select() update() Fig. 4. Example of a Composite Component component can conform to multiple complete types and each complete type can be implemented multiple times. 5 Implementation Fig. 5 shows the realisation of the formerly described component type hierarchy in the PCM meta-model. Abstract meta-classes are colored in light grey. We have introduced an explicit abstract class for the concept of providing and requiring an interface, as it is common for all types of components. PCM Interfaces mostly follow the syntax and semantics of CORBA IDL [14], therefore we omit the full meta-model for interfaces for clarity. PCM Interfaces are first-class entities and may exist independently from components. The specification of a RequiredRole to an Interfaces has different semantics according to the underlying component type (i.e., recommended, restricted, or compulsory as described above). Meta-classes for QoS annotations (e.g., for provides and complete component type) have been omitted for brevity. Component developers specify QoS properties of ProvidedRole Interface RequiredRole InterfaceProvidingEntity InterfaceProvidingRequiringEntity InterfaceRequiringEntity ServiceEffect Specification BasicComponent ProvidesComponentType <<conforms>> CompleteComponentType <<impl-conforms>> ImplementationComponentType CompositeComponent Fig. 5. PCM Component Type Hierarchy (Meta-Model)

284 H. Koziolek et al. BasicComponents using ServiceEffectSpecifications. Their metamodel is extensively described in [2]. Tools can compute the QoS properties of CompositeComponents by combining the ServiceEffectSpecifications of the included BasicComponents. 6 Conclusions We have proposed a refined modelling of component types during different development stages to improve early analysis of functional and extra-functional properties. The different component type levels allow reasoning on the properties of software architectures with already implemented and only designed components. This reflects the typically mixed (top-down and bottom-up) development process of component-based systems. During component deployment, the PCM supports modelling contextual information for each component instance, such as the binding to other components, the allocation to hardware resources, and the usage of the components. This context model has been detailed in [1]. For the future, we plan to extend the PCM s context model to hold more refined contextual information for QoS predictions with higher accuracy. Furthermore, modelling specifics of the runtime stage of components would allow even more kinds of predictions. References 1. Becker, S., Happe, J., Koziolek, H.: Putting Components into Context - Supporting QoS- Predictions with an explicit Context Model. In: Reussner, R., Szyperski, C., Weck, W. (eds.) Proceedings of the Eleventh International Workshop on Component-Oriented Programming (WCOP 2006) (June 2006) 2. Becker, S., Koziolek, H., Reussner, R.: Model-based Performance Prediction with the Palladio Component Model. In: Proceedings of the 6th International Workshop on Software and Performance (WOSP 2007), February 5 8, 2007, ACM Sigsoft (2007) 3. Bondarev, E., de With, P.H.N., Chaudron, M.: Predicting Real-Time Properties of Component-Based Applications. In: Proc. of RTCSA (2004) 4. Cheesman, J., Daniels, J.: UML Components: A Simple Process for Specifying Componentbased Software. Addison-Wesley, Reading (2000) 5. Microsoft Corp. The COM homepage (last retrieved 2006-10-30), http://www.microsoft.com/ 6. Sun Microsystems Corp., The Enterprise Java Beans, homepage (Last retrieved 2008-01-06) (2007) 7. Garlan, D., Allen, R., Ockerbloom, J.: Exploiting style in architectural design environments. SIGSOFT Softw. Eng. Notes 19(5), 175 188 (1994) 8. Koziolek, H., Happe, J.: A Quality of Service Driven Development Process Model for Component-based Software Systems. In: Gorton, I., Heineman, G.T., Crnković, I., Schmidt, H.W., Stafford, J.A., Szyperski, C.A., Wallnau, K. (eds.) CBSE 2006. LNCS, vol. 4063, pp. 336 343. Springer, Heidelberg (2006) 9. Lau, K.-K., Wang, Z.: Software component models. IEEE Transactions on Software Engineering 33(10), 709 724 (2007)

Life-Cycle Aware Modelling of Software Components 285 10. Medvidovic, N., Oreizy, P., Robbins, J.E., Taylor, R.N.: Using object-oriented typing to support architectural design in the c2 style. In: SIGSOFT 1996: Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering, pp. 24 32. ACM, New York (1996) 11. Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Transactions on Software Engineering 26(1), 70 93 (2000) 12. Object Management Group (OMG). UML Profile for Schedulability, Performance and Time (January 2005) 13. Object Management Group (OMG). Unified Modeling Language Specification: Version 2, Revised Final Adopted Specification (ptc/05-07-04) (2005) 14. Object Management Group (OMG). CORBA Component Model, v4.0 (formal/2006-04-01) (2006) 15. Object Web. The Fractal Project Homepage ( Last retrieved 2008-01-06) (2006) 16. Plasil, F., Visnovsky, S.: Behavior Protocols for Software Components. IEEE Transactions on Software Engineering 28(11), 1056 1076 (2002) 17. Reussner, R.H.: Automatic Component Protocol Adaptation with the CoCoNut Tool Suite. Future Generation Computer Systems 19, 627 639 (2003) 18. Reussner, R.H., Schmidt, H.W., Poernomo, I.: Reliability Prediction for Component-Based Software Architectures. Journal of Systems and Software Special Issue of Software Architecture Engineering Quality Attributes 66(3), 241 252 (2003) 19. Stafford, J.A., McGregor, J.D.: Top-down analysis for bottom-up development. In: Proc. 9th International Workshop on Component-Oriented Programming (WCOP 2004) (2004) 20. Szyperski, C., Gruntz, D., Murer, S.: Component Software: Beyond Object-Oriented Programming, 2nd edn. ACM Press and Addison-Wesley, New York (2002)