Monday, 24 September 2012

What is Quality in Terms of Software?


First I would like to highlight the question what is Quality? Quality definitions may differ from person to person. But finally there should be some standards. So Quality can be defined as

a.       Degree of excellence – Oxford dictionary
b.      Fitness for purpose – Edward Deming
c.       Best for the customer’s use and selling price – Feigenbaum
d.      The totality of characteristics of an entity that bear on its ability to satisfy stated or implied needs - ISO

-There are two important views on quality of software:

  1. The producer’s view of quality of software means meeting the requirements.
&
  1. Customer’s/User’s view of quality of software means fit for use or Required functionality is provided with user friendly manner.
These two definitions are not inconsistent. Meeting requirements is the producer’s definition of quality; it means that the person building the software builds it in accordance with requirements. The fit for use definition is a user’s definition of software quality; it means that the software developed by the producer meets the user’s need regardless of the software requirements.

The Two Software Quality Gaps

In most IT groups, there are two gaps as illustrated in “Figure”, the different views of software quality between the customer and the producer.


Figure:  The Two Software Quality Gaps

The first gap is the producer gap. It is the gap between what is specified to be delivered, meaning the documented requirements and internal IT standards, and what is actually delivered. The second gap is between what the producer actually delivers compared to what the customer expects. A potential role of software testing becomes helping to close the two gaps.

The IT quality function must first improve the processes to the point where IT can produce the software according to requirements received and its own internal standards. The objective of the quality function closing the producer’s gap is to enable an IT function to provide its user consistency in what it can produce. Usually, we call this the “McDonald’s effect.” This means that when you go into any McDonald’s in the world, a Big Mac should taste the same. It doesn’t mean that you as a customer like the Big Mac or that it meets your needs, but rather, that McDonald’s has now produced consistency in its delivered product. To close the customer’s gap, the IT quality function must understand the true needs of the user. This can be done by the following:

• Customer surveys
• JAD (joint application development) sessions – the producer and user come together and negotiate and agree upon requirements
• More user involvement while building information products

It is accomplished through changing the processes to close the user gap so that there is consistency, and producing software and services that the user needs. Software testing professionals can participate in closing these “quality” gaps.
These are some quality definitions from different perspective. Now let’s see how can one measure some quality attributes of product or application.
Following factors are used to measure software development quality. Each attribute can be used to measure the product performance. These attributes can be used for Quality assurance as well as Quality control. Quality Assurance activities are oriented towards prevention of introduction of defects and Quality control activities are aimed at detecting defects in products and services.
  • Functionality - A set of attributes that bear on the existence of a set of functions and their specified properties. The functions are those that satisfy stated or implied needs.
    1. Suitability
    2. Accuracy
    3. Interoperability
    4. Security
    5. Functionality Compliance
  • Reliability - A set of attributes that bear on the capability of software to maintain its level of performance under stated conditions for a stated period of time.
    1. Maturity
    2. Fault Tolerance
    3. Recoverability
    4. Reliability Compliance
  • Usability - A set of attributes that bear on the effort needed for use, and on the individual assessment of such use, by a stated or implied set of users.
    1. Understandability
    2. Learnability
    3. Operability
    4. Attractiveness
    5. Usability Compliance
  • Efficiency - A set of attributes that bear on the relationship between the level of performance of the software and the amount of resources used, under stated conditions.
    1. Time Behavior
    2. Resource Utilization
    3. Efficiency Compliance
  • Maintainability - A set of attributes that bear on the effort needed to make specified modifications.
    1. Analyzability
    2. Changeability
    3. Stability
    4. Testability
    5. Maintainability Compliance
  • Portability - A set of attributes that bear on the ability of software to be transferred from one environment to another.
    1. Adaptability
    2. Installable
    3. Co-Existence
    4. Replaceable
    5. Portability Compliance
Applying above quality attributes standards we can determine whether system meets the requirements of quality or not. As specified above all these attributes are applied on QA and QC process so that tester or customer also can find quality of application or system.

For More Information:
Quality Models:

ISO – 9126
http://www.angelfire.com/nt2/softwarequality/ISO9126.pdf

Sunday, 3 June 2012

Scope of Software Engineering

In continuation to my previous post, here I am going to write about Aspects, Scope and Design pattern of Software Engineering.

The scope of software engineering is extremely broad but in general, following five aspects are involved.

*      Historical Aspects
The term Software Engineering, first coined by NATO study group in 1967, building software is similar to other engineering tasks. To solve the software crisis, Software engineering should use the philosophies and paradigms of established engineering disciplines.

*      Economic Aspects
Feasibility study of new techniques should be done in terms of economics. If new techniques are not economically viable then it may lead towards the software failure due to Over Budget.

The computer scientist investigates several ways to produce software, some good and some bad, but the software engineer is interested in only those techniques that make sound economic sense.

For e.g.: If a new coding method is 10% faster than the currently used method. Should it be used?

Now in this scenario most of the peoples would go with the answer “Yes, of course”;

But in terms of Software Engineering answer would be “What would be the cost of implementation?”

*      Maintenance Aspects
Maintenance is described within the context of the software life cycle.
                                                              i.      Requirement phase
                                                            ii.      Specification phase
                                                          iii.      Planning Phase
                                                           iv.      Design Phase
                                                             v.      Implementation Phase
                                                           vi.      Integration Phase
                                                         vii.      Maintenance Phase
                                                       viii.      Retirement

More details about these phases would be share in upcoming posts.

*      Requirement, Analysis and Design Aspects
Under this aspect two commonly used design paradigms are given below:
a)      Structured Design paradigm
This design model is further divided into 2 different types
a) Action (Function) oriented, OR
b) Data Oriented

b)     Object Oriented Design paradigm
Both data and actions are of equal importance. System is collection of interacting Objects.

*      Team Development Aspects
Large software products are developed by large software teams. And members have different responsibilities like requirements, design, implementation, and testing. Activities betweens the teams have to be well organized for efficiency.

I hope this article will help others to understand the scope of Software Engineering and what other aspects are to be considering in Scope of SE.