Last modified February 25, 2013
University of Helsinki
Department of Computer Science

582356 Network Programming Project

Design Document

  1. Introduction and Detailed Description of the Task
    Take the original task description in the list or your own task description and complete it with all necessary clarifications and details so that it accurately defines the task at hand. About the length of the task description: half a page is likely to be too short and longer than 2 pages is likely to be too already too long.

  2. Software Structure (Architecture)
    Description of all components (processes) of the software, the main tasks for each component, basic design principles, and major data structures maintained by each component.

  3. Software Operation Logic and Protocol Specification
    Each project requires communication between software components that should be specified accurately. Protocol description should be divided into two parts:

    1. Message format. Logical format in the first place, but byte or bit (depending whether ascii or binary encoding is used) level details are quite likely needed as the excact message encoding needs to be designed anyway.

    2. Protocol operations. When and why each of the messages is sent, what is the meaning of the message, what actions it triggers, how the message is responded, etc

    Protocol description should reveal the operational logic of the software, including how various error conditions are acted on and what are the alternative actions, if any, depending on the protocol state.

  4. Files
    Give the content and structure for each file or file type that the program uses. How records/fields are separated, syntax how comments, if any, can be included, etc

    1. Log files
    2. Configuration files
    3. Data files
    4. Any other files
    With regard to testing, it is useful to think what and when the programs should write into the log files.

  5. Signal Handling
    List all signals handled by the programs. What actions each signal invokes.

  6. User Interface
    You are encouraged to implement just a basic command line user interface. No fancy user interface is needed nor does it give extra points. Describe the user interface in detail, including the full syntax and semantics for all interactive commands, if any.

User Guide / Man page

A User Guide and/or Unix man page must be included in the final project report that is delivered with the program source code. Mandatory sections are