Software Performance Engineering (SPE) is a systematic, quantitative approach to the cost-effective development of software systems to meet performance requirements. SPE is a software-oriented approach that focuses on architecture, design, and implementation choices.
SPE gives you the information you need to build software that meets performance requirements on time and within budget.
The SPE process begins early in the software development life cycle and uses quantitative methods to identify satisfactory designs and to eliminate those that are likely to have unacceptable performance before developers invest significant time in implementation. SPE continues through the detailed design, coding and performance and load testing phases to predict and manage the performance of the evolving software as well as monitor and report actual performance versus specifications and predictions. SPE methods encompass: performance data collection; quantitative performance analysis techniques; prediction strategies; management of uncertainties; data presentation and tracking; performance testing, stress and load testing, model verification and validation; critical success factors; and performance design principles, patterns and antipatterns.
Many organizations have used a "fix-it-later" approach to performance. This approach advocated concentrating on correctness and deferring consideration of performance until the testing phase. Performance problems detected then, were corrected by adding additional hardware, tuning the software (usually in a crisis-mode), or both.
Because it is based on several performance myths, this approach can be dangerous. These myths include:
SPE provides an engineering approach to performance, avoiding the extremes of performance-driven development and "fix-it-later." SPE uses model predictions to evaluate trade-offs in software functions versus hardware costs. The models assist developers in controlling resource requirements by selecting architecture and design alternatives with acceptable performance characteristics. They aid in tracking performance throughout the development process and prevent problems from surfacing late in the life cycle (typically during performance and stress testing).
SPE is tried and proven technology – performance experts have always used these techniques for building high-performance software. Beginning in 1981, with an award-winning paper that first coined the term "software performance engineering," the techniques have become more accessible to non-performance experts. Performance management products such as SPE·ED now make it quick and easy to evaluate software/hardware plans early in development. Books explain the techniques. Consulting and mentoring services are available to help you get started. So the following aspects of a new performance paradigm are now achievable:
SPE is language and platform independent. Performance models are constructed from architectural and design-level information. Thus, SPE works with C++, C# and Java as well as with other object-oriented and non-object-oriented languages. The execution behavior of the software will be different with different languages and platforms. Nevertheless, this is reflected in the resource requirement specifications, not the model structure.
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 requirements. As the software development process proceeds, we refine the models to more closely represent the performance of the emerging software and re-evaluate performance.
SPE can be easily integrated into the software development process. It has been used with traditional process models, such as the waterfall model. It works especially well with iterative, incremental processes such as the Unified Process. With an iterative, incremental process, you can use SPE techniques to assess and reduce the risk of performance failure at the project outset, and at each subsequent iteration.
Thus, Software performance engineering provides a systematic, cost-effective approach to managing software systems performance. Use of SPE can reduce project costs and eliminate project failures due to performance problems. It can also improve your level of service to customers, reduce business costs, help you use computer resources more efficiently, and improve your competitive position. SPE is sensible, and it works!
Dr. Connie U. Smith and Dr. Lloyd G. Williams collaborated on a book titled Performance Solutions: A Practical Guide to Creating Responsive, Scalable Software published by Addision-Wesley. You can order it from Amazon.