Exclusively for you!! Trial version of Google Apps, Apply Coupon-CNHPGX6T6QRWGV!!

SDLC: Importance of Requirement Analysis.

SDLC
SDLC

SDLC: Importance of Requirement Analysis.

Welcome to CodeSpread!

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.

Author: hershey

A passion for knowledge drives me to do programming, A passion for programming drives me to create something different, A passion for creation drives me to spread the knowledge.

Share This Post On

4 Comments

  1. nice superb explaination

    Post a Reply
  2. thanks for the tutorial
    I am having a problem.
    The feature “Create SQL server database” isn’t available , I can’t select it.
    Can you help, please ?

    Post a Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

More from CodeSpread:

  • Agile Encounters UnpredictabilityAgile Encounters UnpredictabilityWhat is Agile? Wikipedia says “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through...
  • Importance of Software MaintenanceImportance of Software MaintenanceWhat is Software Maintenance? Software maintenance is an important phase of SDLC. It is defined as a set of activities to keep the software functional and behavioral as intended for as long as ...
  • Few lines about Static code analysisFew lines about Static code analysisStatic code analysis We divide the term into two parts: Static+code analysis. Static in programming can be referred to as non-running/non-dynamic and code analysis is a process where the code is...
  • Scope of Patterns in SDLCScope of Patterns in SDLCWhat is SDLC? To understand SDLC, refer article. What is a Pattern? Web Definition says “A pattern is the formalization of a problem/solution pair, used to make an object-oriented design decisio...
  • User Interface DesignUser Interface DesignWhat is a User Interface? Webopedia says “Abbreviated UI, the junction between a user and a computer program. An interface is a set of commands or menus through which a user communicates with a pr...
  • Freeze Business Logic Layer.Freeze Business Logic Layer.We regularly work on three-layer architecture for application development and always use some standard data layer and UI layer guidelines for design but what we always ignore is business logic laye...
  • Scrum is AgileScrum is AgileIn our last article,Agile Part 1, we have explained basics of Agile and now we are sharing an article on SCRUM What is SCRUM? Wikipedia says “Scrum is an iterative and incremental agile software ...
  • Risk Management in IT: Another step for QualityRisk Management in IT: Another step for QualityWhat is Risk? Risk is an uncertainty. Here, this pertains to a situation where It is difficult to decide that whether a particular event will occur or not. But if it occurs then what impact it wil...

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fwhen-viewstate-is-loaded.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fdecision-analysis-and-resolution-dar.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fidentity-as-sql-property-and-identity-as-sql-function.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Ffew-lines-about-fishbone-diagram.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fverify-existence-of-sql-tables-using-object_id.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fsunday-splash-lost.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fedmx-file.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Ffew-lines-about-sql-use-statement.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Ftransact-sql-try-catch-block.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fsunday-splash-it-girls-and-boyz.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179

Warning: file_get_contents(http://urls.api.twitter.com/1/urls/count.json?url=http%3A%2F%2Fwww.codespread.com%2Fhow-to-cross-page-posting.html) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/content/11/10088411/html/wp-content/plugins/most-shared-posts/msp-fetch.php on line 179