Software Technical Documentation Guidelines

Software technical documentation is a comprehensive set of documents that provide detailed information about a software product or system.


Introduction

Software technical documentation is a comprehensive set of documents that provide detailed information about a software product or system. Different types of documents are created throughout the software development lifecycle. Documentation is important as it serves as a reference for developers, users and other stakeholders involved in the software development process. Documentation exists to explain product functionality, unify project-related information, and ensure common understanding between the different stakeholders in a software project.

Scope and objectives

These guidelines detail the technical documentation that should be produced during the software development lifecycle and are applicable to all government institutions in Rwanda.

The main objectives of having comprehensive technical software documentation are:

Process documentation

Process documentation describes the course of the software project, from creation to the end of software maintenance. It serves as an authoritative guide in the development of the system and ensures that internal knowledge is retained. The goal of process documentation is to structure and organize the software development process. At the same time, it helps to make the project more transparent and reduces the administrative effort. Types of process documentation are detailed below.

Process documentation

Project plan and schedules [Mandatory]

Project plans and schedules are usually created before the project starts and are continuously updated during the software development process. A project plan defines the project’s scope, schedule, deliverables, milestones and tasks and may take different forms depending on the implementation methodology used. 

Where  a waterfall methodology is used the plan may include a detailed work breakdown structure that breaks down the project scope into the project phases and deliverables that leads to the final product. In the agile approach which is the main methodology used for software projects in Government institutions, planning happens iteratively and documentation includes product roadmaps, project backlog, release plans and sprint plans.

Project plans and schedules can be documented in a suitable tool used by the institution.

Process documentation

Progress reports [Mandatory]

A project status or progress report is a document that describes the progress of a project within a specific period and compares it against the project plan. Project managers use status reports to keep stakeholders informed of progress and monitor costs, risks, time and work.

Frequency of the project progress reports can be varied based on the nature of the project and stakeholder requirements. For most projects weekly and monthly progress reports are submitted to different stakeholders. Progress reports can be documented and tracked using a suitable tool.

Process documentation

Change control documents [Mandatory]

A software change request document should be filled out when a change needs to be made to a software system. It should detail the person and department requesting the change, nature of the change requested, why it is needed and how it will affect other parts of the system. It should be approved by relevant stakeholders based on the agreed change control process for the project. A change request can be made during the implementation process before the software gets into production or can be requested during the life of the software as the needs of the institution evolve.

Process documentation

Software support issue logs and reports [Mandatory]

During the life of the software users may raise support requests based on issues encountered while using the software.  A support issue log is used to track such requests and includes details of the requester, date raised, details of the issue, analysis of the issue and action required, issue classification based on impact  and resolution status of the issue (open or closed). Support reports can then be generated showing a summary of issues raised during a period of time and their status which can be used to assess the effectiveness of the support process. Support Issue logs and reports can be documented through a suitable help desk tool

Product documentation

Product documentation describes the software product to be developed and is aimed at different audiences including business analysts, developers, testers, users, support and maintenance teams. The main product documentation that should be produced in a project are detailed below.

Product documentation

Software requirements document [Mandatory]

A software requirements document provides information about the required system functionality based on the needs of the institutions. Requirements are statements of what a system should do. They include functional and nonfunctional requirements and detail the product’s purpose, expected features and behavior. Functional requirements define the  features  the  product needs to have to support the needs of users. In the Agile methodology user stories  are used to describe requirements from the perspective of the end user. Non functional requirements include requirements for usability, performance and security. 

Product documentation

Design documentation [Mandatory]

Software architecture design documents, sometimes also called technical specifications, include the main architectural decisions made by the solution architect. Unlike software requirement documents that describe what needs to be built, the architecture design documentation is about how to build it. It describes in what way each product component will contribute to and meet the requirements, including solutions, strategies, and methods to achieve that. It includes:

In the agile methodology, the design, development and testing phases are iterative and therefore the design documentation can be updated incrementally.

Product documentation

API documentation [Mandatory]

API documentation contains instructions about how to effectively use and integrate with an API. It’s a concise reference manual containing all the information required to work with the API, with details about the functions, classes, return types, arguments and more, supported by tutorials and examples. A suitable tool can be used to automate the documentation of APIs

Product documentation

Test documentation [Mandatory]

Test documentation describes the process, objectives, and results of software testing. It can also include information on the environment, setup, and configuration required to perform testing. Test documentation is used to communicate the details of a test plan or strategy to stakeholders, developers, and testers. Test documentation includes:

Product documentation

Data migration documentation [Mandatory]

Data migration documentation is required when a software project involves moving data from a legacy software system to the new software system. It can also include moving data from manual files or spreadsheets to the new system. Types of data migration documentation includes:

Product documentation

User documentation [Mandatory]

This documentation is created for end-users and should explain in the simplest way possible how users can effectively use the software. User documentation provides an overview of the product’s functionality and gives basic guidelines on how to use it. The documentation can be provided in various forms including printed form, online or offline on a device.  Institutions can be creative on how to develop the user documentation based on the complexity and need. For example online end-user documentation can come in the form of knowledge bases and include FAQs, video tutorials, embedded assistance and support portals

Product documentation

Software configuration and maintenance documentation [Mandatory]

Software maintenance and configuration document  is a  document that provides key information required to effectively maintain the software. It includes the configurations required for the software including security settings, installation instructions, version control management and change management controls. It captures the following: