Build the Right Product

When we are deeply involved in a process we often forget about the reason why we are doing the work. This is not necessarily bad because it allows us to be precise and accurate with the methods and techniques we are using. However, if we forget the final goal, we can create perfect models that do not solve anything.

The purpose of the verification and validation is to improve the quality of the descriptions. As we have seen, the development of software is a process of transformations of descriptions. So, to ensure the quality of each description we have to compare it with the descriptions that are upstream, in the sequence of transformations. We know that in P- and E-systems the initial description does not exist explicitly, it is in the mind of the client. In these systems, the first written description is already a model of the problem, not the problem itself. Here resides the difference between validation and verification.

In verification we check the quality of a description against an explicit description, usually a specification of the problem. From this verification we can then conclude whether we have done a correct transformation but it cannot tell us if the artefact solves the problem. Therefore we can only conclude that we did it right. On the other hand, validation checks the description against the needs of the client, the unwritten specification of the problem, to allow us to conclude whether we wrote the right description.

In software engineering sometimes we build a product right which is not the right product. The final description, the software artefact, was correctly implemented but it does not solve the clients’ needs.

To ease verification some software development approaches define several transformations such that the conceptual distance between each transformation is small, and so, it is easier to verify the correction of descriptions. On the other hand, human-centric software engineering approaches reduce the number of transformations and emphasize validation techniques, like testing in XP.