For some of us, UML was invented only yesterday.
I started with flowcharts. Later I augmented them with HIPO diagrams. Originally, I collected a set of plastic drawing stencils, then as computer graphics became standard used GUI tools (including brute-force painting programs). Had a flowcharting program that drew using ASCII Art on a minicomputer. I put together a program of my own that optimized layout of hierarchy diagrams for HIPO. Along came Visio, and it, too was grist for the mill.
Not everything was drawing, though. I got into using outliners for design in the late 1980s, when such tools were really popular. Later, I graduated to mind-map tools, which are still a great favorite of mine - Freemind is cool, because while it's a GUI app, you can type outlines and stuff in and hardly ever actually need to touch a mouse (and, incidentally, it's a
Java app!). I also outline in OpenOffice Writer, which has the advantage that I can easily migrate documents between it and FreeMind (subject to content restrictions) and output PDFs and ePub books for distribution as needed.
Along the way, pseudo-code has been a mainstay, although as OOP became my basis for design, flowcharting pretty much became unnecessary. I did "literate programming" even before Knuth coined the term, since I often write comments before code. As time went on, I got tools for that, including Commodore's AutoDocs, which are a lot like Oxygen and JavaDocs. And I wrote an AWK script that would parse tagged comments and build Windows Help files from them (back when I was doing device driver design for Windows).
Most recently, I've taken to using Wikis and Markdown documents.
UML became very popular at the local "Dilbert" corporations back around Y2K. Meaning the places where IT policy is set by Dogbert (external consultants) and Management pretty much exists to hand them large quantities of cash. Rational
Rose was entirely too expensive for me to justify privately buying back then, so I didn't get into it. Next large company I ended up at was an IBM-free shop, but I got infected by Oracle-style architectural design, which was based on a core set of documents: Executive Summary, Functional Specification, Implementation Specification, and User's Guide (varying slightly, depending on requirements).
These days, you can do UML for free thanks to ArgoUML (which is a Java app), and I keep that in my stable along with jGantt (I was commissioned to create an EBCDIC Art Gantt program as one of my first mainframe jobs!) I think UML lost a lot of its luster locally. Indications are that a major (2-year) program might have been based on Rational and they spent 18 months drawing stick-figure (actor) diagrams, then panicked when they realized only 6 months remained and just started coding randomly. So most of the UML I do is stuff like swim-lane diagrams, since they're good for designing protocols for workflows, such as web services.
Most often, though I end up doing something like this:
Stage 1: the proverbial back-of-the-envelope sketch, drawn by hand on paper. When doing this on a corporate project, this stage often ends up with an Executive Summary
doc, since Management has to approve the project.
Stage 2: brainstorming via Freemind. This is where I capture features as fast they get suggested, as well as build inventory of components, design menu and dialog hierarchies, and so forth.
Stage 3: detailed docs. Either via MS-Word (OpenOffice) style docs or my Trac wiki or both. At this point I may also layout a timeline (Trac/jGantt) and begin the prototype spec manuals.
Stage 4: implemention. Code projects are set up (or stolen), details are thrashed out, Wiki and/or "Word" documents get fleshed out and updated. And we're off to the races.
Incidentally, I've recently added a Kanban-style tool to my stable, but I haven't worked on a collaborative project since I did, so I'm not sure how well it will serve. Prior to this, I've used private message boards. My biggest project has several forums, since the offshore developers don't need to be seeing internal discussions and another forum is for ongoing technical support issues. I tried installing a forum tool into Trac as a plugin, but the results on that were disappointing.