Software diagramming techniques and tools -- what do you use?

Question for you guys:

When you document your software design, do you create diagrams?
What kind of diagrams do you create?
What tools do you use to help you create them?  Anything automated?

I'm looking to learn more about what's out there for this.  My perception is that there are NOT very good tools for this, but maybe there's a killer app for this I'm not aware of.

(Sorry in advance, but please don't reply with google searches, I've done those too.  I'm trying to learn what people really use, and whether they find them effective.)

Thanks for your thoughts.
Who is Participating?
jax79sgConnect With a Mentor Commented:

I'm not very sure what kind of diagramming you are referring to, as there are several phases in software development that may require different diagramming aids.
I would stand to agree with you that there's no 'one size fits all' solution.  I ended up sourcing for free or open source solutions for different parts of software development.

Requirements Gathering
In this phase, you get to collect information on the requirements before you even start designing your software. Capturing of such information are usually on paper and there are several techniques, but i find that a Use Case Diagram is almost always a good representation in the last stages.

I'm a bit into agile now so i tend to use UI prototypes right into the design phases for validation. One tool i loved to use is Pencil. It allows me to draw some prelim models of what is expected from the users, in the UI framework which i intend to use later.

Depending on your software design, you may also see a need to create Class Diagrams or Sequence Diagrams. I also do traditional RDBMS database development for my software, so i see myself creating Entity Relationship Diagrams as well. For all these, i use the Visual Paradigm for UML  Community Edition. It runs a bit slow on my computer, but its able to provide me with a good planning of designs.

These are really disparate tools, i would say the holy grail for tools of this category is to automatically generate the codes for the final system, simply based on the designs we placed in.
phoffricConnect With a Mentor Commented:
I used IBM Rational Rhapsody for C++ to generate UML diagrams. This included Sequence Diagrams, Activity Diagrams, State Diagrams, Class Diagrams, Object Model Diagrams. I think it included Use Case Diagrams, but I didn't use them. My Use Cases were based on descriptions of the other diagrams mentioned.

With a subset of these diagrams, I presented our software design to the customer. The sequence diagrams in the form of Use Case Scenarios was the major thrust of the customer's understanding of how our design was matching the software requirements.

You can download a free trial of IBM Rational Rhapsody for C++
Here are some specific diagrams for you to peruse:
The Firewall Audit Checklist

Preparing for a firewall audit today is almost impossible.
AlgoSec, together with some of the largest global organizations and auditors, has created a checklist to follow when preparing for your firewall audit. Simplify risk mitigation while staying compliant all of the time!

Paul SauvéConnect With a Mentor RetiredCommented:
diagramming tool for data base structure (ex. entity-relationship diagrams)
diagramming tool for application structure (Structured Analysis and Design Technique)
diagramming tool for programs/modules of program (flow charts)
RonMexicoAuthor Commented:
I'm surprised nobody mentioned doxygen.  Isn't this the most popular diagramming tool?

Or .NET class diagrams.  Does nobody use those?
RonMexicoAuthor Commented:
Thanks all!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.