4-1, 4-2 소프트웨어 설계 원리/응집도와 결합도

2021. 1. 18. 22:52Topcit 정리/기술영역 - 소프트웨어 개발

반응형

 

소프트웨어 설계 원리

 

분할

소프트웨어 설계 단계에서 요구사항을 분할하여 최대한 덜 복잡하게 만들어야 하며,

이를 통해 얻어진 결과는 독립성을 고려하여 재조합되어야 한다.

분할한 시스템 구성요소를 서브시스템이라 부르며, 시스템 설계자는 명확히 서브시스템을 나누어야 한다.

 

추상화

추상화는 흐름을 지키며 큰 그림을 그리는 과정이며, 세부적인 항목은 생략한다.

컴포넌트의 구현 방법은 생략하고 상호 작용에 중심을 두어 표현한다.

 

정보 은닉

각 모듈의 내부 내용을 감추고 인터페이스를 통해서만 메시지를 전달하자는 개념이다.

이러는 이유는 하부 시스템이 다른 모듈에 영향을 끼치거나, 독립성에 방해를 하기 때문이다.

 

단계적 정제

단계적 정제는 구조가 내려가며 구체화된다. 정제 과정에서 추상화 수준이 낮아지며

점점 세부적인 문제의 해결방안을 찾으며 진행된다.

 

모듈화

소프트웨어의 모듈은 서브루틴, 프로시저로 부르며 모듈 사이의 제어 계층이 나타나도록 표현한다.

복잡한 문제를 분할하여 정복할 수 있도록 잘게 쪼개서 모듈로 만들고 처리한다.

 

구조화

시스템을 어떻게 분할해 나갈 것인가에 대한 가이드라인을 만드는 것

한번 만들고 나면 유사한 프로젝트를 진행할 때 많은 도움이 된다.

 

 

 

응집도와 결합도

 

응집도

응집도란 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가를 나타내는 모듈 성숙도의 척도이다.

모듈이 단일 기능을 수행하여 상위 모듈에게 도움을 주는 모듈이 응집도가 높다고 표현하고,

아무 관련 없는 처리 요소들로 모듈이 이루어진 경우 응집도가 낮다고 표현한다.

 

결합도

결합도란 모듈 간의 연결에 있어서 복잡함의 척도이다.

상호 교류가 많고 의존이 높을수록 결합도가 높아지며, 구조를 잘못 짜서 불필요한 인터페이스와 상호작용이 많을수록

결합도가 높아지게 된다.

 

 

따라서 소프트웨어 설계 시 결합도를 최대한 낮추고 응집도를 올리는 것이 필요하다.

전역 변수를 모든 메서드에서 사용하는 것이 결합도를 올리는 행위로 예를 들 수 있다.

 

 

 

 

 

반응형