현재까지 소프트웨어 개발을 위한 개념이나 철학으로 정립된 것은 크게 구조적인 것과 객체지향적인 것으로 나눌 수 있다.
소프트웨어 개발은 추상화 레벨을 구체화시켜나가면서 무엇을(What) 어떻게(How) 할지를 반복해나가는 과정이다.
예를 들어 “Hello World” 문자열을 출력한다고 했을 때, 추상화 레벨 0 에서 무엇(What)에 해당하는 것은 “Hello World” 문자열을 출력한다는 것이 되고, 어떻게(How)에 해당하는 부분은 ‘파일로부터 “Hello World” 문자열을 입력받아서 다시 출력한다.’ 와 같은 부분이 될 수 있다.
그리고 추상화 레벨 0에서의 어떻게(How)가 추상화 레벨 1의 무엇을(What)이 되면서, 다시 어떻게(How) 부분이 구체화 되는 방식이 What-How 생각 모델 이다.
What-Why-How 모델은 무엇(What) 이나 어떻게(How) 보다도 왜(Why)를 강조한 모델이다.
What-Why-How 생각 모델(Thinking Model)
‘왜(Why) 그것을 해야 하는가’에 대한 검증 기준은 **목적(Goal)**이 무엇인가가 될 것이며,
‘왜(Why) 그렇게 해야 하는가’에 대한 검증 기준은 어떤 것이 **최적(Optimization)**의 방법인가가 될 것이다.
이처럼 What-Why-How 모델은 기존의 What-How 모델에 왜(Why) 라는 질문과 함께 구체적으로 무엇(What)과 어떻게(How)를 검증하기 위한 목적(Goal)과 최적(Optimization)이라는 기준을 제시하므로, 소프트웨어 개발에서 최적의 해결책을 만들어내기 위한 가장 기본적인 틀이 될 것이다.