말 그대로 M(Model) V(View) C(Controller)을 분리하여 유지보수 및 확장성을 높이기 위해 만들어졌다고 생각합니다.
생겨난 원인에 대해 대략적인 예상을 해보면
1. 초창기에는 사람들이 Model, View, Controller 구분없이 한 소스 덩어리에(ex: 함수) 3가지 요소를
섞어서 구현합니다. 처음에는 편합니다. 그냥 위에서 아래로 쭉 구현하면 되니깐요.
2. 요구사항이 바뀝니다. View의 수정이 필요한데 비즈니스 로직과 컨트롤 코드가 섞여 있어서 코드를
읽기도 힘들뿐더러 View 코드를 수정하다가 비즈니스 로직과 컨트롤 코드에 영향을 끼쳐서 다른
버그가 생깁니다.
3. 기능이 추가됩니다. 기능이 점점 추가될수록 더욱 거대한 View+Model+Controller 코드 덩어리가
되어, 코드에서 내가 필요한 부분만 찾아내거나 확장하는 일이 점점 힘들어집니다.
4. 사람들은 고민합니다. 그리고 UI 프로그램에서 가장 핵심적인 덩어리는 Model, View, Controller
이며, View <-> Controller <-> Model과 같은 관계로 연결될 수 있다는 사실을 발견합니다.
5. MVC 구조를 만들어냅니다.
각각의 목적에 따라 코드가 분리되어 있어, 유지보수 및 확장성이 뛰어납니다.
View 코드를 수정하다가 Model 코드를 실수로 수정할 일도 없습니다. 코드도 한층 읽기가 수월해집니다.
이제 View를 수정하려면 View 컴포넌트만 기웃거리면 됩니다.
제 생각으로는 대략 위와 같은 이유가 아닐까합니다만.. 잘못되거나 부족한 부분은 다른 분들이 설명해주시리라 믿습니다. ㅎㅎ