How to manage software complexity with OSGi
Upcoming SlideShare
Loading in...5
×
 

How to manage software complexity with OSGi

on

  • 1,770 views

EclipseCon presentation from David Savage (Paremus) and Peter Kriens (OSGi)

EclipseCon presentation from David Savage (Paremus) and Peter Kriens (OSGi)

Statistics

Views

Total Views
1,770
Views on SlideShare
1,646
Embed Views
124

Actions

Likes
3
Downloads
115
Comments
0

2 Embeds 124

http://www.eclipsecon.org 119
http://eclipsecon.org 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

How to manage software complexity with OSGi How to manage software complexity with OSGi Presentation Transcript

  • How to Manage Software Complexity with OSGi Peter Kriens & David Savagedonderdag 24 maart 2011
  • What is Complexity?donderdag 24 maart 2011
  • Complex?donderdag 24 maart 2011
  • The puzzle looks very simple, contrary to many other wire puzzles, that look scary and complex right from the start. Nevertheless, its looks are deceiving, as it can prove to be frustratingly difficult to solve.donderdag 24 maart 2011
  • Complex?donderdag 24 maart 2011
  • Complex? Worlds Largest Jigsaw Puzzle 24.000 pieces (4.28m x 1.57m)donderdag 24 maart 2011
  • The Eye Of The Beholder • Complexity of a task is the energy you use to complete that task c = √E/mdonderdag 24 maart 2011
  • The Eye Of The Beholder • Complexity of a task is the energy you use to complete that task c = √E/mdonderdag 24 maart 2011
  • Energy? • Understanding the problem • Learning the solution • Accidental complexity • Size matters!donderdag 24 maart 2011
  • Energy? Subjective Complexity • Understanding the problem • Learning the solution • Accidental complexity • Size matters!donderdag 24 maart 2011
  • Energy? Subjective Complexity • Understanding the problem • Learning the solution • Accidental complexity • Size matters! Absolute Complexity size relateddonderdag 24 maart 2011
  • What’s Modularity Got to do With Size???donderdag 24 maart 2011
  • Modularity • Functions • local variables • Object Oriented • fields, methods, inheritance, polymorphism • instances • Bundles • implementations, services • componentsdonderdag 24 maart 2011
  • Modularity • Functions • local variables • Object Oriented • fields, methods, inheritance, polymorphism • instances • Bundles • implementations, services • componentsdonderdag 24 maart 2011
  • Modularity • Modularity is about creating a difference between an inside and an A B outside AB CD • Chunking - having an anchor for an aggregation C D • Visibility - is reduced, reducing the scope to attend for changesdonderdag 24 maart 2011
  • Modularity • Modularity is about creating a difference between an inside and an A B outside • Chunking - having an anchor for an aggregation C AB CD D • Visibility - is reduced, reducing the scope to attend for changesdonderdag 24 maart 2011
  • Modularity • modules have a private space and share a public space A B • modules limit their visibility and exposure C D • Reduces geometric to linear complexitydonderdag 24 maart 2011
  • Modularity • modules have a private space and share a public space A B • modules limit their Pub visibility and exposure C D • Reduces geometric to linear complexitydonderdag 24 maart 2011
  • Modularity • modules have a private space and share a public space A B • modules limit their Pub visibility and exposure C D • Reduces geometric to linear complexitydonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • Entropy E functionality Emodularizationdonderdag 24 maart 2011
  • #1 OSGi Complaint: Class Loaders!donderdag 24 maart 2011
  • Classloaders & Modularitydonderdag 24 maart 2011
  • Class Loading Revisited • Class.forName • Class path Scanning • Service Loader • Thread Context Class Loaders • Factory, and FactoryBuildersdonderdag 24 maart 2011
  • Class Loading Revisited • Class loaders are used to provide extensibility and decoupling A B • They were not Pub designed for this purpose, C D • And class loaders break module boundariesdonderdag 24 maart 2011
  • Class Loading Revisited A B Publicdonderdag 24 maart 2011
  • Class Loading Revisited A B C Publicdonderdag 24 maart 2011
  • Class Loading Revisited A B C I Publicdonderdag 24 maart 2011
  • Class Loading Revisited A B C X I Publicdonderdag 24 maart 2011
  • Class Loading Revisited A B C P I Publicdonderdag 24 maart 2011
  • Would be nice to mention how µServices reduce surface area of design µServices efficiency of packet based approaches? but cost of packet based system is congestion - leads into dependency hell?donderdag 24 maart 2011
  • #2 OSGi Complaint: Dependency Helldonderdag 24 maart 2011
  • Metadata Hell?donderdag 24 maart 2011
  • Transitive Hell?donderdag 24 maart 2011
  • Coupling • Modules require other modules • Dependencies are A B transitive Pub • A→C→D C Ddonderdag 24 maart 2011
  • Coupling • Modules require other modules • Dependencies are A B transitive Pub • A→C→D C Ddonderdag 24 maart 2011
  • Cohesion • Fan out is a problem • A does not transitively depend on D! A B • The dependency is caused by C D (unnecessarily) packing 1 and 2 in the same moduledonderdag 24 maart 2011
  • Cohesion • Fan out is a problem • A does not transitively depend on D! A A B • The dependency is caused by 1 2 D (unnecessarily) packing C 1 and 2 in the same moduledonderdag 24 maart 2011
  • Cohesion • Refactoring can increase the cohesion and reduce coupling A B • But now A depends on C1 and B depends on C2 C 1 C 2 D • Package dependencies C are more robust to changesdonderdag 24 maart 2011
  • Cohesion • Refactoring can increase the cohesion and reduce coupling A B • But now A depends on C1 and B depends on C2 C 1 C 2 D • Package dependencies are more robust to changesdonderdag 24 maart 2011
  • Metadata Heaven?donderdag 24 maart 2011
  • Requires Toolsdonderdag 24 maart 2011
  • Tools 1 Request deployment of a component, e.g. a Bundle, WAR, WAB or EAR 2 Refer to Application Policy Resolver App Policy 3 Resolve Dependencies 4 Provision according to component and Policy dependencies Repository Nimbledonderdag 24 maart 2011
  • Tools 1 Request deployment of a component, e.g. a Bundle, WAR, WAB or EAR 2 Refer to Application Policy Resolver App Policy 3 Resolve Dependencies 4 Provision according to component and Policy dependencies Repository Nimbledonderdag 24 maart 2011
  • OSGi OSGi OSGi Build Tools Runtime Tools Cloud Tools ...donderdag 24 maart 2011
  • OSGi OSGi OSGi Build Tools Runtime Tools Cloud Tools ...donderdag 24 maart 2011
  • How to Manage Complexity? • Prepare to spend energy! • Architecture = µservice model • Use tools to manage Metadata and Dependencies • Small increments • One test is worth a thousand opinions.donderdag 24 maart 2011