Performance is an essential quality attribute of every software system. Many object-oriented and non-object-oriented software systems, however, cannot be used as they are initially implemented due to performance problems. Systems delivered with poor performance result in damaged customer relations, lost productivity for users, lost revenue, cost overruns due to tuning or redesign, and missed market windows.
It is possible to cost-effectively design performance into new software systems. Doing this requires careful attention to performance goals throughout the life cycle. Software performance engineering (SPE) provides a systematic, quantitative approach to managing performance throughout the development process.
SPE uses deliberately simple models of software processing with the goal of using the simplest possible model that identifies problems with the system architecture, design, or implementation plans. It is relatively easy to construct and solve these models to determine whether the proposed software is likely to meet performance goals. As the software development process proceeds, we refine the models to more closely represent the performance of the emerging software and re-evaluate performance.
This book discusses SPE for object-oriented systems. Object-oriented systems present special problems for SPE because their functionality is decentralized, and performing a given function is likely to require collaboration among many different objects from several classes. This makes the processing flow for object-oriented systems difficult to know a priori. Distributing objects over a network compounds the problem. In the following chapters, we illustrate how to use SPE techniques and the UML to overcome these problems.
SPE is not a silver bullet or a cure-all for performance problems. SPE takes thought, effort, and analysis to produce the desired results. However, SPE efforts can save far more than they cost by detecting and preventing performance problems. The return on investment for SPE more than justifies its use.