ABP Requirements template
Requirements template
This is a template to collect a software design project's requirements. Note: not all requirements in the template will apply to all projects, and none of the sections are likely to be complete. Add and delete as required!
Requirements Analysis
The requirements analysis provides an external view of the system, its capabilities and functions and the non-functional constraints under which it will be designed, implemented, validated and maintained, and under which it it will operate.
Contents
Project
Problem
Define the problem that is to be solved.
Project name
Give the project a (working) name.
Project scope
Define the general activities that will lead to main outcome of the project. In this project, X will be done to address the problems Y.
The key outcome is:
List the key personnel in the project. Include developers, managers, support, ...
Stakeholders
List groups who have an interest in the project's outcome.
- internal users
- public users
- educators/communicators
- ...
Non-functional Requirements
List requirements that don't directly contribute to the outcomes.
Education and communication
List how key personnel should profit from the project; also, how the project's results should be communicated.
- Educational objectives have to be defined, met and documented for the team members. This includes: exposure to concepts and practice, development of skills, active role in the relevant aspects of the development cycle.
- Students need attribution of their work.
- A publication on the development process, the resulting system and the application results should be written.
- Published best practice should be evaluated and adapted or inform the design of the project.
- ...
Development
List the requirements how the actual development should work.
- Architecture design documents must be comprehensive.
- Implementation documentation must be kept current.
- Coding should follow best practice, including proper code headers, comments, indentation and naming.
- Good principles of software development must be followed; this includes proper use of IDEs and versioning control of artefacts, as well as co-development of tests.
- The system should allow abstraction to employ its components for novel tasks.
- The system should be developed in Python to take advantage of existing libraries and support educational goals.
- ...
Usability
List requirements for use of the system, such as access to code, level of automation vs. manual interaction with the system, required training, etc.
- ...
Reliability
- The system should be robust. It should have mechanisms for testing its functions, error checking, validation of results, detection of resource problems and response.
- The system should degrade gracefully under heavy load.
- The system should implement good backup practices and provide for easy backup and restore of data, code and assets.
- ...
Security
If applicable, list requirements regarding unauthorized access to development and system resources, password best-practices etc.
- All developers have individual accounts on the code repository and employ good password practices.
Portability and deployment
Where should the system run? Unix? Mac? Windows systems? Where should it be deployed: clients or servers?
- ...
Performance
How fast should the system produce output? For interactive work? Or for infrequent updates?
- ...
Functional requirements
Resources
List which resources have to be developed.
- ...
Functions
List the functions of the system.
Interfaces
List the applicable categories of users. Then, for each category of user, list how the system should be accessed and what the activities of the user will be.
Developer interface
- ...
Internal user interface
- Commandline interface for routine tasks (which?)
- Programming interface for complex queries (which?)
- ...
Public user or collaborator interface
- Web browser based interface for queries?
- ...
System Requirements
List what requirements the systemn has for its operation.
Infrastructure and external resources
- Internet connection
- Database access
Software
List which software needs to be installed, accessible ...
System software
- Operating system:
- Apache Web server
- MySQL database
- Other ... ?
Application software
- Inkscape
- Other ... ?
Developer tools
- Python programming language (Version?)
- Git version control system
- Iep IDE
- Project Wiki ?
- Text based documentation format?
- Image based documentation format
Hardware
List the computers that are to be used, minimal system requirements...
- Development machines
- Production machine(s)
- Support