반응형
1과목. 소프트웨어 구축
📒 12. 모듈 구현
계획 - 요구사항 분석 - 소프트웨어 - 구현 - 테스트 - 유지보수
1. 단위 모듈 구현
(1) 단위 모듈 구현의 개념
- 소프트웨어를 기능 단위로 분해하여 개별적으로 구현하는 기법
- 모듈은 하나의 기능을 수행하는 것
- 각 모듈이 독립적으로 활용될 수 있게 함
(2) 효과적인 모듈화
- 결합도(Coupling)를 낮추고, 응집도(Cohesion)를 높여 모듈의 독립성을 강화
- FAN-OUT(한 모듈이 호출하는 다른 모듈의 수) 최소화, FAN-IN(한 모듈을 호출하는 다른 모듈의 수) 증가
- 복잡성과 중복성을 줄이고, 일관성을 높임
(3) 단위 모듈 설계의 원리
- 단계적 분해, 추상화, 독립성, 정보 은닉, 분할과 정복
2. 결합도(Coupling)
(1) 결합도의 개념
- 모듈과 모듈 간의 관련성/의존성 정도
- 결합도가 낮을수록 잘 설계된 모듈
(2) 결합도 유형 ⭐
- a) 자료 결합도 (Data Coupling)
- 모듈 간의 인터페이스로 값이 전달되는 경우 - b) 스탬프 결합도 (Stamp Coupling)
- 배열이나 오브젝트, 주소값, 자료구조가 전달되는 경우 - c) 제어 결합도 (Control Coupling)
- 어떻게 처리를 해야 한다는 제어 요소(if 등)가 전달되는 경우 - d) 외부 결합도 (External Coupling)
- 외부 변수를 참조하는 경우 - e) 공통 결합도 (Common Coupling)
- 전역 변수를 참조하고 사용하는 경우 - f) 내용 결합도 (Data Coupling)
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
3. 응집도(Cohesion)
(1) 응집도의 개념
- 모듈 내부에서 구성요소 간에 밀접한 관계를 맺고 있는 정도
- 응집도가 높을수록 잘 설계된 모듈
(2) 응집도 유형 ⭐
- a) 기능적 응집도 (Functional Cohesion)
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 - b) 순차적 응집도 (Sequential Cohesion)
- 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 - c) 통신적 응집도 (Communication Cohesion)
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우 - d) 절차적 응집도 (Procedural Cohesion)
- 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우 - e) 시간적 응집도 (Temporal Cohesion)
- 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우 - f) 논리적 응집도 (Logical Cohesion)
- 유사한 성격(비슷한 기능)을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 - g) 우연적 응집도 (Coincidental Cohesion)
- 모듈 내부의 각 구성 요소들이 연관이 없을 경우
4. 팬인(Fan-In), 팬아웃(Fan-Out)
(1) 팬인, 팬아웃의 개념
- 모듈의 복잡도와 상호작용을 분석하는 데 사용되는 지표
- 팬인은 높게, 팬 아웃은 낮게 설계해야 시스템 복잡도를 최적화할 수 있음
(2) 팬인
- 특정 모듈을 호출하거나 참조하는 상위 모듈의 개수
- 높은 팬인 값은 해당 모듈의 중요성이나 재상용성이 높음을 나타냄
(3) 팬아웃
- 특정 모듈이 호출하거나 참조하는 하위 모듈의 수
- 높은 팬아웃 값은 복잡도가 높아짐
5. Annotaion
(1) Annotaion의 개념
- 사전적으로는 '주석'이라는 의미
- 자바 코드에 주석처럼 달아 특수한 의미를 부여하여 컴파일 또는 런타임에 해석됨
(2) Annotaion의 종류
- @Controller : 스프링 MVC에서 컨트롤러 객체임을 명시
- @RequestMapping : 클래스나 메서드가 특정 URI에 매핑되어 있음을 명시
- @RequestParam : HTTP 요청에서 특정한 파라미터 값을 추출할 때 사용
- @RequestHeader : HTTP 요청 헤더에서 정보를 추출할 때 사용
- @PathVariable : URI의 일부를 변수로 추출할 때 사용
- @CookieValue : 요청한 쿠키 값을 메서드의 인자로 전달하는 데 사용
- @ModelAttribute : 모델 객체를 뷰까지 전달
- @ResponseBody : HTTP 요청의 본문을 객체로 전달 받을 때 사용
참고자료
흥달쌤, '흥!나게 합격 달성! 2024 정보처리기사 실기 클래스'
반응형
댓글