Treating Interfaces as Components



Similar documents
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

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

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

Designing an Enterprise Application Framework for Service-Oriented Architecture 1

EMBEDDED SOFTWARE DEVELOPMENT: COMPONENTS AND CONTRACTS

Patterns for Business Object Model Integration in Process-Driven and Service-Oriented Architectures

Challenges and Opportunities for formal specifications in Service Oriented Architectures

Automated Virtual Cloud Management: The need of future

Service-Oriented Architecture and Software Engineering

Architecture. Reda Bendraou

Roulette: Inheritance Case Study

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

Chapter 1 Fundamentals of Java Programming

Stock Trader System. Architecture Description

Integration of Time Management in the Digital Factory

XPoints: Extension Interfaces for Multilayered Applications

The Service Revolution software engineering without programming languages

Legacy System Integration using a Grammar-Based Transformation System

Basic Trends of Modern Software Development

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Service-Oriented Architectures


Business-Driven Software Engineering Lecture 3 Foundations of Processes

Introduction to WebSphere Process Server and WebSphere Enterprise Service Bus

Figure 1: Illustration of service management conceptual framework

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Component Based Development in Software Engineering

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Static Analysis and Validation of Composite Behaviors in Composable Behavior Technology

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Quotes from Object-Oriented Software Construction

Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding

Research on Sports Information Technology Education Platform Based on ASP-NET Technology

Programmers rejoice: QML makes business people understand. Qt Developer Days 2014 Hinrich Specht 2. September 2014 Folie 1

A Multi-layered Domain-specific Language for Stencil Computations

DreamFactory & Modus Create Case Study

Service Oriented Architecture Based Integration. Mike Rosen CTO, AZORA Technologies, Inc.

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

Introduction to Automated Testing

ATV Data Link Simulator: A Development based on a CCSDS Layers Framework

MDE Adoption in Industry: Challenges and Success Criteria

Composing Concerns with a Framework Approach

CS314: Course Summary

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111

Encapsulating Crosscutting Concerns in System Software

Oracle Service Bus. Situation. Oracle Service Bus Primer. Product History and Evolution. Positioning. Usage Scenario

Improving software quality with an automated build process

COMPONENTS in a database environment

Security Domain Separation as Prerequisite for Business Flexibility. Igor Furgel T-Systems

Information integration platform for CIMS. Chan, FTS; Zhang, J; Lau, HCW; Ning, A

Construction Principles and Design Patterns. Flyweight, Bridge, Builder

OKLAHOMA SUBJECT AREA TESTS (OSAT )

Micro Focus Database Connectors

Agile Software Development Methodologies and Its Quality Assurance

The Use of Hardware Abstraction Layers in Automated Calibration Software

Ikasan ESB Reference Architecture Review

SOA: The missing link between Enterprise Architecture and Solution Architecture

Policy Driven Practices for SOA

Semantic Analysis of Flow Patterns in Business Process Modeling

System development lifecycle waterfall model

Continuous Integration Just another buzz word?

A Federated Authorization and Authentication Infrastructure for Unified Single Sign On

Oracle WebLogic Server 11g Administration

Boosting Business Agility through Software-defined Networking

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

Outline SOA. Properties of SOA. Service 2/19/2016. Definitions. Comparison of component technologies. Definitions Component technologies

South East of Process Main Building / 1F. North East of Process Main Building / 1F. At 14:05 April 16, Sample not collected

An Oracle White Paper October Maximize the Benefits of Oracle SOA Suite 11g with Oracle Service Bus

SERVICE ORIENTED ARCHITECTURE

Software Engineering Reference Framework

CREDENTIALS & CERTIFICATIONS 2015

Service Governance and Virtualization For SOA

Enterprise Service Bus Evaluation as Integration Platform for Ocean Observatories

Everyday Lessons from Rakudo Architecture. Jonathan Worthington

Software Architecture

25.1 Translational Frameworks (MDA with transformations)

.NET and J2EE Intro to Software Engineering

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Axiomatic design of software systems

Transcription:

IVNET 05, Porto, June, 22nd 2005, 1 Treating Interfaces as Components Manuel Schwarzinger schwarzinger@racon-linz.at Joachim Fröhlich joachim.froehlich@acm.org

The Problem The Problem is not new! The old problems and dreams are still with us. Only the Words are new. Component Benefits have been known for years exchangeable software units with clear interfaces parallel development.net enables COP but does not enforce it Interplay between OOP and COP is still not clear COP requieres interface-based programming Programmers have just mastered classes IVNET 05, Porto, June, 22nd 2005, 2 D.Parnas about Component-Oriented Design sd&m Conference on Software Pioneers, Bonn/Germany, June 28th-29th 2001

The Goal IVNET 05, Porto, June, 22nd 2005, 3 Components that are easy to use and implement even for highly specialized application domains offer sharp interfaces also with object-oriented techniques, but without classes adhere to the information hiding principle of course decouple functional components completely well, bind them well-defined allow (re)configurations after development, before and during runtime

The Goal (2) IVNET 05, Porto, June, 22nd 2005, 4 We have a dream of sharp component (interface) specifications systematic unit, component and integration tests separate component implementations flexible configurations of system families hiding specific, platform-dependent component models We look for stability to be agile!

The Idea (1) IVNET 05, Porto, June, 22nd 2005, 5 Interfaces carry software architectures, not components stable interfaces lead to stable architectures still not new, but still newsworthy Connectors are Components with only systems of semantically related interfaces well, with almost only interfaces Connectors may bee seen as clutches with driving parts: functional client components driven parts: functional provider components Connectors may offer services like antishock protection and gear changing i. e. logging, profiling, protocol checks

The Idea (2) IVNET 05, Porto, June, 22nd 2005, 6 Schematic representation of a connector with a system of call and callback interfaces Characteristics: functional components do not depend on each other functional components depend on connectors connectors do not depend on functional components

The Idea (3) Systems full of Connectors IVNET 05, Porto, June, 22nd 2005, 7 components may be clients and providers

A Solution IVNET 05, Porto, June, 22nd 2005, 8 1. Design the Interfaces 2. Compile functional components and interfaces independently csc /out:connector.dll /t:library... csc /out:provider.dll /t:library /r: Connector.dll csc /out:client.exe /t:exe /r:connector.dll... 3. Plug together functinal components before runtime e.g. simply with app.config <configuration> <appsettings> <add key="connectorsubsystemx" value ="Provider.dll"/>... </appsettings> </configuration> 4. Run the application without changing a line of code

A Solution (2) IVNET 05, Porto, June, 22nd 2005, 9 Tasks of a connector: Combine semantically coherent interfaces Establish the connection between a client and a provider without violating the information hiding principle A Connector has at least one class the provider-independent connector class Each provider has exactly one provider-specific connector (sub)class per supported connector Exactly one object per provider-specific connector class Clients use this object as a kind of factory

A Solution (3) IVNET 05, Porto, June, 22nd 2005, 10 Connectors may factor out nonfunctional services from functional components. Light connectors: only contain declarations of application-specific functions organized in interfaces Heavy connectors: wrap interfaces in proxy classes hook in services like logging, profiling wrap call interfaces on the way out wrap callback interfaces on the way in Connectors that may carry several providers: Multitions in contrast to Singletons (light and heavy) discussed so far

Review IVNET 05, Porto, June, 22nd 2005, 11 We have been using connectors for a generic log analyzer in several student projects: mobile cash box, p2p chat... Our experience with others: heavy usage of OO hinders understanding of connectors need about 2 common programming sessions for confidence Results compared to the goals + Ease of use + Sharp interfaces, information hiding principle + Complete separation of functional components + Hiding platform specifics -/+ Dynamic exchange of components

Outlook IVNET 05, Porto, June, 22nd 2005, 12 Focus: Experiments with Connectors of various expansion stages Load and unload providers dynamically technically it works with Assemblies in AppDomains and replacing interfaces with pure abstract classes but what to do with stateful component instance? Expand on mechanisms for protocol checking Choose providers dynamically according to an application/client-specific strategy Open programms for dynamic configuration from outside Monitor functional components

Outlook (2) IVNET 05, Porto, June, 22nd 2005, 13 We do not pretend to have achieved perfection but we do have a system and it works. Michael Rennie in The Day The Earth Stood Still 1951