Understanding the Problem

A typical software development process follows these steps −

  • Requirement gathering
  • Problem definition
  • System design
  • Implementation
  • Testing
  • Documentation
  • Training and support
  • Maintenance

The first two steps assist the team in understanding the problem, the most crucial first step towards getting a solution. Person responsible for gathering requirement, defining the problem and designing the system is called system analyst.

Requirement Gathering

Usually, clients or users are not able to clearly define their problems or requirements. They have a vague idea of what they want. So system developers need to gather client requirements to understand the problem that needs to be resolved, or what needs to be delivered. Detailed understanding of the problem is possible only by first understanding the business area for which the solution is being developed. Some key questions that help in understanding a business include −

  • What is being done?
  • How is it being done?
  • What is the frequency of a task?
  • What is the volume of decisions or transactions?
  • What are the problems being encountered?

Some techniques that help in gathering this information are −

  • Interviews
  • Questionnaires
  • Studying existing system documents
  • Analyzing business data

System analysts needs to create clear and concise but thorough requirements document in order to identify SMART – specific, measurable, agreed upon, realistic and time-based – requirements. A failure to do so results in −

  • Incomplete problem definition
  • Incorrect program goals
  • Re-work to deliver required outcome to client
  • Increased costs
  • Delayed delivery

Due to the depth of information required, requirement gathering is also known as detailed investigation.

Problem Definition

After gathering requirements and analyzing them, problem statement must be stated clearly. Problem definition should unambiguously state what problem or problems need to be solved. Having a clear problem statement is necessary to −

  • Define project scope
  • Keep the team focused
  • Keep the project on track
  • Validate that desired outcome was achieved at the end of project