Developers often wonder what modeling tools to use. Although there are as many answers to this question as people asking it, Agile Modeling (AM) (see also my previous tip on Agile Modeling) advocates using the simplest tools possible. Why simple tools? Simple tools are easy to learn, easy to use, and very often easy to share with others. Yes, complex tools have their place, assuming they provide the best value for your investment in them, but never underestimate the effectiveness of simple tools either.
The following simple modeling tools are probably available to you right now:
-
Index cards
The eXtreme Programming (XP) community swears by the use of standard index cards for a wide variety of modeling techniques, and in particular Class Responsibility Collaborator (CRC) modeling. -
Post-it Notes
Post-its are also an option. For example, you can develop a low-fidelity user interface prototype using Post-its on large sheets of paper. This is part of a technique called essential user interface modeling, described in Software For Use by Larry Constantine and Lucy Lockwood. It is also described in my own book, The Object Primer 2/e. See Resources. -
Paper and string
Pieces of paper, or index cards tacked onto a whiteboard and connected by strings, can be used for a wide variety of models. For example, the individual sheets of paper can represent database tables and the lines can represent relationships between tables on a physical data model; or the sheets can represent screens and the strings navigation flows between screens on a user interface flow diagram; or the sheets can represent use cases and actors and the strings represent associations between them on a UML use case diagram. -
Napkins
Many an initial system architecture was developed using nothing more than a paper napkin. -
Whiteboards
Regardless of what CASE tool vendors tell you, whiteboards are probably the most common modeling tool installed within organizations worldwide.
Why use simple tools for modeling?
I always advise that you should ask yourself why you are modeling. My
philosophy is that you should develop something with an exact purpose
in mind -- otherwise you shouldn't begin development. If you are modeling
to understand something, then the value isn't in the model that you create
but in the modeling itself. Therefore, you don't need to invest
significant effort using a CASE tool to make your model look pretty, or to
add comprehensive documentation to it. Instead, you're better off using a
simple tool -- such as index cards or a whiteboard -- to enable you to get
your modeling done quickly so you can get back to developing software.
In my next tip in this series, I'll describe how simple tools can be used to model the user interface for your system.
-
Agile Modeling (AM) Home Page.
-
Agile Software Development Manifesto.
-
The Object Primer 2nd Edition
, by Ambler, S.W. New York: Cambridge University Press, (2001).
-
Extreme Programming Explained: Embrace Change
, by Beck, K. Reading, MA: Addison Wesley Longman, Inc., (2000).
-
Software For Use: A
Practical Guide to the Models and Methods of Usage-Centered Design
, by Constantine, L.L., and Lockwood, L. A. D. New York: ACM Press, (1999).
-
Ellen Gottesdiener's Home Page has good information on modeling.
Scott W. Ambler is a Practice Leader for Agile Development within the IBM Methods group. He develops process materials, speaks at conferences, and works with IBM clients worldwide to help improve their software processes. Scott is author of several books, listed on his Web site at www.ambysoft.com. Scott is also a recognized Ratonal Thought Leader, whose homepage may be viewed here.




