Agile Tips

#12-Sharpen Your Analysis Skills with CVA

June 03, 2024 Scott L. Bain
#12-Sharpen Your Analysis Skills with CVA
Agile Tips
More Info
Agile Tips
#12-Sharpen Your Analysis Skills with CVA
Jun 03, 2024
Scott L. Bain

Analysis is a fundamental part of system's development.  It is also one of the most difficult things to do right, and since everything that follows is based on it we need multiple skills to do it correctly.  Commonality-Variability Analysis, as suggested in the work of James O. Coplien, is a remarkably powerful approach to conducting requirements analysis.

Show Notes Transcript

Analysis is a fundamental part of system's development.  It is also one of the most difficult things to do right, and since everything that follows is based on it we need multiple skills to do it correctly.  Commonality-Variability Analysis, as suggested in the work of James O. Coplien, is a remarkably powerful approach to conducting requirements analysis.

Sharpen Your Analysis Skills With CVA

Most complex things that people do are either:

• Primarily focused on the product, or
• Primarily focused on intellect

For example, a master cabinet maker is paid to make a cabinet. The cabinet is the point.  It's likely this person is also quite intelligent but even if they are simply a savant about cabinets you don't really care if they are smart in other ways.  On the other hand, a college professor is paid to be smart.  They may produce things like papers and teach courses, but it's what's between their ears that the university values.

Systems development is always both things: We are paid to make smart decisions, but also to make good things.
The first part, the intellectual part, concerns analysis and design. 

The second is all about our ability to create value using various technologies.  You must know what to make and how to make it well.

But it all starts with requirements analysis.  If we cannot do that effectively we are quite likely to build the wrong thing to some degree.  Even the most beautifully designed and skillfully crafted system is worthless if it does not provide what the stakeholders need, which is expressed in their requirements.

Requirements, unfortunately, are very often incomplete, misleading, confusing, or just plain wrong.  We need a way to interpret them that increases clarity, reveals gaps, and corrects misunderstandings.  Actually we need more than one way to do these things, because no single analysis technique will work in all cases.  You need a toolkit of such techniques, and you need to become good at all of them if you are involved with systems development in any way.

In past episodes I have attempted to show that collaboration through writing acceptance tests (ATDD) provides, among other things, a great way to conduct requirements analysis as a team.  I firmly believe this to be true.

That said, you'll need more.  One of the most powerful analysis techniques I have ever encountered is called "Commonality-Variability Analysis", from James O. Coplien's doctoral work.  It is part of what I teach in my Design Patterns Thinking class, as analysis and design are inexorably linked.

CVA is very powerful but also quite simple for human beings because it utilizes an aspect of cognition that we all share.  That also means it is a technique that is perfect for collaborative work since everyone, both technical and non-technical, can do it.  It's something I teach to every team I work with, and it never fails to be extremely valuable to those who learn it.

If you'd like to know more, I did a very detailed presentation on this technique, with real-world examples, in a PMI webinar that was recorded.  It's only about a half-hour long, but I think you'll benefit from watching it.  The URL is in the transcript.

Presentation:

https://www.projectmanagement.com/videos/872239/Commonality-Variability-Analysis