Page 38 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 38

Principles of Software Engineering



                   Notes         the project control list is empty, at which time the final implementation of the system will be
                                 available. The iterative enhancement model is shown in Figure 2.4.

                                                     Figure 2.4: The Iterative Enhancement Model

                                       Design  0            Design  1                          Design  n




                                       Implement  0         Implement  1                       Implement  n



                                       Analysis  0          Analysis  1                        Analysis  n

                                 The project control list guides the iteration steps and keeps track of all tasks that must be done.
                                 Based on the analysis, one of the tasks in the list can include redesign of defective components
                                 or redesign of the entire system. However, redesign of the system will generally occur only in
                                 the initial steps. In the later steps, the design would have stabilized and there is less chance of
                                 redesign. Each entry in the list is a task that should be performed in one step of the iterative
                                 enhancement process and should be simple enough to be completely understood. Selecting tasks
                                 in this manner will minimize the chances of error and reduce the redesign work. The design
                                 and implementation phases of each step can be performed in a top-down manner or by using
                                 some other technique.

                                 Though  there  are  clear  benefits  of  iterative  development,  particularly  in  allowing  changing
                                 requirements, not having the all-or-nothing risk, etc., there are some costs associated with iterative
                                 development also. For example, as the requirements for future iterations are not known, the
                                 design of a system may not be too robust. Also, changes may have to be made to the existing
                                 system to accommodate requirements of the future iterations, leading to extra rework and/or
                                 discarding of work done earlier. Overall, it may not offer the best technical solution, but the
                                 benefits may outweigh the costs in many projects.

                                 Another common approach for iterative development is to do the requirements and the
                                 architecture design in a standard waterfall or prototyping approach, but deliver the software
                                 iteratively. That is, the building of the system, which is the most time and effort-consuming
                                 task, is done iteratively, though most of the requirements are specified upfront. We can view
                                 this approach as having one iteration delivering the requirements and the architecture plan,
                                 and then further iterations delivering the software in increments. At the start of each delivery
                                 iteration, which requirements will be implemented in this release is decided, and then the design
                                 is enhanced and code developed to implement the requirements. The iteration ends with delivery
                                 of a working software system providing some value to the end user. Selecting of requirements
                                 for iteration is done primarily based on the value the requirement provides to the end users and
                                 how critical they are for supporting other requirements. This approach is shown in Figure 2.5

                                 The advantage of this approach is that as the requirements are mostly known upfront, an overall
                                 view of the system is available and a proper architecture can be designed which can remain
                                 relatively stable. With this, hopefully rework in development iterations will diminish. At the
                                 same time, the value to the end customer is delivered iteratively so it does not have the all-or-
                                 nothing risk. Also, since the delivery is being done incrementally, planning and execution of each
                                 of iteration is done separately, feedback from iteration can be incorporated in the next iteration.
                                 Even new requirements that may get uncovered can also be incorporated. Hence, this model of
                                 iterative development also provides some of the benefits of the model discussed.




        32                                LOVELY PROFESSIONAL UNIVERSITY
   33   34   35   36   37   38   39   40   41   42   43