Use GraphViz (and a few other free tools) to create a high-level interactive map of software projects.
Context: A high level map of a large software project is needed. Any number of facets including executables, plugins, file formats, databases, dependencies, and clusters of packages may be displayed.
Problem: Using a traditional diagram editor to create such a map manually is time-consuming and tedious. Also, changes may require extensive re-layout of the map. Although GraphViz can be easily adapted to a script, adding Wiki, HTML, or DoxyGen greatly amplifies the system.
Solution: Apply the following recipe:
Steps:
- Create a GraphViz dot file with the required linking information, maybe with a script.
- Run GraphViz once to generate an image of the graph.
- Run GraphViz again to generate an html image-map of the graph.
- Create an index.html (or wiki page) with an IMG tag of the graph, followed by the image-map's html.
- Direct the image-map urls to a Wiki page with each node's name - generate the Wiki pages automatically if needed.
- Optionally, link directly to the class hierarchy image generated by DoxyGen.
- Have the Wiki page link to any additional documentation, including DoxyGen docs, images, etc.
Result:
- The page will display a high-level graph of "everything". The graph can be descended to project/module/etc-specific information.
- Potentially, the entire map can be visual and hot-linked to other maps, including the overview map.
Additional benefit:
- The warm feeling of peering down on complexity from your lofty perch.
- Impresses visitors and marketing types by being the neato overview that hollywood movies have - and it works.
- Acts as a knowledgebase and organizer for the system.
Comments? Anyone else done this? -- LayneThomas
Sure. This a great application of GraphViz and related tools. In the past I have generated method calling data from Ruby code, then plotted it using GraphViz. You might be interested in MiniRubyWiki, which lets you imbed GraphViz code on wiki pages. --
CategoryDevelopmentDiagrams