I have never really been fond of graphical tools for analysis and design. We would write the code and then create the flowcharts and the data flow diagrams if they couldn't be avoided.
As a documentation aid, I found trying the understand an application using design diagrams or dataflow diagrams to be hard even for moderately complex applications. I may even go to the extent of saying that I find it hard to understand class diagrams for anything larger than a design pattern. There are too many interconnections between the objects. I lose track and cannot focus on the desired subset. The connections from the subset of interest to the rest of the system are a serious distraction.
I was exploring Freemind with the intention of understanding what mind maps meant. Wikipedia entry on Mind_map mentions that it mind maps have a long history, “Some of the earliest examples of mind maps were developed by Porphyry of Tyros, a noted thinker of the 3rd century, as he graphically visualized the concept categories of Aristotle.”
The ideas of mind mapping were fascinating; but my mind prefers text. While a picture may be worth a thousand words, it takes considerably fewer bytes to store a thousand words on the computer! The fact that I found mind maps useful even for me came as a surprise.
A basic mind map is hierarchical representation of ideas. It is a tree. Each idea has a parent and multiple children. Interconnections are, thus, simple. One can focus on a part of the diagram with ease. It maps to the outline format of a text document.
I was required to create a job profile of the people reporting to me. The task was simple for programmers, team leads and project managers. I hit a wall when it came to system administrators! Writing the bullet points of the activities they were handling or were supposed to handle kept getting longer and incoherent. Entering and organising these responsibilities in a mind map was very useful. It helped me organise and prioritise their roles. I was surprised how a simple visual representation of the same information made it easier for me to grasp the key features. I could then write a short, coherent job profile for them.
Now, any time I have to analyse a document for requirement, I use Freemind to create a mind map. I keep adding bullet points as nodes and keep moving them around. I freely use notes for each node to expand on the idea while keeping the mind map concise. Grouping clusters of nodes/ideas using clouds helps focus better.
Finally, as a mind map is usually not an accepted format, I export it to an odf document and polish the document, essentially, properly formatting it and ensuring that the text is grammatically correct. Even though only I see the mind map, my belief is that I am able to complete my task much faster thanks to Freemind. The quality of the document is better and more concise than I would have produced otherwise.
Another unusual use case was when I had to make a 20 minute presentation on something as large as J2EE. Freemind was invaluable in organising the possibilities, narrowing down the options and creating a presentation which would be useful for the target audience and stick to the desired time frame.
I am married but if I weren't, I would use Freemind to plan my wedding. Consequences of a bad start to a marriage are very long term - just like a for a software project!
As a developer, I would like to use a memory map as it is critical to ensure that the specifications and their scope are well understood.
As the owner of a project, I would love to get a memory map of from the developers so that I can quickly verify that their understanding of the project conforms to mine. The hundreds of pages of documentation are useful for lawyers. So, develop a memory map for each project and share it unless, of course, the company processes prevent the sharing!