모듈

  • 관련된 기능 또는 코드를 묶어서 구조화하고, 재사용 가능한 단위로 만든 것
  • 프로그램을 기능에 따라 독립적인 부분으로 분리한 것
  • 단순히 규모가 큰 것을 여러 개로 나누는 것이 아니라, 각 모듈은 하나 이상의 논리적인 기능을 수행해야 함
  • 모듈 간의 결합(결합도)은 느슨하게, 모듈 내 구성 요소들 간의 응집(응집도)은 강하게 해야 한다

결합도(Coupling)

  • 모듈 간의 의존성
  • 결합도가 적을수록 서로 의존하는 정도가 줄어서 모듈의 독립성이 높아지고 좋은 설계가 이루어질 수 있다

응집도(Cohesion)

  • 모듈 구성 요소들의 연관성
  • 응집도가 높다는 것은 구성 요소들이 꼭 필요한 것들만 모여있는 것

사용 예시

  • Python에서 모듈: Python에서는 .py 확장자를 가진 파일을 모듈로 간주합니다. 다른 Python 스크립트에서 import 문을 사용하여 모듈을 불러올 수 있습니다. 예를 들어, import math는 Python의 math 모듈을 불러옵니다.
  • JavaScript에서 모듈: JavaScript에서는 ES6 이후에 모듈 시스템이 도입되었습니다. exportimport 문을 사용하여 JavaScript 모듈을 정의하고 불러올 수 있습니다.
  • Java에서 패키지: Java에서는 패키지를 사용하여 클래스를 그룹화하고 모듈화합니다. 패키지는 클래스와 인터페이스의 이름 충돌을 방지하고 코드를 구조화하는 데 사용됩니다.
  • C#에서 네임스페이스: C#에서는 네임스페이스를 사용하여 클래스 및 타입을 그룹화하고 모듈화합니다. 네임스페이스는 코드 구조화와 충돌 방지에 도움이 됩니다.

정리

모듈은 프로그램에서 관련된 기능 또는 코드를 묶어서 구조화하고, 재사용 가능한 단위로 만든 것을 말합니다. 각 모듈은 프로그램을 단순히 작게 나눈는 것이 아니라 하나 이상의 논리적인 기능을 수행해야 합니다. 모듈화를 수행할 때는 모듈 간의 의존성을 낮춰 결합도는 낮추고, 구성 요소들의 연관성은 높여 응집도를 높여야합니다. 모듈화를 수행하면 코드 재사용성을 높이고 유지보수를 용이하게 할 수 있습니다.

참고

보완/복습

  • 2023.10.10 복습
  • 2023.11.06 복습
  • 2023.11.07 복습