Software란 궁극적으로 사용자의 현실적인 문제를 해결하는데 그 본질을 두고 있다. 따라서 현실의 문제를 잘 파악하고 그 문제 해결이 code로서 잘 구현된다면 가장 이상적이 소프트웨어라고 할 수 있겠다. 하지만 일반적인 현실문제 즉 도메인에 관련된 문제를 잘 아는 사람과, 그것을 실제 코드로 구현하는 사람이 분리되어 일하는 경우가 대부분이고, 이러한 경우 서로 의사소통하기 매우 어려운 현실적인 문제점이 존재한다. 우리가 일반적으로 부르는 현업, 업무전문가, 도메인 전문가가 사용하는 언어 및 사고 방식과, 이를 구현하는 개발자사이의 간극이 큰 것이 사실이며, 이러한 문제점을 해결하기 위한 다양한 방법론이 제시되었다. 제조 (manufacturing) 는 소프트웨어 개발에 대한 메타포로 자주 사용되곤 ..