Ideal Time Calendar Time
How close is this estimate to the previous one you did? What kind of formula did you use
to convert from ideal time to calendar time?
Now implement your solution.
Keep track of the time you actually spend on each task as well as the interruptions you
experience. Compare these times with your estimates. How high or low did you go? Is
there a pattern? How accurate is the total with respect to your original estimate?
If you performed the activities in this exercise, chances are that you found the esti-
mate was more accurate after dividing it into subtasks. You will also find that estimates in
general tend to be somewhat inaccurate, even for well-defined tasks. Project estimation
and effort estimation is one of the toughest problems in software project management
and software engineering. This topic will be revisited in detail in Chapter 13. For further
reading on why individuals should keep track of their development time, see Humphrey
(1996). Accurate estimation is very hard to achieve. Dividing tasks into smaller ones and
keeping data about previous tasks and estimates are usually helpful beginnings.
It is important that the estimation is done by the people who do the job, which is
often the programmer. The client also needs to check the estimates for reasonableness.
One big problem with estimating is that it is conceptually performed before the project
is done, but in reality a lot of information, possibly up to design, is needed in order to be
able to provide a good estimate. We will talk more about estimating in Chapter 13.
In this section we will discuss several implementations of our sorting program, including
two ways to implement the sort functionality and several variations of the user interface.
We will also discuss unit testing for our implementations. Sample code will be provided
in Java, using JUnit to aid in unit testing.
1.5.1 A Few Pointers on Implementation
Although software engineering tends to focus more on requirements analysis, design,
and processes rather than implementation, a bad implementation will definitely mean
a bad program even if all the other pieces are perfect. Although for simple programs
8 Chapter 1 Writing a Program
91998_CH01_Tsui.indd 8 1/10/13 6:19:01 AM