In this lesson, we are going to learn about Incremental Models. So in incremental model instead of building the whole application in one shot, you build in increments. So you can still use your waterfall steps, but only for that particular increment. So you will do your requirements, design, implementation, testing and deployment but only for part of the application. And if that increment is useful for users, you can potentially deploy this and have users use it. So once the first increment is ready, you can start with the next increment and then once the second increment is done, then you can start with the third increment. And then of course you can overlap these different increments as well. So, as you can see here, while the testing was going on for the first increment, we started the requirements at the same time. And when the implementation was being done or the testing phase was just about to begin we started the requirement phase for the increment number N. All right, so you can overlap these models and not only that, you can actually use different models for each of the increments. So for example, for this increment you could have used Sashimi Model, for this one you could have used the Waterfall Model and for this one you could have used some other model. So fairly easy to use different models for each of these increments. So in terms of the predictive and adaptive scale, I would say this depends quite a bit of how much overlap is there and how much feedback from one increment you apply to the next increment. So, if you don't apply any feedback from one increment to another increment and you just keep building, then I would say it's more towards the predictive model. But if you apply the feedback from one increment another one, it goes towards the adaptive model. And also how much you're different layers overlap will impact that. So that's why there is a big range where this model fits between predictive and adaptive model. In terms of pros and cons, if you look at the pros of this model, you deliver value early, in those cases where that increment delivers value to the customers. Sometimes if you are building a car and you just build the tires first then maybe it's not that useful but if you build it in such a way that the part of the application that you're building is actually useful for user, then it can deliver value earlier. The second thing is you can actually get feedback from one increment and apply that feedback to the future increments. So that's another benefit of this model. In terms of cons, it may result in a rework. So, since you didn't know all the requirements up front and you started doing the requirements of the next increment later on, you may end up doing extra work in increment 2, or increment 3, or future increments because you didn't know about some of the requirements earlier in the phase. And then of course if there is required changes, then it may cost more as well. So those are some of the disadvantages of this model. So where do you use this model? If the organization can benefit from early delivery of part of the application or part of the product then you can use this model and also if the feedback from one increment can be applied to the future increments, then again this model will be very useful. Now there are several other variations of this model. And one of the variation is where you do all your requirements in one phase, so you don't do the requirements in each phase. So in this way, you will know all of your requirements in one shot and so, hopefully it will decrease your rework but then it will make this model a little bit more predictive. So in this case, we are doing all the requirements upfront but then we are doing the design, implementation, testing, and deployment for each increment separately. And then there is another version of it where you do your requirements in one shot. Then you do the complete design of the system. And then the only part that you increment is from implementation to the deployment. So you will do your design and then you will, part of it, implement it, test it and then deploy it so the increment is done and so on. So there are these three variations that you can do for incremental model.