Geeks With Blogs
I [heart] code! .NET musings from the chick side

DMAIC is used to improve processes, and it is to engineers what O-O is to developers: a well known and understood best practice with patterns, anti-patterns, and a common language and toolset.

DMAIC is an acronym for five interconnected phases: Define, Measure, Analyze, Improve, and Control, and is usually an integral part of a company's Six Sigma practice. Pronounced (Duh-May-Ick),  it is a data-driven, procedural approach and quality strategy for improving processes- in this case, application performance.

There are many good sources of information on DMAIC and Six Sigma, I won't regurgitate them here. Rather, I will focus on how software development can benefit from this practice. Its sister practice, DMADV (Define, Measure, Analyze, Design, Verify) is used during the design phase and will be discussed in future posts. What follows is a brief overview of the DMAIC phases as they might be applied to an application performance evaluation.


 Define the specific performance goals for the application and  the parameters/caveats of each goal. Set targets and specify the acceptable range for that target. Specify what will constitute success for each defined aspect of performance.

For each performance goal, Define the metrics that contribute to it. Identify dependencies and Define how they will be handled.

Lastly, Define how each metric will be measured.


 Measure the metrics defined above. Ensure that the sampling size is adequate to obtain actionable data. I have seen organizations make important business decisions and/or set direction based on one or two data points. (That is not good).


 Analyze the data to provide understand the performance profiles. Look for dependencies where one poor-performing aspect impacts several metrics. (Such as indexes on a table that is used throughout the application). The goal here is to summarize the data into a consumable format so that it can be the basis for intelligent and reasoned decision-making.


 Improve or optimize the components of the application based on the data collected. Use the data to target the areas which will yield the greatest degree of improvement. Properly summarized data should highlight the low-hanging fruit that will yield the greatest gains with the least amount of effort. The frequency of execution should be a prominent factor in deciding what to target for improvement. Optimizing a use case that hardly ever gets executed is probably not of great value, even if it is performing horrendously.


 Control the application performance to ensure that the actions taken result in continued performance gains. Of all the phases in the DMAIC process, this is the one that is practiced the least in the software world, and will be explored in detail in future posts.


There is a brief introduction to how the DMAIC process can be applied to application performance. In future posts we will explore each phase in more depth.

Posted on Friday, May 9, 2008 3:04 PM | Back to top

Comments on this post: What the heck is DMAIC and why should I care?

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Kirstin Juhl | Powered by: