Table of Contents

Foreword by Robert C. Martin
Foreword by Peter Kriens
Acknowledgements
About the Author

Introduction

Part 1 – The Case for Modularity

Chapter 1 – Module Defined
Chapter 2 – Two Facets of Modularity
Chapter 3 – Architecture and Modularity
Chapter 4 – Taming the Beast
Chapter 5 – Realizing Reuse
Chapter 6 – Modularity and SOA
Chapter 7 – Reference Implementation

Part 2 – Modularity Patterns

Chapter 8 – Base Patterns
ManageRelationships – Design module relationships.
ModuleReuse – Emphasize reusability at the module level.
CohesiveModules – Module behavior should serve a singular purpose.

Chapter 9 – Dependency Patterns
AcyclicRelationships – Module relationships must be acyclic.
LevelizeModules – Module relationships should be levelized.
PhysicalLayers – Module relationships should not violate the conceptual layers.
ContainerIndependence – Modules should be independent of the runtime container.
IndependentDeployment – Modules should be independently deployable units.

Chapter 10 – Usability Patterns
PublishedInterface – Make a module’s published interface well known.
ExternalConfiguration – Modules should be externally configurable.
DefaultImplementation – Provide modules with a default implementation.
ModuleFacade – Create a facade serving as a coarse-grained entry point to to another fine-grained module’s underlying implementation.

Chapter 11 – Extensibility Patterns
AbstractModules – Depend upon the abstract elements of a module.
ImplementationFactory – Use factories to create a module’s implementation classes.
SeparateAbstractions – Place abstractions and the classes that implement them in separate modules.

Chapter 12 – Utility Patterns
CollocateExceptions – Exceptions should be close to the class or interface that throws them.
LevelizedBuild – Execute the build in accordance with module levelization.
TestModule – Each module should have a corresponding test module that validates it’s behavior and illustrates it’s usage.

Part 3 – OSGi

Chapter 13 – Introducing OSGi
Chapter 14 – The Loan Sample and OSGi
Chapter 15 – OSGi and Scala
Chapter 16 – OSGi and Groovy
Chapter 17 – Future of OSGi

Appendix

Appendix A – SOLID Principles of Class Design