정보처리기사

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
        • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
  • 응집도
    • 개념
      • 모듈의 독립성을 나타내는 개념으로, 모듈 내부 구성요소간 연관 정도
      • 응집도는 높을수록 좋고, 결합도는 낮을수록 이상적
    • 응집도 유형
      • 기능적 응집도 - 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
        • 비즈니스 로직을 수행하는 객체
    • Annotation
      • 개념
        • 사전적으로는 “ 주석 “ 이라는 의미를 가지고 있다.
      • 종류
        • @Controller
          • 스프링 MVC의 컨트롤러 객체임을 명시
        • @RequestMapping
          • 특정 URL에 매칭되는 클래스나 메소드임을 명시
        • @RequestParam
          • 요청(request)에서 특정한 파라미터 값을 찾아낼 때 사용하는 어노테이션
        • @RequestHeader
          • 요청(request)에서 특정 HTTP 헤더 정보를 추출할 때 사용
        • @PathVariable
          • 현재 URL 에서 원하는 정보를 추출할 때 사용
        • @CookieValue
          • 현재 사용자의 쿠키값을 추출할 때 사용
        • @ModelAttribute
          • 자동으로 해당 객체를 뷰까지 전달하도록 한다.
        • @ResponseBody
          • 리턴타입이 HTTP 의 응답 메시지로 전송
        • @RequestBody
          • 요청 문자열이 그대로 파라미터로 전달
        • @Repository
          • DAO 객체
        • @Service
          • 서비스 객체
        • @Scheduled
          • 스프링에서 지원하는 배치 어노테이션