Component-based Architecture Buy, don t build Fred Broks

Similar documents
Vision of J2EE. Why J2EE? Need for. J2EE Suite. J2EE Based Distributed Application Architecture Overview. Umair Javed 1

Appendix A - Glossary(of OO software term s)

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

Minsoo Ryu. College of Information and Communications Hanyang University.

Service-Oriented Programming

~ Ian Hunneybell: CBSD Revision Notes (07/06/2006) ~

Distributed Multitiered Application

Software Reuse and Component-Based Software Engineering

Application Servers in E-Commerce Applications

J2EE Interview Questions

Study of Component Based Software Engineering

ESPRIT Project N Work Package H User Access. Survey

Enterprise JavaBeans (I) K.P. Chow University of Hong Kong

NetBeans IDE Field Guide

Architecture. Readings and References. Software Architecture. View. References. CSE 403, Spring 2003 Software Engineering

09. Component-Level Design

Introduction. Enterprise Java Instructor: Please introduce yourself Name Experience in Java Enterprise Edition Goals you hope to achieve

(9A05803) WEB SERVICES (ELECTIVE - III)

Architecture. CSE 403, Winter 2003 Software Engineering.

B. Assets are shared-by-copy by default; convert the library into *.jar and configure it as a shared library on the server runtime.

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP

J2EE Application Deployment Framework. (Author: Atul Singh Chauhan) June 12, 2007

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Data Structures and Algorithms Design Goals Implementation Goals Design Principles Design Techniques. Version 03.s 2-1

Web Application Architecture (based J2EE 1.4 Tutorial)

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

CHAPTER 5 CO:-Sketch component diagram using basic notations 5.1 Component Diagram (4M) Sample Component Diagram 5.2 Deployment Diagram (8M)

Software Architectures

Building the Enterprise

Designing a Distributed System

POAD Book: Chapter 4: Design Patterns as Components Chapter 5: Visual Design Models

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

Chapter 8 Web Services Objectives

Object-Oriented Design

Distributed Objects. Object-Oriented Application Development

CHAPTER 6. Organizing Your Development Project. All right, guys! It s time to clean up this town!

Course Structure. COMP434/534B Software Design Component-based software architectures. Components. First term. Components.

Software Engineering

CHARLES UNIVERSITY, PRAGUE FACULTY OF MATHEMATICS AND PHYSICS. Master Thesis. Michael Cífka Visual Development of Software Components

Java Enterprise Edition

PLATFORM TECHNOLOGY UNIT-5

CocoBase Delivers TOP TEN Enterprise Persistence Features For JPA Development! CocoBase Pure POJO

WSIA and WSRP are new Web

Components and Application Frameworks

BEAWebLogic. Server. Programming WebLogic Deployment

Distributed systems. Distributed Systems Architectures

IBM Rational Application Developer for WebSphere Software, Version 7.0

Reflective Java and A Reflective Component-Based Transaction Architecture

Introduction to componentbased software development

Contract Information Management System (CIMS) Technical System Architecture

IBM Rational Software Architect

A Grid-Enabled Component Container for CORBA Lightweight Components


describe the functions of Windows Communication Foundation describe the features of the Windows Workflow Foundation solution

Chapter 10 Web-based Information Systems

Picolo: A Simple Python Framework for Introducing Component Principles

J2EEML: Applying Model Driven Development to Autonomic Enterprise Java Bean Systems

SUN Sun Certified Enterprise Architect for J2EE 5. Download Full Version :

Incorporating applications to a Service Oriented Architecture

Enterprise Java Security Fundamentals

UNIT 5 - UML STATE DIAGRAMS AND MODELING

A General ecommerce Platform with Strong International and Local Aspects

Oracle Application Development Framework Overview

In the most general sense, a server is a program that provides information

Object-Oriented Concepts and Design Principles

What are the characteristics of Object Oriented programming language?

Object Orientated Analysis and Design. Benjamin Kenwright

J2EE Application Development with WebSphere Studio

Supports 1-1, 1-many, and many to many relationships between objects

SUN Enterprise Development with iplanet Application Server

Component models. Page 1

Master Thesis An Introduction to the Enterprise JavaBeans technology and Integrated Development Environments for implementing EJB applications

Java Training For Six Weeks

Services Oriented Architecture and the Enterprise Services Bus

Model-Driven Optimizations of Component Systems

IBM WebSphere Studio Asset Analyzer, Version 5.1

WHITESTEIN. Agents in a J2EE World. Technologies. Stefan Brantschen. All rights reserved.

Service-Oriented Architecture (SOA)

Leverage Rational Application Developer v8 to develop OSGi application and test with Websphere Application Server v8

Chapter 6 Enterprise Java Beans

Oracle Fusion Middleware 11g: Build Applications with ADF Accel

Chapter 2 FEATURES AND FACILITIES. SYS-ED/ Computer Education Techniques, Inc.

DHANALAKSHMI COLLEGE OF ENGINEERING, CHENNAI

IBM. IBM WebSphere Application Server Migration Toolkit. WebSphere Application Server. Version 9.0 Release

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Automatic Code Generation for Non-Functional Aspects in the CORBALC Component Model

Distributed Object-Based Systems The WWW Architecture Web Services Handout 11 Part(a) EECS 591 Farnam Jahanian University of Michigan.

2017, IBM Corporation Liberty z/os Good Practices. WebSphere Liberty z/os Applications and Application Deployment

BEAWebLogic. Server. Deploying Applications to WebLogic Server

Distributed Xbean Applications DOA 2000

Challenges in component based programming. Lena Buffoni

Developing Java TM 2 Platform, Enterprise Edition (J2EE TM ) Compatible Applications Roles-based Training for Rapid Implementation

Configuration Management for Component-based Systems

Service Oriented Architectures Visions Concepts Reality

Using JBI for Service-Oriented Integration (SOI)

The Umbilical Cord And Alphabet Soup

Best Practices for Deploying Web Services via Integration

The Open Group SOA Ontology Technical Standard. Clive Hatton

Writing Portable Applications for J2EE. Pete Heist Compoze Software, Inc.

Transcription:

Component-based Architecture Buy, don t build Fred Broks 1. Why use components?... 2 2. What are software components?... 3 3. Component-based Systems: A Reality!! [SEI reference]... 4 4. Major elements of a component:... 5 5. Component Architecture... 9 6. Blackbox vs. Whitebox... 12 7. Components vs. Objects... 14 8. Components in industry verses in-house solutions... 15 9. Component disadvantages... 16 10. Summary... 17 1

1. Why use components? Problem with OOP: Objects are too complicated and provide too limited functionality to be useful to many clients, while components such as plug-ins provide a high-level feature that can be installed and configured by users (such as webbrowser plug-ins). Objects do not allow for plug-and-play, integrating an object into a particular system may not be possible and therefore objects cannot be provided independently. Composition and assembly of components can be done by a larger group of people who do not have to have the specialist skills required for component development. Component-based development is a critical part of the maturing process of developing and managing distributed applications. Where are we in the software life cycle? Requirements Design Implementation. Software Architectures DSSA: Domain-Specific Software Architectures Components Software Component Architecture Frameworks Design Patterns Which Programming language? 2

2. What are software components? A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties. (Workshop on Component- Oriented Programming, ECOOP, 1996.) A component is a software object, meant to interact with other components, encapsulating certain functionality or a set of functionalities. A component has a clearly defined interface and conforms to a prescribed behavior common to all components within an architecture. Multiple components may be composed to build other components. Components are expected to exhibit certain behaviors and characteristics that let them participate in the component structure and interact with its environment and other components. 3

3. Component-based Systems: A Reality!! [SEI reference] Component-based systems encompass both commercial-off-theshelf (COTS) products and components acquired through other means, such as existing applications. Developing component-based systems is becoming feasible due to the following: the increase in the quality and variety of COTS products economic pressures to reduce system development and maintenance costs the emergence of component integration technology the increasing amount of existing software in organizations that can be reused in new systems. CBSD shifts the development emphasis from programming software to composing software systems [Clements 95]. 4

4. Major elements of a component: Specification: It is more than just list of available operations. It describes the expected behavior of the component for specific situations, constraints the allowable states of the component, and guides the clients in appropriate interactions with the component. In some cases these descriptions may be in some formal notation. Most often they are informally defined. One or more implementations: The component must be supported by one or more implementations. These must conform to the specification. The implementer can choose any programming language. Component Model: o Software components exist within a defined environment, or component model. o Established component models include MS s COM+, Sun s Java J2EE or JEE 5, and the Object Management Group OMG s CORBA component standard. o A component model is a set of services that support the software, plus a set of rules that must be obeyed by the component in order for it to take advantage of the services. o Each of these component models addresses the following issues: How a component makes its services available to others? How component are named? How new components and their services are discovered at runtime. Component Types: [Felix Bachman et al. 2000] 5

o A component s type may be defined in terms of the interfaces it implements. o If a component implements three different interfaces X, Y and Z, then it is of type X, Y and Z. We say that this component is polymorphic with respect to these types (it can play the role of an X, Y, or Z at different times. o Component types are found in both Microsoft/COM and Sun/Java technologies. o A component model requires that components implement one or more interfaces, and in this way a component model can be seen to define one or more component types. Different component types can play different roles in systems, and participate in different types of interaction schemes. o Each model also provides other capabilities such as: Transaction management, persistence, and Security. A packaging approach: o Components must be grouped to provide a set of services. It is these packages that are bought and sold when acquiring from a third-party sources. They represent units of functionality that must be installed on the system. o A J2EE application is packaged as an Enterprise ARchive (EAR) file, a standard Java JAR file with an.ear extension. 6

The goal of this file format is to provide an application deployment unit that is assured of being portable. o Different components (modules) of an application may be packaged separated to achieve maximum reusability. A deployment approach: o Once the packaged components are installed in an operational environment, they will be deployed. This occurs by creating an executable instance of a component and allowing interactions with it to occur. Note that we might have different instances of a component running on the same machine. o J2EE uses deployment descriptors that are defined as in XML files named ejb-jar.xml. Example: <?xml version="1.0" encoding="utf-8"?> <application xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" version="1.4"> <display-name>simple example of application</display-name> <description>simple example</description> <module> <ejb>ejb1.jar</ejb> </module> <module> <ejb>ejb2.jar</ejb> </module> <module> 7

<web> <web-uri>web.war</web-uri> <context-root>web</context-root> </web> </module> </application> 8

5. Component Architecture A component architecture is a system defining the rules of linking components together. A standard component model includes definitions for the following (WebSphere Advisor 2000): How each component must make its services available to others? How to connect one component to another. Which common utility services can be assumed to be provided by the infrastructure supporting the component model? How new components announce their availability to others? Component Architecture Principles (Rijsenbrij) Component architecture is a set of principles and rules according to which a software system is designed and built with the use of components. It must be independent from the business domain or the technology of the application. The component architecture covers three aspects of a software system. These are: Building blocks: The architecture specifies the type of building blocks systems are composed of. Construction of the software system: The architecture specifies how the building blocks are joined together when developing an 9

application. The architecture describes the role that the building blocks play in the system. Organisation: Components are divided in categories based on their functionality. The component interface is a set of methods supported by a component, and type definitions for the data used for arguments to those methods. An interface itself is a type and can be an argument for a component method. The Common Component Architecture Forum (http://www.cca-forum.org/glossary/index.html) o An Interface Definition Language understandable to all components. Interface definitions expressed in a language allow components to find out about each other either through introspection or through consulting a repository, and give component architecture the potential to dynamically add and delete components in multi-component applications (whether this potential is actually realized or not depends on a specific implementation of the architecture). o Introspection: Inspection is the process of exposing the properties, methods, and Events that a component supports. Example: Java provides Java provide an interface java.beans.beaninfo to accomplish it. o A Reusable Combining Infrastructure provides the implementation necessary to link components. It contains mechanisms enabling the components to reference each other, understands the interface definition syntax and is capable of transferring data types and component references between components. 10

o A Binding between the interface definition syntax and a language or framework of actual component implementation. o A Composition API allows the programmer to link components into multi-component applications and save those compositions. Such a mechanism could be provided for example by a GUI or a scripting language. Examples: BML (Bean Markup language) from IBM CoML: (http://www.springerlink.com/content/k4hy95n563m8ag v8/) 11

6. Blackbox vs. Whitebox Abstractions and Reuse Blackbox vs. whitebox abstraction refers to the visibility of an implementation behind its interface. Ideally, a blackbox s clients don t know any details beyond the interface and its specification. For a whitebox, the interface may still enforce encapsulation and limit what clients can do (although implementation inheritance allows for substantial interference). However, the whitebox implementation is available and you can study it to better understand what the box does. Blackbox reuse refers to reusing an implementation without relying on anything but its interface and specification. For example, typical application programming interfaces (APIs) reveal no implementation details. Building on such an API is thus blackbox reuse of the API s implementation. In contrast, whitebox reuse refers to using a software fragment, through its interfaces, while relying on the understanding you gained from studying the actual implementation. Most class libraries and application frameworks are delivered in source form and application developers study a class implementation to understand what a subclass can or must do. There are serious problems with whitebox reuse across components, since whitebox reuse renders it unlikely that the reused software can be replaced by a new release. Such a replacement will likely break some of the reusing clients, as these depend on implementation details that may have changed in the new release. 12

Some authors further distinguish between whiteboxes and glassboxes where a whitebox lets you manipulate the implementation, and a glass merely lets you study the implementation. 13

7. Components vs. Objects How does component architecture differ from object architecture? An object is built around the following ideas: o Inheritance o Needs other objects to be (re)used properly o The interface defines only methods o Has only properties (state) and behavior. A component differs in the following ways: o No inheritance (although the object that make up the component may inherit behavior from other objects, possibly in other components. o The component always appears as one of multiple interfaces. o The interface formalizes properties, events and behavior. o Easily reused due to its well-defined interface. o Flat hierarchy: no direct dependencies on other external objects. o Guaranteed to function in any configuration. o Has the ability to describe its own interface at runtime. List of properties contrasting Components and Objects: 14

8. Components in industry verses in-house solutions Fixed-price contracts can be agreed on, limiting financial risks. Existing software can be customized to business needs. Interoperability problems are left to vendor In-house developers may not have the required skill. In this case component vendors may provide better solutions. 15

9. Component disadvantages Must upgrade configuration for next release Business processes may have to be changed to suit software (rather than developing software to suit business processes) Fully testing components for integration testing will be infeasible, customers may have to proceed on a most-likely will work basis (compare with applets and browsers). Components must handle downloading and dynamic (late) integration with other components. Reliance on vendors may make adjustments to software slower. 16

10. Summary Why use components? Major elements of a component: o Specification o One or more implementations o Component Model: Each of these component models addresses the following issues: How a component makes its services available to others? How component are named? How new components and their services are discovered at runtime. o A packaging approach: Example: 2EE application is packaged as an Enterprise ARchive (EAR) file, a standard Java JAR file with an.ear extension. o A deployment approach: J2EE uses deployment descriptors that are defined as in XML files named ejb-jar.xml. Component Architecture Blackbox vs. Whitebox Components vs. Objects Components in industry verses in-house solutions Component disadvantages 17