Technical Specifications and Requirements

Te Papa's Creative Technology team has certain non-functional requirements for products developed within the museum space, many of these are just good practice, however some are specific to our environment. This page describes those requirements in one place, referring to other resources for more information.

Requirements

  1. Code is available for review in the Te Papa Github account
  2. The product provides heartbeat signal for monitoring
  3. The product records analytics via Google Analytics
  4. The product has a configurable screensaver
  5. The product has configurable items in a config file
  6. The product passes our code review
  7. The product passes a stability and performance test
  8. The product has suitable documentation.

Code Review

During the code review undertaken by Te Papa, we'll be looking for items which present a risk when the product is on the floor. This isn't a qualitative code review, only a review to ensure there is no risk present in the codebase and our manageability standards are adhered to.

Requirements:

  •   no passwords, API keys, or other "secrets" stored in code or repositories
  •   IP addresses, URLs, email addresses, any other configurable items are stored in a configuration file
  •   visitor data is stored in a secure way or not stored at all
  •   general checks for code security and sanity 
  •   ideally, any infrastructure configuration committed as code within the repo (i.e. using an infrastucture-as-code tool such as Terraform)

Stability and performance requirements

Products should follow a basic set of requirements for stability and performance:

Requirements:

  • The product should run without crashing for 10 hours
  • The product runs on the specified hardware at an acceptable level of performance
  • Memory usage doesn't grow beyond a manageable level
  • The product respond gracefully to unexpected user input (monkey testing)
  • The product recovers gracefully from network outage or power outage (no internet when starting up, unexpected internet outage during operation)
  • The product doesn't lag or slowdown over time or with use

Manageability

Requirements:

  •  Successfully records interactions in Google Analytics
  •  can be deployed easily, ideally as a portable executable where applicable
  •  Ideally, where cloud infrastructure is required, the configuration is available as code (e.g. Terraform, CloudFormation or other scripts)
  •  Ideally, the product can be built from source by Te Papa staff

Documentation

Requirements:

A README.md (example templateor similar should be available in the code base, detailing:

  • Build process for building from source
  • Installation instructions (for technical staff)
  • Minimum system requirements or target hardware
  • Third party dependencies to run or build (e.g. Required Drivers, Unity, Google Analytics, Mandrill, AWS services, Web access, specific IPs or URLs of services)
  • Any operational procedures needed, e.g. log rotation, CMS access, moderation process, backup requirements