Architect’s Checklist: A Guide to FURPS+

This page details the FURPS classification scheme. It can be used variously as a feature solicitation checklist, a requirements categorization scheme, or a peer (design / code) review plan.

  • Functionality
    • The value added purpose of the product.  Also…
    • Connectivity – protocols (e.g. Bluetooth), or re-sync of offline clients
    • Interoperability – inter-app platform and language independence
    • Extensibility, Expandability – plugins, late binding
    • Composability – service or message oriented considerations, governance
    • Manageability – administration of fielded product
    • Licensing
  • Usability
    • Ergonomics – human factors engineering
    • Look and Feel – along with branding instancing
    • Accessibility – special needs accommodation
    • Localization - adding language resources
    • Documentation
  • Reliability
    • Accuracy – the correctness of output
    • Availability – mean time between failures
    • Recoverability – from partial system failures
    • Verifiability – (contractual) runtime reporting on system health
    • Survivability – continuous operations through disasters (earthquake, war, etc.)
  • Performance
    • Efficiency – of space (bandwidth, RAM, etc)
    • Responsiveness – time constraints
    • Scalability – well handling under increased load
    • Speed - Throughput. Latency.
  • Supportability
    • Maintainability (i.e. “build-time” issues)
      • Testability – at unit, integration, and system levels
      • Buildability – fast build times, versioning robustness
      • Portability – minimal vendor or platform dependency
      • Reusability – of components
      • Brandability - OEM and partner support
      • Internationalization – prep for localization
    • Serviceability (i.e. “run-time” issues)
      • Continuity – administrative downtime constraints
      • Configurability/Modifiability – of fielded product
      • Installability, Updateability – ensuring application integrity
      • Deployability – mode of distributing updates
      • Restorability - from archives
      • Logging – of event or debug data
  • Security: Confidentiality Preservation, Access Control, Non-repudiation (Integrity Verification, Authenticity Verification – PKI), Identity Verification (logon paradigm), Availability of Service, Auditing Evidence.

I’ve cultivated the details of the above list over the years, which I’ve had online since 2002, with the intent to be as exhaustive and balanced as possible. I’ve even been flattered to see how much it has “influenced” a similar detailed FURPS+ list offered by IBM.

Some of the items that I had previously attempted to classify as non-functional, such as interoperability, I’ve finally acknowledged as functional requirements.  Sometimes a non-functional requirement is so abstract, or high-level, that it really becomes a functional requirement unto itself.

If this list helps your work as a analyst, system engineer, software architect or whomever…it will have done its job.

Share

Leave a Reply

To comment, click below to log in.