CIS 443/543 - System Documentation
Anthony Hornof - October 7, 2015

These are examples of some of the kinds of system documentation that should be written along with any substantial programing project.

Programmer's Documentation

These are two examples of programmer's documentation, which are materials that provide guidance to how the software works from the perspective of a person who could write or modify the source code for the project. Programmer's documentation should at the very least include a high-level description of how a system works at the source-code level, and any major or important data structures (such as classes and class hierarchies).

1. World Tax Planner Programmer's Documentation. I wrote this document over twenty years ago when I was working in industry and was given a project that had no documentation whatsoever. It took me about a month of studying the source code to figure out and write this most basic overview of how the program worked. The documentation is relatively simple and brief, but after I wrote it, it meant a month of time saved for all subsequent programmers. Which also meant that we could then transfer development of the software to another set of programmers without embarrassment, which was extremely helpful in terms of the company's business plan. (There is an interesting story here, if you ask me in class. Just ask me about the World Tax Planner project.) If you skim through the document, you can imagine what a difference it would make having versus not having this document. Note that it is actually very short, but that it provides a useful, concise description of each of the major components, and how they fit together. Remember: I was given raw source code with no such explanations whatsoever. Imagine the difference this document would make. Also, see World Tax Planner Programmer's Documentation

2. EyeDraw Programmer's Documentation (PDF) - My lab is a bit unusual in terms of the development of research software in that I require my students to write programmer's documentation for their projects. This specific document then made it possible for other students - and an eye tracking manufacturer that we collaborate with - to pick up this code and extend it for other purposes that then further extended the impact and scientific contribution. Without the documentation, after the students finished and left, all of these ideas would have been lost forever. The source code is also quite well-commented and downloadable at the EyeDraw Website.
It is available at:
https://www.cs.uoregon.edu/research/cm-hci/EyeDraw/
or as a PDF directly at
https://www.cs.uoregon.edu/Classes/10W/cis422/Handouts/EyeDrawDocumentation.pdf