Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (vuodenvaihde) : Documentation
Documentation
In addition to the program, you will write four documents: design specification and problem declaration, implementation, user manual and testing. The significance of the documents is smaller than in the other project courses, however your documents must still be well written and contain everything necessary to understand the project. Your code will also need to be clear, with appropriate commenting. Use of JavaDoc or similar code commenting is mandatory, all classes and methods must be clearly and concisely commented.
On commenting of code: Your code should be written clearly and understandably. Code commenting should cover all necessary points, but be concise. In method comments, include meaning of parameters and return values. In an ideal case, comments inside methods should not be necessary, as methods should be selfexplanatory, compact and simple. In the case where a method cannot be refactored, commenting inside a method might be necessary.
JavaDoc commenting will be used for all projects done in Java. For other programming languages, discuss this with the teacher. NetBeans produces templates for JavaDoc domments. You can easily add UML-charts to your JavaDoc by using a tool called YWorks, it will create the charts from your NetBeans project.
Required documents:
Specification and problem definition
- What algorihms and data structures will you be implementing / designing in your project?
- What problem are you solving and why did you select the data structures and algorithms in question?
- What input will the program get, how will these be used?
- Goal for time and space complexity (including Big-Oh analysis)
- Sources
Implementation
- General structure of program
- Achieved time and space complexity (including Big-Oh analysis of pseudo code)
- Performance and Big-Oh analysis compasion, especially for comparison based projects.
- Possible problems and improvement suggestions
- Sources
User Manual
- How is program to be run, how does one use the functionalities of the program?
- What kind of input does the program accept - how is input given?
- Where is .jar located, where are files for testing program located?
Testausdokumentti
- What has been tested, how was this testing done?
- What kind of input has been tested? What sizes of input have been tested and what was the result?
- How can the teacher repeat the tests? (here, JUnit testing will prove handy)
- Presentation of empirical testing results in a graphical form (graph, picture, etc).
Testing in in the ideal case a runnable program. This means that the test is easily repeated, which will aid in implementation of the program at an early stage. JUnit testing (or other automated testing for languages other that Java) is highly recommended,