6. Limited Influence
• 3rd party control suite
• Enterprise message queue (software or message content)
• Internally installed 3rd party application/services
7. Perceived Influence
• Internally created service endpoint/api that doesn’t belong to
your team
• Internally created UI control suite
• Internally installed 3rd party application/services
• Multi-application database
• Computer file system
8. External
Little influence over what changes are made
Some influence over when changes are made
Internal
> influence if it belongs to your project
< influence if it is cross project
cross project == 3rd party
13. Limiting Surface Area
• Rooted in Object Oriented Programming
• Based on known design patterns
• Can be implemented by any team and in any language
22. Problem solved…
Technical details of communication are pretty well
encapsulated
Interface changes are isolated and controllable
Technical construct changes are isolated and
controllable
Source interface is limited to only the pieces that are
needed
24. It (adapter pattern) is often used to
make existing classes work with others
without modifying their source code
http://en.wikipedia.org/wiki/Adapter_pattern
30. Scope of Change
• If its on the source you adapt it
• True adapter will include all endpoints offered by source
31. Problem solved…
Technical details of communication are pretty well
encapsulated
Interface changes are isolated and controllable
Technical construct changes are isolated and
controllable
Source interface is limited to only the pieces that are
needed
33. A façade is an object that provides a
simplified interface to a larger body of
code…
http://en.wikipedia.org/wiki/Facade_pattern
34. No client should be forced to depend on
methods that it does not use
http://en.wikipedia.org/wiki/Interface_segregation_principle
35. Current Adapter
• Exposes interface that we want
• Exposes all functionality of the source
36. Worst Case Scenario
• The public surface area is *HUGE*
• Each exposed part (not method/property) is a
potential point of change
• Assume 1 parameter and 1 return type for 123
methods == 369 possibly points of change
37. ISP
• Simply don’t implement the unneeded public constructs on
your adapter
• Turns the adapter into a façade
38. Problem solved…
Technical details of communication are pretty well
encapsulated
Interface changes are isolated and controllable
Technical construct changes are isolated and
controllable
Source interface is limited to only the pieces that are
needed
39. The Journey
• Identify the risky dependency
• Use a proxy to abstract connectivity details
• Use an adapter to abstract the data constructs
• Implement ISP via a façade to limit the surface area
40. Your Code
Outside Your
Control
Tilemahos Efthimladis
https://www.flickr.com/photos/telemax/6032760593
41. Thank you
Donald Belcham
@dbelcham
donald.Belcham@igloocoder.com