I am trying to document a software project up to the current stage. The readership would involve myself (in a future time), other developers (currently and in the short-term future), as well as end users. Therefore, the documentation has descriptions of design requirements, architecture/design (data structures, architecture, user interface, procedural design), technical documentation, and end user instructions. The documentation is mainly produced in order to provide some historical record. Currently, it's a team of 2 people working on the project, although it could involve more people in the short-term future as more features from other people's projects are added to this project.
What I'm having trouble is with the architectural design documentation (http://en.wikipedia.org/wiki/Design_document). While I have tried using doxygen to create some type of data flow diagram, it hasn't been easy. Are there any tools that would make it any easier to generate data flow diagrams from C++ code, or would this be a case of drawing manually on Microsoft Visio? Thanks in advance.