Requirements specification Requirements capture

6.5 The incremental model 121 Figure 6.5 The incremental model Source: Adapted from Ould 1999. the system must also include the design of the all important system kernel struc- ture. Subsequent releases just need to focus on the individual increments and hence the design stage of these increments is reduced. The second important point to no- tice is that the increments are not all the same size – some will add more functional- ity to the system than others, and some will be harder to produce than others. Consequently, the design, build, test and implement stages of each increment may not be the same size. When planning to undertake an incremental development it is important to have an outline plan in place for the entire system at the start. You cannot just plan the easiest parts of the system, develop and release these to the user, and worry about the more complex aspects of the system later. It may be that later, as you tackle the harder parts of the development, you discover a fundamental flaw with your ideas that require you to rework significant parts of your program. This would mean that earlier, easier work that you did on your project would be wasted. You must ensure that you have a good understanding of how the overall system will operate before beginning work on the intermediate releases. When deciding which increment to complete next in a development it is useful to draw up a table of value to cost ratios. Value represents, on a 1-to-10 scale, the usefulness this increment will add to your system; 10 being extremely useful if not essential, while 1 represents perhaps ‘nice to have’ features that will be good to include in the system if time allows. Cost is also measured on a 1-to-10 scale and can be measured in terms of the time it will take you to develop that feature. For example, some function- ality that you estimate will take 15 weeks to design, program and test may be assigned a cost value of 10, whereas a simple piece of functionality that may only take a day’s programming may be assigned a cost value of 1.