Package Diagram

Package diagrams show dependencies among packages. Dashed lines indicate dependency relationships; for details of these relationships, see the javadoc documentation for each package. Note that several small utility packages are marked global, meaning that most or all packages depend upon them.

Observe also that LargoRecipes has a layered architecture, with two main layers: UserInterface and RecipeEngine. The interface between these is the Facades subpackage; all proper communication between the layers occurs through this interface package. Such an architecture makes it easier to maintain LargoRecipes - for example, when I make performance enhancements to the Recipe package, I know that only the Facades subpackage will be directly affected.

Looking inside the two main packages, you'll notice a big contrast. The RecipeEngine package has few dependencies among its subpackages - in fact, they form a layered architecture similar to the global structure of the whole program. On the other hand, subpackages of the UserInterface package have many dependencies - so many that I couldn't conveniently draw all the lines, so I omitted the dependencies for the LargoSwing and NonPortable utility packages. Worse, one of the subpackages, CustomObjects, violates the strict layering and depends directly on RecipeEngine, without passing through Facades. Complex dependencies like this are signs of problems in the design, and indeed I plan to throughly revise the UserInterface package architecture in the next release, making it easier to understand and maintain.

Back to the main UML page


Last updated 25 October 2002
LargoRecipes source code, program, and web site copyright 2001-3 D. Squirrel

SourceForge.net Logo