When you choose a software development model, it is important to choose one that fits the project and the environment it is intended for. As discussed in the next section, the traditional models work for more static projects. By "static" we mean projects whose requirements do not change very much during the project and where the technical uncertainty is very low. More dynamic models, such as Extreme Programming, Adaptive Software Development, and Scrum, try to take into account the dynamics of changing requirements, uncertainty in technologies, and changing project goals, and therefore these models are more successful in dynamic circumstances.
Based on the descriptions provided here, we will choose the most suitable model for the Online Photo Shop project. If you have a solid background in software engineering models, you may want to skip the following section and go directly to section 2.4.