Requirements analysis is an integral aspect of software development. Requirements aim to demystify the final system in terms of functionality, technical and non technical aspects, and operational complexities of the final system.
Before beginning a project, it is necessary to discuss the needs surrounding system development with the client. This involves charting boundaries of system development to define the scope of the software system to specify what is being developed through a mutual agreement.
The focus of this step is –
1. To prevent inconsistency in the final software system
2. To have a robust and proper requirement analysis phase to prevent scope creep
If the above mentioned focus gets diluted, the requirements won’t be captured properly resulting in scope misinterpretation in the estimation phase. This would mean, at later stages, the client would ask you to review and revise requirements and re-estimate. Adding more functionalities and hence requirements at later stages mean s that the initial estimation technique was not proper. Not only does it mean involving more time and effort for re-estimation, but also wastage of resources and cost implications.
Issues in the Requirements Phase
1. Requirements analysis may go awry due to improper interaction/communication with the client. If the client is from a non technical background, he is not able to accurately express his expectation in technical terms. You must ask the client the necessary questions to assess the technical aspects yourself.
2. Miscommunication also arises if a large group of people – expert estimators – are involved. Messages may get differently communicated to different estimators resulting in improper breakdown of system functionalities. This would result in inconsistency and disagreement at later stages of estimation.
3. Over optimism by developers or development firms result in poor estimation. If improper requirements analysis is coupled to this, project failure becomes inevitable. The focus of project managers and management to win the project make them estimate for unachievable timelines. Every client wants to get the product delivery fast and by agreeing to unrealistic timelines, it may lead to massive failures and cost implications due to poorly done requirement analysis.
4. Scope dilution is a common phenomenon. If loose ends remain in the initial phase, scope creep is certain. In addition to this, market and user expectations may change and so does the client expectation. The final product may not appear to be appealing enough. Your client might be tempted to add more functionality (not part of initial scope document) and delivering them in the specified timelines would mean gross miscalculation.
5. Lack of granular documentation and analysis of scope in the beginning would mean hidden loopholes related to technicalities causing estimation failures.
Tips – How do you Deal with Ambiguity, Conflict and Scope Creep?
1. Perfect requirements analysis would mean limiting ambiguity with respect to communication. The resource deployed for requirement capturing should be knowledgeable enough and well versed in the business domain knowledge.
2. Functionality related expectations have to be handled specifically. The language of documentation should be clear and unambiguous. Every developer should speak a common language with easy and simplified interactions.
3. Visual descriptions during client meetings are quite helpful in clarifying system expectation with respect to feature development. If the entire team focuses on a unified effort to ensure consistency between client expectation and the teams understanding of the final system, scope creep can be avoided.
4. Estimating effort, time and cost on poor scope definition would result in re-estimation causing time and cost implications. Defects in the requirements phase, when passed to other phases have greater reworking and fixing costs. Hence it is imperative to ensure scope definition and hence requirement analysis is perfect in its entirety.
5. You should communicate the risks and uncertainties related to scope estimation in the beginning and revise estimates as soon as greater clarity is achieved. However estimation and re-estimation is fought with risk as defects can crop up or poor scope gets defined. This paves the way for a structured scope estimation procedure through automation.
6. Employing a knowledge based resource/tool which is equivalent to a subject matter expert can be extremely beneficial for scope definition. The tool would allow the team to thoroughly understand requirements, produce consistent scope estimate and enable all concerned stakeholders to be on the same page.
8. A structured and well defined automation system simplifies scope estimation to a great extent. Once requirements analysis is done, the team can list the implementation types as per the requirements/features to be implemented and estimate effort and cost through a standardized set up.
9. A software estimation tools comes handy here as it ensures consistent and realistic estimation. The tool should be capable of doing a granular and detailed estimation of features based on number of screens, use cases, validations and complexity.
10. Quick FPA is one such software estimation tool which assists software development companies in scope, effort and time estimation. Additionally, project management and test management capabilities enable project control and management.
Requirement analysis lays the foundation of the scope and should be considered extremely important for scope definition. The tips mentioned above are not exhaustive, but help improve requirement analysis and hence scope creep to a great extent. For more information of the estimation tool mentioned above, please visit the Quick FPA website.