Argo/UML prvoides the following features. Each feature is described breifly below.

| Runs on any platform with Java 1.1 | |||
|
Argo/UML is coded entirely in Java and uses the Java Foundation Classes. This allows Argo/UML to run on virtually any platform. Argo/UML has been tested in the following environments:
|
|||
| Standard UML Meta-Model | |||
| Argo/UML represents designs using a Java version of the UML 1.1 meta-model as described in the UML Semantics specification. We have made extensive efforts to keep this meta-model implementation true to the standard. For more information, see the uci.uml home page. | |||
| UML Design Editing | |||
|
Argo/UML uses GEF, the UCI Graph Editing Framework to edit UML diagrams. The following diagram types are supported:
|
|||
| Code Generation (partially implemented) | |||
| We are looking for someone to design, implement, contribute a powerful, flexible, and extensible code generation facility. | |||
| Design Critics | |||
| 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, bsed on information in Argo's user model. Critics never interrupt the designer, instead they post thier suggestions to the designer's "to do" list. | |||
| Corrective Automations (partially implemented) | |||
| Critics identify specific problems in the design and may offer specific solutions in the form of wizards or other corrective automations. These automations allow design improvements to be made faster and more reliably than they could be done by hand. Also, designers need not recall how to use the tool to achieve the suggested change. | |||
| "To Do" List | |||
| 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. | |||
| User Model (partially implemented) | |||
|
Argo's user model maintains information about the designer and uses that information to make the tool my useful. One way that it does this is by controlling critics so that only critics that are timely and relevant to the task at hand can make suggestions. In the future, the corrective automations and explanations offered by critics will also be tailored to the designer. Argo's user model consists of the following parts:
|
|||
| Checklists | |||
|
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:
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. |
|||
| Work Breakdown Structure (future) | |||
| This feature is not described yet. | |||
| Navigational Perspectives | |||
| Many design tools and IDEs (integrated development environments) use project files to contain all the elements of the system beind designe or built. Argo, like most tools, provide a tree widget to allow the designer to access the various parts of the project. Unlike other tools, Argo gives the designer a much richer set of alternative tree-structured views of the project, and provides a language for designers to customize those perspectives or add new ones. | |||
| Multiple, Overlapping Views | |||
| Complex designs are made up of hundreds of elements with complex relationships to
each other. Designers are better able to understand the design and make changes when they can see the elements
and relationships that affect a certain design issue. No single diagram can clarify all design issues. Instead
multiple diagrams and other presentations must be used. Argo allows multiple graphical representations of the same design element to be used in different diagrams. In this sense, the views are overlapping. |
|||
| Alternative Design Representations: Graphs, Text, or Table | |||
| Diagrams are the main way of presenting object-oriented designs. Argo can also provide tabular presentations of the design and textual presentations in the form of source code, and (future) english language explanations. Argo allows (future) editing in any of these presentations, and all of them are kept consistent. | |||
| Model-based Graph Layout (future) | |||
| In the future, we will investigate issues of graph layout. Much of the previous work on graph layout is motivated by very simple understandings of the cognitive needs of designers. For example, a graph is considered more readable if it has fewer edge crossings. These layout techniques typically do not take into account the conventions of the problem or solution domains or the task at hand. For example, if a designer is interested in memory allocation, he or she might benefit from seeing part of the class hierarchy laid out as a scatter plot with object size on one axis and expected number of instances on another axis. Or the size of the class icon could be used to indicate memory cost, while its color indicates expected lifetime. An infinite number of presentations are possible and the designer should be able to choose one that supports the task at hand, and then move on to another task and a new visualization. | |||
| Customizable User Model (partially implemented) | |||
| Designers can add new items to each part of Argo's user model. | |||
| Customizable Process Model (partially implemented) | |||
| Designers can add new tasks to Argo's process model. | |||
| Critic Editor (future) | |||
| Critics can be represented as a network of predicates and actions. An upcoming version of Argo will include a diagram editor for authoring critics. | |||
| Checklist Editor (future) | |||
| Checklists are made up of short pieces of text that serve to remind the designer to address specific issues or common problems. Additional program logic can be used to costumize the item to the design element at hand. An upcoming version of Argo will support authoring checklist items that contain only text. | |||
| Corrective Automation Editor (future) | |||
| Critics may offer corrective automations once a specific problem has been detected. In an upcoming version of Argp, designers will be able to author these corrective automations using the same graphical editor used to author critics. | |||
| Navigational Perspective Editor | |||
| The current version of Argo/UML provides over a dozen different navigational perspectives and a simple editor to customize these perspectives or author new ones. Each navigational perspective is made up of a set of rules. Each rule defines the possible children of a given design element. When rules are combined they yield the union of the children produced by each rule. About 20 rules are available for designers to use in navigational perspectives. A simple dialog box allows designers to specify the rules that make up each perspective. | |||