- IBM Develops Analytics Technology For Telcos
- A USB Hard Drive That Asks For Your PIN Before Allowing Access
- An Information Security Health Check-up For IBM Clients
- Enterprise Applications And Mid-tier Caching
- India Needs More Homegrown PhDs In Computer Science
- IBM: An Education Tourism Programme For IT Professionals And Students
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?
In simple terms, your software is said to be high in quality when: It meets customer requirements and satisfaction.
Essentials of a high quality product
The following are some of the prime contributors to delivering a high quality product:
It's not the plan that is important, it's the planning.
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.
Figure 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.
Figure 2: Breaking a task into sub-tasks2.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.
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:
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.
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.
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.
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.
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
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:
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:
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.
When the customer comes first, the customer will last.
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:
. The article was first published on www.techonlineindia.com and is being reprinted in itmagz.com with the author's permission.