Home > Store > Software Development & Management > Object Technology
Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software
- By Connie U. Smith, Lloyd G. Williams
- Published Sep 17, 2001 by Addison-Wesley Professional. Part of the Addison-Wesley Object Technology Series series.
- Copyright 2002
- Dimensions: 7-3/8x9-1/4
- Pages: 544
- Edition: 1st
- Book
- ISBN-10: 0-201-72229-1
- ISBN-13: 978-0-201-72229-1
Register your product to gain access to bonus material or receive a coupon.
"Utterly demystifies the job (no longer the art) of performance engineering. Monsters, begone! Wizards, away! It leaves you feeling that you could really do this on your own. And, thanks to Connie and Lloyd, you can."
--From the Foreword by Paul ClementsPerformance, responsiveness, and scalability are vital aspects of today's software. Yet many software systems cannot be used as initially implemented because of performance problems. Such failures can translate into significant costs for software developers due to damaged customer relations, lost income, and time and budget overruns.
Performance Solutions offers straightforward techniques and strategies that can be used by software developers, project managers, and performance specialists to handle the performance of software throughout the development process. In particular the book focuses on how to design performance into software systems early and then maintain performance throughout the software development life cycle.Software Performance Engineering (SPE) is a systematic, quantitative approach to cost-effectively constructing software systems that meet performance objectives. This book details the various SPE models that can be used for a wide variety of applications, including Web-based and distributed systems. It describes effective data gathering and performance measurement techniques and explores the principles of performance-oriented design. You will also find practical guidance on implementing an SPE program. Specific topics of interest include:
- Reactive versus proactive performance management
- Using UML for SPE
- Specifying key performance scenarios and performance objectives
- Gathering performance data and estimating resource requirements
- Constructing and solving performance models
- Modeling complex interactions in distributed systems
- Planning and conducting performance measurements
- Principles for performance-oriented design
- Patterns that illustrate "best practice" approaches to achieving responsiveness and scalability
- Antipatterns that illustrate what not to do and how to fix a problem when you find it
- SPE activities for mid- to late life cycle
- Performance tuning strategies
- Integrating SPE into your software process
- SPE implementation strategies and critical success factors
Numerous real-world applications and case studies illustrate the application of SPE techniques to important application domains, including Web and embedded real-time systems.
With this book, you will gain the understanding and skills you need to make informed choices among architectural and design alternatives and create responsive, scalable software on time and within your budget.
0201722291B07162001
Web Resources
Click below for Web Resources related to this title:
Author Web Site
Online Sample Chapter
Introduction to Software Performance Engineering
Sample Chapter(s)
Click below for Sample Chapter related to this title:
smithwillch01.pdf
Index
Symbols
λ, system arrival rate, 143
N, queue length, 144-145
RT, residence time, 144-145
S, mean service time, 143, 145
U, utilization, 143, 145
V, number of visits, 143
X, throughput, 143, 145
Numerics
80-20 rule, 171, 245, 311, 314-316, 411
A
Action, 88
Activation, 54, 170
Active class, 62
Active object, 62
ActiveX Control, 344
Activity diagram, 52, 58, 73, 89
Actor, 50
Adapter pattern, 344
Circuitous Treasure Hunt and, 301
Adapt-to-precision strategy, 19-20
Adopting and using SPE, 444-455
advice, 446-447
advocate, need for, 445, 453
commitment, 453
commitment, obtaining, 445-446
credibility, 445, 459
credibility, building, 447, 454
economic justification, 448-449
experience, 444-448
funding, 457-458
justification, 448
key considerations, 448
organizational issues, 444-446, 451, 455-457
pilot projects and, 451-452
risks, 458-459
savings, 448
skeptics, 445
success factors, 440, 452-455, 459-461
success, credibility and, 445, 447, 459
teamwork, 446, 454
training, 446
Advanced system model, 151-152, 346, 421
Alexander, C., 262
Alexander, R., 315
Algorithm and data structure choices, 322-323
Algorithm, random selection, 278
Almeida, V. A. F., 371
alt, 56, 65, 470
Alternate Routes pattern, 276-279
benefits, 278-279
consequences, 279
database, 276-277
One-Lane Bridge and, 305
problem, 276-277
solution, 277-278
Alternation See alt
Analytic solution
See System execution model
Antipattern, 287-288
Antipattern, performance
See Performance antipattern
Aperiodic event, 376
Approximate solution technique, 152
Architecture, 40-43
alternatives, 346
antipatterns and, 288
multiprocessing, 318-319
multi-tier, 106
performance and, 9, 11, 17
performance improvements and, 309, 311
pipe-and-filter, 400
software, 344, 367-368
SPE and, 47, 111, 435
SPE models and, 72, 115, 121
system, 368-369
technical, 344, 367
tuning and, 449
Architecture evaluation, 89-102, 343-345, 366-371
ARM (Application Resource Measurement), 233-236
API, 234-236
purpose, 233
system development kit (SDK), 234
use of, 236
ARM Working Group, 234
Arrival rate
distribution, 139
specifying, 139, 171
specifying units, 149
workload and, 147
ASP (Active Server Pages), 344
Assembly language, efficiency and, 397
Asynchronous callback, 66, 118, 160, 471
Asynchronous communication, 65, 117
ATM (automated teller machine)
case study, 32-39
Fast Path, 246-247, 264, 266-267
measurement, 227
measuring resource requirements, 208
performance failure, 8
use case diagram, 50
Auer, K., 10
Average value, 152, 380
B
Basic node, 73, 77, 476
Batch job, 255
Batching pattern, 272-276
average versus transient behavior, 420
Batching rule and, 325
benefits, 275
consequences, 275-276
database, 273
flow balancing and, 401
problem, 272-274
receiver-side Batching, 274
sender-side Batching, 274
solution, 274-275
versus individual items, 273
Batching rule, 325
Beck, K., 10
Benchmark
See Performance benchmark, Measurements for SPE
Bensley, G., 315
Bentley, J., 323-326
Best- and worst-case
analysis, 41, 384
estimate, 30, 102, 197
importance, 460
model strategy, 164
response time, 72
results, 39
strategy, 19
Unified Process and, 436
Blob
See god Class antipattern
Booch, G., 265, 407, 433, 467
Bottleneck, 5, 151, 165, 314, 414
Brown, W. J., 288
Bulka, D., 327, 332
Busy wait, 398-400
C
C++
collections, 322
constraint specification, 49, 473
inlining, 331-332
multithreading, 332
object creation, 329
sharing strategy, 320
C++ solutions, 331-332
Caching rule, 324-325
Call processing example, 8, 294-296
Excessive Dynamic Allocation antipattern, 294
Capacity management, 423-424
Capacity planning, 20, 109, 429
modeling and, 424
SPE and, 451
tools, 440
CASE (Computer-Aided Software Engineering), 179
integration with SPE tools, 442-444
Case node, 75, 77, 476
Centering Principle, 245-247
application, 246-247
Caching rule and, 325
definition, 245-246
example, Web application, 362
Fast Path speed-up and, 316
patterns and, 263, 266, 269, 272, 283
performance antipatterns and, 306
summary, 259
using, 257, 447
CGI (Common Gateway Interface), 344, 354
Circuitous Treasure Hunt antipattern, 250, 296-301
Adapter pattern and, 301
ICAD case study and, 297
performance gain from refactoring, 299
problem, 297-299
refactoring, potential disadvantages, 300
solution, 299-301
Class diagram, 30
Clements, P. C., 9-10, 115
Client/server application, 341
Clock, operating system, 219-220
CMG (Computer Measurement Group), 222, 424, 447
Cohen, S. S., 291-292
Collaboration, 265
Collaboration diagram, 50, 52
Collections, 322-323
COM (Component Object Model), 110
COM+, 111
Common mistakes
See Performance antipatterns
Communication, 115, 271
Communication overhead, 254
Communication protocol, 319-320
Compiler optimization, profile-based, 317
Component, stereotype, 91
Computer device usage, 85
Computer resource requirement, 176-178
database, 221
example, 87, 126
example, Web application, 358
explanation, 176-178
measurement, 226
obtaining, 201
overview, 30
specification, 37-39, 86
Preface
I love it when a plan comes together.
--Col. John "Hannibal" Smith, "The A-Team"In our roles as consultants, teachers, and mentors to software developers, we see too many software products that fail to meet their performance objectives when they are initially constructed. Fixing these problems is costly and causes schedule delays, cost overruns, lost productivity, damaged customer relations, missed market windows, lost revenues, and a host of other difficulties. In extreme cases, it may not be possible to fix performance problems without extensive redesign and re-implementation. In those cases, the project either becomes an infinite sink for time and money, or it is, mercifully, canceled.These problems can be prevented by the systematic application of a few simple performance analysis and prediction techniques. Over the years, we have helped many clients produce software that meets performance objectives and is delivered on time and within budget. This book was produced in response to requests from our clients and students to provide a reference to the techniques that we have used and taught so successfully.
Objectives
By applying the material in this book you will be able to answer questions such as:
- Will your users be able to complete their tasks in the allotted time?
- Are your hardware and network capable of handling the load?
- Will your system scale up to meet the future demand?
More importantly, you will be able to answer these questions before you have committed a lot of time and money to an implementation, only to find that the answers are an emphatic (and expensive) no!
You will learn enough from this book to begin to apply these techniques immediately to manage the performance of your software systems. You will sharpen your skills as you use them on a variety of projects that include Web-based applications, distributed systems, real-time systems, traditional database applications, and others.
Software Performance
Performance is any characteristic of a software product that you could, in principle, measure by sitting at the computer with a stopwatch in your hand. The dimensions of performance include responsiveness (response time or throughput) and scalability.
How do projects get in trouble with performance? The problem is often due to a fundamental misunderstanding of how to achieve performance objectives. The approach is frequently "First, let's make it run; then, we'll make it run fast." The idea is to get the functionality right, and then tune for performance. Unfortunately, by the time the architecture and design are selected, it may already be too late to achieve adequate performance by tuning. It is a mistake to treat a potential performance problem as if it were of the same complexity as a coding error. Coding errors are relatively easy to fix, whereas performance problems may require extensive changes to code.
The proper way to manage software performance is to systematically plan for and predict the performance of the emerging software throughout the development process. This book presents a set of simple techniques that you can use to manage the performance of your software. These techniques do not require an advanced degree in mathematics, nor do they take significant amounts of time away from development activities. By applying them, you will be able to make informed choices among architectural and design alternatives, and proceed with confidence, knowing that your software will meet its performance objectives.The approach to managing performance presented here is unique. It has grown out of more than 10 years of collaboration between the authors that combines knowledge and experience in both software performance engineering and architectural analysis. Other authors have proposed elaborate modeling techniques that either aren't useful for real systems or require a Ph.D. in mathematics to apply. Our approach is practical, useful by non-specialists, and rigorous.
Software Performance Engineering
The techniques presented in this book are collectively known as software performance engineering (SPE). SPE is a comprehensive way of managing performance that includes principles for creating responsive software, performance patterns and antipatterns for performance-oriented design, techniques for eliciting performance objectives, techniques for gathering the data needed for evaluation, and guidelines for the types of evaluation to be performed at each stage of the development process.
SPE is model-based. Modeling is central to both SPE and object-oriented development. By building and analyzing models of the proposed software, we can explore its characteristics to determine if it will meet its requirements before we actually commit to building it. SPE uses models to quantitatively assess the performance of the emerging software. This book discusses how to quickly and easily create those quantitative models from the architecture and design models that you produce as part of the object-oriented development process. It also describes how to integrate SPE seamlessly into the overall object-oriented development process.
Finally, these techniques are neither new nor revolutionary. They have evolved from a relatively long history of proven quantitative disciplines. Nor are they a silver bullet. They must be used to be effective, and it will take some time to learn to apply them, particularly on your initial project. The amount of time required, however, is not excessive and is appropriate for most projects in their early stages. We have found that when problems are inevitable, your choice is "pay a little now (for the scalability and performance that you need) or pay much more later." Software metrics show that it costs up to 100 times more to fix problems in code than it does to fix problems in the architecture before code is written. The only way to determine whether problems are inevitable is to use the quantitative techniques described in this book early.
Who Should Read This Book
This book is primarily intended for experienced software developers who have used object-oriented techniques on one or more development projects and who are ready for the next step: to learn how to create software systems with built-in scalability and performance. The emphasis is on how to apply the techniques.Other readers will also find information that they can use:
- Project managers will find techniques that they can bring to their projects immediately to improve the way performance is managed. They will also learn how to implement SPE.
- Developers who are new to object-oriented techniques will discover how it is possible to manage performance for object-oriented systems, and find guidelines for creating responsive software that will augment their study of object-oriented development.
- Performance engineers will learn how to adapt their skills to object-oriented systems, as well as discover new approaches that are applicable to other development technologies.
- Students will learn about performance issues that arise in realistic, large-scale software systems and how to solve them.
Familiarity with object-oriented concepts is helpful, but it is not essential. We explain the portions of the Unified Modeling Language (UML) notation useful for performance assessments. If you find you would like more background, refer to other books in the Object Technology Series.1
Familiarity with performance modeling techniques is helpful but it is not essential. We assume that you will use an SPE tool, such as SPE·ED, to evaluate your systems. We explain enough of the modeling fundamentals for you to become familiar with how such tools work. References are included with the material in case you would like to learn more about the modeling technology.
Organization of This Book
This book is organized into the following seven parts:
- Part I: Introduction and Overview provides an introduction to SPE and an overview of the modeling techniques
- Part II: SPE Models describes details of the models used in SPE and their solutions
- Part III: Data Collection discusses how to obtain SPE data, and provides some background on performance measurement techniques.
- Part IV: Performance Solutions presents techniques for designing performance into software systems, and maintaining performance throughout the life cycle
- Part V: Applications illustrates the application of SPE techniques to some important types of application domains
- Part VI: Making SPE Happen discusses how to implement SPE in your development organization
- Part VII: Appendixes summarize the notation used throughout the book.
How You Should Read This Book
Different people will have different reasons for reading this book and different needs for the information in it. The table below offers a suggested road map for reading the material that is keyed to several types of reader interests. The types of readers represented in the table are
- Developer--You are responsible for software development and need to make sure that your code meets performance objectives. You need to know it all: what SPE is, what it can do for you, how to construct and evaluate the models, how to design performance into your software, and how to fit SPE into the development process.
- Manager--As a manager, you need to know what SPE is, what it can do for you, and how it fits into the software development process. The modeling details are less important.
- Performance Engineer--You are responsible for working with developers to assist with the quantitative analysis of their systems. You also need to know it all: how to explain the SPE and what it can do for developers, how to construct and evaluate the models, how to identify and explain performance solutions and performance problems, and how SPE fits into the development process.
- Firefighter--You have a system that has performance problems and need help to get out of trouble. Later, when things calm down, you can go back and apply the SPE techniques to prevent these problems in future systems.
- Academic--The material in this book can be used as the basis for a graduate-level course in software performance engineering. The sections on integrating SPE into the software process and implementing SPE are probably less important, however.
The entries show the priority or importance of each part of the book for the various reader interests with letters (A is vital, B is important, C is some value). The numbers indicate the order in which the parts should be read (1 is first, 2 next, and so on).
Reader's Guide
| Part I | Part II | Part III | Part IV | Part V | Part VI | |
| Developer | A1 | A2 | A3 | A4 | A5 | A6 |
| Manager | A1 | C1 | B1 | B2 | B3 | A2 |
| Performance Engineer | A1 | A2 | A3 | A4 | A5 | A6 |
| Firefighter | A1 | A4 | A2 | A3 | A5 | B1 |
| Academic | A1 | A2 | A3 | A4 | A5 | B1 |
Formatting Conventions
Points, observations, and guidelines that are especially important are italicized and highlighted by a pointing hand in the margin.
Presentation of one topic often includes a reference to another that is discussed elsewhere. To help in making the connection, cross-references are provided in the left margin.
Asides, parenthetical comments, and general guidelines are set apart as notes.
Execution graphs are similar to program flowcharts, but they are not the same. Execution graphs show the frequency of path execution, and model only those paths that are key to performance.
Examples and other portions of the text that are important but might interrupt the general flow are set apart.
SPE on the Web
The models in this book and a demonstration version of the SPE·ED tool are on the Web at http://www.perfeng.com/PerfSolutions/models. Other information about SPE is at http://www.perfeng.com. There is an online discussion group on SPE at http://www.egroups.com/group/softwareperfeng/. If you discover errors in this book, please email them to perfSolutions@perfeng.com. We will periodically post them to http://www.perfeng.com/PerfSolutions/errata.
Connie U. Smith
Santa Fe, NM
May 2001
Boulder, CO
May 20011For object-oriented concepts, see: G. Booch, Object-Oriented Analysis and Design with Applications, Redwood City, CA, Benjamin/Cummings, 1994. For UML, see G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, Reading, MA, Addison-Wesley, 1999.
0201722291P09102001
Table of Contents
Foreword by Grady Booch.
Foreword by Paul Clements.
Preface.
I. INTRODUCTION AND OVERVIEW.
II. SPE MODELS.
III. DATA COLLECTION.
IV. PERFORMANCE SOLUTIONS.
V. APPLICATIONS.
VI. MAKING SPE HAPPEN.
VII. APPENDIXES.
This book includes free shipping!
- Save more by becoming a member.
- Request an Instructor or Media review copy.
- Corporate, Academic, and Employee Purchases
- International Buying Options


Account Sign In
View your cart