InfoQ

News

Presentation: Code Organization Guidelines for Large Code Bases

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

Community
Java
Topics
Delivering Quality ,
Build systems ,
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.

9 comments

Reply

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
    www.theserverside.net/tt/articles/showarticle.t...

Exclusive Content

Book Except and Interview : Aptana RadRails, An IDE for Rails Development

Aptana RadRails: An IDE for Rails Development by Javier Ramírez discusses the latest Aptana RadRails IDE, a development environment for creating Ruby on Rails applications.

Fast Bytecodes for Funny Languages

Cliff Click discusses how to optimize generated bytecode for running on the JVM. Click analyzes and reports on several JVM languages and shows several places where they could increase performance.

Scott Ambler On Agile’s Present and Future

Scott Ambler, Practice Lead for Agile Development at IBM, speaks on the current status of the Agile community and practices having a look at the perspective of the Agile’s future.

Manager's Introduction to Test-Driven Development

Dave Nicolette and Karl Scotland try to introduce non-technical managers to one of the most popular Agile development techniques: Test-Driven Development (TDD).

Structured Event Streaming with Smooks

Smooks is best known for its transformation capabilities, but in this article Tom Fennelly describes how you can also use it for structured event streaming.

How to Work With Business Leaders to Manage Architectural Change

Successful architectures evolve over time to meet changing business requirements. Luke Hohmann presents how to collaborate with key members of your business to manage architectural changes.

Colors and the UI

In this article, Dr. Tobias Komischke explains how colors used in a GUI can influence our interaction with a computer and offers advice on using the appropriate colors for the interface.

Building your next service with the Atom Publishing Protocol

In his presentation, recorded at QCon San Francisco, MuleSource architect Dan Diephouse explores ways to use the Atom Publishing Protocol (AtomPub) when building services in a RESTful way.