440 likes | 466 Views
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). Outline. What software did we want to have? How did we develop it with OSGi?
E N D
Using OSGi to Build Better SoftwareLessons from a Telemedicine Software for Smartphones and Desktop Systems Doreen Seider (DLR - German Aerospace Center) ApacheCon NA 2011 (Vancouver, 11/11/2011) 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? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
What kind of software did we want to have? 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
In Comparison to That: Flexible Telemonitoring Software ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Flexible Telemonitoring Software Technology Plug&Care Connector ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Plug&Care Connector Requirements • Both on smartphones (like Android or Windows Mobile) and on desktop system executable • Support of any device and service center – even later on – without modification of the Plug&Care Connector ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
How did we develop it with OSGi? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Plug&Care Connector‘s Architecture ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices • 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices • By default bundles are totally encapsulated • Bundles can make use of each other by explicit exports and imports of packages ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices • 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices • Service definitionandimplementationareseparatedtoeachother • Nodirectimplementationdependencies • Enablesloosecoupling • Importantforassemblingbundles (jars) toapplications ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGiPrinciples: BundlesandServices 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 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 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) ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Fulfilling Requirements with the help of OSGi • 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 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Used OSGi Implementations: mBS Mobile • ForSmartphones • ProSystcompany (http://prosyst.com) • Android, Windows Mobile, Nokia S60 • http://dz.prosyst.com/mbsmobile/ • Decision was made due tosupportedplatformsatthat time and due todevelopmentstatus ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Used OSGi Implementations: mBS MobileIntegration in Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Used OSGi Implementations: mBS MobileOSGi Management on Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Used OSGi Implementations: mBS MobileOSGi Applications on Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGi-Stack: mBS MobileDevelopment Environment in Eclipse ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
OSGi-Stack: mBS MobileDevelopment Environment in Eclipse ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorAbstraction 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorAbstraction with the use of Console • Layered architecture of affected bundles ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorAbstraction 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorAbstraction with the use of Device Communication • Layered architecture of affected bundles ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorAbstraction with the use of Console and Device Communication • Deployment ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Fulfilling Requirements with the help of OSGi • Both on smartphones (likeAndroidor Windows Mobile) and on desktopsystemexecutable • PlatformindependencybyrealizatingitasOSGiapplication • OSGiservesas an abstractionlayerofunderlyingdiversity • Using different implementations for different platforms • Support ofanydeviceandservicecenter – evenlater on – withoutmodificationofthePlug&Care Connector • Establishpluginconcept • GetpluginswithhelpofmodularityofOSGi • Handle plugins (registration) bytheuseofdependencyinjectionprovidedbyOSGi (Declarative Services) ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorPlugin and Registry Concept using the Example of Driver • How did we realize it? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorPlugin and Registry Concept using the Example of Driver ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorPlugin and Registry Concept using the Example of Driver • Whatdoes a driverdeveloperneedto do? • ImplementthedriverinterfacesprovidedbyPlug&Care Connector • Provide a componentdescriptionlikethat: <componentname=„Driver A“> <implementationclass="de.pncc.plugins.drivers.DriverA"/> <service> <provideinterface="de.pncc.drivers.Driver"/> </service> </component> ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorPlugin 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Designing Plug&Care ConnectorPlugin 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, … ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
What did we learn? 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). ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Living out OSGi PrinciplesServices • 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Living out OSGi PrinciplesDeclarative 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
Living out OSGi PrinciplesEncapsulation • 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 ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011
ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011