Let's Get Connected!

Enhancing Software Quality PDF Print E-mail
User Rating: / 4
PoorBest 
Technology
Written by Deepti Sharma   
Tuesday, 21 July 2009 15:05
Article Index
Enhancing Software Quality
Page 2 Enhance Your Software
All Pages


Read on to learn all about what goes into improving the quality of software products.

A customer trusting you with a project, puts a great deal of responsibility on your shoulders. You have to deliver a product that meets high quality standards, and is better than others in the market. But what does it take to deliver a high quality product?


Software quality

In simple terms, your software is said to be high in quality when: It meets customer requirements and satisfaction.

  • It is (close to being) defect-free.
  • It is delivered as per the committed schedule.

Essentials of a high quality product

The following are some of the prime contributors to delivering a high quality product:

1. Planning

It's not the plan that is important, it's the planning.
- Graeme Edwards

The success of a project largely depends on the amount of thoughtful processes applied to plan it. Whatever be the task, big or small, it is important to plan for it. List down the activities involved in the task, and lay down the various milestones to be achieved. Of course, to do that, it is important to understand the customer's requirements clearly. Deliberate on this aspect, get your understanding confirmed by the customer, and then prepare a plan.

Nowadays, the emphasis is on making use of agile methods for planning. The customer requirements may change every now and then; your plan should be able to adapt to those changes quickly and easily.
To prepare a realistic plan, make use of past data (collect metrics for the products developed earlier), and the resources that you have in hand.

PlanningFig1Figure 1: Planning for a project

Using historical data for planning will lead to better estimates. Your aim should be to reduce the gap between the ‘estimated time' and the ‘actual time spent' on an activity.

One can use a Work Breakdown Structure (WBS) to chart out the Project Plan. The entire project is divided into various sets of activities, which are then broken down into various sub-activities.

PlanningFig2Figure 2: Breaking a task into sub-tasks

2.Commitment

In software development, a commitment is an agreement between an organisation and the customer, where the organisation promises to fulfill some or all the requirements of the customer.

Commitment

While making a commitment, it is important that we do not over-commit to the customer. Do not promise more than what you can deliver. Will it not be better to under-promise, and deliver more?

3.Tracking of tasks

Track your tasks on a regular basis. Set specific daily/weekly targets. Tools like a Gantt Chart can be used to monitor the project's progress and keep track of the various milestones achieved or yet to be achieved.

While monitoring the tasks, ask the following questions:

  • "Is my task on schedule?" Check the deadlines.
  • "Is there any delay?" If yes, then why? Were there any unforeseen issues? What could have been done to avoid such a situation in future? [Please note that deliberating on these points would help you in making more accurate estimations in the future]
  • "Do I need to re-evaluate my plan?"

In case the project's progress is not as per schedule, update the plan. Reschedule it using the lessons learnt. Always keep the customer informed of the status.

You should see to it that there is no hurrying up of tasks at the 11th hour. Avoid unnecessary panic. Last minute scribbling may fetch you some marks in the exams, but can prove costly when applied to software development.

4.Being honest

Be honest to yourself and the customers. Never get tempted to please the customer, by providing false information.

Do not try to sweep things under the carpet. Whatever be the status, the customer must be promptly informed. Hiding facts will have disastrous consequences in the long run.

5.Humility and courage

Confidence comes not from always being right but from not fearing to be wrong.
- Peter T. Mcintyre

Humility and courage are vital components for delivering a high quality product. One must be ready to accept ones mistakes, and have the courage to learn and improve upon them.

6.Team work

What is the difference between a community and a team?

A community involves a group of people living in a particular locality. A community may have winners/losers. A team, on the other hand, involves a group of people, striving for a common goal. There are no winners or losers within a team.

Functioning as a team is a skill. Delivering a high quality product is not the responsibility of any one individual. It's the entire team that is responsible for it. If the product fails, each team member is responsible for it.

7.Peer review

Review is an important part of teamwork. Peer review refers to the participation of team members in the development and assessment of tasks/activities performed by an individual.

In the peer review process, a member who wishes to get an item (say ‘X') reviewed will send a mail to the team requesting their opinions.

Now, the team members review the item ‘X' and send their comments about it.

Benefits of the peer review process

  • Enhances information sharing:Through the peer review process, each team member gets to know about a task done by other member. In this manner, though all the team members may be working on different phases/modules, effectively, all of them work together on all the phases.
  • Early detection of defects: During the review process, it may be noticed that the selected approach is incorrect, one that could lead to problems at a later stage. Thus, the peer-review process enables capturing defects at an early stage.
  • Plenary review enhances quality: Suppose a team comprises of 10 members. An artifact that is sent for review would be reviewed by 10 members, individually. So, the document is reviewed to its plenitude.
  • Review at ones own pace: All individuals have their own pace of understanding and grasping things. Hence, during an on-the-spot review, certain issues might go unnoticed. Offline reviews enable individuals to analyse/review at their own pace.

8. Quality assurance and quality control

Quality assurance involves checking that a product is defect-free and that it meets customer requirements. Quality assurance is a part of the entire software development process:

  • Preparation of requirement specification
  • Design and algorithm-writing
  • Coding and unit testing
  • Integration testing
  • Peer reviews, meetings
  • Documentation

Quality control is the final check before delivery of the product. For example, the Regression Test.

9. Prevent defects and catch them early

A quality process should produce close to zero-defect software that meets the user's requirements. The following points should be kept in mind to prevent defects:

  • Avoid introducing new defects in the code
  • Use a checklist
  • Code should be simple, since it is easy to maintain
  • A complex design leads to poor testability
  • The design should centre around the user
  • Test as you code
  • Change of code should support ease of testing, debugging and modification

By catching defects early, the amount of time spent in later phases, such as during testing, is reduced. Software engineers are encouraged to perform rigorous reviews at each stage of software development. Reviews must be performed at the design and the coding stage to capture defects. The use of checklists is recommended to ensure that the mistakes are not repeated.

10. Product responsibility

The principle of ‘Caveat Emptor' (buyers beware) implies that the customer is responsible to check the product before buying. However, in software development, you need to apply the principle of 'Caveat Venditor' (the seller is responsible to check for the completeness and correctness of the product). Make sure that before shipment, all items are correct and complete as per the agreement.

Conclusion

When the customer comes first, the customer will last.
- Robert Half

As a thumb rule, you are successful if you are able to make products that help your customers stand up to their competitors. So, apply the above practices to your software development process, and let your product speak volumes of its quality!

The author is a team leader at Acme Technologies, Programming Tools Business Unit. She can be reached at: This e-mail address is being protected from spambots. You need JavaScript enabled to view it . The article was first published on www.techonlineindia.com and is being reprinted in itmagz.com with the author's permission.

 
+/-
Write comment
Name:
Email:
 
Website:
Title:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss:
:D:pinch::(:shock::X:side::):P:unsure::woohoo:
:huh::whistle:;):s:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.
+/- Comments
Add New Search RSS

3.25 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."