객체, 시스템, 또는 개념에 대한 구조나 작업을 보여주기 위한 패턴, 계획, 또는 설명
현실 세계에 존재하는 시스템을 특정한 목적의 디지털 시스템으로 만들기 위한 설계도를 모델이라고 볼 수 있다. 객체는 무한대에 가까운 상태와 행위를 가질 수 있는데, 그걸 전부 구현해서 디지털화하는 것은 비용 낭비다. 그래서 특정 목적을 갖는 상태와 행위를 domain에 맞춰서 추출해야 하는데, 그 과정을 객체 모델링(Object Modeling)이라고 한다.
우리가 은행 서비스를 만드는데, '해당 사용자가 애완동물을 키우는지의 여부'가 그렇게 중요할까? '그 사람이 배가 고픈지에 대한 정보'가 중요할까? 전혀 그렇지 않다. 어떤 은행 서비스 시스템을 동작시키는데 필요한 핵심 요소들만 추상화하면 충분히 은행 서비스를 구축할 수 있다. 하지만 모델에 정답은 존재하지 않는다. 누군가는 은행 서비스에 '닉네임'이 필요하다고 할 수 있고, 누군가는 은행 서비스에 '신용등급'이 필요없다고 할 수도 있다.
어떤 목적을 가지고 개발하는가에 따라서 이상적인 모델의 형태는 다를 수밖에 없다. 그러므로 개발자는 효율적인 개발을 위해서 뛰어난 알고리즘을 구현하는 능력 뿐만 아니라, 시스템을 효율적으로 모델링하는 능력 또한 중요하다고 할 수 있다.
여담으로, 모델은 UML을 활용하여 구현한다.