정보처리기사
13. 모듈 구현
nayeonee__
2023. 4. 1. 10:15
https://www.njobler.net/product/lecture/show/prod/10810
1억뷰 N잡
[연장 미포함] 흥나게 합격달성! 정보처리기사 실기
www.njobler.net
본 강의를 듣고 내용을 정리하며 적은 게시글 입니다.
- 모듈 구현
- 모듈 구현 개념
- 소프트웨어를 기능 단위로 분해하여 구현하는 기법
- 단위 모듈 구현 시 장점
- 프로그램의 효율적인 관리 및 성능이 향상
- 전체적인 소프트웨어 복잡성 감소 및 이해성 증대
- 테스트, 모듈 통합, 변경 용이성 쉬움
- 기능의 분리가 가능하고 인터페이스가 단순해짐
- 등등
- 효과적인 모듈화
- 결합도를 낮추고 응집도를 높여 모듈의 독립성을 높임
- FAN-OUT 최소화, FAN-IN 증가
- 등등
- 단위 모듈 설계의 원리
- 단계적 분해
- 처음에는 간단히 작성, 점점 세밀하게
- 추상화
- 독립성
- 정보은닉 - 캡슐화
- 분할과 정복
- 단계적 분해
- 단위 모듈 작성 원칙
- 정확성
- 명확성
- 완전성
- 일관성
- 추적성
- 모듈 구현 개념
- 결합도
- 결합도의 개념
- 어떤 모듈이 다른 모듈에 의존하는 정도
- 두 모듈 사이의 연관 관계
- 결합도가 낮을수록 잘 설계된 모듈이다.
- 결합도 유형
- 자료 결합도 - Data Coupling
- 모듈 간의 인터페이스로 값이 전달되는 경우
- 스탬프 결합도 - Stamp Coupling
- 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
- 제어 결합도 - Control Coupling
- 단순 처리할 대상인 값만 절달되는게 아니라 어떻게 처리를 해야 한다는 제어요소가 전달되는 경우
- 외부 결합도 - External Coupling
- 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조하는 경우
- 공통 결합도 - Common Coupling
- 파라미터가 아닌 모듈밖에 선언되어 있는 전역변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우
- 내용 결합도 - Content Coupling
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
- 자료 결합도 - Data Coupling
- 결합도의 개념
- 응집도
- 개념
- 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소간 연관 정도
- 응집도는 높을수록 좋고, 결합도는 낮을수록 이상적
- 응집도 유형
- 기능적 응집도 - Functional Cohesion
- 순차적 응집도 - Sequential Cohesion
- 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
- 통신적 응집도 - Communication Cohesion
- 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우
- 절차적 응집도 - Procedural Cohesion
- 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
- 시간적 응집도 - Temporal Cohension
- 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
- 논리적 응집도 - Logical Cohesion
- 유사한 성격을 갖거나 특정 형태로 분로되는 처리 요소들이 한 모듈에서 처리되는 경우
- 우연적 응집도 - Coincidental Cohesion
- 모듈 내부의 각 구성 요소들이 연관이 없을 경우
- 개념
- 팬인(Fan-in), 팬아웃(Fan-out)
- 개념
- 소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해 활용
- 팬인과 팬아웃 분석을 통해 시스템의 복잡도를 측정
- 시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬 아웃은 낮게 설계
- 팬인(Fan-in)
- 얼마나 많은 모듈들이 현재 모듈을 호출하는지를 나타낸다.
- 해당 모듈로 들어오는 상위 모듈 수
- 팬아웃(Fan-out)
- 해당 모듈에서 호출하는 하위 모듈 수
- 개념
- 공통 모듈 구현
- 공통 모듈 구현 순서 - 책 참고
- 공통 모듈 구현 요소
- DTO - Data Transfer Object
- 프로세스 사이에서 데이터를 전송하는 객체
- Getter, Setter 메서드만 포함한다.
- VO - Value Object
- 도메인에서 속성들을 묶어서 특정값을 나타내는 객체
- DTO 와 동일한 개념이나 차이점을 Read-Only 속성 객체이다.
- DAO - Data Access Object
- 실질적으로 DB에 접근하는 객체
- DataBase 에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용
- Service
- DAO 클래스를 호출하는 객체
- Controller
- 비즈니스 로직을 수행하는 객체
- DTO - Data Transfer Object
- Annotation
- 개념
- 사전적으로는 “ 주석 “ 이라는 의미를 가지고 있다.
- 종류
- @Controller
- 스프링 MVC의 컨트롤러 객체임을 명시
- @RequestMapping
- 특정 URL에 매칭되는 클래스나 메소드임을 명시
- @RequestParam
- 요청(request)에서 특정한 파라미터 값을 찾아낼 때 사용하는 어노테이션
- @RequestHeader
- 요청(request)에서 특정 HTTP 헤더 정보를 추출할 때 사용
- @PathVariable
- 현재 URL 에서 원하는 정보를 추출할 때 사용
- @CookieValue
- 현재 사용자의 쿠키값을 추출할 때 사용
- @ModelAttribute
- 자동으로 해당 객체를 뷰까지 전달하도록 한다.
- @ResponseBody
- 리턴타입이 HTTP 의 응답 메시지로 전송
- @RequestBody
- 요청 문자열이 그대로 파라미터로 전달
- @Repository
- DAO 객체
- @Service
- 서비스 객체
- @Scheduled
- 스프링에서 지원하는 배치 어노테이션
- @Controller
- 개념