본문 바로가기
Software engineering

모듈이란

by 서퍼리노 2023. 2. 13.
728x90

 

어떠한 무제를 한 번에 그대로 해결하는 것에는 문제가 있습니다.

따라서 일반적으로 큰 문제를 해결할 때에는 큰 문제를 작은 단위들로 쪼개어 그것을 하나씩 해결하다 보면,

일을 해결할 수 있습니다.

 

소프트웨어 개발에서 가장 먼저 하는 작업이 실제로 개발할 수 있는 작은 단위로 나누는 것입니다.

이렇게 작은 단위로 나누는 작업을 '모듈화'라고 합니다.

 

그렇다면 모듈이란 무엇일까요?

모듈이란 '규모가 큰 것을 여러 개로 나눈 조각'이라고 생각할 수 있습니다.

또 '소프트웨어 구조를 이루는 기본 단위'라도고 합니다.

 

조금 더 구체적으로 설명하면 '하나 또는 몇 개의 기능을 수행하기 위한 명령어의 집합'이라고 말할 수 있습니다.

프로그램 전체가 하나의 모듈로 구성이 될 수도 있고,

한 함수가 모듈로 구성이 될 수도 있습니다.

 

모듈특징은 

  • 다른 것과 구별되는 독립적인 기능을 갖는 단위(unit)입니다.
  • 유일한 이름을 가집니다.
  • 모듈에서 또 다른 모듈을 호출할 수 있습니다.
  • 다른 프로그램에서도 모듈을 호출할 수 있습니다.

 

모듈 크기의 정도는 어느 정도로 해야 할까?

모듈이 문제를 해결할 수 있는 가장 작은 단위이기에 어느 정도로 나눌 것인지

모듈화를 하기 전에 생각을 해야 합니다.

 

작은 모듈로 나누는 것이 기본적이지만
무조건 작게 나눈다고 좋은 것만은 아닙니다.

 

모듈의 크기가 작아지면 그만큼 모듈의 개수가 많아지고,

모듈 간의 통신 횟수가 많아지며 복잡해집니다.

 

모듈의 크기에 대한 정답은 없지만 

모듈화를 위해 모듈화의 원칙을 지켜줘야 합니다.

 

모듈화의 원칙

  • 모듈 간의 결합(Coupling) 은 느슨하게(Loosely) 한다.
  • 모듈 내 구성 요소 간의 응집(Cohesion)은 강하게(Strongly)한다.

모듈화의 장점

  • 분할과 정복의 원리가 적용되어 복잡도가 감소합니다.
  • 문제이해하기 쉽게 만듭니다.
  • 변경하기 쉽고 변경으로 인한 영향도 적습니다.
  • 유지보수용이합니다.
  • 프로그램효율적으로 관리할 수 있습니다.
  • 오류로 인한 파급 효과최소화할 수 있습니다.
  • 설계 코드재사용할 수 있습니다.

이를 요약하자면 

모듈화 장점

유지보수용이하고,

변경과 오류로 인한 영향적게 받고,

재사용쉬운 소프트웨어를 만들 수 있다는 것이라고 말할 수 있습니다.

 

 

728x90

'Software engineering' 카테고리의 다른 글

응집도(Cohesion)란  (0) 2023.02.14