본문 바로가기
IT 배우기/이것저것

모듈화 1(modularity)

by To올라운더 2023. 11. 28.
반응형

오늘의 포스팅 주제는 앞서 예고한 모듈화(modularity)이다.

파이썬이라는 특정 언어에 국한한 것이 아니라 

소프트웨어 전체에 해당하는 내용으로 문제 해결을 위한 분석이나 설계, 개발과 유지보수 등

다양한 측면에서 모듈화로 구성되는 것이

전체를 하나의 덩어리로 구성하는 것보다 훨씬 유리한 측면이 있어 제안되는 방식이다.

 

 

1. 그럼 모듈화란 무엇일까?

사전적으로 보면, '생산성과 최적화, 관리에 용이하게 모듈(기능) 단위로 분할 하는 것'이라는

다소 와닿지 않는 문장들이다. 

 

그럼 어떻게 쉽게 모듈화를 이해할 수 있을까? 

아래의 영화를 잠깐 보면 누구라도 금방 이해할 수 있다.

(최초 첨부된 동영상이 저작권 관련으로 재생 제한이 되어 캡처로 변경되었습니다.)

반응형

 

 

어벤져스: 에이지 오브 울트론 (Avengers: Age of Ultron, 2015) 중 헐크와 헐크버스터(아이언맨)의 전투 장면이다.

 

아이언맨의 헐크버스터가 헐크에 의해 파손이되고,

왼손이 정상동작할 수 없다는 판단이 들자,

헐크버스터 전체를 교체한 것이 아니라

정확히 왼쪽 어깨 아래 부분만 교체 하는 모습인데

이런 교체 후 동작이 가능한 건 팔은 팔로서의 기능만을 가지기 때문이다.

우리가 지향하고자 하는 필요한 부분(기능)이 모여 전체를 동작하는 모듈화가 고려되었기 때문이다.

 

2. 소프트웨어 분야에서 모듈화 적용

이걸 우리가 작성할 프로그램 모듈화와 연관지어 말을 이어가보면

분석이나 설계 및 개발을 진행할 때에 전체를 하나의 코드로 이어가는 것이 아닌,

기능별 단위로 쪼개어 개발을 하고 관리를 하면,

장애(Error)가 발생하더라도 해당 기능만 수정을 하면 정상 동작을 할 수 있다.

전체를 수정할 필요가 없다는 것과 같은 의미이다.

 

게다가 영화에서 보듯이 헐크버스터의 교체된 왼손이 마치 드릴과 같이 동작하는 모습을 볼 수 있는데,

이런 기능 개선 또한 모듈화가 되어 있다면 더 쉽게 접근할 수 있다.

왼손이 드릴과 같은 움직임을 갖기 위해 헐크버스터를 한대 더 만드는 불상사가 생기지 않는다는 것이다.

 

만약 고객정보를 다루는 프로그램을 작성해야 한다면,

고객 신규 등록, 고객 정보 수정, 고객 삭제 등의 기능들을 분리하여 관리하면

장애 대처나 기능 업데이트, 유지보수 측면에서 더 효율적인 프로그램이 될 수 있다.

 

 

 

 

3. 모듈의 특징

 - 그럼 어떤 단위로 모듈을 나누어 모듈화를 진행해야할까?

 - 모듈(module)은 실제 어떤 의미일까를 알아보면,

   가장 중요한 요소는 독립적인 기능을 가지고 있어야한다.

 - 해당 기능을 다른 모듈이나 프로그램에서 재사용(호출)이 가능해야한다.

 - 해당 조건을 만족한다면, 함수나 클래스 등이 모듈로서의 역할을 가질 수 있습니다.

   모듈 파일은 .py 확장자를 가지는데, 우리가 일반적으로 생성하는 파이썬 파일이라고 봐도 무방하다.

    사용방법은 import를 통해 재사용할 수 있다.

 - 비슷한 용도로 인해 혼용될 수 있지만, 함수, 모듈, 패키지를 구별해보면

   함수는 재사용 가능한 코드를 나타내며,

   모듈은 파이썬 파일, 함수, 변수, 클래스 등을 포함하며,

   패키지는 관련된 모듈들의 모음으로 볼 수 있다.

 

4. 모듈화 예시

 - 덧셈과 뺄셈을 수행하는 계산기 코드를 작성할 예정인데,

   사용자에게서 입력받는 값이 숫자인지를 판별하여 실행할 예정이다.

 - 기능별 분류를 위해,

   0) 실행 코드(main_calc.py)

   1) 숫자 판별 코드(validate_input.py)

   2) 덧셈 코드(add_calc.py)

   3) 뺄셈 코드(sub_calc.py)

 

 로 작성할 예정이다. 위의 덧셈과 뺄셈은 간단한 코드로 실제 분리하지 않고

 하나의 .py 파일에 함수로 분리하여 코드를 작성하여도 무관하지만

 모듈화의 예시를 위해 나눠서 구성할 예정입니다.

 

작성된 코드는 다음 포스팅에 세부적으로 다뤄보겠습니다.

 

 

 

반응형