Software Performance Engineering: Methods and Quantitative Techniques for Proactively Managing Software Performance
Presented by: Dr. Connie U. Smith
Contact us for Scheduling In-House
This is a comprehensive, practical course that covers the SPE techniques you need to create responsive systems with little or no additional development time or cost.
Questions This Seminar Will Answer
- Precisely, what is Software Performance Engineering (SPE)?
- How is it compatible with other software engineering practices?
- Do you need SPE? How do you convince others?
- What are some useful techniques for building new systems that are responsive to users?
- How can you estimate computer capacity requirements and software response times early in development?
- What are some techniques for creating responsive, scalable software?
- What data is required to accurately predict performance and scalability?
- How do you obtain data for SPE studies, who should do it, and when?
- How do you construct models of software to predict end-to-end system performance – general techniques that may be used with a variety of tools?
- How do you use models to evaluate software requirements, designs, implementations, and computer configurations before implementation and throughout development?
- What is a systematic approach for managing performance?
- How do you measure the performance of software?
- How do you apply these techniques to very large and complex systems?
- What tools support SPE activities ?
- What resources are required and how should SPE be organized and managed?
Many laboratory sessions provide experience with the software performance models.
I. Definition of SPE: What is SPE and how should it be used?
- The software development environment, software lifecycle models, and integrated performance management
- Systematic SPE methods
- What should be done, when, and by whom, and how
- Introduction to adaptive SPE models for end-to-end system performance
II. Modeling Software Systems: What data do you need, and how do you construct software performance models?
- Data requirements
- Sources and techniques for gathering data
- Developing and evaluating software models
- Assessing scalability and sensitivity
- How to use the SPE models to evaluate software requirements and designs
- Computer hardware sizing, selection, and capacity planning
- Identification of performance bottlenecks and critical components
- Assessing scalability and sensitivity
- Software modeling workshop
III. General Principles for Designing Responsive Systems: What principles facilitate engineering performance into systems?
- The principles: fixing point, locality design, processing vs. frequency tradeoff, shared resources, parallel processing, spread the load, centering, instrumenting
- How to apply them to improve systems
IV. Software Performance Patterns and Antipatterns: What are some good performance-oriented solutions to common software problems, and what solutions repeatedly result in performance problems?
- The patterns: Fast Path, First Things First, Coupling, Alternate Routes, Flex Time, Batching, Slender Cyclic Functions
- The antipatterns: Excessive Dynamic Allocation, Circuitous Treasure Hunt, One Lane Bridge, Traffic Jam, Unbalanced Processing, Unnecessary Processing, The Ramp, More is Less, Sysiphus List Subset, The "god" Class, and newer antipatterns.
Predicting System Performance: How to represent contention among software processes.
- The system model of execution
- System modeling fundamentals
- How to model alternatives; how to evaluate scalability and sensitivity
- System Modeling Workshop
V. Software Performance Measurement: How to collect software performance data
- Concepts and Techniques
- Benchmark Planning
- Software Instrumentation
- Application Resource Measurement (ARM)
VI. Performance Assessment Techniques: How to collect the data you need and present SPE results.
- Strategies and techniques for data collection
- Conducting performance walkthroughs
- Controlling risks
- Presenting alternatives and recommendations
VII. Case Study: Lifecycle SPE for a Distributed System
- Performance walkthrough
- Teams construct and evaluate models,
- Teams present results and recommendations
- Summary and critique
VIII. Advanced Models of Complex Systems: How to represent complex systems and use advanced techniques to evaluate their performance.
- Modeling middleware: XML, SOAP, DCE, CORBA, MQSeries, etc.
- Service Oriented Architecture (SOA): Web Services and others
- Representing distributed interactions
- Component-based systems
- Commercial Off-The-Shelf (COTS) system integration
- Mainframe
- Batch
- Embedded systems
- Case Studies
IX. Review of Current SPE Tools: What tools are available to assist SPE efforts?
- Benchmarking
- Modeling
- Software development
- Tool inter-operability
X. Implementing Performance Engineering: How to apply this knowledge.
- Constructing effective systems
- Experiences with performance engineering
- Costs, benefits, risks
- Critical success factors
- Outsourced & purchased software
- SPE Technology Transfer
- SPE Business Case
- Establishing an SPE initiative
XI. Next Steps: How to Get Maximum Results from the Course
- What Are Our Strengths?
- What Have We Learned?
- What Is Our Vision of the Future?
- What Steps Can We Take to Achieve Our Vision?
- The 72-Hour Rule