본문 바로가기

카테고리 없음

구조적 설계 평가 기준

구조적 설계의 기본 원리 중의 하나는 규모가 큰 시스템을 관리할 수 있는 정도의 크기로 모듈을 분할하는 것이다. 이때 분할은 모듈이 가능한 한 독립적으로, 각 모듈이 단일 기능을 수행하도록 해야 한다. 따라서 설계의 평가척도는 결합도는 낮게 하고 응집도는 높게 하여 모듈의 독립성과 기능성을 강조한다.

 

결합도란 모듈과 모듈 사이의 상호의존의 정도를 말하는 것으로 의존의 정도가 낮을수록 바람직하다. 즉 결합도란 설계에 대한 품질 평가 방법의 하나로서, 두 모듈간의 상호 의존 정도를 측정하는 것으로 독립성을 산정하는 척도이다. 이는 모듈간의 연관성을 의미하는 것이며, 좋은 설계가 이루어지도록 하기 위해서는 가능한 한 모듈을 독립적으로 생성함으로써 결합도를 최소화하는 것이다.

 

결합도는 두 모듈간의 의존 정도에 따라 자료결합, 자료구조결합, 제어결합, 공통결합, 내용결합의 5가지 유형으로 분류되며, 이때의 연관 정도는 데이터의 전달이 어떤 방식으로 이루어지느냐의 관점이다.

 

자료 결합도는 모듈과 모듈사이에 꼭 필요한 자료로만 의사소통을 하는 결합도를 말하며, 자료는 하나의 필드이거나 동질의 테이블을 말한다. 즉 두 모듈간에 꼭 필요한 자료만을 전달하는 양성적 결합이다. 따라서 자료결합도는 가장 좋은 결합도를 유지한다. 두 모듈간의 인터페이스는 자료요소의 매개변수 교환뿐이며, 상대 모듈은 검은 상자이어도 좋다. 또한 순서 변경이 다른 모듈에 영향을 미치지 않는다.

 

*떠돌이 자료는 방랑자료라고도 하며, 목적 없이 시스템 주위를 떠도는 자료를 말한다. 즉 실질적으로 사용되지 않는 여러 모듈을 거쳐 전송되는 자료로 모듈 설계가 잘못되었다는 것을 뜻한다. 

 

자료구조 결합도는 두개의 모듈이 동일한 자료구조를 사용하는 결합도로 형태결합도라고도 한다. 자료구조는 여러 개의 필드로 이루어진 레코드 또는 배열이다. 따라서 두 모듈간에 자료구조로 전달하는 결합성으로 불필요한 자료도 전달되는 문제가 발생한다. 자료 구조 결합도는 동일한 자료구조를 사용하므로 상호의존도가 높아진다. 따라서 모듈이 필요로 하는 것보다 더 많은 자료를 접하게 된다. 두 모듈이 공통영역에 없는 같은 구조를 공유하며, 공통결합과 비슷하나 그보다는 결합도가 낮다.

 

내용결합도는 두 모듈간에 내용으로 전달하여 그 내용이 변경되면 사용하는 모든 모듈에 많은 영향을 주는 결합성을 가지며, 한 모듈이 다른 모듈의 내부를 참조하는 결합도를 말한다. 따라서 한 모듈의 작은 변화가 시스템의 다른 모듈에 영향을 초래한다. 다른 모듈 내의 외부 선언을 하지 않은 자료를 직접 참조하므로 의존도가 대단히 높고, 순서 변경이 다른 모듈에 영향을 주기 쉽다.

 

응집도란 모듈 내부 요소들간의 기능적 연관성을 나타내는 척도로 모듈의 요소들이 서로 밀착되어 있는 정도를 말하는 것으로 밀착도가 높을수록 바람직하다. 즉 응집도는 한 모듈 내에 있는 구성요소의 기능적 관련성을 평가하는 기준으로서, 다른 모듈과의 결합도에 영향을 준다. 모듈 내에 있는 구성요소란 명령어, 호출문, 구리고 이들의 모임을 의미하며, 이러한 요소들이 어떤 순서로 모듈 내부에 나타나고, 그 순서가 어떤 기준에 의해서 정해졌는가에 따라 모듈의 응집도를 표현한다.

 

응집도나 결합도는 상호 의존적 관계에 있다. 즉 응집도가 높다는 것은 곧 결합도가 낮다는 것을 의미한다. 또한 결합도가 함께 시스템이 얼마나 잘 분할되었는지를 측정하는 기준이 된다.

응집도는 시스템 설계시 산출물의 우수성을 평가하는 척도이다. 또한 개선 방향을 제시하는 지침인 응집도는 기능적 응집, 순차적 응집, 대화적 응집, 절차적 응집, 일시적 응집, 논리적 응집, 임의 응집등 7가지로 분류된다.

 

기능적 응집도는 모듈 내의 요소가 갖는 기능의 응집성으로, 오직 하나의 문제에만 관련된 임무를 수행하는 기능을 가진 모듈로서 기능이 확실하고 하나만의 목표를 가지고 있다. 즉 상위모듈이 이러한 모듈을 불렀을 때, 이 모듈은 오직 본연의 임무에 관련된 일만을 수행하고 그 외의 일은 전혀 하지 않는다. 기능적 응집도는 제일 강한 강도를 가지고 있으며, 모든 요소가 하나의 기능을 수행하기 위하여 관련되어 있다. 가능한 한 가장 강한 모듈로 집약시킨다.

 

순차적 응집도는 모듈 내의 상위 라인의 출력요소가 하위 라인의 입력요소로 사용되는 응집도로, 모듈내의 어떤 단위활동의 출력이 다음 단위활동의 입력으로 작용하는 요소들로 이루어진 모듈이다. 따라서 모듈 내에서 요소들 사이의 응집력이 높고 모듈간의 결합도도 낮으며 유지 보수가 용이하다. 그러나 다른 모듈에서 사용하기에는 불필요한 활동을 포함할 경우가 있으므로 재사용하기에는 곤란하다.

모듈의 구성요소가 하나의 활동으로부터 나온 출력 자료를 그 다음 활동의 입력자료로 사용하는 같은 모듈 내에서의 응집의 정도이다.

 

대화적 응집도는 정보적 응집도라고도 하며, 모듈 내의 자료가 원하는 자료인지 확인하는 검사의 기능이 추가된 응집성으로, 모듈내의 단위활동들이 동일한 입력자료를 이용하여 서로 다른 자료를 출력하거나, 서로 다른 자료를 입력하여 동일한 정보를 출력시키는 경우의 응집도를 말한다. 모듈 내의 요소가 같은 자료를 참조하든지, 요소간에 서로 자료를 주고받을 때 등의 유지 보수성이 좋다.

 

절차적 응집도는 모듈내의 명령의 기능이 절차에 맞게 처리되도록 하는 응집성으로, 모듈내에 단위활동들이 서로 다르거나 관련 없는 기능을 수행하고 있으나, 이러한 단위활동들이 서로 다른 요소들을 제어함으로써 일정한 순서로 수행되어지는 경우의 응집도를 말한다. 따라서 제어신호를 전달하나 자료는 전달되지 않는 요소들로 구성된다. 문제를 처리하기 위하여 관계가 있는 복수 개의 기능 중 몇 개를 실행한다. 따라서 흐름도의 일부를 모듈로 취할 때 등이다.

 

일시적 응집도는 시간적 응집도라고도 하며, 모듈 내의 요소가 특정시기에만 사용되는 연관성으로, 일정한 시간대에 발생하는 단위활동들로 구성된 모듈이다. 즉 여러 개의 단위활동들이 순서에 구애받지 않고 일정한 시간대에 반복되는 모듈을 말한다. 일시적 응집도는 주로 초기치 설정 및 종결처리에 이용한다. 초기치 설정 모듈, 종료 모듈 등 모듈은 부분적인 기능들로 구성되며 구성요소들은 어떤 특정한 시간에 수행된다.

 

논리적 응집도는 모듈 내의 여러 요소에 따른 논리철자가 한 모듈 내에 있도록 하는 응집도로, 비슷한 기능을 가지고 있는 논리적 범주 내에 속하는 단위활동들로 구성된 모듈을 말하며, 수행할 단위활동들은 모듈내부에서 선택하게 된다. 모듈의 각 요소간에 논리적으로 추상화되는 관계를 맺고 있다. 어떤 프로그램의 모든 입출력 조작을 하는 모듈이나 모든 자료를 편집하는 모듈 등이다.

 

임의적 응집도는 우연적 응집도라고 하며, 모듈 내의 요소가 서로 무관한 절차로 구성되거나 모듈 크기가 너무 커서 임의로 분할하였을 때의 모듈간의 큰 영향을 주게 되는 연관성으로, 서로 관계가 없는 단위활동으로 구성된 모듈을 말하며 서로 다른 상위 모듈로부터 호출되어 연관성이 없는 서로 다른 기능을 수행한다. 임의적 응집은 가장 낮은 결합성을 가지며 유지 보수 개로 분할하든지, 우연히 중복된 프로그램을 통합하여 모듈로 하였을 때 등 모듈 내에서의 활동은 자료의 흐름이나 제어의 흐름에 의하여 관계를 맺지 않는다.