2. About your speaker...
IT Manager / Business Analyst / Software
Architect by Day
Speaker (JavaOne, SpringOne/2GX, Lambda
Lounge, NFJS, RWX, PAX)
Author (GroovyMag, NFJS the Magazine)
President of the Memphis/Mid-South Java User
Group
Agile Zone Leader @ DZone
OSGi Enthusiast
3. A Tale of Two Cities:
Tracer Bullet Development
OSGi
6. A rose by any other name...
Walking Skeleton (Alistair Cockburn)
http://alistair.cockburn.us/Walking+skeleton
Spanning Application/Matrix (Mary & Tom Poppendieck)
Lean Software Development: An Agile Toolkit
Nested Synchronization (Mary & Tom Poppendieck)
Implementing Lean Software Development
Hudson River Company Start (Johanna Rothman)
Manage It!
Thread (Matt Simons)
“Big and Agile?” Cutter IT Journal 15(1): January 2002.
Spike (Luke Hohmann)
Beyond Software Architecture: Creating and Sustaining Winning Solutions
8. Propose System Objects
Identify application layers/modules
e.g. Client, Server, Database
Must be able to stand alone
Keep as coarse grained as possible
Must be able to justify isolated developer/team
10. Propose Interfaces
Define contract between system objects
Collaborative effort
Agree on method names, signatures
Stub out implementations (canned data)
Define how layers will talk (e.g. direct API calls, RMI,
SOAP, OSGi, JMS)
System architecture “emerges”
14. Add Functions
Finally time to add real production code!
Developers/teams can work in isolation now
Work from high priority/high risk to low priority/low risk
Start to address performance problems
16. Refactor, Refine, Repeat
Interfaces will evolve
Add/change at any time, but...
No broken windows!!!
Within module, refactor mercilessly!
Between modules, must communicate!
18. TBD Benefits
Teams can work in parallel, independently
Can demonstrate “working” system earlier, providing feedback to you
sooner
New features can be demonstrated immediately
Loosely coupled, highly cohesive modules
Encapsulation of module details
Enables automated integration testing
Enables interteam communication
Enables staff reallocation
20. OSGi Architecture
Hardware
Operating System
Java Virtual Machine
Modules
Lifecycle
Service Registry
Services
Security
Application/Bundles
OSGiPlatformJavaPlatform
Inspired by Modular Java (Craig Walls), page 16
21. SOA in a JVM!
Service
Bundle
Consumer
Bundle
RegistersService
DiscoversService
Consumes Service
Inspired by Modular Java (Craig Walls), page 17
OSGi
Service
Registry
28. PaxRunner
OSGi framework launcher
Facilitates quick start OSGi exploration
Facilitates swapping OSGi platforms (works with all
major open source implementations)
Facilitates provisioning OSGi bundles from multiple
sources
Magic behind “pax-provision” and PaxExam
29. PaxExam
Testing toolkit for OSGi
Facilitates in-container integration testing of bundles
Flow:
Starts OSGi container of choice
Provisions and starts selected bundles
Injects OSGi BundleContext to your JUnit test
Executes a test method
Rinse and repeat until done!
33. As a customer I can browse for speakers and select
one so that I can reserve him/her.
As a customer I can reserve my chosen speakers at
any Fluffbox location at which he/she is available so
that I can pick him/her up.
As a kiosk, I can notify the reservation system when
speakers are picked up/returned so that customers will
have an up-to-date view of what speakers are
available.
Online Reservation System for Speaker Rental Kiosks
39. Connect Interfaces
Web UI
Business Services
Data Access
Outbound
Messaging
Database Kiosk
Spring DM/OSGi
OSGi
JDBC
Spring DM/OSGi
JMS JMS
Spring DM/OSGi
Inbound
Messaging
40. Add Functions
On to the code...
Code available at:
http://github.com/
mstine/fluffbox
41. Refactor, Refine, Repeat
Maybe change out plain JMS for Spring Integration
solution
Maybe track spatial data on locations to enable
mapping
Still need to add a payment system - another system
object?
Our TBD system puts us in great position to address
any of these and more!
42. Please fill out your evaluations!
Matt Stine
matt.stine@gmail.com
Twitter: mstine
http://www.mattstine.com