Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Tiny Components A Component Model for Small, Embedded or Mobile devices.

Slides:



Advertisements
Similar presentations
When Applications can Roam Freely OSGi Service Platform R4 Peter Kriens Technical Director OSGi
Advertisements

Welcome to Middleware Joseph Amrithraj
Web Service Architecture
COM vs. CORBA.
General introduction to Web services and an implementation example
Component Oriented Programming 1 Chapter 2 Theory of Components.
Apache Struts Technology
Copyright © IBM Corp., All rights reserved. The presentation is licensed under Creative Commons Att. Nc Nd 2.5 license. RESTful Service Oriented.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
UNDERSTANDING JAVA APIS FOR MOBILE DEVICES v0.01.
University of British Columbia Software Practices Lab Introduction to Middleware for Software Engineering Eric Wohlstadter 539D.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
Technical Architectures
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
1. Introducing Java Computing  What is Java Computing?  Why Java Computing?  Enterprise Java Computing  Java and Internet Web Server.
Software Engineering and Middleware: a Roadmap by Wolfgang Emmerich Ebru Dincel Sahitya Gupta.
Copyright W. Howden1 Lecture 19: Intro to O/O Components.
Component Based Systems Analysis Introduction. Why Components? t Development alternatives: –In-house software –Standard packages –Components 60% of the.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
12-1 © Prentice Hall, 2004 Chapter 12: Design Elements Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph S. Valacich, Jeffrey.
Web Service What exactly are Web Services? To put it quite simply, they are yet another distributed computing technology (like CORBA, RMI, EJB, etc.).
Mobile Computing Lecture: 4.
Embedded Components CDUF 2002 i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e © 2002 Markus Völter Embedded.
Component Software: A New Software Engineering Course H. Conrad Cunningham, Yi Liu, Pallavi Tadepalli, and Mingxian Fu Software Architecture Research Group.
Java Beans.
Beyond DHTML So far we have seen and used: CGI programs (using Perl ) and SSI on server side Java Script, VB Script, CSS and DOM on client side. For some.
OSGi.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Introduction to distributed systems Dr. S. Indran 23 January 2004.
Secure Systems Research Group - FAU Aspects and mobile applications Sergio Soares Paulo Borba, “PaDA: A Pattern for Distribution Aspects” In Second Latin.
1 G52IWS: Distributed Computing Chris Greenhalgh.
Chapter 3: Objects, Components, and the Web Textbook IT Architectures and Middleware, Second Edition Chris Britton and Peter Bye AIT 600 Jeff Schmitt September.
Software Component Technology and Component Tracing CSC532 Presentation Developed & Presented by Feifei Xu.
1 CS590L Distributed Component Architecture Yugi Lee STB #555 (816) * This presentation is designed based.
第十四章 J2EE 入门 Introduction What is J2EE ?
Lecture 15 Introduction to Web Services Web Service Applications.
Comparing JavaBeans and OSGi Towards an Integration of Two Complementary Component Models HUMBERTO CERVANTES JEAN-MARIE FAVRE 09/02.
1 Introduction to Middleware. 2 Outline What is middleware? Purpose and origin Why use it? What Middleware does? Technical details Middleware services.
Architecture of Message Oriented Middleware [1]
1 Introduction to Microsoft Windows 2000 Windows 2000 Overview Windows 2000 Architecture Overview Windows 2000 Directory Services Overview Logging On to.
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
Introduction to CORBA University of Mazandran Science & Tecnology By : Esmaill Khanlarpour January
Web Services. Abstract  Web Services is a technology applicable for computationally distributed problems, including access to large databases What other.
1 MSCS 237 Overview of web technologies (A specific type of distributed systems)
© 2002, Youngjoon Choi, RESL, Inha University Page : 1 Open Services Gateway initiative OSGi Open Services Gateway Initiative Youngjoon Choi © Realtime.
ICT Strategy Intelligent Highways: Endpoint Adapters.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
© 2013, published by Flat World Knowledge Chapter 10 Understanding Software: A Primer for Managers 10-1.
Notes from Coulouris 5Ed Distributed Systems Notes on Components.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Web Services Using Visual.NET By Kevin Tse. Agenda What are Web Services and Why are they Useful ? SOAP vs CORBA Goals of the Web Service Project Proposed.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Introduction to business component technologies. Component definitions Szyperski: A software component is a unit of composition with contractually specified.
E-commerce Architecture Ayşe Başar Bener. Client Server Architecture E-commerce is based on client/ server architecture –Client processes requesting service.
Discussion on oneM2M and OSGi Interworking Group Name: ARC Source: Jessie, Huawei, Meeting Date: Agenda Item:
1 CS590L Distributed Component Architecture Yugi Lee STB #555 (816) * This presentation is prepared based.
Real-Time Systems Lab. OSGi overview January 23, 2002 Sung-ho Park.
Mary Ganesan and Lora Strother Campus Tours Using a Mobile Device.
Chapter 9 – RPCs, Messaging & EAI
CORBA Within the OS & Its Implementation
#01 Client/Server Computing
Inventory of Distributed Computing Concepts and Web services
Component-Based Software Engineering: Technologies, Development Frameworks, and Quality Assurance Schemes X. Cai, M. R. Lyu, K.F. Wong, R. Ko.
Inventory of Distributed Computing Concepts
Component--based development
Small Components A collection of initial ideas for a component model for small, embedded or mobile devices Markus Völter
Could Jiro™ Extend the Jini™ Pattern Lanuguage?
Quality Assurance for Component-Based Software Development
#01 Client/Server Computing
Presentation transcript:

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Tiny Components A Component Model for Small, Embedded or Mobile devices

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components What is a component architecture  Most important principle: Separation of Concerns  Functional concerns of an application are factored into reusable Components  Technical concerns are provided by a standardized entity, a so-called Container  Components are accessed only through a Component Interface  Functionality of a Component is well defined, thus reusable.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components What is a component architecture (II) Taken from Voelter, Schmid, Wolff, Server Component Patterns, Wiley 2002

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components So, then, what is a Component?  Additional properties of the kinds of Components we are interested in:  a component is coarse grained  principle of separation of concerns is employed  components can be accessed remotely “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.” Definition by Szyperski

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Components in the enterprise environment  There are several popular component architectures in the enterprise environment:  Enterprise Java Beans (EJB), a Java-only component model that is part of the Java 2 Enterprise Editition  CORBA Components (CCM), a component-extension to OMG's object request broker technology,  Micorsoft's COM+, a widely-used component architecture limited to Windows operating systems.  Many other component architectures that have been designed specifically for a specific system

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Why are they successful in enterprise apps  A Typical application structure:  database contains business data  processes that manipulate this data  usually in the context of transactions.  It is relatively easy to separate the functional from the technical concerns, and they can be implemented generically.  Standards and commercially available containers  People and their skills suit the sep. of concerns well  Standardized Programming Model

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Target Platform: Small Systems  We consider the following kinds of devices to be „small systems“:  Mobile Phones  PDAs, Organizers  Embedded computers, such as controllers or ECUs in vehicles or airplanes

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Characteristics of small devices  Non-homgeneity, almost every device is different  Limited memory, only some hundred kB or some MB are available  Limited computing power because the device often contain only small processors  Limited electrical power because the device might be battery powered  Timing requirements can be more stringent:  No real time  Soft real time  Hard real time (out of scope!)  Network connection can either be permanent or intermittent

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Typical software architecture for small devices  An OS Abstraction Layer hides some of the details of the underlying (realtime) operating system.  A more sophisticated approach, especially for product families, is the use of a framework – provides reuse for repeating aspects.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Software architecture with components  Using a component container is basically a framework that uses separation of concerns and optionally generative techniques.  Reuse is simplified by only accessing components through their interfaces.  OS Abstraction Layer + Framework + Separation of Concerns + Reuse = Component Architecture

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Software architecture with components II  In a last step, the container and the OS Abstraction Layer, as well as the operating system can be integrated to improve performance and reduce footprint even more.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Main characteristics of a component model for small devices  Platform independent. The component architecture and ideally, the programming language should be available on several systems  Simple: An API should be as simple as possible, much simpler that EJB or CCM  Modular: not all containers need to provide all possible features. Necessary to run the system on limited devices.  Reflective: Components must know what their requirements are regarding the container and the containers must know what they provide.  Network-aware: Different network transport protocols must be pluggable without changing the component implementations (CORBA, Sockets, RMI,...)

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Container Features (Technical Concerns)  Scheduling  Interrupt Handling  Storage Service  Simple Event service  Generic driver interface  Pluggable transport  Security  Store and forward  Paging ...

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Related Technologies  Jini is a platform for spontaneous networking  Ninja is a project by the University of Berkeley that defines an architecture for intelligent network-centric services.  OSGi is a platform to manage services on small devices. Maybe it could be used as a basis.  WebServices defines an XML over HTTP based RPC mechanisms for use in the internet.  Apache SF project to build a framework for server apps  MQ everyplace is a version of the MQSeries messaging middleware that is available for small devices.  Java could be useful as a platform independent programming language.  TAO is a well-known and modular ORB that might be useful as a communication backend.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Related Technologies: OSGi  OSGi, the Open Services Gateway Initiative:  OSGi allows the deployment of services to a „host“ and  Tracks dependencies and versions  Manages installation and deinstallations  Manages dependencies to external resources The Open Services Gateway Initiative (OSGi), established in 1999, is an independent, non-profit corporation working to define and promote open specifications for the delivery of managed broadband services to networks in homes, cars and other environments. OSGi also works to proliferate these open specifications through the sponsorship of technology, market, and user education programs.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Related Technologies: OSGi  OSGi comes with a set of additional services,  Package Admin Service: Status information of packages and bundles, minimal update  Permission Admin Service: permission management for bundles before, during or after installation  LogService: handling of log messages  HttpService: simple framework for http servers  Device Access Spec: Generice devices driver model

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Related Technologies: OSGi  OSGi provides a set of useful services, but  It provides no separation of concerns  Does not address any of the issues we mentioned before (scheduling, interrupts, events,...)  So, it could serve as a basis for the Small Component Architecture, but it is not extensive enough.  OSGi is a standard, implementations are  Sun‘s Java Embedded Server (JES)  IBM‘s Service Management Framework (SMF)  IBM‘s Websphere Everyplace suite

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components Architectural/Implementation considerations  A real big, generic, monolithic application server is certainly useless in small devices.  Generative Programming techniques, especially code generation can help to reduce the footprint.  Aspect Orientation can provide a useful means to decompose the system.

Tiny Components – a collection of initial ideas copyright © 2003 Tiny Components It‘s time to start NOW!  The patterns community is exploring the embedded applications domain (see DRE Patterns Workshop at OOPSLA)  there are CORBA implementations for embedded devices (TAO, Orbacus/E)  systems are extending into the embedded domain (minimumCORBA, RealtimeJava)  and generative programming can help to get things small and efficient