The problem definition clearly represents what a user needs from a system and the task a programmer wants to accomplish. Problem definition is not how to solve the problem but instead clearly defining what the actual problem is. A good problem definition represents the user needs and programmer goals without specifying how to solve the problem.