What is the best way to build high quality software product? How can we reduce the time it takes to build software?
Answer: In my opinion, getting the correct requirements at the beginning of the project is the best way. It will help build better quality software, reduce the effort in re-works and much less testing time. The more changes to a software project during design, coding or testing phases will result in the possibility of more defects in the software product. Once defects get into the software, you must test and remove them and it takes time which may delay the project. Having quality requirements will help the delivery of quality software.
Most managers, especially people who do not have software development experience always push for coding as they think coding is software development. They do not want the team to spend time in requirements or design phases because they do not see any “development”. This lack of knowledge about software development lifecycle has resulted in many projects skip these first two phases and hurry go to coding phase. The failure to obtain accurate requirements will result in higher cost, more time, and more defects in the software. The costs of fixing defects will increase at least ten times for each phase that means at coding phase, it will cost 100 times to fix a defect than fix it during requirement phase. It is also easier to find and fix defects during the requirements phase or design phase than during coding or testing. A bad requirement requires a lot of rework and could cause project failure. The effectiveness of the team to deliver quality software depends on how good and correct the requirements are documented. That is why at the end of requirement phase, we must conduct a thorough review to ensure that requirements are complete, correct, essential, feasible and testable.
Unfortunately even today, very few training programs are focusing on requirements engineering but still put a lot of emphasis on programming languages. By having appropriate training, requirement engineers or business analysts can work closely with users to learn about the business processes so they can understand users’ needs. By understand users’ needs and how the software will be used, they can get accurate and complete requirements documentation for the software project.