- Packaging and package interdependencies
- Layering and module decomposition
- Evolving a large code base
Watch Code Organization Guidelines for Large Codebases (1hour 28 min)
Juergen's conclusions:
- The evolution of a large code base is a tricky challenge...in particular if backwards compatibility is an issue and architectural quality remains a goal!Much of the presentation was spent explaining how to minimize dependencies between modules (especially cyclic dependencies) and how Juergen manages Spring's codebase to tight standards of quality. Juergen also demonstrates how he uses JDepend and SonarJ on Spring's codebase, and near the end for fun does a package dependency comparison between Spring and Hibernate.
- Central issue: package interdependencies
- Avoid circular references between packages, at (nearly) any cost!
- Consider the use of tools for ongoing validation of your architecture
- e.g. JDepend, SonarJ
Update: The slides can be downloaded here.