본문 바로가기

CS BASIC/정보시스템 일반

[CS BASIC] 모듈(Module)

모듈(Module)이란?

  • 전체 프로그램에서 어떠한 기능을 수행할 수 있는 실행 코드를 의미
  • 자체적으로 컴파일 가능, 다른 프로그램에서 재사용 가능
  • 시스템 개발 시 기관고 노동력을 절감할 수 있다.
  • 모듈의 독립성은 결합도와 응집도에 의해 측정된다.
  • 서브루틴 = 서브 시스템 = 작업 단위
  • 변수의 선언을 효율적으로 할 수 있어 기억 장치를 유용하게 사용할 수 있다.
  • 모듈마다 사용할 변수를 정의하지 않고 상속하여 사용할 수 있다.
  • 각 모듈의 기능이 서로 다른 모듈과의 과도한 상호작용을 회피함으로서 이루어지는 것을 기능적 독립성이라고 한다.
  • 여러 기능 및 프로그램에서 공통으로 사용할 수 있는 모듈(예-날짜 처리를 위한 유틸리티 모듈 등)

 

결합도

  • 서로다른 두 모듈간의 상호 의존도로서 두 모듈간의 기능적인 연광 정도를 나타낸다.
  • 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상되어 시스템을 구현하고 유지보수 작업이 쉬워진다.

 

결합도의 종류(결합도의 오름차순)

① 자료 결합도

  • 모듈 간의 인터페이스가 자료 요소로만 구성된 경우로 다른 모듈 간에 영향을 주지 않는 가장 바람직한 결합도.
  • 모듈 간의 내용을 전혀 알 필요가 없다.

② 스탬프 결합도

  • 두 모듈이 같은 자료를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화 즉 포맷이나 구조의 변화는 그것을 죄화는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모모듈까지도 영향을 미치게 된다.
  • 배열, 레코드, 구조 등이 모듈 간 인터페이스로 전달되는 경우에 해당한다.

③ 제어 결합도

  • 어떤 모듈이 다른 모듈의 내부 논리 조작을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우이다.
  • 하위 모듈에서 상위모듈로 제어 신호가 이동하여 상위 모듈에 처리 명령을 부여하는 권리 전도 현상이 발생하게 된다.

 

④ 외부 결합도

  • 어떤 모듈에서 외부로 선언한 변수(데이터)를 다른 모듈에서 참조할 경우와 관계된다.

 

⑤ 공통 결합도

  • 여러 모듈이 공통 자료 영역을 사용하는 경우로, 공통 데이터 영역 내용을 수정하면 이 데이터를 사용하는 모든 모듈에 영향을 준다.

 

⑥ 내용 결합도

  • 가장 강한 결합도를 가지고 있으며, 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계된 경우이다.
  • 한 모듈에서 다른 모듈의 내부로 제어 또는 이동된다.
  • 한 모듈이 다른 모듈 내부 자료의 조회 또는 변경이 가능하다.
  • 두 모듈이 같은 문자(리터럴)의 공유가 가능하다.

 

응집도

  • 명령어, 명령어의 모임, 호출문, 특정 작업 수행 코드 등 모듈 안의 요소들이 서로 관련된 정도를 말한다.
  • 구조적 설계에서 기능 수행 시 모듈 간의 최소한의 상호작용을 하여 하나의 기능만을 수행하는 정도를 표현한다.
  • 모듈이 독립적인 기능으로 구성된 정도를 의미한다.
  • 응집도가 낮다는 것은 요소 간의 관련성이 적음을 의미한다.

 

응집도의 종류 (응집도가 강한 순서부터 내림차순)

① 기능적 응집도

  • 모듈 내부의 모든 기능 요소들이 한 문제와 연관되어 수행되는 경우

 

② 순차적 응집도

  • 한 모듈 내부의 한 기능 요소에 의해 출력 자료가 다음 기능 요소의 입력자료로 제공되는 경우

 

③ 교환적 응집도

  • 같은 입력과 출력을 사용하는 소 작업이 모인 경우

 

④ 절차적 응집도

  • 모듈이 다수의 관련 기능을 가질 때 , 모듈 내부의 기능 요소들이 그 기능을 순차적으로 수행할 경우와 관계

 

⑤ 시간적 응집도

  • 특정 시간에 처리되는 여러 기능을 모아 한 개의 모듈로 작성할 경우와 관계된다.

 

⑥ 논리적 응집도

  • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우와 관계된다.

 

⑦ 우연적 응집도

  • 모듈 내부의 각 기능 요소들이 서로 관련이 없는 요소로만 구성된 경우와 관계된다.

 

효과적인 모듈화 설계 방법

  • 출입구를 하나씩 갖게 하여 복잡도와 중복성을 줄이고 일관성을 유지한다.
  • 유지보수가 용이하도록 설계한다
  • 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계한다.
  • 모듈 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안 된다.
  • 모듈 간의 효과적인 제어를 위해 설계에서 계층적 자료 조직이 제시되어야 한다.
  • 적당한 모듈의 크기를 유지하고 모듈 간의 접속 관계를 부넉하여 복잡도와 중복을 줄인다.

 

모듈 설계의 특징

  • 모듈 독립성이 높다는 것은 단위 모듈을 변경하더라도 타 모듈에 영향이 적다는 의미이며, 오류의 발견과 해결이 용이해진다.
  • 모듈 인터페이스 설계시 인덱스 번호, 기능 코드 등 전반적이 논리 구조에 영향을 끼치지 않도록 한다.

 

모듈과 컴포넌트이 차이

모듈

  • 자신만으로 동작할 수 있는 명령어의 집합
  • 실제로 가장 맨 앞에 위치하는 구현된 단위, 자료구조, 알고리즘 등을 제공하는 인터페이스
  • 정의하지 않는 이상 바로 재활용 불가

컴포넌트

  • SW 시스템에서 독립적인 업무 또는 기능을 수행하는 모듈로 교체가 가능한 부품이다.
  • 모듈화의 생산성에 나아가 소스코드의 재활용을 통해 재사용성을 도모하기 위해 등장
  • 인터페이스를 통해 연결된다.

 

모듈과 컴포넌트 비교

구분 모듈 컴포넌트
목적 소프트웨어 복잡도 해소 소프트웨어 재사용성 향상
재사용 단위 소스 코드  실행 코드
독립성 구현언어 종속적
플랫폼 종속적
구현언어 종속적
동일 플랫폼 기반 개별적 연결
응용 단일 어플리케이션 분산 어플리케이션
중심사상 모듈화
추상화
객체지향
CBD(Component Based Development)
특징 여러 모듈이 하나의 애플리케이션을 형성하는 계층 구조 다른 컴포넌트와 소통하는 네트워크를 이루며 서비스 제공

 

재사용이란?

  • 검증된 기능을 파악하여 재구성하는 것
  • 모듈을 최적화하여 다른 시스템에서 적용하면 개발 비용과 기간을 낮출 수 있다.
  • 생산성 및 소프트웨어 품질이 향상된다.
  • 재사용 시 해당 모듈은 외부 모듈과의 응집도는 높고, 결합도는 낮아야 한다.
  • 기존 소프트웨어에 재사용 소프트웨어를 추가하기 어려운 문제점이 발생할 수 있다.

 

재사용 규모에 따른 구분

① 함수와 객체 : 클래스, 메소드 단위로 소스코드 재사용

② 애플리케이션 : 애플리케이션 단위로 공유하여 재사용

③ 컴포넌트 : 컴포넌트 단위로 재사용

 

공통 모듈

  • 각 서브시스템에서 공통으로 사용하는 기능을 묶어 하나의 공통 모듈로 개발
  • 모듈 재사용성을 높이고 중복 개발로 인한 낭비를 줄일 수 있다.
  • 같은 기능을 재사용함으로서 기능에 대한 정합성, 신뢰성을 확보할 수 있다.
  • 유지보수 단계에서도 모듈 변경을 통해 관련 시스템을 일괄 변경할 수 있다.

 

공통 모듈 – 명세 기법

① 정확성 : 실제 구현시 꼭 필요한 기능인지 확인

② 명확성 : 해당 기능에 대해 일관된 이해로 하나로 해석될 수 있도록 작성

③ 완전성 : 시스템 구현시 필요한 모든 것을 작성

④ 일관성 : 공통 기능 간 서로 충돌이 발생하지 않도록 작성

⑤ 추적성 : 공통 기능에 대한 요구사항 출처, 관련 시스템의 유기적 관계 구분 가능하도록 작성

 

공통 모듈 테스트 종류

① 화이트박스 테스트 : 소스코드를 보면서 테스트케이스를 만듦

② 메소드 기반 텍스트 : 공통 모듈의 외부에 공개된 메소드 기반 테스트

③ 화면 기반 테스트 : 화면 단위로 모듈 개발 후 화면에 직접 입력하여 테스트

 

모듈 명세화 도구

흐름도, N-S 도표, 의사 코드, 의사 결정표, 의사 결정도, PDL, 상태 전이도, 행위도

 

N-S 도표(Nassi-Scheierman chart)

  • 구조적 프로그램의 순차, 선택, 반복의 구조를 사각형으로 도식화하여 알고리즘을 논리적 기술에 중점을 둔 도형식 표현법
  • 주로 박스 다이어그램을 사용하여 논리적 제어구조로 흐름을 표현함
  • 임의로 제어 이동이 어려움
  • 이해하기 쉽고 코드 변환이 용이하다
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합함.

 

제어구조

① 순차, ② 선택 및 다중선택, ③ 반복

 

fig1.0. N-S 도표의 제어구조 종류