BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Presentation: Code Organization Guidelines for Large Code Bases

Presentation: Code Organization Guidelines for Large Code Bases

Bookmarks
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.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Are the slides available?

    by Oliver Henlich,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

  • Slides please?

    by Angeline Tan,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

    Thanks!
    Angie

  • Can I download the slides?

    by Lam Nguyen,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

    Regards,
    Lam

  • Are the slides available for download?

    by Luiz Almeida,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

  • Re: Are the slides available?

    by Andrea Del Bene,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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 :-)"

  • Good summary of this presentation

    by Floyd Marinescu,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Mike blogged a great summary of this presentation here.

  • Slide available now

    by Andrea Del Bene,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

    Cheers

  • Here are the slides

    by Floyd Marinescu,

    Your message is awaiting moderation. Thank you for participating in the discussion.

  • Large Code Bases in the .NET sphere

    by Patrick Smacchia,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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...

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT