리그캣의 개발놀이터

소프트웨어 설계 - 응집도와 결합도 본문

프로그래밍 기본/소프트웨어 설계

소프트웨어 설계 - 응집도와 결합도

리그캣 2018. 1. 25. 19:35

분석analysis(What[spec], Problem)

설계design(How)

구현prementation

응집도

한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준으로 응집도가 높을수록 모듈의 독립성은 높아짐

응집도 순서 : 기능적 응집도 -> 순차적 응집도 -> 통신적 응집도 -> 절차적 응집도 -> 시간적 응집도 ->

                    논리적 응집도 -> 우연적 응집도

기능적 응집도 : 하나의 기능을 수행하는데 필요한 요소들만 포함한 경우

                     - 구조도 최하위 모듈에서 많이 발견

순차적 응집도 : 하나의 기능에서 생성된 출력자료가 다음 기능의 입력자료로 사용되는 경우

                     (예: 행렬 입력 후 그 행렬의 역행렬을 구해서 이를 출력)

통신적 응집도 : 동일한 자료 사용하지만, 자료에 대한 처리 절차가 완전히 다르고 서로 관계없는 경우

                    - 교환 응집, 정보 응집

                    (예: 같은 입력자료를 사용하여 A를 계산한 후 B를 계산한다.)

절차적 응집도 : 입출력을 공유하지 않으나 순서에 따라서 수행될 필요가 있는 경우

                      예: restart루틴

                          총계 출력하고 화면을 지우고 메뉴를 뿌린다.

시간적 응집도 : 특정한 시점에서 작업을 수행하는 경우

                      (예: 초기치 설정, 종료처리 등)

논리적 응집도 : 유사한 기능들이 하나의 모듈 안에 구성된 경우

                      - 사용하는 매개변수에 따라 처리하는 내용이나 경로가 달라진다

                    예: 오류처리- 자판기의 잔액부족, 음료수부족

                         출력처리- 직원 인사정보 출력, 회계정보 출력

우연적 응집도 : 관련 없는 요소들로 구성된 모듈 (단순히 일정한 크기로 분할한 경우)

                      - 모듈화 장점이 없다.

                     - 유지보수 작업 곤란

결합도

두 모듈간의 상호 의존도를 측정하는 것으로, 좋은 설계는 모듈간의 결합도를 최소화하여 모듈의 독립성을 높인것을 의미

 결합도 순서: 자료결합도 -> 스태프 결합도 -> 제어 결합도 -> 외부 결합도 -> 공통 결합도 -> 내용 결합도

 자료 결합도 : 단순한 매개변수 전단

 스태프 결합도 : 모듈간 자료구조 전달 결합

 제에 결합도 : 호출하는 모듈이 호출되어 지는 모듈의 제어를 지시하는 데이터를 매개변수로 사용

 외부 결합도 : SW 외부환경과 연관되어 있음

 공통 결합도 : 많은 모듈이 전역변수를 참조함

 내용 결합도 : 특정 모듈이 다른 모듈의 내부 자료 나 제어정보를 사용함

Comments