Problem-solving techniques
Abstraction: solving the problem in a model of the system before applying it to the real system
Analogy: using a solution that solved an analogous problem
Brainstorming: (especially among groups of people) suggesting a large number of solutions or ideas and combining and developing them until an optimum is found
Divide and conquer: breaking down a large, complex problem into smaller, solvable problems
Hypothesis testing: assuming a possible explanation to the problem and trying to prove (or, in some contexts, disprove) the assumption
Lateral thinking: approaching solutions indirectly and creatively
Means-ends analysis: choosing an action at each step to move closer to the goal
Method of focal objects: synthesizing seemingly non-matching characteristics of different objects into something new
Morphological analysis: assessing the output and interactions of an entire system
Reduction: transforming the problem into another problem for which solutions exist
Research: employing existing ideas or adapting existing solutions to similar problems
Root cause analysis: eliminating the cause of the problem
Trial-and-error: testing possible solutions until the right one is found
Proof: try to prove that the problem cannot be solved. The point where the proof fails will be the starting point for solving it
"A solution, to be a solution, must share some of the problems characteristics." Richard L Kempe

