응집도

응집도는 모듈 내부에 존재하는 구성 요소들 사이의 밀접한 정도를 나타냅니다. 즉 하나의 모듈 안에서 구성 요소들 간에 똘똘 뭉쳐 있는 정도를 말합니다. 응집도가 높을수록 구성 요소들이 꼭 필요한 것들로만 모여 있고, 낮을수록 서로 관련성이 적은 요소들이 모여 있습니다. 

 

 

 

 응집도 종류

이러한 응집도는 아래와 같이 다양한 기준으로 모듈을 구성할 수 있고 그에 따라 응집도와 품질이 달라집니다.

 

 

기능적 응집도 

모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

 

순차적 응집도 

모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도

 

환적 응집도 

동일한 입력과 출력을 사용하여 서로 다른 긴으을 수행하는 구성 요소들이 모여 있을 경우의 응집도

 

절차적 응집도 

모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

 

시간적 응집도 

특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

 

논리적 응집도 

유사한 성격을 가지거나 특정 형태로 분류되는 처리요소들로 하나의 모듈이 형성되는 경우의 응집도

 

우연적 응집도 

모듈 내부의 각 구성요소들이 서로 관련 없는 다른 기능을 수행하는 경우의 응집도



결합도(Coupling)



먼저 결합도에 대해 알아보고 진행하겠습니다. 한 모듈과 다른 모듈 간의 상호 의존도 또는 연관 관계입니다. 
쉽게 말해서 얼마나 클래스간에 연결이 되어 있는지 나타내는 것 입니다.
A클래스와 B클래스가 연관이 있다고 합시다.

A클래스가 변경이 된다고 한다면 B클래스도 당연히 변경이 되어야 합니다. 

그 이유는 A와 B 클래스가 연관되어 있기 때문에 당연히 A가 변경이 되면 B도 변경이 이루어져야 합니다.

만약 큰 프로젝트를 진행했다고 한다면 연결된 것이 많으면 많을수록 그만큼 변경해야 하는 것도 많아집니다.

 

 

결합도가 높은 시스템은 당연히 유지보수가 어렵습니다.

결합도를 낮추기 위한 방법이 있습니다.




1. 
다형성

결합도를 낮추는 방법 중 하나인 다형성은 객체지향 언어의 핵심 개념입니다. 

여러 행태를 가질 수 있는 능력을 말합니다. 상속이나 메소드 재정의 인터페이스를 통해 이루어 집니다.

하지만 이 방법도 어느정도의 코드 수정이 필요합니다. 그래도 이 전보다는 결합도도 낮아지고 

유지보수도 쉬워졌다고할 수 있습니다. 


2. 디자인 패턴

또 다른 방법은 Factory 패턴을 사용하는 것입니다. 

클라이언트에서 사용할 객체 생성을 캡슐화합니다. 즉 객체 생성을 위한 클래스를 하나 더 만들어

그 곳에서 클라이언트 요청에 따라 객체 생성을 다르게 하는 것입니다.

 





출처: https://nackwon.tistory.com/

'프로그래밍 > C++' 카테고리의 다른 글

심볼 Symblos  (0) 2019.07.05
절차지향 + 객체지향  (0) 2019.05.01
페이지 폴트 + 가상메모리 시스템  (0) 2019.05.01
CAST 종류 + RTTI  (0) 2019.04.30
virtual 순수가상함수 + 가상함수테이블  (0) 2019.04.30

+ Recent posts