1st Edition

Patterns for Performance and Operability Building and Testing Enterprise Software

    338 Pages 53 B/W Illustrations
    by Auerbach Publications

    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