We're building tools to mine information from the web. We have several pieces, such as
The problem is troubleshooting issues & having a good "high-level picture" of what's happening at each stage.
What techniques have helped you understand and manage complex processes?
Just curious how you get a handle on a system with many interacting components. We'd like document/understand how the system works at a higher level than tracing through the source code.
I use AT&T's famous Graphviz, its simple and does the work nicely. Its the same library Doxygen uses too.
Also if you make a little effort you can get very nice looking graphs.
Forgot to mention, the way I use it is as follows (because Graphviz parses Graphviz scripts), I use an alternative system to log events in Graphviz format, so I then just parse the Logs file and get a nice graph.
The code says what happens at each stage. Using a DSL would be a boon, but possibly not if it comes at the cost of writing your own scripting-language and/or compiler.
Higher level documentation should not include details of what happens at each step; it should provide an overview of the steps and how they relate together.
Good tips:
I wouldn't recommend building command-line tools unless you actually have a use for them. No need in maintaining tools you don't use. (That's not the same as saying it can't be useful; but most of what you do sounds more like it belongs in a library rather than executing external processes).
I find a dependency structure matrix a helpful way to analyze the structure of an application. A tool like lattix could help.
Depending on your platform and toolchain there are many really useful static analysis packages that could help you to document the relationships between subsystems or components of your application. For the .NET platform, NDepend is a good example. There are many other for other platforms though.
Having a good design or model before building the system is the best way to have an understanding for the team of how the application should be structured but tools like those I mentioned can help enforce architectural rules and will often give you insights into the design that just trawling through the code cannot.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With