SDLC: Importance of Requirement Analysis.
What is SDLC?
SDLC is the acronym for Software Development Life Cycle or System Development Life Cycle.It is a conceptual model that describes the stages involved in development of a software or a system. SDLC defines the important stages of development life cycle which are used by analyst,system designers and developers to plan and execute sequence of activities required to achieve a quality software or system at scheduled time and estimated cost. This process involves participation of client, analysts, designers, developers and end-users as per the current stage of SDLC. SDLC can be wrapped up into 7 stages:
- Initiation- Related to proposal.
- Planning Phase-Related to project plan and process map.
- Analysis-Related to Requirement gathering , Requirement engineering and requirement analysis.
- Design-Related to design of the system.
- Development-Related to Coding and Implementation.
- Testing-Related to testing of the project/software.
- Deployment/Implementation-Related to implementation of the project.
There are few Models which follows SDLC and adopted by many companies as a standard.
- Waterfall Model: Waterfall Model is similar to its meaning as it is a flow based model, in which there are phases which are followed one by one and once completed,none of the phase is repeated . If requirement stage is over,and project has moved to design stage then project will not move back to requirement phase. There is a big drawback involved as client will be able to review the product only when it is ready.
- Spiral Model: The spiral model follows waterfall model but in a different way.It considers only a node of a project to be developed as a prototype. It allows for incremental releases of the product and elements of the product can be added,when they become available
- Prototype Model: Prototype model is much more client friendly and helps developers, as they receive feedback from the client very early during the development. This feedback can be included in the project and improves quality.
- Agile Methodology: SDLC model is quite popular these days.It consists of cycles which are like smaller iterations. These iterations are short phases of regular SDLC which includes shorter versions of requirements, design, implementation and testing. After each iteration, a working version is created and shared with the client. Each iteration is an improvement over the earlier versions.
In our daily work, we see that there might be inconsistencies getting introduced in the projects. There are many solutions available in current world which are like, Precautions taken or new methodology adopted, to improve the process but that will always be a temporary fix and not a complete solution. With my previous experience, i can safely confirm that analysis is a phase, if done properly, can remove all the inconsistencies of a project. Let’s check this phase in detail.
What is a Requirement?
Web Definition says “a requirement is a singular documented physical and functional need that a particular product or service must be or perform”. It can be easily be defined as “a raw need which requires external inputs or efforts to deliver a final product”. Let’s take an example to understand more, If a client says that “they want a system to acquire feedback from their customers” then this can be termed as their requirement which requires inputs from design team to design such platform and efforts from technical team to convert the design into a product like feedback portal.
What are the type of Requirements?
Requirements can be classified into two broad categories.
- Functional Requirements : We develop projects/software to meet Functional requirements. These requirements are the desired functionality that the client want us to build and delivered to them. A functional requirement describes an interaction between the system and its environment.Let’s just say, decide the inputs to the system and output from the system considering all internal and external factors involved.A document is created logging all details which contains what a certain system has to do to achieve a certain specific objective.
- Non-Functional Categories: Non-functional requirements are the untold part of the project which are not communicated but readily understood as a Global standard.These can be understood as a support system of functional requirements. These are the expectations of client to showcase the product as a global product following global guidelines. A nonfunctional requirement can be described as a constraint on the system that like page load speed which can be optimized up-to a certain extent.Non functional requirements can be limited to Response time, security, reliability, accuracy, capacity and availability. Clients has to decide on all these parameters and take a call to achieve a workable solution.
What is Requirement Analysis?
This is the process of discovering, analyzing, defining, and documenting the requirements. It involves measuring each and every functional requirement, non-functional requirement,technical, operational, and transitional requirements.Requirements analysis involves regular interaction with client to determine their expectations, providing visual representations, creating mappings between loose ends,defining boundaries of the system.It can be described as a formal agreement between the client and the agency which clearly states as what will be in scope and what is out of scope and also pen down understanding of each party over the end result.
Why it is important or What can go wrong?
If requirement analysis phase is not completed properly or in a sluggish manner then there might be inconsistencies in the final product.Let’s check out the possible mistakes.
- During requirement gathering,Client is not able to provide more details or not sure exactly what is required. Basic reason is, client comes from a non-technical background and not familiar with technical jargons so they find it difficult to share the exact expectations. If requirements are not proper or not completely covered then there is no point of analysis. This will cause a loop of rework in case of development team.
- Irregular Communication between the engaged parties. I know from my personal experience that whenever there are more than one parties involved and they don’t interact regularly at the requirement analysis phase, then there is a possibility of disagreement in later phases of development.
- Timelines are not achievable. Client is always in a hurry to see the final product so they directly or indirectly plan unrealistic timelines and finally receive a half-baked product.
- When the clients receive their final product, by then, expectations changes and they want to introduce more new features which were not part of earlier documents. This behavior can be expected during the project also which pushes the team back on their schedule.
- Improper Documentation is another culprit which enhances the possibility of unachievable tasks.
How can it be improved?
- Provide visual examples to clients, if client is feeling difficulty in explaining the exact requirement.
- Minutes of meeting are the decision makers so should be prepared and circulated among the team.
- Language used to write requirements must always be easy to understand, precise and unambiguous.
- Clearly state the drawbacks of limited timelines, if not achievable.
- Buffer time should be documented for each activity in case any variation in requirements are expected.
- Have a clearly defined process for receiving, analyzing and incorporating change requests, and make your customer aware of his/her entry point into this process.
- Deadlines should be documented to ensure delivery date for each asset, if not received by due date then changes in the schedule should be permitted.
- Spend sufficient time to understand the objectives, deliverables and scope of the project.
- Document all the assumptions and let client be aware of each assumption.
- Clearly state all the functional requirement and non-functional requirement.
- Finally, proper time should be given to each parties to review the final document and provide sign-off.
The points given above might not be the final improvements,but if included, can improve the quality of the final product. Requirements Analysis is a phase which should not be underestimated as it will lay the foundation of the project.