InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Presentation: Code Organization Guidelines for Large Code Bases

Posted by Floyd Marinescu on Jun 21, 2007

Sections
Process & Practices,
Development,
Operations & Infrastructure
Topics
Java ,
Debugging ,
Delivering Quality ,
Build systems
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
Re: Are the slides available? by Andrea Del Bene Posted
Slides please? by Angeline Tan Posted
Can I download the slides? by Lam Nguyen Posted
Are the slides available for download? by Luiz Almeida Posted
Good summary of this presentation by Floyd Marinescu Posted
Slide available now by Andrea Del Bene Posted
Here are the slides by Floyd Marinescu Posted
Large Code Bases in the .NET sphere by Patrick Smacchia Posted
  1. Back to top

    Are the slides available?

    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?

    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?

    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?

    by Luiz Almeida

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

  5. Back to top

    Re: Are the slides available?

    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

    by Floyd Marinescu

    Mike blogged a great summary of this presentation here.

  7. Back to top

    Slide available now

    by Andrea Del Bene

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

    Cheers

  8. Back to top

    Here are the slides

    by Floyd Marinescu

  9. Back to top

    Large Code Bases in the .NET sphere

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

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.