Java Reference
In-Depth Information
14.4
Iterative development
We obviously still have quite a long way to go from the outline implementation developed in
taxi-company-outline to the final version. However, rather than being overwhelmed by the
magnitude of the overall task, we can make things more manageable by identifying some dis-
crete steps to take toward the ultimate goal and undertaking a process of iterative development.
14.4.1
Development steps
Planning some development steps helps us to consider how we might break up a single large
problem into several smaller problems. Individually, these smaller problems are likely to be
both less complex and more manageable than the one big problem, but together they should
combine to form the whole. As we seek to solve the smaller problems, we might find that we
need to also break up some of them. In addition, we might find that some of our original as-
sumptions were wrong or that our design is inadequate in some way. This process of discovery,
when combined with an iterative development approach, means that we obtain valuable feed-
back on our design and on the decisions we make, at an early enough stage for us to be able to
incorporate it back into a flexible and evolving process.
Considering what steps to break the overall problem into has the added advantage of helping to
identify some of the ways in which the various parts of the application are interconnected. In a
large project, this process helps us to identify the interfaces between components. Identifying
steps also helps in planning the timing of the development process.
It is important that each step in an iterative development represent a clearly identifiable point
in the evolution of the application toward the overall requirements. In particular, we need to be
able to determine when each step has been completed. Completion should be marked by the
passing of a set of tests and a review of the step's achievements, so as to be able to incorporate
any lessons learned into the steps that follow.
Here is a possible series of development steps for the taxi company application:
Enable a single passenger to be picked up and taken to their destination by a single taxi.
Provide sufficient taxis to enable multiple independent passengers to be picked up and taken
to their destinations concurrently.
Enable a single passenger to be picked up and taken to their destination by a single shuttle.
Ensure that details are recorded of passengers for whom there is no free vehicle.
Enable a single shuttle to pick up multiple passengers and carry them concurrently to their
destinations.
Provide a GUI to display the activities of all active vehicles and passengers within the simulation.
Ensure that taxis and shuttles are able to operate concurrently.
Provide all remaining functionality, including full statistical data.
We will not discuss the implementation of all of these steps in detail, but we will complete the
application to a point where you should be able to add the remaining functionality for yourself.
 
 
Search WWH ::




Custom Search