Summary -
In this topic, we described about the below sections -
Why Incremental Model?
There are some scenarios that the client need the software product to be developed in step by step. i.e. basic product deployment in first step and later they may want to develop the full product. And when client doesn't have full information about the rquirements, early release demand of the product, Software engineering team is not highly skilled, high risk people involved in product development, there is a requirement of new development model.The Incremental model satisfies all the above scenarios to develop a software product.
The main obejective of incremetal model is to develop a product with basic features in the first step and developing the product or adding new features in the further steps.
When Incremental Model used?
Increment Model mostly used when -
- Requirements are clearly specfied. However, some requirements needs time.
- When a demand for an early release of the product or need to get the product to the market early.
- When software engineering team is not highly skilled or resources with required skillset is not available.
- When high risk people are involved.
- When the developing product by product based company of their own.
- When a new technology used.
- When high risk features and goals.
- When projects has lengthy development schedules.
What is Incremental Model?
Incremental model is the software development process in which the requirements would be broken down into number of standalone increments of the software development cycle.
Every increment is treated as a sub project and that follows all the phases of the SDLC life cycle. Incremental development follows all the phases from Requirements, Analysis, Design, Development, Testing and Implementation. The developing functionality in each increment is an addition to the previously developed functionality. These increments cycles gets repeated until the targeted software is fully developed.
Every increment is assigned with a priority and high priority requirements of the software handled first. Once the increment is developed, then the specific increment gets freezed and moves to the next increment requirements.
At any specified time, the plan focuses on the current increment only without having any kind of long term plans. At each increment of the incremental model, there would be a thorough review to decide whether to continue to the next phase or not.
If the increment passed the testing or validation, them moves to the next increment in the queue as per priority.
Incremental model is preferred because of the way it divides the software development into sub increments and each sub increment is further developed by completing all the phases of SDLC successfully. By implementing this model, we can make sure that we are not missing any objectives that are expected from final software product. We can also assure that the final software is defect free and also every increment is compatible with the previously developed product and future developing product.
Phases -
Below are the list of phases in the incremental model -
Requirement phase -
This phase is very important in product developement under increment model of software life cycle. In this phase, business analyst and project manager participate in the meetings with client to gather the requirements.
Once the requirements gathering phase completed, Business Analyst (BA) converts the business requirements into technical requirements with the help from senior team members like SMEs (Subject-matter experts) and team leads. The technical requirements documented in a document called SRS (Software Requirement Specification) document. SRS consists of all the technical requirements for all system involved (that includes cross-applications if exists). SRS document should send for approval from the client or SMEs from client side to proceed with the next phases.
Design and Development phase -
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.
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.
Testing phase -
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.
Implementation phase -
Once the software is fully tested and has no defects or errors, then the test results and articrafts gor reviewed by the client and provides approval for deployment. Once the software got deployed to production, then the new functionality available to the end-users who are currently using the system.
Advantages -
- Lowers initial deliery cost.
- Less expensive and flexible to change the requirements and scope.
- Changes in requirements can be done through out the development stages.
- Costs less when compared to other models.
- Identify erros easily.
- Manages risk easily.
- Functionalities with high priority would be delivered early.
- Errors would be found in early stage itself.
- Divide and conquer rule would be used to breakdown the tasks.
- Reduces delivery cost.
- Incremental Resource Deployment.
- Customer can provide feedback to every product increment by avoiding surprises at the end of development.
- Flexible.
- Easy to test and debug smaller increments.
Disadvantages -
- Needs good planning and design.
- Need a good Analysis.
- Problems might be caused due to system's architecture.
- Every iteration phase is rigid and it doesn’t overlap with each other.
- Solving a problem in one unit would require correction in all the units and would consume lot of time.
- Modules should be clearly defined.
- Well-defined module interfaces are required.
- Total cost is much higher than the Waterfall model.
- Need a complete and clear understanding of the whole system before it broken down and built incrementally.