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
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
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