The goal of problem analysis is to gain better understanding of the problem being solved before development begins. It is import to know why the problem is occurring, when and how often. Try to understand the first cause of the problem. Root cause analysis is a systematic way of uncovering the root, or underlying first cause of an identified problem or a symptom to the problem. Tools such as fishbone diagram or pareto chart can help visualize the problem.
Identify stakeholders – understand needs of users or other stakeholders. A stakeholder is anybody affected by the implementation of a new system or application. Probing questions include
- who are the users of the system?
- who is the customer?
- who else will be affected by the system?
Define a solution boundary- the solution boundary divides the world into two parts, your system and the rest of the things that interact with your system. The system boundary defines the border between the solution and the real world that surrounds the solution. A boundary is an interface between the system and the environment or other system. All interactions with the system occur via interfaces between the system and the external world.
Understand what is involved in solving the problem. This is involves a identifying what is information is needed and what information is available.
Identify constraints to be imposed on the system – a constraint is a restriction to the degrees of freedom we have in providing a solution. Constraints may be political, economical, environmental, technological, materials and resources as described below
- What financial or budgetary constraints apply?
- Are there costs of goods sold or any product pricing considerations?
- Are there any licensing issues?
- Do internal or external political issues affect potential solutions?
- Are there any interdepartmental problems or issues?
- Are we restricted in our choice of technologies?
- Are we constrained to work within existing platforms or technologies?
- Are we prohibited from using any new technologies?
- Are we expected to use any purchased software packages?
- Is the solution to be built on our existing systems?
- Must we maintain compatibility with existing solutions?
- What operating systems and environments must be supported?
- Are there environmental or regulatory constraints?
- Are there legal constraints?
- What are the security requirements?
- What other standards might restrict us?
Schedule and Resources
- Is the schedule defined?
- Are we restricted to existing resources?
- Can we use outside labor?
- Can we expand resources? Temporarily? Permanently?