응집도
응집도는 모듈 내부에 존재하는 구성 요소들 사이의 밀접한 정도를 나타냅니다. 즉 하나의 모듈 안에서 구성 요소들 간에 똘똘 뭉쳐 있는 정도를 말합니다. 응집도가 높을수록 구성 요소들이 꼭 필요한 것들로만 모여 있고, 낮을수록 서로 관련성이 적은 요소들이 모여 있습니다.
응집도 종류
이러한 응집도는 아래와 같이 다양한 기준으로 모듈을 구성할 수 있고 그에 따라 응집도와 품질이 달라집니다.
기능적 응집도
모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
순차적 응집도
모듈 내의 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
교환적 응집도
동일한 입력과 출력을 사용하여 서로 다른 긴으을 수행하는 구성 요소들이 모여 있을 경우의 응집도
절차적 응집도
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
시간적 응집도
특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
논리적 응집도
유사한 성격을 가지거나 특정 형태로 분류되는 처리요소들로 하나의 모듈이 형성되는 경우의 응집도
우연적 응집도
모듈 내부의 각 구성요소들이 서로 관련 없는 다른 기능을 수행하는 경우의 응집도
결합도(Coupling)
먼저 결합도에 대해 알아보고 진행하겠습니다. 한 모듈과 다른 모듈 간의 상호 의존도 또는 연관 관계입니다.
쉽게 말해서 얼마나 클래스간에 연결이 되어 있는지 나타내는 것 입니다.
A클래스와 B클래스가 연관이 있다고 합시다.
A클래스가 변경이 된다고 한다면 B클래스도 당연히 변경이 되어야 합니다.
그 이유는 A와 B 클래스가 연관되어 있기 때문에 당연히 A가 변경이 되면 B도 변경이 이루어져야 합니다.
만약 큰 프로젝트를 진행했다고 한다면 연결된 것이 많으면 많을수록 그만큼 변경해야 하는 것도 많아집니다.
결합도가 높은 시스템은 당연히 유지보수가 어렵습니다.
결합도를 낮추기 위한 방법이 있습니다.
1. 다형성
결합도를 낮추는 방법 중 하나인 다형성은 객체지향 언어의 핵심 개념입니다.
여러 행태를 가질 수 있는 능력을 말합니다. 상속이나 메소드 재정의 인터페이스를 통해 이루어 집니다.
하지만 이 방법도 어느정도의 코드 수정이 필요합니다. 그래도 이 전보다는 결합도도 낮아지고
유지보수도 쉬워졌다고할 수 있습니다.
2. 디자인 패턴
또 다른 방법은 Factory 패턴을 사용하는 것입니다.
클라이언트에서 사용할 객체 생성을 캡슐화합니다. 즉 객체 생성을 위한 클래스를 하나 더 만들어
그 곳에서 클라이언트 요청에 따라 객체 생성을 다르게 하는 것입니다.
'프로그래밍 > 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 |