Architecture Selection using Pugh Matrix
Posted by Prashant Hegde on August 4, 2007
One of the useful yet very powerful tools that can be used for selecting among alternate architectures is – Pugh Matrix. Pugh Matrix is one of the popular Design For Six Sigma (DFSS) tools used for selecting among different concepts, tools, ideas etc. It is a recommended practice in Software Architecture that alternate architectures be identified and then compared against a set of criteria during the architecture phase. These criteria are usually derived from the Quality Deployment Function (QFD) matrix. From the QFD, the factors that are important for the success of the product are identified. These factors are called – Critical To Quality (CTQ).
Once the CTQs are identified using the high-level QFD, these can be flowed down to the architecture level QFD and the factors that are important for the architectural phase are identified. Typically, an architect comes up with more than one architecture for a given product. Most of the times than not, the process of selecting the best among the candidate architectures is ad-hoc. Usually, the selection is based on experience, intuition and heuristics. The Pugh Matrix provides a method for systematically comparing among different alternatives. Pugh Matrix is very simple to use. As the name suggests, it is a matrix that comprises of rows and columns. The rows are the CTQs derived from the Architecture Level QFD and the columns are the different candidate architectures. The CTQs can be assigned different weights depending on their importance. The alternates are compared against these criteria and the best among them is selected. The process can be iterative.
The Pugh Matrix looks like below:

What is the recommended process of using the tool to get best results? For getting better results, it can be performed with the team so that the results are not biased. The other approach is – each team member performs this process independently and the results are compared. If there are differences in the results among different team members, then they should be discussed with the team and a common consensus should be arrived at.