“Performance by Design” provides both a conceptual and a practical framework for experienced software developers that want to get started building quality applications using performance engineering techniques.

Performance engineering is a discipline that attempts to integrate concerns about the responsiveness of computer applications and their capacity requirements into standard application development practices, which otherwise focus almost exclusively on meeting functional requirements. Just like not getting the functional spec right in the early stages of the application development lifecycle can lead to a cascading series of design and implementation decisions that are difficult to reverse in later stages of the development process, neglecting performance considerations until after the applications has met its functional requirements is often too late to tackle them effectively.

The first part of the book surveys a wide range of performance modeling and capacity planning techniques, served up in clear, concise language with a minimum of mathematics. It is a gentle introduction to analytic queuing networks written at the level that any advanced undergraduate Computer Science student ought to be able to master. The heart of the book, representing Chapters 5 through 9, is a series of Case Studies that rounds out and concludes Part 1. Each of the case studies deftly illustrates another analytic technique that a performance engineer needs to understand how to apply. Chapter 5, for instance, steps through descriptive statistics and cluster analysis as it discusses what is involved in deriving model parameters for a simple database transaction workload. Chapter 6 builds upon this discussion by solving a simple multi-class model, delving into confidence limits and the use of a factorial design to limit the number of trials of a benchmark experiment. Finally, Chapter 9 illustrates using software performance engineering techniques to model a new application during its initial development phases, beginning with the database design.

The first half of the book is designed to stand alone if the Reader doesn’t have the stomach for the rigorous mathematical treatment of analytic queuing models that characterizes Part 2. The second half of the book should be familiar territory to readers of Menasce’s other books on performance modeling, beginning with Markov chains and proceeding through Mean Value Analysis. The final two chapters describe approaches to modeling serialization delays and servers that have load-dependent performance characteristics, two topics that are essential to accurate models of application-level performance.

The great challenge of the performance engineering approach is how to persuade experienced applications developers to adopt these techniques. “Performance by Design” is aimed at getting software developers to pay closer attention to performance concerns throughout the application development life cycle. Compared to other books on the subject, this may be the best attempt yet to promote the practice of performance engineering as a discipline that deserves to be integrated into the wider context of application development.

http://rapidshare.com/files/120253346/6b40d1d20701d9191be234f46876c08b.7z