Thursday, 3 March 2011

Primary and Secondary Qualities

Requirements specifications is a "representational" perceptual model that is built based on inner "ideas", "impressions' or "sense data" of an observer (requirements study team member) and his inferences. As such what is real and what is represented always differ.  We can see that there will be differences between what is expressed and what is represented. If we find a way to directly establish a link between the observer's inner world and external object, we can have better representation of requirements. However, major hurdle to achieve this is unreliability of our perceptions.
To address such an unreliability and thereby to reduce the gap between perceptual model of our inner ideas and outer objects , we need to understand that there are two types of qualities, namely, Primary Quality (Absolute Quality) and Secondary Quality (Relative Quality).
The color of the User Interface is not a property of the screen itself but a product of the interaction of various factors, including certain physical attributes of the screen such as power supply, resolution, the peculiarities of our own sensory system; and the environmental conditions prevailing at the time of the observation. All these properties do not belong to the screen as such but are extrinsic. Such properties are said to be "Secondary Qualities". These qualities vary based on time and conditions and as such they define relative quality.
At the same time, a screen has certain true properties which are intrinsic, such as its size and shape, which do not depend on the conditions under which the screen is observed or on the existence of the viewer. These are defined as "Primary Qualities" of screen. Primary qualities also help us in explaining and also, developing an experience of the secondary qualities. Unlike secondary qualities, our ideas that we develop in our mind  on primary qualities closely resemble the the physical object itself. Thus, primary qualities of physical objects define absolute quality.

We can extend these concepts of primary and secondary qualities to requirements specification. While capturing requirements always think on primary qualities of clients wants and needs. If you are able to identify such primary qualities, then you can have concrete requirements that are beyond skepticism. Such requirements which can be represented using primary qualities are implementable and measurable. For example, requirements like accuracy of numbers, length of any text field, number of permissible users, number of transactions that need to be supported by the system etc are primary qualities.

On the other hand, secondary qualities of requirements can not be concrete and as such they are the basis for skepticism. Secondary qualities can not be implemented to perfection and also, can not be measured. For example, requirements like system shall be user friendly, system shall have recoverability feature, user interfaces shall be pleasing etc are secondary qualities.

Thus, while arriving at requirements specification if we focus on primary qualities  then our requirements will be concrete. Else requirements will be representation full of skepticism.

Wednesday, 2 March 2011

Random thoughts that rule the world- My first posting

My friend Srini Kulkarni - Software Testing Generalist, Systems thinker, Skeptic (on twitter @shrinik) during tweeting asked me why I do not yet sharing my thoughts through my blog and asked me to create the one. Now I have the one Srini and I named it as I also promise that I will share my ideas. Here we start. That too from the point that I and Srini were discussing.

"Now put together these two things "quality" and "requirements" - what we get?" Shrini asked me.
My answer was - "Gap between them represents defects. Fulfillment results in acceptance"
Since we had space restrictions we could not go further in our tweeting too far. Here I continue.
Gap always exists and also,  in practice, acceptance also takes place may be with certain conditions which need to be addressed within a client specified time. And life goes on! However I am not very much concerned with this "business drama" but want to show some way to address them.  
As a step forward, here are some billion dollar questions- 
"Why there are always gaps between what was agreed upon (requirements) and what is delivered (product)?" and "Why we need to live with these defects and their impacts?"
My answer has two folds-
1.It is because of the fact that requirements engineering is the least matured phase in software engineering and thus requirements specification that emerges out of it  is not concrete. We use such requirements as the basis for development and testing. As such both development and also, testing will not be good. Good output always requires good input. Thus what we  require as starting point is quality requirements, means, requirements that are clear, complete, unambiguous, verifiable, and traceable. 
In summary, we need to have quality requirements and also, we need to measure clarity, completeness, unambiguity, verifiability, and traceability of requirements so as to define their quality. But How?? I will answer these in near future.
2. Definition of quality can not be generic. Meaning of quality is always specific to project and product. In other terms quality is always relative. Meaning of quality is highly diversified since stake holders and their requirements & expectations are different and many a times conflicting. Thus we need to arrive at definition of quality specific to that product and project before we start our project. But, again, How?? I will provide insights on it as well.
Now I look forward to your thoughts and points ..