모듈(Module)


  • 모듈 : 소프트웨어 설계에서 기능단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위

  • 모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법


일반적 모듈과 문제를 다룰 때 모듈화의 의미

1. 일반적으로 모듈 이란?

  • 보다 작고 이해할 수 있는 단위로 나뉘어진 것

  • 본체에서 분리되어 작은 부분으로 유기적으로 구성되어 있다가, 필요할 때 본체에 합류하여 그 기능을 수행할 수 있는 것

  • 통상, 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체로 본다

2. 문제를 다룰 때 모듈화란?

  • 모듈화는, 거대한 문제를 작은 조각의 문제로 나누어 다루기 쉽도록 하는 과정

    • 여기서, 작게 나누어진 각 부분을 모듈이라고 한다

      • 각 모듈은 논리적 또는 기능적으로 분리되어 격리되고 독립적인 일을 수행

모듈의 특성

  • Unity (한가지 일만 수행)

  • Smallness (간단명료)

  • Simplicity (단순성)

  • Independency (독립성) 등


모듈화의 장점

  • 프로그램의 효율적인 관리 및 성능 향상

  • 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소

  • 소프트웨어 시험, 통합, 수정 시 용이성 제공

  • 기능의 분리가 가능, 인터페이스가 단순

  • 오류의 범위를 최소화

  • 모듈의 재사용 가능으로 개발과 유지보수가 용이


프로그래밍에서, 모듈 이란?

  • 소프트웨어 묶음을 만들고, 코드를 네임스페이스로써 구분하는 메커니즘

    • 자바 언어 -> 패키지는 여러 클래스들의 모음, 모듈은 여러 패키지들의 모음

    • 기타 언어 -> 모듈은 기능(함수)별로 여럿을 하나로 정리/모으거나 분할하는 것

  • 통상적으로 구조가, 여러 기능들을 하나로 모으고, 이들이 공유하는 데이터들로써 구성됨

  • 패키지, 모듈 등은 파일 단위로 정의되어 import 방식이 대부분이다


프로그래밍에서, 모듈화, 캡슐화 비교

구조적 프로그래밍에서의 모듈화객체지향 프로그래밍에서의 캡슐화는 유사한 의미를 갖고있다.

그러나

  • 캡슐화는 잘 설계된 모듈에서 나오는 특성을 주로 의미한다

    • 복잡하고 불필요한 부분 등을 사용자에게 안보이게 함

    • 외부세계와 인터페이스를 잘 할 수 있도록 표준화시킨 포장


참고자료