“Good performance is about good design, not good hardware.” — Bob Wilcox
While working on performance projects at Microsoft, I developed a software Performance Hot Spots Framework that we used to organize and prioritize software performance and scalability issues.
I employed this software Performance Hot Spots Framework to organize performance guidelines and checklists for optimal software performance.
Additionally, I leveraged the Performance Hot Spots Framework to establish evaluation criteria that assisted in identifying key performance decisions that could have a significant impact.
By using this Performance Hot Spots Framework to chunk up software performance challenges, I was able to create an Agile methodology for software performance.
Performance “Hot Spots” (Categories)
We found that we could organize the majority of our performance principles, patterns and practices using the following buckets:
Category | Key Considerations |
---|---|
Caching | Per user, application-wide, data volatility |
Communication | Transport mechanism, boundaries, remote interface design, round trips, serialization, bandwidth |
Coupling and Cohesion | Loose coupling, high cohesion among components and layers |
Concurrency | Transactions, locks, threading, queuing |
Data Access | Schema design; Paging; Hierarchies; Indexes; Amount of data; Round trips. |
Data Structures / Algorithms | Choice of algorithm, Arrays vs. collections |
Resource Management | Allocating, creating, destroying, pooling |
State Management | Per user, application-wide, persistence, location |
Threats Organized by the Performance Hot Spots Framework
With the Performance Hot Spot Framework, it’s easy to walk the categories and think of potential performance problems.
Here’s a list of potential software performance problems, organized by the Performance Hot Spot Framework:
Category | Threats |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
Vulnerabilities Organized by the Performance Hot Spots Framework
You can also use the Performance Hot Spots Framework to identify common mistakes that lead to the performance problems above.
Here’s a list of common design mistakes we find in applications:
Category | Vulnerabilities |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
Countermeasures Organized by the Performance Hot Spots Framework
Here’s a list of common design strategies that lead to better performance:
Category | Countermeasures |
---|---|
Caching |
|
Communication |
|
Concurrency |
|
Coupling / Cohesion |
|
Data Access |
|
Data Structures / Algorithms |
|
Exception Management |
|
Resource Management |
|
State Management |
|
You Might Also Like
Agile Architecture Method
Agile Life-Cycle Frame
Agile Methodology in Microsoft patterns & practices
Agile Performance Engineering
Extreme Programming at a Glance
How Agile and Lean Help Business
Roles on Agile Teams
Scrum at a Glance
Software Methodologies at a Glance
Waterfall to Agile
What is Agile?
Leave a Reply