1. 모듈 (module) 이란
그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
ex. PC (개인용 컴퓨터) 시스템은 여러 Bus 기능을 가지고 있는 mainboard (motherboard)에 CPU, RAM, 보조기억장치 (HDD, SDD), VGA (그래픽카드) 등을 조합해서 완성됨
여기서 이 CPU, RAM, VGA 등등 하나 하나를 모듈이라고 부름
하나의 모듈은 수많은 전자부품, 반도체 등으로 구성된 것이기 때문에 하나의 모듈도 여러 sub-module 조합으로 구성된 경우도 많음

ex. Java 에서는
이런 구조를 이루고 있음
2. 모듈화 (modularity) 란?
하나의 거대한 문제를 작은 여러 개의 문제로 나누어서 다루기 쉽도록 하는 과정
그러면 이렇게 modularity (모듈화) 하는 이유는?
CPU, RAM, 보조기억장치 (HDD, SDD) 등의 모듈들만 더하고 빼고 수정하는 과정을 통해 문제를 해결할 수 있음
즉, system 을 customization (커스텀화)할 수 있게 됨
modularity (모듈화) 가 가능하기 위해서는?
반드시, standardization (표준화)가 이루어져야 함
예를 들어, CPU는 intel, RAM은 samsung, VGA는 AMD radeon 제품으로 사용하고 있었는데 VGA를 nVIDIA GeForce 제품으로 바꾸려면 radeon 과 GeForce 가 같은 표준(standard)를 따라야만 함
호환이 가능해야 하기 때문
modularity는 항상 좋은 것인가?
당연히 꼭 그런 건 아님
module 간의 interface에 의해 시스템 성능이 결정되는데 이 디자인은 일체형 디자인에 비해서 최적화가 어려운 경우가 많음
'Language > 기본 용어' 카테고리의 다른 글
[프로그래밍 기초] 추상화 (abstraction), 캡슐화 (encapsulation) 란? (0) | 2022.01.14 |
---|---|
커널 (kernel), 운영체제 (operating system) 란? (0) | 2022.01.14 |
이스터에그 (easter egg) 란? (0) | 2022.01.14 |
모바일 AP 란? (0) | 2022.01.14 |
모뎀 (modem), 공유기 (router) 란?? (0) | 2022.01.14 |