ABP Requirements template

From "A B C"
Jump to navigation Jump to search

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, edit 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.


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:

(Outcome)

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.

Reporting and Documentation

List standards for ongoing documentation, final report and/or publication

  • How are the documentation assets (schemas, plans etc.) held and made available?
  • What level of code commenting will be applied? Will an automated documentation system be used such as doxygen resp. Roxygen?
  • What is the intended results output? Think of publishing development process / system / application results.
  • Are the Minimum Standards of Reporting satisfied? Have author roles been defined?

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.

  • ...


Correctness

  • The system should give correct results.
    • All functions need to be tested.
    • Positive controls have to be designed.
    • Negative controls have to be designed.
    • Statistical significance of results needs to be assessed.
  • ...


 

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