1 / 44

Doreen Seider (DLR - German Aerospace Center) ApacheCon NA 2011 (Vancouver, 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). Outline. What software did we want to have? How did we develop it with OSGi?

philomenar
Download Presentation

Doreen Seider (DLR - German Aerospace Center) ApacheCon NA 2011 (Vancouver, 11/11/2011)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

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

  4. What kind of software did we want to have? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  5. 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

  6. In Comparison to That: Flexible Telemonitoring Software ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  7. Flexible Telemonitoring Software Technology Plug&Care Connector ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  8. 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

  9. How did we develop it with OSGi? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  10. Plug&Care Connector‘s Architecture ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  11. 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

  12. 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

  13. 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

  14. OSGiPrinciples: BundlesandServices ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  15. OSGiPrinciples: BundlesandServices • Service definitionandimplementationareseparatedtoeachother • Nodirectimplementationdependencies • Enablesloosecoupling • Importantforassemblingbundles (jars) toapplications ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  16. OSGiPrinciples: BundlesandServices ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. Used OSGi Implementations: mBS MobileIntegration in Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  24. Used OSGi Implementations: mBS MobileOSGi Management on Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  25. Used OSGi Implementations: mBS MobileOSGi Applications on Android ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  26. OSGi-Stack: mBS MobileDevelopment Environment in Eclipse ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  27. OSGi-Stack: mBS MobileDevelopment Environment in Eclipse ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. What did we learn? ApacheCon 2011 > Doreen Seider> Using OSGi to Build Better Software > 11.11.2011

  40. 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

  41. 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

  42. 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

  43. 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

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

More Related