Top Banner
Slide 1 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011 Using OSGi to Build Better Software Lessons from a Telemedicine Software for Smartphones and Desktop Systems Doreen Seider (DLR - German Aerospace Center) ApacheCon NA 2011 (Vancouver, 11/11/2011)
44

Using OSGi to Build Better Software

Dec 01, 2014

Download

Technology

yocaba

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Using OSGi to Build Better Software

Slide 1 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Using OSGi to Build Better Software Lessons from a Telemedicine Software for Smartphones and Desktop Systems Doreen Seider (DLR - German Aerospace Center) ApacheCon NA 2011 (Vancouver, 11/11/2011)

Page 2: Using OSGi to Build Better Software

Slide 2 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Outline

What software did we want to have? How did we develop it with OSGi? What did we learn?

Page 3: Using OSGi to Build Better Software

Slide 3 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Page 4: Using OSGi to Build Better Software

What kind of software did we want to have?

ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Slide 4

Page 5: Using OSGi to Build Better Software

Slide 5 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Telemonitoring Software

Supports remote monitoring of patients (e.g. in rural areas) Captures vital sign of patients from medical devices Sends measurements to doctors sitting in a medical service center Executable on mobile devices and desktop systems Supports any kind of medical device and medical service center

Page 6: Using OSGi to Build Better Software

Slide 8 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

In Comparison to That: Flexible Telemonitoring Software

Page 7: Using OSGi to Build Better Software

Slide 9 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Flexible Telemonitoring Software Technology

Plug&Care Connector

Page 8: Using OSGi to Build Better Software

Slide 10 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Plug&Care Connector Requirements

1. Both on smartphones (like Android or Windows Mobile) and on desktop system executable

2. Support of any device and service center – even later on – without modification of the Plug&Care Connector

Page 9: Using OSGi to Build Better Software

How did we develop it with OSGi?

ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Slide 11

Page 10: Using OSGi to Build Better Software

Slide 12 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Plug&Care Connector‘s Architecture

Page 11: Using OSGi to Build Better Software

Slide 13 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

OSGi is specification of a modular service platform written in Java „modular“

It is a module layer above the Java package layer Classes are assembled to packages packages are assembled to bundles (modules) bundles are assembled to applications

Page 12: Using OSGi to Build Better Software

Slide 14 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

By default bundles are totally encapsulated Bundles can make use of each other by explicit exports and imports of packages

Page 13: Using OSGi to Build Better Software

Slide 15 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

OSGi is specification of a modular service platform written in Java „service“

In a perfect world bundles make use of each other via services Eliminates direct dependencies to each others implementation

Page 14: Using OSGi to Build Better Software

Slide 16 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

Page 15: Using OSGi to Build Better Software

Slide 17 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

Service definition and implementation are separated to each other No direct implementation dependencies Enables loose coupling Important for assembling bundles (jars) to applications

Page 16: Using OSGi to Build Better Software

Slide 18 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Bundles and Services

Page 17: Using OSGi to Build Better Software

Slide 19 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Declarative Services (DS)

OSGi Runtime calls the bundle and not other way around

Page 18: Using OSGi to Build Better Software

Slide 20 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Declarative Services (DS)

Bundles provide a set of so called component descriptions A component is a Java class Each describes which services a component provides and consumes OSGi runtime injects all required services at start up

Page 19: Using OSGi to Build Better Software

Slide 21 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi Principles: Declarative Services (DS)

Benefits of Declarative Services Less complexity in own code Better testing (no mock up of OSGi runtime needed)

Page 20: Using OSGi to Build Better Software

Slide 22 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Fulfilling Requirements with the help of OSGi

1. Both on smartphones (like Android or Windows Mobile) and on desktop system executable

Platform independency by realizating it as OSGi application OSGi serves as an abstraction layer of underlying diversity Using different implementations of OSGi for different platforms Assembling bundles to the Plug&Care Connector application according to its deployment platform

Page 21: Using OSGi to Build Better Software

Slide 23 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Used OSGi Implementations: Equinox

For desktop Eclipse Software Foundation OSGi implementation under Eclipse Decision was made due to experiences from other software we develop

Page 22: Using OSGi to Build Better Software

Slide 24 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Used OSGi Implementations: mBS Mobile

For Smartphones ProSyst company (http://prosyst.com) Android, Windows Mobile, Nokia S60 http://dz.prosyst.com/mbsmobile/ Decision was made due to supported platforms at that time and due to development status

Page 23: Using OSGi to Build Better Software

Slide 25 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Used OSGi Implementations: mBS Mobile Integration in Android

Page 24: Using OSGi to Build Better Software

Slide 26 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Used OSGi Implementations: mBS Mobile OSGi Management on Android

Page 25: Using OSGi to Build Better Software

Slide 27 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Used OSGi Implementations: mBS Mobile OSGi Applications on Android

Page 26: Using OSGi to Build Better Software

Slide 28 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi-Stack: mBS Mobile Development Environment in Eclipse

Page 27: Using OSGi to Build Better Software

Slide 29 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

OSGi-Stack: mBS Mobile Development Environment in Eclipse

Page 28: Using OSGi to Build Better Software

Slide 30 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Abstraction with the use of Console

OSGi comes with a console for management purposes It is useful for testing i.e. interacting with the application if no GUI is available yet Own commands can be provided Different OSGi implementations might have different console APIs Abstraction of console APIs is needed to hide them for the underlying application layers writing to the console

Page 29: Using OSGi to Build Better Software

Slide 31 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Abstraction with the use of Console

Layered architecture of affected bundles

Page 30: Using OSGi to Build Better Software

Slide 32 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Abstraction with the use of Device Communication

Measurements are captured via Bluetooth There are different bluetooth implementations on different devices Later on not only Bluetooth, but USB should be supported as well Abstraction of communication layer and Bluetooth implementations is needed to ensure driver implemenentation must not be changed

Page 31: Using OSGi to Build Better Software

Slide 33 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Abstraction with the use of Device Communication

Layered architecture of affected bundles

Page 32: Using OSGi to Build Better Software

Slide 34 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Abstraction with the use of Console and Device Communication

Deployment

Page 33: Using OSGi to Build Better Software

Slide 35 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Fulfilling Requirements with the help of OSGi

1. Both on smartphones (like Android or Windows Mobile) and on desktop system executable

Platform independency by realizating it as OSGi application OSGi serves as an abstraction layer of underlying diversity Using different implementations for different platforms

2. Support of any device and service center – even later on – without

modification of the Plug&Care Connector Establish plugin concept Get plugins with help of modularity of OSGi Handle plugins (registration) by the use of dependency injection provided by OSGi (Declarative Services)

Page 34: Using OSGi to Build Better Software

Slide 37 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Plugin and Registry Concept using the Example of Driver

How did we realize it?

Page 35: Using OSGi to Build Better Software

Slide 38 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Plugin and Registry Concept using the Example of Driver

Page 36: Using OSGi to Build Better Software

Slide 39 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Plugin and Registry Concept using the Example of Driver

What does a driver developer need to do? Implement the driver interfaces provided by Plug&Care Connector Provide a component description like that:

<component name=„Driver A“> <implementation class="de.pncc.plugins.drivers.DriverA"/> <service> <provide interface="de.pncc.drivers.Driver"/> </service> </component>

Page 37: Using OSGi to Build Better Software

Slide 40 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Plugin and Registry Concept using the Example of Driver

What does the Plug&Care Connecor do? Provides component description like that:

<component name=„Driver Registry„ <reference name="de.pncc.driver„ interface="de.pncc.drivers.Driver„ bind="addDriver„ unbind="removeDriver </component>

Implements bind and unbind method to e.g., store the driver in a list

Page 38: Using OSGi to Build Better Software

Slide 41 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Designing Plug&Care Connector Plugin and Registry Concept using the Example of Driver

What does OSGi do? Everything else

like listen to new driver bundles, retrieving there provided driver services, inject them to the right place, handles uninstalled driver bundles, …

Page 39: Using OSGi to Build Better Software

What did we learn?

ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Slide 44

Page 40: Using OSGi to Build Better Software

Slide 45 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

What did We Learn?

Living out OSGi principles is a good base for building better software (in terms of maintance and deployment).

Page 41: Using OSGi to Build Better Software

Slide 46 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Living out OSGi Principles Services Use services

Seperate service interface and service implementation Allows abstraction and loose coupling Makes application

More robust against changes Deployable in different environments just by assempling different kind of jar files

Page 42: Using OSGi to Build Better Software

Slide 47 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Living out OSGi Principles Declarative Services Prerequisite is usage of services

Make use of dependency injection Let other maintain the code for dependency handling Get your code free from OSGi API Makes application

Easier to test by injecting stub or mock objects More robust because fewer lines of code (every reduced line of code, reduces the chance for a bug) Easier to understand and use by third party developers knowing nothing about OSGi

Page 43: Using OSGi to Build Better Software

Slide 48 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

Living out OSGi Principles Encapsulation Make only those code public which is really intended to be public

Hide as much as possible from the outer world In perfect word only the (service) interfaces are public Makes application

More robust against changes because third party code can only be depend on a little part of your applications‘s implementation Architecture smarter, because you need to think about it in more detail

Page 44: Using OSGi to Build Better Software

Slide 49 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011