Creating a software is a craft.
As one said, “Classes are the blueprint of an Object” and “Diagram models are the blueprint of the actual software”. Ever since I put on that Software Engineer hat, I always tried to create a software as compliant as possible, this means, doing all the blueprints that needs to be done, from doing the proposal, HLD document, internal sub-component design up to the technical paper, release documents and user manuals.
I’ve always used Microsoft VISIO back then for developing the “blueprints” but now that I switch to a linux based system, I used AgroUML.
Its easy to use. Straight forward and light weight. It has all the standard UML diagrams like Activity, Use Case, Sequence, State, Collaboration, Deployment and Class. Theres no better feeling than designing a system using the standard tools available.
If you’re curious, you can download it here. Don’t worry, its open source, complete developed using Java.