1st Edition
Patterns for Performance and Operability Building and Testing Enterprise Software
Structured to follow the software life cycle, Patterns for Performance and Operability provides advice and examples-based instructions at every phase. You can read it from start to finish or go directly to those chapters that interest you the most. Whatever approach you choose, you will learn:
How to:
· Define and document comprehensive non-functional requirements for any software system
· Define scope and logistics for non-functional test activities
· Execute non-functional tests and report results clearly and effectively
· Patterns for defensive software designs in common software scenarios that promote operability and availability
· Implement the right level of reporting, monitoring, and trending for highly available production software systems
Patterns for:
· Software designs that support simpler and more efficient operation in a production environment
· Software design that support high-performance and scalability
Strategies and Techniques for:
· Techniques for managing and troubleshooting during a production crisis
· Strategies for resisting project pressure to compromise on quality or completeness of non-functional activities in the software cycle
Introduction
Production Systems in the Real World
Why Should I Read This Book?
The Non-functional Systems Challenge
What Is Covered by Non-functional Testing
Planning for the Unexpected
Patterns for Operability in Application Design
Summary
Planning and Project Initiation
The Business Case for Non-functional Testing
Scoping and Estimating
Test and Resource Planning
Communication Planning
Summary
Non-functional Requirements
What are Non-functional Requirements?
Do I Need Non-functional Requirements?
Roles and Responsibilities
Challenging Requirements
Establishing a Business Usage Model
Non-functional Requirements
Summary
Designing for Operability
Error Categorization
Design Patterns
The Characteristics of a Robust System
Infrastructure Services
Design Reviews
The Operability Review
Summary
Designing for Performance
Requirements
Architecture
Patterns
Antipatterns
Algorithms
Technology
Software
Hardware Infrastructure
Summary
Notes
Test Planning
Defining Your Scope
Load Testing Software
Additional Testing Apparatus
Test Environments
Test Beds
Historical Data
Summary
Test Preparation and Execution
Preparation Activities
Script Development
Performance Testing
Operability Testing
Sustainability Testing
Challenges
Summary
Deployment Strategies
Procedure Characteristics
Packaging
Deployment Rehearsal
Rollout Strategies
Case Study: Online Banking
Case Study: The Banking Front Office
Back-Out Strategies
Summary
Resisting Pressure from the Functional Requirements Stream
A Question of Degree
Pressures from the Functional Requirements Stream
Attention
Defining Success
Setting the Stage for Success
Summary
Operations Trending and Monitoring
Monitoring
Trending and Reporting
Error Reporting
Capacity Modelling and Planning
Summary
Troubleshooting and Crisis Management
Reproducing the Issue
Determining Root Cause
Troubleshooting Strategies
Applying a Fix
Post-Mortem Review
Summary
Common Impediments to Good Design
Design Dependencies
What Is the Definition of Good Design?
Testing a Design
Common Impediments to Good Design
Design Principles
Summary
References
Articles
Books
Web Sites
Biography
Chris Ford, Ido Gileadi, Sanjiv Purba, Mike Moerman
". . . written in an easy to read and logical format . . . The concepts and principles in this book will never be outdated . . . I recommend this book to anyone who has a responsibility and interest in improving the quality of enterprise software. Whether you are deploying your software internally at your own organization or externally for customers reading this book and implementing the principles (assuming this is not already being done) will undoubtedly improve the quality of your system and will lead to an improved computing experience for your end users."
– Alan Madick, in StickyMinds.com, January 2009