Login | Register
My pages Projects Community openCollabNet

Cookbook for Developers of ArgoUML

An introduction to Developing ArgoUML

Edited by

Linus Tolke

Markus Klink

Michiel van der Wulp

Copyright (c) 1996-2007 The Regents of the University of California. All Rights Reserved. Permission to use, copy, modify, and distribute this software and its documentation without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph appear in all copies. This software program and documentation are copyrighted by The Regents of the University of California. The software program and documentation are supplied "AS IS", without any accompanying services from The Regents. The Regents does not warrant that the operation of the program will be uninterrupted or error-free. The end-user understands that the program was developed for research purposes and is advised not to rely exclusively on the program for any reason. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.


The purpose of this Cookbook is to help in coordinating and documenting the development of ArgoUML.

This version of the cookbook is loosely connected to the version PRE-0.27.3 of ArgoUML.

Table of Contents

1. Change Log
1. Introduction
1.1. Thanks
1.2. About the project
1.3. How to contribute
1.4. About this Cookbook
1.4.1. In this Cookbook, you will find...
1.4.2. In this Cookbook, you will not find...
1.5. Mailing Lists
2. Building from source
2.1. Quick Start
2.2. Source layout
2.3. Preparations
2.3.1. What do I need to build ArgoUML?
2.3.2. Configuring Subversion
2.4. The ArgoUML development environment
2.4.1. Which tools are part of the ArgoUML development environment?
2.4.2. What libraries are needed and used by ArgoUML?
2.5. Downloading from the Subversion repository
2.6. Build Process
2.6.1. How Ant is run from the ArgoUML development environment
2.6.2. Developing in a subproject
2.6.3. Troubleshooting the development build
2.7. The JUnit test cases
2.7.1. About the Test case Class
2.7.2. Naming JUnit tests classes
2.7.3. About the Test case Methods
2.7.4. Improving a test case
2.8. Generating documentation
2.8.1. Building documentation
2.9. Setting up Eclipse 3
2.9.1. Eclipse installation instructions
2.9.2. Basic ideas of the set up
2.9.3. Checking out through Eclipse
2.9.4. Eclipse to help with the ArgoUML coding style
2.9.5. Eclipse to automatically find problems in the code
2.9.6. Settings for Checkclipse
2.9.7. Running JUnit test cases from within Eclipse
2.9.8. How to work with the modules
2.10. Settings for NetBeans
2.11. Settings for Emacs
2.12. Making a release
2.12.1. The release did not work
3. ArgoUML requirements
3.1. Requirements for Look and feel
3.1.1. When multiple visual components are showing the same model element they shall be updated in a consistent manner throughout the application.
3.1.2. All views of a model element shall be updated as soon as the model element is updated.
3.1.3. Editable views of the model should update the model on each keystroke and mouse click.
3.1.4. Any text fields that require validation should not be editable directly from a view.
3.1.5. With dialogs, the model is not updated until the dialog is accepted by the user with valid fields.
3.1.6. The user shall receive some visual feedback during the edit process of textual UML to indicate whether the text represents valid UML syntax.
3.1.7. There shall be no indication of an exception on the screen or in the log if it has occured merely because of a user mistyping or not being aware of UML syntax.
3.1.8. All text fields shall have context sensitive help.
3.2. Requirements for UML
3.2.1. ArgoUML shall be a correct implementation of the UML 1.4 model.
3.2.2. ArgoUML shall implement everything in the UML 1.4 model.
3.2.3. About enforcement of well-formedness rules from the UML standard.
3.3. Requirements on java and jvm
3.3.1. Choice of JRE: ArgoUML will support any JRE compatible with a Sun specification of any JRE from Sun that has not begun the Sun End of Life (EOL) process.
3.3.2. Download and start
3.3.3. Console output: Logging or tracing information shall not be written to the console or to any file unless explicitly turned on by the user.
3.4. Requirements set up for the benefit of the development of ArgoUML
3.4.1. Logging: The code shall contain entries logging important information for the purpose of helping Developers of ArgoUML in finding problems in ArgoUML itself.
4. ArgoUML Design, The Big Picture
4.1. Definition of subsystem
4.2. Relationship of the subsystems
4.3. External subsystems
4.4. Low-level subsystems
4.5. View and Control subsystems
4.6. Top Level subsystem
4.7. Loadable subsystems
5. Inside the subsystems
5.1. Model
5.1.1. Design of the subsystem
5.1.2. Factories
5.1.3. Helpers
5.1.4. The model event pump
5.1.5. NSUML specifics
5.1.6. The use of IDs in MDR
5.1.7. How to work against the model
5.1.8. How do I...?
5.2. Critics and other cognitive tools
5.2.1. Main classes
5.2.2. How do I ...?
5.2.3. org.argouml.cognitive.critics.* class diagram
5.3. Diagrams
5.3.1. Multi editor pane
5.3.2. How do I add a new element to a diagram?
5.3.3. How to add a new Fig
5.4. Property panels
5.4.1. Adding the property panel
5.5. Persistence
5.6. Notation
5.7. Profile
5.7.1. Initialization of the profile subsystem
5.7.2. Profile(s) management
5.7.3. Defining profiles
5.7.4. History of the Profile subsystem
5.8. Reverse Engineering Subsystem
5.8.1. Common import code
5.8.2. Diagram layout algorithms
5.9. Code Generation Subsystem
5.10. Java - Code Generation and Reverse Engineering
5.10.1. How do I ...?
5.10.2. Which sources are involved?
5.10.3. How is the grammar of the target language implemented?
5.10.4. Which model/diagram elements are generated?
5.11. Other source languages (C++, Python, etc)
5.12. The GUI
5.12.1. The TargetManager
5.13. Application
5.13.1. What is loaded/initialized?
5.13.2. Details pane
5.14. Help System
5.15. Internationalization
5.15.1. Organizing translators
5.15.2. Ambitions for localization
5.15.3. How do I ...?
5.16. Logging
5.16.1. What to Log in ArgoUML
5.16.2. How to Create Log Entries...
5.16.3. How to Enable Logging...
5.16.4. Reasoning around the performance issues
5.16.5. References
5.17. TaskManagement
5.18. Configuration
5.19. To Do items
5.20. Explorer
5.20.1. Requirements
5.20.2. Public APIs and SPIs
5.20.3. Details of the Explorer Implementation
5.20.4. How do I ...?
5.21. Module loader
5.21.1. What the ModuleLoader does
5.21.2. Design of the Module Loader
5.22. OCL
6. Extending ArgoUML
6.1. How do I ...?
6.2. Modules
6.2.1. Modules
6.2.2. Modules
6.2.3. Tip for creating new modules (from Florent de Lamotte)
6.3. How are modules organized in the Java code?
6.3.1. Requirements on modules
6.3.2. How do I ...?
7. Standards for coding in ArgoUML
7.1. When Writing Java Code
7.2. When Committing to the Repository
7.3. When Using Branches
7.4. When Working with the Build Process
7.5. When Considering Dependencies
8. Writing Documentation in the ArgoUML Project
8.1. Introduction
8.2. Style
8.3. Document Conventions
8.4. DocBook Conventions
8.5. For Eclipse Users
8.6. For Emacs Users
8.7. User Manual Plans
8.7.1. Target Audiences for the User Manual
8.7.2. Goals for the User Manual
8.7.3. Suggested Manual Structure
8.7.4. Actions, Priorities and Questions
9. Processes for the ArgoUML project
9.1. The big picture for Issues
9.2. Attributes of an issue
9.2.1. Priorities
9.2.2. Resolutions
9.3. Roles Of The Workers
9.3.1. The Reporter
9.3.2. The Resolver
9.4. How to resolve an Issue
9.5. How to Close an Issue
9.6. How to relate issues to problems in dependencies
9.7. How to Create a Stable Release
9.8. Moderation of a mailing list
A. Further Reading
A.1. Jason Robbins Dissertation
A.1.1. Abstract
A.1.2. Where to find it
A.2. Martin Skinners Dissertation
A.2.1. Abstract
A.2.2. Where to find it
B. Repository Contents
C. Organization of ArgoUML documentation