Summary -
In this topic, we described about the below sections -
Why new SDLC model required?
In traditional development model or waterfall model, all requirements need to be gathered and freezed before moving to the analysis phase. The usage of the traditional approach required a change in the below scenarios -
- If any new requirements found after the requirements gathering phase, those requirements are handled as a change request after the freezed requirements deployment or after the freezeed reqirement moved to QA. This triggers the rework and costs more to the client.
- The requirements gathering consumes more time to provide all at a time. This requires more detailed analysis and cost more to client.
- The traditional approach almost fail when there are dependent requirements gathering. For example, module B functionality depends on the behaviour of module A and module B requirements gets clear when they came to know that how the module A behaves with new requirement. So to change the module B, they need to wait until the module A changes deployed to production or atleast the changes deployed to pre-production. This process costs additional to client.
- The traditional process is too slow. There is no parllel work progress in the traditional approach. Due to this, client has to wait more time to complete all phases to deploy in production. This might costs a profit sometimes.
- Client can't review until the project is ready or deployment completed. Due to this, client can't able to provide a constant feedback or suggest corrections. And also customer has no view on the progress.
There are many more other reasons that triggers the business people looking for the better and dynamic development model to handle their projects.
What is Agile Model?
Agile Model is a people-focused, results-focused continuous iterative process involving the development and testing activities together throughout the Software Development Life Cycle (SDLC). It is a combination of both Iterative and spiral model.
In Agile, every project is divided into releases and each release is further divided into small time frames called iterations/sprints. Each iteration lasts for 2-4 weeks.
To develop and implement the Agile Modeling methodology, the teams working on the model should be ready to follow the Agile Model Core Principles.
Why Agile Model?
Unlike the traditional waterfall model, it is dynamic that allows a requirements change by the end user in between the development process. This Agile model can be used when introducing new changes to the existing product as it is less cost effective.
Agile model takes less time and customer has transparency on the progress of the product being developed when compared to the traditional Waterfall model.
Agile software development model was mainly designed for helping developers to develop the project that can adapt chage requests quickly. With this a project developed at the rapid speed.
The Agile model has started earning popularity due to its flexibility and adaptability. The most popular Agile models are Rational Unified Process, Scrum, Crystal Clear, Extreme Programming, Adaptive software development, Feature Driven Development and Dynamic Systems Development method. All these methods are now collectively known as "Agile Methods".
When to use Agile Model?
Agile model uses when -
- 100% requirements are not clear and some requirements might require the system behaviour after new changes.
- client wants a daily interactions with team.
- requirement changes has a huge business impact and should develop in very short time.
- try to avoid the communication gap between the teams.
Agile Model Process -
The key step in the whole agile process is iteration. Each iteration has different phases in it to deliver the working software or product at each iteration. The Agile process have different steps in handling the project. Those are -
- Concept - Select the project. Project prioritized and added to the project development queue with schedule. And also plans the timelines for the project.
- Inception - Initiate the project. Identifies the team and the project high level concept has been discussed with Team members.
- Spints/Iteration - The team works to deliver working software based on iteration requirements and feedback.
- Deployment - Deploys the product to production. Once the developed product is passed all the test cases at the end of iteration, it gets deployed to production. If not passed, will gets moved to next iteration to resolve the issues.
- Maintenance - Post deployment activities.
Iteration Process -
Agile model phases are specified below and those are -
- Requirements gathering
- Analysis
- Design
- Development/Construction
- Testing/ Quality Assurance
Lets get some understanding of the above phases -
- Requirements gathering - Requirement Gathering is the most important phase. In this phase, business analyst and project manager participate in the meetings with client to gather the requirements. Defines the requirements for the iteration based on the infromation from product backlog, sprint backlog, customer and stakeholder feedback
- Analysis - Once the requirements gathering phase completed, Business Analyst (BA) converts the business requirements into technical requirements with the help senior team members like SMEs (Subject-matter experts) and team leads. The technical requirements documented in a document called SRS (Software Requirement Specification) document.
- Design - Design phase turns the requirements from SRS into a design plan called the Design Document Specification (DDS). Developers takes the requirements from SRS and creates their rough designs, working models, specifies how the software works, how the new design looks, how the control flow from screen to screen etc,. Design phase also models the design that includes - architecture, user interface, platforms, programming, communications and security etc,. In another words, overall system architecture is designed by defining their functionality of each module that includes their interaction with cross-systems.
- Development/Construction - Once the DDS gets approved, Development phase gets started. Developers start programming with the code by following organization coding standards. Once coding completed, the programmers uses the programming tools to compile and debug the programs to verify weather new code is working or not.
Developers from all levels in the team involves in this phase. The code is documented as Source Code Document (SCD). Developers has many responsibilities in this phase namely - coding and compilation of source code to make error free. - Testing/Quality Assurance - Once the coding completed, the code gets tested to check whether it is working as expected or not. The developer performs the initial testing that are unit testing (UT) and/or Application Integration Testing (AIT) before handover the code to the testing team. If everything is fine, code gets migrated to the testing environment. Testing team will perform the testing from that point. The various testings the testing team performs are - quality testing, system testing, acceptance testing and approval testing.
Testing team thoroughly tests for the defects by follwing the process defined in STLC (Software Testing Life Cycle) to make sure that each and every component or module is working fine.
Advantages -
- Increased customer satisfaction.
- Continuous delivery of working product at the end of every iteration.
- Continuous attention, feedback and improvement to good design.
- Daily interaction with client.
- Realistic approach of Software Development.
- Values employees.
- Eliminates rework.
- Change in requirements are welcomed at later stages of development if required.
- Cost saving and effective.
- Not required to get ready the whole requirements before starting project.
- Increses the development speed.
- Faster turn around times.
- Promotes team work.
- Reduces the risk factors as the deliverible product is viewable to customer before deployment.
- Improves the focus on the quality of the product.
- Imporves the more transparency.
- Works better for environments that keep changing frequently.
- Decreases the documentation work.
- Parllel development gets enabled.
- Excessive planning is not actually required.
- Easily manageable.
- Flexible for developers.
- Faster detection of issues and defects.
- Provides excellent project control.
Disadvantages -
- Not suitable for projects having complex dependencies.
- Low documentation.
- Risk of sustainability, maintainability and extensibility would be more.
- Only senior developer or experts can take the critical decisions.
- Client should have known the outcome of project before starting. Otherwise, the project easily go off track.
- Estimating the whole project cost at the starting of the project iis difficult.
- Costs more compared to traditional or waterfall model.
- More time required because of the daily interaction with client.
- Lacks overall project design.
- Requirements that are too big do not fit into the iterations.
- Short cycles do not leave time for think design process.
- Huge dependency on the customer interaction, so if customer is not clear, team would be driven in wrong direction.
- Individual dependency would be so high as there is minimum documentation that has to be generated.
- Due to lack of documentation, cross technology training to the team members would be so difficult.