-
응집도와 결합도Technique/Programmer 2017. 3. 16. 22:32반응형
소프트웨어 설계의 품질과 관련한 핵심적 요소로 응집도와 결합도가 있다. 이는 OO( Object-Oriented ) 개념에서 비롯된 것이 아니다.
개발자 들은 1970년대초 구조적 설계에 대한 이야기를 시작한 시점부터 오랜 시간에 걸쳐 이에 대해 이야기해왔다. 응집도와 결합도는 다음과 같은 특징을 지닌 컴포넌트로 시스템을 설계하는 것을 목표로 한다.
- 강력한 응집도
응집도는 기능적으로 연관된 것끼리 얼마나 모여 있고, 하나의 모듈 내에서 내부 부분들이 얼마나 유기적으로 작동하는지에 대한 척도이다. 응집도는 모듈을 단단하게 뭉쳐놓는 접착제에 비유할 수 있다. 한편 빈약한 응집도를 가진 모듈은 잘못된 기능 분해의 징후이다. 각 모듈은 명확하게 정의된 역할을 가져야 하며, 관련없는 기능을 마구잡이로 모아놓은 덩어리여서는 안 된다.
- 느슨한 결합도
결합도는 모듈 상호 간의 의존성에 대한 지표이다. 서로 얼마나 얼기설기 엮여 있는가에 대한 것이다.
간결한 설계에서는 모듈 간 결합도가 낮아 상호 독립적이다. 물론 모듈들이 완전히 돌깁적일 수는 없으며, 완전히 닥자적으로 작동한다는 건 말이 되지 않는다.
상호 작동하는 모듈들은 직접적 혹은 간접적으로 서로에 대해 의존성을 가진다. 하나의 모듈은 다른 모듈의 함수를 호출할 수 있고, 다른 모듈에 의해 하나의 모듈 내 함수가 호출될 수도 있다. 웹 서비스를 사용하거나 다른 모듈에 의해 공개된 기능을 이용할 수도 있다. 아니면 다른 모듈의 자료형을 사용하거나 어떤 데이터를 공유할 수도 있다. 여기서 데이터란 변수나 파일 같은 것을 말한다.
훌륭한 소프트웨어 디자인은 모듈 간의 상호 작동에서 필요한 것들만 허용한다. 상호 작동 흐름은 소프트웨어의 구조를 결정하는 요소 중 하나다.
반응형'Technique > Programmer' 카테고리의 다른 글
13. 소프트웨어 설계에 대한 이야기 (0) 2017.03.19 기술 부채 (0) 2017.03.19 12. 복잡도 다루기 (0) 2017.03.16 11. 테스트 하기 (0) 2017.02.22 10. 버그 사냥하기 (0) 2017.02.08