자격증/정보처리기사 인강 - 실기

4. 서버프로그램 구현

kms152000 2024. 7. 12. 09:41

1. 객체 지향, 소프트웨어 아키텍쳐

  • 주요 아키텍처 스타일
    1. 클라이언트-서버 패턴
      • 클라이언트가 서버에 서비스를 요청하면 서버는 클라이언트에게 적절한 서비스를  제공
      • 장점: 데이터 집중화, 보안
      • 단점: 병목현상, 비용증가 
    2. 계층형 패턴(Layered-server pattern)
      • 소프트웨어의 기능을 수직으로 상호 작용하는 여러 층으로 분할
      • 각 층 사이는 메시지를 교환
      • 장점: 추상화, 캡슐화, 응집 높음, 재사용
      • 단점: 이웃 층과의 커뮤니케이션이 제한적
    3. 모델-뷰-컨트롤러 패턴
      • MVC 패턴: 사용자 인터페이스로부터 비즈니스 로직과 데이터를 분리
      • 모델: 핵심 기능과 데이터 포함
      • 뷰: 모델로부터 정보를 받아 사용자에게 정보를 표시
      • 컨트롤러: 사용자로부터 입력을 처리, 모델에게 명령을 보내 모델의 상태를 변경
    4. 파이프-필터 패턴
      • 필터 사이에 데이터를 이동시키며 단계적으로 처리
      • 컴파일러, 어휘 분석, 파싱, 의미 분석
      • 장점: 단순성, 재사용, 병렬성
      • 단점: 자원의 낭비
  • 디자인 패턴
    • 아키텍처 설계 수준보다 낮은 수준의 설계 문제에 재사용 가능한 솔루션을 제공
      • 생성패턴
        • 객체 생성에 관련된 패턴
        • 간단한 블록 코드로 생성
          • 추상팩토리
          • 빌더
          • 팩토리메서드
          • 프로토타입
          • 싱글톤
      • 구조패턴
        • 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
        • 상속 기법 이용
          • 어댑터
          • 브리지
          • 컴퍼지트
          • 데커레이터
          • 퍼사드
          • 플라이웨이트
          • 프록시
      • 행위패턴
        • 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
        • 반복적으로 일어나는 객체들의 상호작용을 패턴화 해놓은 것
          • 책임연쇄(Chain of Responsibility)
          • 커맨드
          • 인터프리터
          • 이터레이터
          • 미디에이터
          • 메멘토
          • 옵서버
          • 스테이트
          • 스트래티지
          • 템플릿메서드
          • 비지터

 

 

 

2. 개발 환경 구축(출제 적음, 도서로 학습)

 

 

 

3. 공통 모듈 구현 

  • 재사용(Reuse): 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업이다.
    • 함수와 객체 재사용: 클래스나 함수 단위로 구현한 소스코드를 재사용한다.
    • 컴포넌트 재사용: 컴포넌트 단위로 재사용하며, 컴포넌트의 인터페이스를 통해 통신한다.
    • 애플리케이션 재사용: 공통된 기능을 제공하도록 구현된 애플리케이션과의 통신으로 기능을 공유하여 재사용한다.
  • 공통 기능에 대한 모듈화
    • 모듈은 그 자체로 하나의 완전한 기능을 수행할 수 있는 실체
    • 서브프로그램, 서흐루틴, 단위 프로그램, 작업단위
  • 응집도
    • 응집도는 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도로 평가됨
    • 응집도가 높을수록 필요한 요소들로 구성 되어 있음
    • 낮을수록 관련이 적은 요소들로 구성되어 있다.
    • 응집도의 유형
      • 기능적 응집도 (Funtional Cohesion)
        • 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
        • 원넓이 계산
      • 순차적 응집도 (Sequential Cohesion)
        • 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
        • 파일에서 데이터를 읽고, 데이터를 처리
      • 통신적 응집도 (Communication Cohesion)
        • 동일한 자료를 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우 처리 순서는 상관없다.
      • 절차적 응집도 (Procedural Cohesion)
        • 관련없는 기능요소가 배열된 순서로 수행됨
        • 요소들이 서로 관련이 없다는 것만 빼면 순차적 응집도와 유사함
      • 시간적 응집도 (Temporal Cohesion)
        • 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
        • 초기화 하는 동안 사용 되는 코드들을 같이 모아 둔 경우, 예외사항 발생시
      • 논리적 응집도 (Logical Cohesion)
        • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈들에서 처리
        • 모든 마우스 및 키보드 입력 처리 루틴 그룹화
      • 우연적 응집도 (coincidental Cohesion)
      • 모듈 내부의 각 구성 요소들이 연관이 없을 경우
    • 응집도와 품질: 품질은 기능적이 가장 높고 우연적이 가장 낮다.
      • 우논시절통순기
  • 결합도
    • 모듈과 모듈 간에 어느 정도 관련성이 있는지를 나타내며
    • 관련이 적을수록 모듈의 독립성이 높아 모듈간 영향이 적어지게 된다.
    • 결합도의 유형
      • 자료 결합도(Data Coupling)
        • 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우
      • 스탬프 결합도(Stamp Coupling)
        • 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
        • 데이터 구조 결합도
      • 제어 결합도(Control Coupling)
        • 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되어 다른 모듈의 흐름을 제어
      • 외부 결합도(External Coupling)
        • 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 때 발생
      • 공통 결합도(Common Coupling)
        • 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하며 상호 작용하는 경우
      • 내용 결합도(Content Coupling)
        • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우
    • 결합도와 품질
      • 자료 결합이 가장 높고, 내용 결합이 가장 낮다
      • 내공외제스자

 

 

 

  • Fan-In, Fan-Out
    • Fan-In: 자신을 사용하는 모듈의 수
    • Fan-Out: 자신이 호출하는 모듈의 수
    • 시스템의 복잡도를 측정할 수 있다.
    • 팬인은 높게, 팬아웃은 낮게 설계해야 재사용성이 우수하다.

 

 

 

 

 

 

 

 

 

4. 서버 프로그램 구현(최근 4년간 출제 없음) 

5. 배치 프로그램 구현(최근 4년간 출제 없음)