0
Upcoming SlideShare
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Standard text messaging rates apply

How to manage software complexity with OSGi

1,510

Published on

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

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

Published in: Technology
3 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

Views
Total Views
1,510
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
119
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript

• 1. How to Manage Software Complexity with OSGi Peter Kriens & David Savagedonderdag 24 maart 2011
• 2. What is Complexity?donderdag 24 maart 2011
• 3. Complex?donderdag 24 maart 2011
• 4. 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 difﬁcult to solve.donderdag 24 maart 2011
• 5. Complex?donderdag 24 maart 2011
• 6. Complex? Worlds Largest Jigsaw Puzzle 24.000 pieces (4.28m x 1.57m)donderdag 24 maart 2011
• 7. The Eye Of The Beholder • Complexity of a task is the energy you use to complete that task c = √E/mdonderdag 24 maart 2011
• 8. The Eye Of The Beholder • Complexity of a task is the energy you use to complete that task c = √E/mdonderdag 24 maart 2011
• 9. Energy? • Understanding the problem • Learning the solution • Accidental complexity • Size matters!donderdag 24 maart 2011
• 10. Energy? Subjective Complexity • Understanding the problem • Learning the solution • Accidental complexity • Size matters!donderdag 24 maart 2011
• 11. Energy? Subjective Complexity • Understanding the problem • Learning the solution • Accidental complexity • Size matters! Absolute Complexity size relateddonderdag 24 maart 2011
• 12. What’s Modularity Got to do With Size???donderdag 24 maart 2011
• 13. Modularity • Functions • local variables • Object Oriented • fields, methods, inheritance, polymorphism • instances • Bundles • implementations, services • componentsdonderdag 24 maart 2011
• 14. Modularity • Functions • local variables • Object Oriented • fields, methods, inheritance, polymorphism • instances • Bundles • implementations, services • componentsdonderdag 24 maart 2011
• 15. 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
• 16. 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
• 17. 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
• 18. 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
• 19. 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
• 20. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 21. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 22. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 23. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 24. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 25. Entropy E functionality Emodularizationdonderdag 24 maart 2011
• 26. #1 OSGi Complaint: Class Loaders!donderdag 24 maart 2011
• 27. Classloaders & Modularitydonderdag 24 maart 2011
• 29. 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
• 31. Class Loading Revisited A B C Publicdonderdag 24 maart 2011
• 32. Class Loading Revisited A B C I Publicdonderdag 24 maart 2011
• 33. Class Loading Revisited A B C X I Publicdonderdag 24 maart 2011
• 34. Class Loading Revisited A B C P I Publicdonderdag 24 maart 2011
• 35. 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
• 36. #2 OSGi Complaint: Dependency Helldonderdag 24 maart 2011
• 37. Metadata Hell?donderdag 24 maart 2011
• 38. Transitive Hell?donderdag 24 maart 2011
• 39. Coupling • Modules require other modules • Dependencies are A B transitive Pub • A→C→D C Ddonderdag 24 maart 2011
• 40. Coupling • Modules require other modules • Dependencies are A B transitive Pub • A→C→D C Ddonderdag 24 maart 2011
• 41. 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
• 42. 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
• 43. 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
• 44. 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
• 45. Metadata Heaven?donderdag 24 maart 2011
• 46. Requires Toolsdonderdag 24 maart 2011
• 47. 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
• 48. 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
• 49. OSGi OSGi OSGi Build Tools Runtime Tools Cloud Tools ...donderdag 24 maart 2011
• 50. OSGi OSGi OSGi Build Tools Runtime Tools Cloud Tools ...donderdag 24 maart 2011
• 51. 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