1.2.9 Discuss the importance of iteration during the design process.
Iterative design is a design methodology based on a cyclic process of prototyping, testing, analyzing, and refining a product or process. Based on the results of testing the most recent iteration of a design, changes and refinements are made.
Systems are used over long periods of time, thus they often require periodic improvement due to evolving requirements.
The System Development Life Cycle (SDLC) is composed of a number of clearly defined and distinct work phases that are used by developers to plan for, design, build, test and deliver/implement systems.
Planning & Analysis
Defines criteria for success.
Gathers information.
Defines scope.
Defines inputs and outputs.
System design
Where data models, prototype designs and testing plans are developed.
Suitable data structures and algorithms are proposed.
A more detailed feasibility report can be produced at this stage e.g. a cost-benefit analysis.
Development
The process of creating the system.
The coding phase.
Discrete tasks are identified and implemented according to a predefined timeline.
Testing
Where the tests planned during the design phase are applied to check that the system works correctly.
Implementation
Installation process is managed to minimize any disruption when transitioning between systems.
Evolution and maintenance
Small changes may be handled with maintenance.
Larger changes caused by internal or external factors might redefine the requirements of a system.
These changes require the development cycle to restart with a new phase of requirements analysis.
Most agile methods attempt to minimize risk by developing software in short timeboxes, called iterations, which typically last one to four weeks.
Each iteration is like a miniature software project of its own, and includes all the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation.
While iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration.
At the end of each iteration, the team reevaluates project priorities.
Agile methods emphasize realtime communication, preferably face-to-face, over written documents. Most agile teams are located in a bullpen and include all the people necessary to finish the software. At a minimum, this includes programmers and the people who define the product such as product managers, business analysts, or actual customers. The bullpen may also include testers, interface designers, technical writers, and management
It emphasizes working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods produce very little written documentation relative to other methods.
It emphasizes close collaboration between the development team and system users throughout the development of the system.
Individuals and interactions over processes and tools;
Working software over comprehensive documentation;
Customer collaboration over contract negotiation;
Responding to change over following a plan.
Software can be seen as a living organism which actively changes due to environmental change.
As long as the software is being used, especially when it has competition, iterations in agile software development drive the change
a breakdown of project activities into linear sequential phases, where each phase depends on the deliverables of the previous one and corresponds to a specialisation of tasks
less iterative and flexible approaches, as progress flows in largely one direction ("downwards" like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment and maintenance