Design architecture aims

Aspects of software that is engineered to have the following, although some will conflict, and thus a trade off is required. These trade offs and choices of what is a priority change and occur during the lifecycle of a system/application:

  • accessibility

  • affordability

  • compatibility

  • customizability

  • dependability

  • effectiveness

  • fault tolerance

  • integrity

  • mobility

  • portability

  • provability

  • reproducibility

  • safety

  • securability

  • sustainability

  • accountability

  • agility

  • composability

  • debugability

  • deployability

  • efficiency

  • fidelity

  • interoperability

  • modifiability

  • precision

  • recoverability

  • resilience

  • scalability

  • simplicity

  • tailorability

  • accuracy

  • auditability

  • configurability

  • degradability

  • discoverability

  • usability

  • flexibility

  • learnability

  • modularity

  • predictability

  • relevance

  • responsiveness

  • seamlessness

  • stability

  • testability

  • adaptability

  • autonomy

  • correctness

  • determinability

  • distributability

  • extensibility

  • inspectability

  • maintainability

  • operability process

  • capabilities

  • reliability

  • reusability

  • self-sustainability

  • standards compliance

  • timeliness

  • administrability

  • availability

  • credibility

  • demonstrability

  • durability

  • failure transparency

  • installability

  • manageability

  • orthogonality

  • producibility

  • repeatability

  • robustness

  • serviceability

  • survivability

  • traceability

  • To improve design to meet design requirements not only depends on the logic of your program, but other factors in the software stack

    • software stack from top to bottom dependencies

      • your programs

      • libraries/api

      • compilers

      • assembler

      • virtualisation

      • operating system

      • hardware

  • As everything depends on hardware, improving this despite improving it's dependents can lead to better performance

    • but is an easy way out, but can be exponentially expensive for little gain after a while

    • So design needs to take to deal with other levels first, the higher levels are generally cheaper to fix or improve first

Last updated

Was this helpful?