
In a Software Development Environment one cannot say that the application developed is bug free either by the development team or the Testing Team but they continually by improving the coding and continually testing the application makes it stable so that the client can use the application with out any problems and also most of the time during release of the product there are some know issues and it is always better to avoid those issues if possible otherwise because of deadlines it can be known to the client upfront.
Every organization their development teams and specially their testing teams want the application to be 100% bug free and most of the time it is not achievable and in turn when it comes for testing there will be lot of unnecessary bugs which could have been avoided while coding and also there will be bugs which the client finds out which could have been avoided during testing phase.
It cannot be right if an individual is pointed but as a whole the organization, the teams should take up the responsibility to trace back to the problems and as to why issues are repeating or why it is reported by the client.
Here it would be worth to list out few common problems because of which bugs are found while in development and testing phases.
Common problems in the software development process
Poor Requirements Gathering: During the requirement gathering phase from the client if the requirements are unclear, incomplete, too general, or not testable, and also if the BA’s are not clear with the requirements they will translate those errors in to the specification documents and there will be problems here after.
Unrealistic Schedule: Most of the time to earn revenues it is evident that the companies try to do more work in less time and with less manpower try to cramp too much work in too little time and by which the deadlines are not met and if met there will be lot of know issues or even some times most of the low level features are not coded properly. They try to finish of coding some how and also testing and the problems are inevitable.
Inadequate Testing: Generally what happens is that testing is done after the entire coding is done and also very less time is given for testing. This is not the case with those who have adequate time but those with less time it is evident that a though testing is not done but only the main functionalities are tested and the flow of the system but no one will know whether or not the program is any good until the customer complains or systems crash.
Featuritis: Most of the time we see that if the client is not clear with what he wants it is evident that he will come up with new request in between the development and want those features to be implement along with what is being developed and is seen that requests on new features piles up as development is underway. This is extremely common.
Miscommunication: it is often seen that the developers don't know what's needed to be coded or do not have sufficient knowledge of the system and most of the time they are knowledgeable about their own sections or even it so happens that customer's have erroneous expectations and with these problems are guaranteed.
Common solutions to software development problems
Have Solid Requirements: The requirements captured are to be Complete , clear, Correct, Precise, Unambiguous and clear, Consistent, Relevant, detailed, cohesive, attainable, testable requirements that are agreed to by all players. Use prototypes to help nail down requirements.
Convert all the requirement into different specification documents. Do a team review of the requirements and add or omit where ever necessary and please get the sign off of the client on the requirements and the prototypes which can be a base for developing and testing.
Have Realistic Schedules: During the initial phase of the development life cycle allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation, personnel should be able to complete the project without burning out. Schedule everything down and have a buffer time for each of the phase and if needed try to convince the client for the extra time needed.
Do Adequate Testing: Testing should be started early in the development life cycle to avoid unnecessary bugs at the end. Testing should be done in each of the phase like requirements should be tested against the prototype to see that all the requirements are captured in the prototype, Test the Design documents to see that all the requirements are translated into the design documents, Do a proper unit test of the code during coding phase. By doing all these in the initial phase most of the bugs are stopped in different stages and when released for testing they would not find all those bugs and fixing time is saved a lot.
So start testing early on, re-test after fixes or changes, plan for adequate time for testing and bug-fixing.
Stick to initial requirements as much as possible: It is always better to get a sign off from the client for all the requirements and prototype and ensure that any changes will be done after the initial agreed delivery. Be prepared to defend against changes and additions once development has begun, and be prepared to explain consequences.
If changes are necessary, they should be adequately reflected in related schedule changes. If possible, use rapid prototyping during the design phase so that customers can see what to expect. This will provide them a higher comfort level with their requirements decisions and minimize changes later on.
Communication: In each phase of the development life cycle have walkthroughs and inspections when appropriate. If unable to meet up regularly make extensive use of group communication tools like e-mail, groupware, networked bug-tracking tools and change management tools, intranet capabilities, etc.
Ensure that documentation is available and up-to-date preferably electronic, not paper; promote teamwork and cooperation; use prototypes early on so that customers' expectations are clarified.
Post a Comment