Argo/UML Code Organization

  Dependency Graph
   



 


 
  Metrics
 

There are three major libraries that make up the bulk of the Argo/UML source code. Each is made up of several Java packages. Argo/UML also contains several packages itself.

The numbers next to each package indicate the number of classes in that package. Each package is described below.

  • GEF (170 classes)
    • uci.gef (105) -- reusable graph editing framework: shapes, selections, grids, editors, layers, commands
    • uci.gef.demo (19) -- demonstrations how to use GEF
    • uci.gef.event (2) -- events generated from GEF editors
    • uci.graph (15) -- generic interface between GEF and graph representations, similiar to Swing's TreeModel
    • uci.util (12) -- general purpose utilities
    • uci.ui (13) -- property sheet and other small user interface utilities
    • uci.beans.editors (4) -- custom property editors used in property sheet

  • Argo (38 classes)
    • uci.argo.kernel (34) -- reusable framework for critics, "to do" list, design history
    • uci.argo.checklists (4) -- framework for design checklists

  • UML meta-model (120 classes)
    • uci.uml.Foundation.Core (26) -- from UML Semantic Specification
    • uci.uml.Foundation.Data_Types (22) -- from UML Semantic Specification
    • uci.uml.Foundation.Extension_Mechanisms (2) -- from UML Semantic Specification
    • uci.uml.Behavioral_Elements.Common_Behavior (16) -- from UML Semantic Specification
    • uci.uml.Behavioral_Elements.State_Machines (20) -- from UML Semantic Specification
    • uci.uml.Behavioral_Elements.Use_Cases (2) -- from UML Semantic Specification
    • uci.uml.Behavioral_Elements.Collaborations (6) -- from UML Semantic Specification
    • uci.uml.Model_Management (5) -- from UML Semantic Specification
    • uci.uml.test.omg (15) -- examples from UML Notation Guide
    • uci.uml.generate (3) -- placeholder for future code generation features
    • uci.uml.util (3) -- general utilities related to UML meta-model

  • Argo/UML (191 classes)
    • uci.uml (1) -- Main
    • uci.uml.ui (111) -- Argo/UML windows, dialogs, panels, navigational perspectives, property panels
    • uci.uml.visual (25) -- UML diagram definitions, UML node and arc definitions
    • uci.uml.critics (44) -- design critics
    • uci.uml.critics.java (1) -- design critics
    • uci.uml.critics.patterns (3) -- design critics
    • uci.uml.checklist (6) -- design checklists
    • uci.Images -- gif images for splash screen and toolbar icons

       

  Package Descriptions
 

Under the uci.uml directory, there are a series of packages that deal specifically with all the aspects pertaining to UML diagrams. Just as everthing dealing with the user interface is located within the uci.uml.ui package, so everything dealing with UML and the meta-model are located within the uci.uml package. The meta-model consists of all the everything that lies within a UML diagram, and the graphical view may contain only a few of the things that are contained in the meta-model. Whatever is added to the graphical editor is also added to the meta-model, but if something is deleted from the graphical editor, it is not necessarily deleted from the meta-model.

uci.uml.Behavioral_Elements

This package takes care of such things as the types of associations, i.e. aggregation or composite, and the multiplicity of an association.

uci.uml.checklist

Most of the classes in this package are subclasses of UMLChecklist.java (click to see diagram). Checklists are currently widely used in design review meetings, in part, because they remind designers to cover all design details and avoid common design errors. Argo provides checklists that serve the same purpose, but have several advantages over passive printed lists:

  • Argo's checklists are made specific to the selected design element. Each type of design element (e.g., Class, Attribute, Operation, Association) has its own checklist.
  • Irrelevant checklist items are automatically removed from the list.
  • The text of the checklist items are made specific to the design element being reviewed. For example, Argo uses element names instead of the pronouns that would be used in a printed list.
  • (future) Checklist items can provide the designer with wizards that help complete a specified design change. For example, the checklist item "Should the attribute Age be moved to one of the super classes of Person (e.g., Animal)" could launch a wizard to help move the attribute up the class hierarchy.

Checklists are somewhat similar to critics (in fact, they share some of the same implementation), however they differ in the level of specificity so much that we feel that they should be presented separately to designers. Critics look for very specific problems and provide specific suggestions when those problems are detected. The designer still makes the final decision about any design changes, but the critic can automate much of the analysis and work. In contrast, checklist items are much more general and vauge, they serve to remind the designer, but it is the designer who must do most of the analysis and work. Checklists are easier to author (see below), and useful checklist items can be upgraded to critics if appropriate.

uci.uml.critics

The majority of the classes in this package are subclasses of CrUML.java (click to see diagram). Design critics are simple agents that continuously execute in a background thread of control. They analyze the design as the designer is working and suggest possible improvements. These suggestions range from indications of syntax errors, to reminders to return to parts of the design that need finishing, to style guidelines, to the advice of expert designers. Many critics offer to automatically improve the design. Critics are controlled so that their suggestions are relavent and timely to the design task at hand, based on information in Argo's user model. Critics never interrupt the designer, instead they post thier suggestions to the designer's "to do" list.

uci.uml.Foundation

This package contains three subpackages listed below. The two classes that are subclassed the most are ModelElementImpl.java and GeneralizableElementImpl.java (see the diagram). All of the classes in these packages are part of what makes up the meta-model.

uci.uml.Foundation.Core

This package contains some of the different types of elements that go into a UML diagram such as an element that is generalizable, associations and association ends.

uci.uml.Foundation.Data_Types

This package deals with aspects of associations such as the multiplicity and aggregation kinds.

uci.uml.Foundation.Extension_Mechanisms

This package deals with stereotypes and tagged values.

uci.uml.generate

This package deals specifically with automatic code generation from the user's current design.

uci.uml.Model_Management

This package deals with managing the link between the graphical model and the meta-model.

uci.uml.ui

Everything dealing with the user interface is located within this package and the following subpackages. This package takes care of all the actions that can be made to a UML diagram such as the menu actions and the toolbar actions. The class that is subclassed the most is the UMLAction.java, TabSpawnable.java and Token.java.

uci.uml.ui.nav

Most of these classes implements the TreeModelPrereqs interface.

uci.uml.ui.props

Most of these classes inherit from PropPanel.java. These classes take care of the property panels for each of the different diagram types. For example, an interface, instance or a generalization.

uci.uml.ui.table

ColumnDescriptor.java, TableModelComposite.java and TablePanel.java are some of the classes that are subclassed the most in this package. This package enables a UML diagram to be viewed as a table.

uci.uml.ui.todo

This class enables a to do list to be kept and managed. One difficulty designers face is keeping track of all the myrid details of thier task. It is all to easy to skip a step in the design process, leave part of the design unspecified, of make a mistake that requires revision. Argo provides the designer with a "to do" list user interface that presents action items in an organized form. These items can be suggestions from critics, reminders to finish steps in the process model, or personal notes entered by the designer. The choice control at the top of the "to do" list pane allow the designer to organize items in different ways: by priority, by decision supported, by offending design element, etc. Items are shown under all applicable headings. The "to do" list may also be viewed as a flat list.


uci.uml.util

Used to generate children of classes.

uci.uml.visual

Contains most of the classes dealing the the way elements of the UML diagram appear within the graphical editor. The classes that are subclassed the most are FigNodeModelElement, FigEdgeModelElement, and UMLDiagram.
 


Back to Argo/UML Release Page

Back to Argo/UML Home