"모듈 (프로그래밍)"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(새 문서: 일반적으로 컴퓨터 분야에서의 '''모듈(module)'''이라는 용어는, 독립되어 있는 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는데 사용...)
 
3번째 줄: 3번째 줄:
  
 
== 개요 ==
 
== 개요 ==
=== 컴퓨터 프로그래밍에서의 모듈 ===
+
모듈(module)은 역사적으로 프로그래밍이라는 관점에서는 기본적으로 본체에 대한 독립된 하위 단위라는 필연적인 개념의 큰 틀을 따르고 있지만 본체와 모듈 간에 가지고 있었던 문제들을 해결해 나가는 과정에서 발전하였다. 모듈에 가장 큰 영향을 미쳤던 클래스 그리고 라이브러리가 향상됨에 따라 점차 발전하였다. 이러한 지속 가능성은 이것의 가장 큰 장점 중 하나이다. 초기에는 분리된 독립성의 모듈로 도입되었으나 점차로 객체화, 캡슐화, 모듈화 프로그래밍 기법 등 여러 기능들이 추가되면서 점차적으로 영역이 나뉘어가고 있다. 그러나 이로 인하여 모듈성을 제대로 반영하지 못하고 있다는 비난을 받을 수도 있다. 한편 이러한 비난은 모듈 시스템, 모듈 프로그래밍이 갖는 현재의 한계를 인식하고 보다 안정적으로 발전하기 위해 효율적인 방향을 추구하는데 기여할 수 있다.
모듈(module)은 역사적으로 프로그래밍이라는 관점에서는 기본적으로 본체에 대한 독립된 하위 단위라는 필연적인 개념의 큰 틀을 따르고 있지만 본체와 모듈 간에 가지고 있었던 문제들을 해결해 나가는 과정에서 발전하였다. 모듈에 가장 큰 영향을 미쳤던 클래스 그리고 라이브러리가 향상됨에 따라 점차 발전하였다. 이러한 지속 가능성은 이것의 가장 큰 장점 중 하나이다. 초기에는 분리된 독립성의 모듈로 도입되었으나 점차로 객체화, 캡슐화, 모듈화 프로그래밍 기법 등 여러 기능들이 추가되면서 점차적으로 영역이 나뉘어가고 있다.[1] 그러나 이로 인하여 모듈성을 제대로 반영하지 못하고 있다는 비난을 받을 수도 있다. 한편 이러한 비난은 모듈 시스템, 모듈 프로그래밍이 갖는 현재의 한계를 인식하고 보다 안정적으로 발전하기 위해 효율적인 방향을 추구하는데 기여할 수 있다.
 
  
 
여기서 본체는 하드웨어적인 운영체계일 수도 있고 규모 있는 소프트웨어 프로그램의 본체일 수도 있다.<ref name='module_synopsis'>위키백과, 〈[https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D) 모듈(프로그래밍) ]〉</ref>
 
여기서 본체는 하드웨어적인 운영체계일 수도 있고 규모 있는 소프트웨어 프로그램의 본체일 수도 있다.<ref name='module_synopsis'>위키백과, 〈[https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%93%88_(%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D) 모듈(프로그래밍) ]〉</ref>
=== 소프트웨어에서의 모듈 ===
+
== 특징 ==
소프트웨어에서 모듈이란 프로그램의 일부분이다. 프로그램들은 하나이상의 독립적으로 개발된 모듈로 구성되며, 이들은 그 프로그램이 링크되기 이전까지는 결합되지 않는다. 또한, 모듈은 하나 이상의 루틴을 포함할 수 있다.<ref name='module_def'></ref>
+
복잡한 프로그램을 작성하기 위해서 필요한 모든 과정을 직접 만들어야 한다면 전체적인 모습에서부터 작은 기능 하나하나까지 모두 구상해서 만들고, 오류를 수정해서 곳에 모아두면 오류가 생기고, 또 다른 프로그래머는 자신과 비슷한 기능을 하는 프로그램을 만들면서 똑같은 시행착오가 생길 것이다.
=== 컴퓨터 하드웨어나 전자공학에서의 모듈 ===
+
그래서, 이런 문제를 해결하기 위해 대부분의 프로그래밍 언어에서는 모듈이라는 개념을 사용한다. 모듈은 프로그램의 꾸러미라고 생각하면 된다.  
컴퓨터 하드웨어나 전자공학에서 말하는 모듈이란, 커다란 장치나 배열 내에서 비교적 작은 크기의 부품으로서 독립적으로 설치되고, 교체되고, 사용될 수 있도록 설계된 구성요소를 말한다. 예를 들어, SIMM은 여러 개의 메모리 칩들을 하나의 작은 보드에 서로 연결하여 설치함으로써, 사용자들이 별도로 구입하여 개인용 컴퓨터에 쉽게 추가할 수 있도록 만들어 놓은 램을 말하는데, 이를 메모리 모듈이라고 부른다.<ref name='module_def'></ref>
+
이 꾸러미들을 조각으로 나누어 다루기 쉽도록 하는 과정을 모듈화(Modularization)이라고 한다. 모듈은 한 가지 일만 수행해야 하며, 한 가지 일만 수행해야 하기 때문에 역할이 간단하고 명료해야 한다. 또한 다른 프로그램에서도 사용할 수 있도록 모듈은 단순해야 하고 여러 프로그램에서 붙여서 쓸 수 있도록 독립성을 유지해야 한다. 모듈화를 하게 되면 수행하는 일에 따라서 모듈이 나뉘어져 있어서 어느 부분을 수정해야 할지 찾기 쉽기 때문에 수정이 용이하고 통일성 있게 표준화해 놓기 때문에 다른 사람이 만든 모듈들을 유지보수하기 쉽다.<ref name='module_char'>Dominic, 〈[https://appleceo.github.io/2019/06/09/ModuleAndModularization/ 모듈과 모듈화 ]〉, 2019년 6월 9일</ref>
== 컴퓨터 프로그래밍에서의 모듈 ==
 
=== 파이썬에서 사용되는 모듈 ===
 
 
 
 
 
 
{{각주}}
 
{{각주}}
  
21번째 줄: 16번째 줄:
 
== 같이 보기 ==
 
== 같이 보기 ==
 
* [[객체지향프로그래밍]]
 
* [[객체지향프로그래밍]]
* [[C언어]]
+
 
* [[자바]]
 
 
{{개발방법론|검토 필요}}
 
{{개발방법론|검토 필요}}

2020년 8월 10일 (월) 14:14 판

일반적으로 컴퓨터 분야에서의 모듈(module)이라는 용어는, 독립되어 있는 하나의 소프트웨어 또는 하드웨어 단위를 지칭하는데 사용된다. [1]

개요

모듈(module)은 역사적으로 프로그래밍이라는 관점에서는 기본적으로 본체에 대한 독립된 하위 단위라는 필연적인 개념의 큰 틀을 따르고 있지만 본체와 모듈 간에 가지고 있었던 문제들을 해결해 나가는 과정에서 발전하였다. 모듈에 가장 큰 영향을 미쳤던 클래스 그리고 라이브러리가 향상됨에 따라 점차 발전하였다. 이러한 지속 가능성은 이것의 가장 큰 장점 중 하나이다. 초기에는 분리된 독립성의 모듈로 도입되었으나 점차로 객체화, 캡슐화, 모듈화 프로그래밍 기법 등 여러 기능들이 추가되면서 점차적으로 영역이 나뉘어가고 있다. 그러나 이로 인하여 모듈성을 제대로 반영하지 못하고 있다는 비난을 받을 수도 있다. 한편 이러한 비난은 모듈 시스템, 모듈 프로그래밍이 갖는 현재의 한계를 인식하고 보다 안정적으로 발전하기 위해 효율적인 방향을 추구하는데 기여할 수 있다.

여기서 본체는 하드웨어적인 운영체계일 수도 있고 규모 있는 소프트웨어 프로그램의 본체일 수도 있다.[2]

특징

복잡한 프로그램을 작성하기 위해서 필요한 모든 과정을 직접 만들어야 한다면 전체적인 모습에서부터 작은 기능 하나하나까지 모두 구상해서 만들고, 오류를 수정해서 한 곳에 모아두면 오류가 생기고, 또 다른 프로그래머는 자신과 비슷한 기능을 하는 프로그램을 만들면서 똑같은 시행착오가 생길 것이다. 그래서, 이런 문제를 해결하기 위해 대부분의 프로그래밍 언어에서는 모듈이라는 개념을 사용한다. 모듈은 프로그램의 꾸러미라고 생각하면 된다. 이 꾸러미들을 조각으로 나누어 다루기 쉽도록 하는 과정을 모듈화(Modularization)이라고 한다. 모듈은 한 가지 일만 수행해야 하며, 한 가지 일만 수행해야 하기 때문에 역할이 간단하고 명료해야 한다. 또한 다른 프로그램에서도 사용할 수 있도록 모듈은 단순해야 하고 여러 프로그램에서 붙여서 쓸 수 있도록 독립성을 유지해야 한다. 모듈화를 하게 되면 수행하는 일에 따라서 모듈이 나뉘어져 있어서 어느 부분을 수정해야 할지 찾기 쉽기 때문에 수정이 용이하고 통일성 있게 표준화해 놓기 때문에 다른 사람이 만든 모듈들을 유지보수하기 쉽다.[3]

각주

  1. 텀즈, 〈module 모듈 〉, 1999년 9월 13일
  2. 위키백과, 〈모듈(프로그래밍)
  3. Dominic, 〈모듈과 모듈화 〉, 2019년 6월 9일

참고자료

같이 보기

틀:개발방법론