• Defensive design considerations:
    • anticipating misuse
    • authentication
  • Input validation
  • Maintainability
    • use of subprograms
    • naming conventions
    • indentation
    • commenting