Once we have implemented the solution, we are not done with the problem because
◦ the solution may not be the best (most efficient)
◦ the solution may have errors and need testing and fixing before we are done
◦ the solution may, at a later date, need revising to handle new specifications
◦ the solution may, at a later date, need revising because of new programming language features
◦ all of these