Hello

[정처기 필기] 컴포턴트, 모듈, 응집도, 결합도

by 볼빵빵오춘기

컴포넌트

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

 

모듈

전체 프로그램의 기능 중 특정 부분의 기능을 처리할 수 있는 단위 실행 코드를 의미하며 자체적으로 컴파일 가능하고 다른 프로그램에서 재사용이 가능하다.

 

공통 모듈

날짜 처리를 위한 유틸리티 모듈 등 여러 기능 및 프로그램에서 공통적으로 사용할 수 있는 모듈을 의미

 

공통 모듈에 대한 명세 기법

  • 정확성
    해당 기능이 실제 시스템 구현 시 필요한지 여부를 알 수 있도록 정확하게 작성한다.
  • 명확성
    해당 기능에 대해 일관되게 이해되고 한 가지로 해석될 수 있도록 작성한다.
  • 완전성
    시스템이 구현될 떄 필요하고 요구되는 모든 것을 기술한다.
  • 추적성
    공통 기능에 대한 요구사항 출처와 관련 시스템 등의 유기적 관계에 대한 식별이 가능하도록 한다.

 

모듈의 재사용

개발 시간 및 비용 절감을 위하여 이미 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위해 적합하게 최적화 시키는 작업

 

모듈 재사용 규모에 따른 분류

  • 함수와 객체 재사용
  • 클래스나 메소드 단위로 사용, 소스 코드 등을 재사용
  • 컴포넌트 재사용
  • 컴포넌트 단위로 재사용, 컴포넌트 자체는 수정하지 않고 인터페이스를 통해 통신
  • 애플리케이션 재사용
  • 공통된 업무가 기능을 제공하도록 구현된 애플리케이션을 공유하여 재사용

 

모듈화

  • 거대한 문제를 작은 조각의 문제로 나누어 다루기 쉽도록 하는 과정으로, 작게 나누어진 각 부분을 모듈이라고 한다.
  • SW의 모듈은 프로그래밍 언어에서 Subroutine, Function 등으로 표현될 수 있다.
  • 모듈화는 시스템을 지능적으로 관리할 수 있도록 해주며, 복잡도 문제를 해결하는 데 도움을 준다.
  • 모듈화는 시스템의 유지보수와 수정을 용이하게 한다.

 

모듈의 재사용을 위한 필요 항목

  • 재사용과 관련된 내용이 이해하기 쉽고, 누구나 사용가능하도록 사용법이 공개되어야 한다.
  • 외부 모듈과의 연관성(결합도)은 적어야 하며, 자체적인 완성도(응집도)는 높아야 한다.

 

응집도

응집도는 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도로 평가되며, 응집도가 높을수록 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성되어 있다.

  • 기능적 응집도 (Function Cohesion)
    모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우
  • 순차적 응집도 (Sequential Cohesion)
    모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
  • 통신적 응집도 (Communication Cohesion)
    동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
  • 절차적 응집도 (Procedural Cohesion)
    모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
  • 시간적 응집도 (Temporal Cohesion)
    연관된 기능이라기 보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
  • 논리적 응집도 (Logical Cohesion)
    유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
  • 우연적 응집도 (Coincidental Cohesion)
    모듈 내부의 각 구성 요소들이 연관이 없을 경우

 

결합도

모듈과 모듈 간에 어느 정도 관련성이 있는지를 나타내며, 관련이 적을수록 모듈의 독립성이 높아 모듈 간 영향이 적어지게 된다.

  • 자료 결합도(Data Coupling)
    모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우
  • 스탬프 결합도 (Stamp Coupling)
    모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
  • 제어 결합도 (Control Coupling)
    단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
  • 외부 결합도 (External Coupling)
    모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
  • 공통 결합도 (Common Coupling)
    파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우
  • 내용 결합도 (Content Coupling)
    다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기