Problem-Solving Methods: Understanding, Development, Description, and Reuse.