DEV Community

SJ W
SJ W

Posted on

모듈이란?

지금까지 프로그래밍을 하면서 모듈이라는 단어를 수 도 없이 들어 보았지만, 대략 단어만 머리에 스쳐 지나갔을뿐 제대로 프로그래밍의 관점에서 이해할려고 한 번도 해본적이 없었다. 하지만 이번 부트캠프에서 Node.js에 대해 배우는 도중에 강사님이 모듈이라는 것을 언급하여 이번 계기로 모듈에 대해 구체적으로 배우고 정리하여 복습하는 시간을 가질 것이다.

모듈이란?

이번 부트캠프에서 강사님이 Node.js에 관련된 수업과 함께 모듈에 대해서 간단하게 설명해 주셨는데, 모듈은 한 마디로 다른 사용자가 작성한 코드의 집합체라고 하셨다. Node.js에 업로드 된 외부 사용자 모듈을 NPM을 사용하여 각종 모듈을 다운 받고 사용을 할 수 있다.

한번 ChatGPT에게도 물어 보았다.

In software development, a module is a self-contained unit of software that represents a specific functionality or a set of related functions. Modules are designed to be reusable, modular, and maintainable components that contribute to the overall structure of a software system.

GPT에 의하면, 모듈은 소프트웨어의 특정한 기능을 의미하는 한 분리된 단위라고 한다. 모듈은 재사용 가능하며, 모듈식으로 구성되고, 유지보수가 용이한 컴포넌트를 목표로 한다. 예를 들어, 자동차에는 엔진, 변속기, 조향 시스템과 같은 다양한 기능이 있다. 이 기능들을 구현하기 위해 다양한 부품이 사용된다. 이러한 부품들을 모듈에 비유하여 모듈의 역할을 이해하기 쉽다. 모듈의 장점은 다음과 같은 것이 있다.

1. 추상화

  • 하나의 모듈안에 특정 기능에 관련된 모든 코드를 분리화 하고 필요한 인터페이스만 노출을 시켜 다른 모듈들과 상호작용을 할 수 있다. 필요한 인터페이스만 도출하는 것의 장점은 코드를 재사용시 복잡성을 줄일 수 있다는 특성이 있다.

2. 재사용성

  • 한 SW을 기능 단위로 각종 모듈로 분리하고 독립적인 코드 집합체로 형성을 할 경우, 이것을 다른 프로젝트에서도 활용할 수 있다는 큰 장점이 존재한다.

3. 유지보수성

  • 응집도가 높고 결합도가 낮은 독립적인 모듈은 이것을 재구성할 때 쉽게 할 수 있다는 큰 장점이 있다. 만약에 두 모듈이 서로 의존하는 현상이 발생한다면 하나의 모듈의 코드를 수정할 때 다른 모듈에도 영향을 미칠 가능성이 클수 밖에 없다. SW를 설계할 때 반드시 모듈의 응집도를 최대로 하는 것이 적합하다.

Top comments (0)