Iterative and incremental development model

advertisement
Krystian Blaszkowicz u1202807
Iterative and incremental development model
Iterative and incremental development type models are a combination of iterative method and
incremental build model. This model is widely used in large scale project development as in many cases
software development cycles have multiple iterations running at the same time overlapping each other
in layers. Over this research task I will be pinpointing key features like the advantages and disadvantages
of this development model to get insight if this is the suitable model for our project.
The idea of this model is to develop a method through repeated iterative cycles and in smaller
incremental portions at a time allowing software developers to take advantage of earlier iterations of
the development cycle providing space for learning and improvement. Learning comes from both the
development and use of the system, where possible key steps in the process start with a simple
implementation of a subsection of the software requirements.
The main functionality of these two models working in conjunction is that it adds a large amount of
flexibility to the project compared to other development models like waterfall where no task can carry
on without the preliminary one being completed.
Krystian Blaszkowicz u1202807
Phases of iterative and incremental development model
Inception identifies project scope, requirements (functional and non-functional) and risks at a high level but in
enough detail that work can be estimated.
Elaboration delivers a working architecture that mitigates the top risks and fulfills the non-functional
requirements.
Construction incrementally fills-in the architecture with production-ready code produced from analysis, design,
implementation, and testing of the functional requirements.
Transition delivers the system into the production operating environment.
Each of the phases may be divided into 1 or more iterations, which are usually time-boxed rather than featureboxed. Architects and analysts work one iteration ahead of developers and testers to keep their work-product
backlog full.
Larman, Craig (June 2003). "Iterative and Incremental Development: A Brief
History". Computer 36 (6): 47–56.
Advantages
Produces business value early in the development
life cycle. Better use of scarce resources through
proper increment definition. Can accommodate
some change requests between increments. More
focused on customer value than the linear
approaches. Problems can be detected earlier
Disadvantages
Requires heavy documentation. Follows a defined
set of processes. Defines increments based on
function and feature dependencies. Requires more
customer involvement than the linear approaches·
Partitioning the functions and features might be
problematic. Integration between iteration can be
an issue if this is not considered during the
development
Conclusion
In conclusion the iterative and incremental model combination is a viable option for our project as it has
enough flexibility to hold up against the problems often seen in software development like frequent bug
fixes and unsteady development stages that often need much backtracking. With the benefits there are
a few disadvantages that could greatly impact the productivity of this method on our project like the
large amount of documentation and communication that has to be taken to successfully complete each
task in the iterative model. There is a large amount of evidence providing that smaller projects like ours
may not fully use the benefits of the incremental model when it’s used in conjunction with the iterative
model. In the reality and scope of our project I think the advantages would be greatly maximized by just
sticking to incremental development models.
Krystian Blaszkowicz u1202807
Reference

Dr. Alistair Cockburn (May 2008). "Using Both Incremental and Iterative Development". STSC
CrossTalk (USAF Software Technology Support Center

Craig Larman, Victor R. Basili (June 2003). "Iterative and Incremental Development: A Brief
History". IEEE Computer (IEEE Computer Society) 36 (6): 47–56.
Download