Wednesday, January 11, 2012

Software Architectural Tactics

Availability Tactics

Fault Detection

  • Ping/echo
  • Heartbeat (dead man timer_
  • Exceptions

Fault Recovery

  • Voting
  • Active redundancy (hot restart)
  • Passive redundancy (warm restart, dual/triple redundancy
  • Spare
  • Shadow operation
  • State resynchronisation
  • Checkpoint/rollback

Fault Prevention

  • Removal from service
  • Transactions
  • Process monitor

Modifiability Tactics

Localise Modifications

  • Maintain semantic coherence
  • Anticipate expected changes
  • Generalise the module
  • Limit the possible options
  • Abstract common services

Prevent Ripple Effects

  • Hide information
  • Maintain existing interfaces
  • Restrict communication paths
  • Use an intermediary

Defer Binding Time

  • Runtime registration
  • Configuration files
  • Polymorphism
  • Component replacement
  • Adherence to defined protocols

Performance Tactics

Resource Demand

  • Increase computational efficiency
  • Reduce computational overhead
  • Manage event rate
  • Control frequency of sampling
  • Bound execution times
  • Bound queue size

Resource Management

  • Introduce concurrency
  • Maintain multiple copies of either data or computations
  • Increase available resources

Resource Arbitration

  • First-in/First-out (FIFO)
  • Fixed-priority scheduling
  • Dynamic priority scheduling
  • Static scheduling

Security Tactics

Resisting Attacks

  • Authenticate users
  • Authorize users (access control, user groups)
  • Maintain data confidentiality
  • Maintain integrity
  • Limit exposure
  • Limit access

Detecting Attacks

  • Intrusion detection

Recovering from Attacks

  • State restoration (see Availability tactics)
  • Maintain audit trail (identify attacker)

Testability Tactics

Manage Input/Output

  • Record/playback
  • Separate interface from implementaiton
  • Specialize access routes/interfaces

Internal Monitoring

  • Built-in monitors

Usability Tactics

Runtime Tactics

  • Support user initiative (error correction, e.g. cancel, undo; user efficiency, e.g. aggregate, multiple views)
  • Support system initiative (maintain user/task/system models)
  • Design-Time Tactics

    • Separate the user interface (e.g. MVC)

    Reference

    Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice (2nd ed.). Addison-Wesley, 2003.

    No comments:

    Post a Comment