GS Developers Guidelines

Design icon.png This page contains the design document for an enhancement or feature. The design should be considered a work in progress and may not represent the final design. As this is a collaborative design, contributions and participation from other developers and users is encouraged. Use the discussion page for providing comments and suggestions.



Development Procedure[edit]

This procedure is to be used for developing the identified sections of the Geometry Service framework. It is very loosely based on the Unified Process using UML. Since both of these development tools are extensible, we are free to modify as we see fit. These, like all things pertaining to this project, are not set in stone. As we learn, we will adapt.

  1. Define Requirements.
  2. Identify Actors.
  3. Develop Use Cases.
  4. Repeat steps 1-3 until Actors and Use Cases are as simplified and comprehensive as possible.
  5. Group Use-Cases into Packages.
  6. Build applicable Class Diagrams.
  7. Build Sequence Diagrams.
  8. Refine Class Diagrams by adding methods.
  9. Implement code.
  • At any given step, if a change needs to be made to a previous step, then step down the process flow from the change back to where you were working. This will ensure that a change made in step 3 will be accurately reflected in all subsequent steps.
  • Communication is KEY. If anyone makes a change anywhere in the documentation, a simple email to the dev team or log entry will suffice.
  • Requirements, Actor Definitions, Use Case Text Descriptions, and Package Lists will be maintained here on the wiki.
  • Use Case Diagrams, Graphical Package Lists, Class Diagrams, and Sequence Diagrams will be based on our UML editing application files and therefore maintain them would be difficult via a wiki. These will be maintained in the BRL-CAD SVN store: /brlcad/src/geoservice/devdocs/


Note: The best freeware version of a UML documentation application (for Win32) that I have found thus far is StarUML . Umbrello is a good one for Linux/GNOME. If you know of one better, PLEASE mention it. The sooner we settle on the applications we use for development, the less re-work we will have to do. (I prefer ZERO rework, but that's a bit unreasonable.)