InfoQ

News

Presentation: Code Organization Guidelines for Large Code Bases

Posted by Floyd Marinescu on Jun 21, 2007 09:27 AM

Community
Java
Topics
Build systems ,
Delivering Quality ,
Debugging
Tags
Structure101 ,
Spring
Structuring a large code base maintained by multiple teams working in parallel can be a real challenge. If you are not disciplined about code structure overtime you will end up with a tangled, unmaintainable mess that cannot adapt to change and risks ossifying into legacy. In this session Juergen will pull from his experiences working on large projects (including his role as chief architect of the Spring Framework) to provide general guidelines on:
- 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!
 - 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
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.

Update: The slides can be downloaded here.
Are the slides available? by Oliver Henlich Posted Jun 25, 2007 3:51 PM
Re: Are the slides available? by Andrea Del Bene Posted Jun 27, 2007 4:39 AM
Slides please? by Angeline Tan Posted Jun 26, 2007 11:24 AM
Can I download the slides? by Lam Nguyen Posted Jun 27, 2007 1:05 AM
Are the slides available for download? by Luiz Almeida Posted Jun 27, 2007 4:07 AM
Good summary of this presentation by Floyd Marinescu Posted Jun 29, 2007 4:04 PM
Slide available now by Andrea Del Bene Posted Jul 2, 2007 3:07 AM
Here are the slides by Floyd Marinescu Posted Jul 2, 2007 11:21 AM
Large Code Bases in the .NET sphere by Patrick Smacchia Posted Aug 15, 2007 3:55 AM
  1. Back to top

    Are the slides available?

    Jun 25, 2007 3:51 PM by Oliver Henlich

    Hi. Had a quick surf and could not seem to find the slides to download. Anyone know if they are available anywhere? Cheers Oliver

  2. Back to top

    Slides please?

    Jun 26, 2007 11:24 AM by Angeline Tan

    I would like to add a request for the link to the slides? Thanks! Angie

  3. Back to top

    Can I download the slides?

    Jun 27, 2007 1:05 AM by Lam Nguyen

    I'd like to download the slides. Is it possible? Thanks. Regards, Lam

  4. Back to top

    Are the slides available for download?

    Jun 27, 2007 4:07 AM by Luiz Almeida

    I would like to get the slides. Is it possible?

  5. Back to top

    Re: Are the slides available?

    Jun 27, 2007 4:39 AM by Andrea Del Bene

    I think that Juergen should publish his slides on SpringOne site soon or later. I mean, SpringOne speakers, Interface21 guys in particular, use to do so. My two cents. Andrea "Italian Spring lover :-)"

  6. Back to top

    Good summary of this presentation

    Jun 29, 2007 4:04 PM by Floyd Marinescu

    Mike blogged a great summary of this presentation here.

  7. Back to top

    Slide available now

    Jul 2, 2007 3:07 AM by Andrea Del Bene

    Slide are now available from SpringOne site wiki. Login is required. Cheers

  8. Back to top

    Here are the slides

    Jul 2, 2007 11:21 AM by Floyd Marinescu

  9. Back to top

    Large Code Bases in the .NET sphere

    Aug 15, 2007 3:55 AM by Patrick Smacchia

    In the .NET sphere we are also facing the same kind of problem. I wrote and article about that, that describes similar answers: Control component dependencies to gain clear architecture http://www.theserverside.net/tt/articles/showarticle.tss?id=ControllingDependencies

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.