개발일지

응집도와 결합도

FE 2021. 6. 5. 18:16

#1 응집도와 결합도

정보처리기사를 공부할 때, 응집도는 높게, 결합도는 낮게로 공부했던 기억이 납니다. 

 

이번 admin 작업을 해보면서 느꼈던 점을 회고하기 전에 응집도와 결합도를 정리하면 좋을 것 같단 생각에 정리를 해봅니다.

 

유지보수를 용이하게 해주는 설계가 좋은 설계는 정말 당연한 말입니다.

 

그럼 유지보수를 용이하게 하기 위해서는 어떻게 해야 할까요?

 

높은 응집도와 낮은 결합도를 가지도록 설계하는 것이 유리합니다.

 

그럼 응집도가 무엇일까요?

 

응집도는 모듈에 포함된 내부 요소들이 하나의 책임 / 목적을 위해 연결되어 있는 연관된 정도입니다.

 

- 모듈이 하나의 목적을 수행하는 요소들간의 연관성 척도

- 모듈 내부의 기능적인 응집 정도를 나타냄

- 응집도가 높은 것이 유지보수에 유리

 출처:https://medium.com/@jang.wangsu/

유지 보수를 위해 a라는 기능을 수정하기 위해 a 기능이 모여있는 A모듈만 찾아서 수정하면 편리합니다.

만약 A모듈이 아닌 B,C,D 모듈안에서 a 기능을 사용하고 있을 때, a를 수정하게 되면 A에서 잘 작동하더라도 B,C,D에서는 오류가 발생할 수 있습니다. a의 기능은 A의 모듈을 위해서 만들고 그 안에서만 사용할 수 있도록 한 것을 응집도가 높다고 할 수 있습니다.

 

이처럼 응집도가 높다는 의미는 변경대상과 범위가 명확해지는 장점이 있어서 유지보수가 유리합니다.

 

결합도는 다른 모듈과의 의존성의 정도를 의미합니다. 모듈 수정을 위해 다른 모듈의 변경을 요구하는 것 이라고 할 수 있습니다.

 

- 모듈이 다른 모듈에 의존하는 정도의 척도

- 모듈과 모듈간의 상호 결합 정도를 나타냄

- 결합도가 낮을수록 유지보수에 유리

b라는 기능을 유지보수 할 때, 해당 기능을 사용하고 있는 다른 모듈들과 기능들이 연관되어 수정하려면 다른 모듈 소스도 확인을 해야합니다. 필요 시 다른 모듈들까지 수정해야 한다면 유지보수를 위한 리소스가 많이 들 것 입니다.

 

이처럼 결합도가 높으면 변경하고 검토해야하는 모듈 수가 많아지는 단점이 있습니다. 어떤 사이드 이펙트가 발생할 지 모르기 때문이죠

결합도가 낮을수록 검토해야되는 소스의 수가 적어져서 코드를 수정하기 쉬워집니다.

 

복잡성과 시간은 반비례 / 복잡성은 결합도와 비례 

 

변경될 가능성이 적은 모듈의 경우 다양한 코드가 밀집되어 있어도 문제가 되지 않는다고 하지만 최대한 분류를 해놓는 것이 좋을 것 같습니다.

 

모듈간의 변화의 영향을 줄이면서 의존성을 낮추고 재사용성을 높일 수 있을까에 대한 고민을 항상 해야 할 것 같습니다.

 

참고

https://medium.com/@jang.wangsu/

'개발일지' 카테고리의 다른 글

타입스크립트로 마이그레이션 여정기 1  (0) 2022.04.30
redux-saga에서 react-query로 전환하기 2  (0) 2022.03.02
redux-saga에서 react-query로 전환하기  (0) 2022.02.28
2021년 회고  (0) 2022.01.01
Admin 회고  (0) 2021.06.05