[소공 목차]

 

개념

  • 프로그램이 효율적으로 관리될 수 있도록 하는 소프트웨어의 특성으로 모듈화를 수행하면 소프트웨어 복잡도가 감소하고 변경이 용이하며 프로그램 구현 편의성이 증대됨
  • 시스템을 분해하고 추상화를 통하여 소프트웨어 제품의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하게 하는 설계 방법

  • 모듈화는 구현 및 유지보수에 있어 비용 및 성능을 크게 좌우하는 요소로, 설계 및 구현 단계에 있어서도 중요한 원리로 자리 잡고 있음

모듈화의 원리

구분 설명
비용과 모듈과의 관계 모듈수가 증가하면 인터페이스 비용의 증가
모듈의 독립성 낮은 결합도와 높은 응집도를 가짐
자료 추상화 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은폐

모듈화의 주요 특성

구분 설명 특징
모듈성
(Modularity)
프로그램을 효율적으로 관리할 수 있도록 하는 소프트웨어의 특성으로 시스템 분해 및 추상화를 통해 소프트웨어 성능 향상을 위한 적합한 프로그램 단위 성능향상
컴포넌트화
재사용성
응집도
(Cohesion)
모듈의 독립성을 나타내는 개념으로 하나의 모듈 내부 처리 요소들간에 기능적 연관도를 측정하는 척도 높을수록 좋음
결합도
(Coupling)
소프트웨어 구조에서 모듈간 연관성을 측정하는 척도 낮을수록 좋음

 

모듈화 기법의 종류

구분 기법 내용
설계 Module
  • 설계 시 관련이 있는 기능을 한 부분에 모아놓고 library 형태로 사용
컴포넌트
  • 바이너리형태의 재사용 가능한 형태로
  • 인터페이스에 의해 로직을 수행할 수 있는 모듈단위
서비스
  • 기존 컴포넌트 보다는 Loosely coupled 한 형태의 기능을 제공하는 모듈단위
구현 Macro
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 프로그래밍 기법. , 전 처리기는 macro가 사용된 모든 곳에 코드를 대체해 놓음
Function
  • 프로그램 구현 시 커다란 프로그램의 일부 코드로
  • 특정한 작업을 수행하고 상대적으로 다른 코드에 비해 독립적인 모듈
Inline
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여해 놓고 이름을 호출하여 실행할 수 있도록 하는 프로그램 기법. , 컴파일러는 이 inline이 사용된 모든 곳에 코드를 복사해 놓음
  • Module
    - 전체 프로그램을 구성할 요소인데, 기능 단위로 묶은 것이며 재사용을 용이하게 하기 위해 만든다.

Component
- 재사용 가능한 블럭, 다른 component들의 조합으로도 가능
  다른 서버에 배치 가능, 서비스 위해 서로 통신 가능

응집도/결합도

fan-in/fan-out

+ Recent posts