Wednesday, 23 June 2010

Requirements reminder

In smaller agile teams, short projects often start without much consideration to requirements other than the functional requirements at hand or some design sketches. This is a dangerous situation but also a typical case when there are no solution architects involved. Once the team have chosen a technical path it might be very expensive to redo the system. The longer the system has been used by end users the harder it is to replace it.
In this blog post I list a bunch of possible requirements, of different type, just to remind myself not to forget to check if there are requirements related to these topics when working on smaller projects.
  • Access/Permissions (Who can add, edit, delete, view)
  • Accessibility, WAI
  • Accuracy
  • Adaptability
  • Audit and control
  • Availability (Service level agreement, downtime)
  • Backup
  • Branding
  • Browser support, clients
  • Capacity
  • Certification
  • Compatibility
  • Compliance
  • Completeness
  • Configuration management
  • Configure-ability (can it be reconfigured)
  • Correctness (no bugs)
  • Cultural and political
  • Currency (data is up to date)
  • Data structures
  • Dependency on other parties
  • Dependability
  • Deployment (deployment procedures, life cycle turn around and velocity)
  • Design (and layout)
  • Disaster recovery
  • Documentation
  • Editorial, publishing
  • Efficiency (resource consumption IT, energy, human, performance vs effort)
  • Emotional factors (fun, absorbing)
  • Environmental tolerance
  • Escrow
  • Error tolerance (wrong user input)
  • Ethical considerations
  • Extensibility (adding features, upgrades)
  • Failure management
  • Failure tolerance (defect in system execution)
  • Install-ability (easy to install?)
  • Internationalization (e.g., different countries, languages)
  • Interoperability (properly interfaced with and working together with something else)
  • Language (style of writing, target group)
  • Learnability (easy to learn)
  • Legal (licensing issues, patents-infringement-avoidability)
  • Logging
  • Logistics
  • Maintainability
  • Memorability (easy to remember how to do thing in the system)
  • Mobility (Can it be used on the move)
  • Modifiability
  • Network topology
  • Open source
  • Operational , manual procedures
  • Operability (possible to perform tasks in accordance with operations manual?)
  • Packaging
  • Performance / response time (performance engineering)
  • Personalization (personal user experience)
  • Performance (Jitter, Response time, Latency)
  • Personell (and resources)
  • Platform compatibility
  • Portability
  • Precision of data
  • Price
  • Privacy
  • Provisions
  • Protocols
  • Quality (faults delivered or fixed)
  • Reuse-ability
  • Recovery (e.g. mean time to recovery - MTTR)
  • Reliability (e.g. mean time between failures - MTBF)
  • Reporting
  • Resilience
  • Resource constraints (processor speed, memory, disk space, network bandwidth)
  • Response time
  • Robustness
  • Reliability (operates without failure under specified use)
  • Robustness (also functions under abnormal conditions)
  • Safety (preventing / dealing with accidental harm)
  • Scalability (horizontal, vertical)
  • Schedule-ability
  • Scope
  • Security (tolerance against malicious harm)
  • Source code
  • Stability
  • Subset-ability (easy to make different functionality subsets)
  • Support (end user support)
  • Survivability (essential services continue in spite of accidental or malicious harm)
  • Style
  • Templates
  • Testability
  • Throughput
  • Traceability
  • Training
  • Transportability (possible to move system)
  • Unambiguity
  • Usability (ease of use)
  • Usefulness (useful to use)
  • User experience (system perceived as fun, satisfying, enjoyable, entertaining, helpful, motivating, aesthetically pleasing, emotionally fulfilling, rewarding and supportive of creativity etc)
  • Verifiability
  • Variability (degree to which different variants exist)
  • Withdraw-ability (can a specific version be withdrawn and replaced with a previous, version)
  • Workflow
  • Workload (low perceived workload by user)

References