I am sure I can say that any programmer who has been involved in any sort of formal software engineering will agree with me when I say that the process of formalising a system in documentation is tedious and boring. In many cases it has been found that too many resources has been spent on documentation for the benefits it has brought about which is why agile development methodologies have become more and more popular.
However, it doesn’t matter what type of methodology you are using when developing a complex system, there is still some documentation that always seems to exist. The first is of course some sort of requirements specification. History has shown that incomplete requirements is one of the main reasons software projects fail. The next piece of documentation that seems to always exist in one form or another is some sort of behavioural overview of the system that depicts how users interact with the system. This is normally shows the goals that the system needs to accomplish. In agile these are normally user stories. Similar to user stories are use cases which are depicted using use case diagrams and explained using use case narratives. During this past year (with the final year project) I had become tired of use case diagrams, at one stage I was basically eating and breathing them.
I am currently developing a complex system. I am the only developer and I know what the system needs to do. I couldn’t believe my own surprise when I ended up drawing use case diagrams for the system on my whiteboard. They just seemed to capture the essence of what the system needs to do and how it interacts with the users. Normally I would start hacking away at a new software project of mine, but here with one that I hope to expand to sell one day I just felt more comfortable in formalising in what the system will do – it provides a measure of confidence. This sort of documentation has always accompanied a fear of “what if I forget something”, but now I see that this is forcing me to actually take some time to think and brainstorm of absolutely everything.
So, is all this planning and formalising a system a complete waste of time – probably not. There is an entire industry that will probably back me on that answer. I know how frustrating it can be sometimes, especially for those doing these sorts of projects at university for the first time – trust me when I say that it is all done for a reason.