크고 복잡한 애플리케이션에서 모델은 갈수록 커지는 경향이 있다. 그러다가어느 시점에 도달하면 더이상 전체를 파악하기도 힘들고 그들의 관계를 이해할 수도 없을 만큼 복잡해진다.

모듈은 관련된 개념과 작업들을 묶어서 복잡도Complexity를 줄이기 위해 사용한다.

모듈을 사용하는 또 다른 이유는 코드의 품질과 관련이 있다. 높은 응집도Cohesion와 낮은 결합도Coupling을 유지하는 코드가 좋은 코드다.  모듈을 사용하면 응집도를 높이고 결함도를 떨어트린다. 왜냐면 모듈화 함으로써 기능적으로나 논리적으로 관련된 녀석들을 묶어주기 때문에 응집도는 높아지며, 모듈들은 모두 잘 정의된 인터페이스를 가지고 있기 떄문에 결함도를 낮춰준다.

사용자 삽입 이미지
모듈 이름은 유비쿼터스 언어의 일부에서 발췌해야 한다.

모듈을 한 번 만들고 그 역할을 정해두면, 그 내부에 많은 변화가 생기더라도 보통 모듈을 자주 변경하지 않는다. 하지만 프로젝트를 진행하면서 모듈을 얼려두지 말고 진화시키는 것을 권장한다. 모듈을 리팩토링하는 비용이 엄청나다는 것을 알지만 그래도 모듈을 유지하기 위해 돌아가는 방법을 선택하는 것 보다는 모듈을 변경하는게 좋다.