Skip to:Content
|
Bottom
Cover image for Patterns for performance and operability : building and testing enterprise software
Title:
Patterns for performance and operability : building and testing enterprise software
Publication Information:
Boca Raton, FL : Auerbach Publications, 2008
Physical Description:
xix, 317 p. : ill. ; 25 cm.
ISBN:
9781420053340

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010207870 QA76.76.D47 P39 2008 Open Access Book Book
Searching...
Searching...
30000010207871 QA76.76.D47 P39 2008 Open Access Book Book
Searching...

On Order

Summary

Summary

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


Table of Contents

Dedicationsp. v
The Purpose of This Bookp. xv
Acknowledgmentsp. xvii
About the Authorsp. xix
1 Introductionp. 1
Production Systems in the Real Worldp. 1
Case 1 The Case of the Puzzlingly Poor Performancep. 2
Case 2 The Case of the Disappearing Databasep. 5
Why Should I Read This Book?p. 7
The Non-Functional Systems Challengep. 8
What Is Covered by Non-Functional Testingp. 9
Planning for the Unexpectedp. 10
Patterns for Operability in Application Designp. 11
Ensuring Data and Transaction Integrityp. 11
Capturing and Reporting Exception Conditions in a Consistent Fashionp. 11
Automated Recovery from Exception Conditionsp. 14
Application Availability and Healthp. 14
Summaryp. 14
2 Planning and Project Initiationp. 17
The Business Case for Non-Functional Testingp. 17
What Should Be Testedp. 17
How Far Should the System Be Tested?p. 19
Justifying the Investmentp. 20
Negative Reasoningp. 21
Scoping and Estimatingp. 22
Determining the Scope of Non-Functional Testingp. 22
Estimating Effort and Resourcep. 26
Estimating the Delivery Timelinep. 29
Test and Resource Planningp. 33
Test Types and Base Requirementsp. 33
Test Environmentsp. 36
The Test Teamp. 37
Communication Planningp. 39
Setting Expectationsp. 39
Summaryp. 40
3 Non-Functional Requirementsp. 41
What Are Non-Functional Requirements?p. 43
Do I Need Non-Functional Requirements?p. 43
Roles and Responsibilitiesp. 44
Challenging Requirementsp. 45
Establishing a Business Usage Modelp. 46
Quantifying Human and Machine Inputsp. 46
Expressing Load Scenariosp. 54
Non-Functional Requirementsp. 56
An Important Clarificationp. 56
Performance Requirementsp. 58
Operability Requirementsp. 62
Availability Requirementsp. 64
Archive Requirementsp. 65
Summaryp. 67
4 Designing for Operabilityp. 69
Error Categorizationp. 70
Design Patternsp. 71
Retry for Fault Tolerancep. 71
Software Fusesp. 74
Software Valvesp. 75
System Health Checksp. 78
The Characteristics of a Robust Systemp. 80
Simple Is Betterp. 80
Application Loggingp. 81
Transparency: Visibility into System Statep. 83
Traceability and Reconciliationp. 84
Resume versus Abortp. 86
Exception Handlingp. 87
Infrastructure Servicesp. 91
Design Reviewsp. 91
The Design Checklistp. 91
The Operability Reviewp. 92
Summaryp. 94
5 Designing for Performancep. 95
Requirementsp. 95
The "Ilities"p. 95
Architecturep. 101
Hotspotsp. 101
Patternsp. 102
Divide and Conquerp. 102
Load Balancingp. 102
Parallelismp. 103
Synchronous versus Asynchronous Executionp. 107
Cachingp. 109
Antipatternsp. 112
Overdesignp. 114
Overserializationp. 114
Oversynchronizationp. 117
User Session Memory Consumptionp. 118
Algorithmsp. 119
Technologyp. 120
Programming Languagesp. 120
Distributed Processingp. 123
XMLp. 125
Softwarep. 126
Databasesp. 127
Application Serversp. 129
Messaging Middlewarep. 129
ETLsp. 132
Hardware Infrastructurep. 134
Resourcesp. 134
Summaryp. 136
6 Test Planningp. 139
Defining Your Scopep. 140
System Boundariesp. 140
Scope of Operabilityp. 142
Scope of Performancep. 145
Load Testing Softwarep. 145
Product Featuresp. 146
Vendor Productsp. 147
Additional Testing Apparatusp. 149
Test Bedsp. 150
Test-Case Datap. 150
Test Environmentsp. 151
Isolationp. 151
Capacityp. 153
Change Managementp. 154
Historical Datap. 154
Summaryp. 157
7 Test Preparation and Executionp. 159
Preparation Activitiesp. 159
Script Developmentp. 160
Validating the Test Environmentp. 164
Establishing Mixed Loadp. 164
Seeding the Test Bedp. 167
Tuning the Loadp. 167
Performance Testingp. 171
Priming Effectsp. 172
Performance Acceptancep. 173
Reporting Performance Resultsp. 176
Performance Regression: Baseliningp. 177
Stress Testingp. 181
Operability Testingp. 181
Boundary Condition Testingp. 182
Failover Testingp. 183
Fault Tolerance Testingp. 186
Sustainability Testingp. 188
Challengesp. 192
Repeatable Resultsp. 193
Limitationsp. 193
Summaryp. 194
8 Deployment Strategiesp. 195
Procedure Characteristicsp. 196
Packagingp. 197
Configurationp. 197
Deployment Rehearsalp. 198
Rollout Strategiesp. 198
The Pilot Strategyp. 198
The Phased Rollout Strategyp. 199
The Big Bang Strategyp. 199
The Leapfrog Strategyp. 200
Case Study: Online Bankingp. 200
Case Study: The Banking Front Officep. 202
Back-Out Strategiesp. 204
Complete Back-Outp. 204
Partial Back-Outp. 204
Logical Back-Outp. 204
Summaryp. 205
9 Resisting Pressure from the Functional Requirements Streamp. 207
A Question of Degreep. 208
Pressures from the Functional Requirements Streamp. 209
Attentionp. 212
Human Resourcesp. 212
Hardware Resourcesp. 213
Software Resourcesp. 213
Issue Resolutionp. 213
Defining Successp. 213
Setting the Stage for Successp. 214
Frameworkp. 215
Roles and Responsibilitiesp. 216
Raw Resources Required by the Non-Functional Requirements Streamp. 216
Performance Metricsp. 221
Setting Expectationsp. 222
Controlsp. 222
The Impact of Not Actingp. 223
Summaryp. 223
10 Operations Trending and Monitoringp. 225
Monitoringp. 225
Attributes of Effective Monitoringp. 227
Monitoring Scopep. 228
Infrastructure Monitoringp. 230
Container Monitoringp. 233
Application Monitoringp. 238
End-User Monitoringp. 239
Trending and Reportingp. 241
Historical Reportingp. 241
Performance Trendingp. 241
Error Reportingp. 243
Reconciliationp. 244
Business Usage Reportingp. 245
Capacity Planningp. 245
Planning Inputsp. 245
Best Practicep. 248
Case Study: Online Datingp. 248
Maintaining the Modelp. 255
Completing a Capacity Planp. 255
Summaryp. 256
11 Troubleshooting and Crisis Managementp. 257
Reproducing the Issuep. 257
Determining Root Causep. 258
Troubleshooting Strategiesp. 259
Understanding Changes in the Environmentp. 259
Gathering All Possible Inputsp. 261
Approach Based on Type of Failurep. 263
Predicting Related Failuresp. 265
Discouraging Biasp. 268
Pursuing Parallel Pathsp. 268
Considering System Agep. 269
Working Around the Problemp. 269
Applying a Fixp. 270
Fix versus Mitigation versus Tolerancep. 270
Assessing Level of Testingp. 271
Post-Mortem Reviewp. 272
Reviewing the Root Causep. 272
Reviewing Monitoringp. 272
Summaryp. 275
12 Common Impediments to Good Designp. 277
Design Dependenciesp. 277
What Is the Definition of Good Design?p. 279
What Are the Objectives of Design Activities?p. 279
Rating a Designp. 281
Testing a Designp. 286
Contributors to Bad Designp. 287
Common Impediments to Good Designp. 287
Confusing Architecture with Designp. 288
Insufficient Time/Tight Timeframesp. 288
Missing Design Skills on the Project Teamp. 288
Lack of Design Standardsp. 288
Personal Design Preferencesp. 289
Insufficient Informationp. 289
Constantly Changing Technologyp. 289
Fad Designsp. 290
Trying to Do Too Muchp. 290
The 80/20 Rulep. 290
Minimalistic Viewpointp. 290
Lack of Consensusp. 291
Constantly Changing Requirementsp. 291
Bad Decisions/Incorrect Decisionsp. 291
Lack of Factsp. 291
External Impactsp. 291
Insufficient Testingp. 291
Lack of Design Toolsp. 292
Design Patterns Matterp. 292
Lack of Financial Resourcesp. 292
Design Principlesp. 292
Summaryp. 293
Referencesp. 295
Indexp. 297
Go to:Top of Page