As mentioned earlier, it is important to track the project and update the plan constantly. In this iteration we develop a more refined project schedule, as shown in Figure 5.7. The project schedule is kept in Microsoft Visio as a Gantt chart, showing the various tasks, their dependencies, and the project milestones. Online Photo Shop is the overall project, and we indent all other tasks to show that they are defined as subtasks.
Figure 5.7. Detailed Schedule
For easier readability, the requirements are grouped into blocks of related functionality. The name of the developer who is responsible for a block is shown in the resource column. Most of the blocks contain dependent or very small functionalities (or both). By combining these items into blocks, we make it easier to do tracking on a daily instead of an hourly basis.
In addition to the tasks themselves, including their estimated duration, other milestones are defined and connected to the related tasks (as indicated by the lines that go from the milestones to the tasks). The milestones are review points at which the status of the project is reviewed and necessary adjustments are made. In the case shown in Figure 5.7, the milestones coincide with the end (or the beginning) of the iterations. This works well if the requirements are broken into small enough pieces (no longer than two weeks' worth of effort). If you cannot do this, you must either break the tasks into smaller pieces or define interim milestones.
From the detailed schedule, you can see that even though the iterations are described in a serialized fashion, iterations are actually worked on in parallel. This practice shortens the overall duration of the project. In our case, working on development tasks in parallel works very well because the photo editor application and the online shop have no anticipated dependency. The schedule shown is constantly refined and updated throughout the development cycle. Also, we have added risk buffers to the schedule. These buffers give the project additional time to react to unforeseen problems. Nevertheless, the risk buffers should not be used for adding new requirements or implementing new features.
Tracking is done in small meetings. We hold one weekly meeting to discuss problems, ideas, and management-related items; in addition, stand-up meetings (which last about 12 minutes) are held every other day for frequent status updates (no discussions are allowed at these meetings). Stand-up meetings often lead to the calling of a regular meeting at another time so that team members can quickly discuss problems found.
From the Gantt chart we developed in Visio, we can export a variety of diagrams, such as a timeline diagram. These exported diagrams are very useful for reports to the customer or upper management (assuming that the plan is kept up-to-date).
Introducing Software Engineering
A .NET Prototype
The Photo Editor Application
GDI+ Graphics Extensions
Advanced GDI+ Operations
Dynamic Loading of Components
Accessing System Resources
Performance Optimization, Multithreading, and Profiling
Building the Web Application with ASP.NET
Security and Database Access