Design steps: problem (what to do) - "program (a clear step in the evaluation of each program) -" Program Select (KISS, extensibility, maintainability) - "Testing Integration -" a brief description.
Each step can also be subdivided analysis. If the design of the program, but also can be used pool design, code reuse and so on.
Reference: http://www.javaeye.com/topic/549303