Get one of those huge whiteboards and some markers. Draw out the program schemes on it, which parts interact with which parts. In Uni we got all this UML and ERD stuff and it seemed rather silly but I found myself doing those exact same things when working on something. The reason why I use a whiteboard (and not some fancy, expensive program) is simply because I'm sure I'm (changing my mind|coming to my senses) at some point. If you're all done, you can still use one of those applications to draw it.