빙응의 공부 블로그

[정처기]실기 4장 - 서버 프로그램 구현 본문

정처기

[정처기]실기 4장 - 서버 프로그램 구현

빙응이 2024. 4. 5. 16:45

📝62. 개발 환경 구축

  • 개발을 위해 개발 프로젝트를 이해하고 소프트웨어 및 하드웨어 장비를 구축하는 것을 의미한다.
  • 하드웨어 환경
    • 웹 서버 : 클라이언트로부터 직접 요청을 받아 처리함
    • 웹 애프리케이션 서버(WAS) : 동적 서비스를 제공하거나, 데이터베이스 서버, 웹서버 또는 파일 서버 사이의 인터페이스 역할을 함
    • 데이터베이스 서버
    • 파일 서버
  • 웹 서버의 기능
    • HTTP/HTTPS 지원
    • 통신 기록
    • 정적 파일 관리
    • 대역폭 제한
    • 가상 호스팅
    • 인증 
  • 개발 언어 선정 기준
    • 적정성
    • 효율성
    • 이식성
    • 친밀성
    • 범용성
더보기

문제 1. (    1    )은 웹 서버의 요청에 따라 가공된 데이터를 제공하는 역할을 수행한다.

(   1    )은 가공된 데이터를 제공하는 동적 서비스 뿐만 아니라 웹 서버와 DB 사이에서 인터페이스 역할도 수행한다.

 

정답 : WAS

 

문제 2. 웹 서버의 기능 중 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능은 무엇인가?

 

정답 : 대역폭 제한 

📝63. 소프트웨어 아키텍처

  • 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
  • 모듈화
    • 시스템의 기능을 모듈 단위로 나누는 것
  • 추상화
    • 전체적이고 포괄적인 개념을 설계한 후 차례로 구체화시켜 나가는 것
    • 과정 추상화
    • 데이터 추상화
    • 제어 추상화
  • 단계적 분해
    • 상위의 중요 개념부터 하위의 개념으로 구체화 시키는 분할 기법
  • 정보 은닉
    • 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
  • 상위 설계와 하위 설계
    • 상위 설계
      • 아키텍처 설계, 예비설계 
      • 시스템의 전체적 구조
    • 하위 설계
      • 모듈설계, 상세 설계
  • 소프트웨어 아키텍처 설계 과정
    • 설계 목표 설정 - 시스템 타입 설정 - 아키텍처 패턴 적용 - 서브 시스템 구체화 - 검토
  • 협약에 의한 설꼐
    • 컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
    • 조건
      • 선행 조건
      • 결과 조건
      • 불변 조건
더보기

문제 1. 아키텍처 설계의 기본 원리 중 추상화에 대해 간략히 설명하시오

 

정답 : 추상화란 전체적이고 포괄적으로 개념을 설계한 후 점점 구체화 시켜 나가는 것을 말한다.

📝64. 아키텍처 패턴

  • 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
  • 종류
    • 레이어 패턴
      • 시스템을 계층으로 구분하여 구성하는 고전 패턴
    • 클라이언트 서버 패턴
    • 파이프 필터 패턴
      • 데이터 스트림 절차 각 단계를 필터로 캔슐화하여 전송 
    • MVC 패턴
    • 기타 패턴
      • 마스터 슬레이브 패턴
      • 브로커 패턴
      • 피어 투 피어 패턴 : 피어라 불리는 컴포넌트가 클라이언트가 될 수도, 서버가 될 수도 있는 패턴
      • 이벤트 버스 패턴

📝65. 객체지향

  • 각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법이다.
  • 객체지향의 구성 요소
    • 객체 
      • 데이터와 이를 처리하기 위한 함수로 묶어 놓은 소프트웨어 모듈
    • 클래스
      • 공통된 속성과 연산을 갖는 객체의 집합
    • 메시지
      • 객체들 간의 상호작용을 하는 도구
  • 객체지향의 특징
    • 캡슐화
    • 다형성
    • 상속
    • 연관성
더보기

문제 1. 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 객체지향의 구성 요소를 쓰시오

 

정답 : 클래스

 

문제 2. 객체에서 어떤 행위를 하도록 지시하는 명령을 의미하는 것은?

 

정답 : 메시지 

📝66. 객체지향 분석 및 설계

  • 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업이다.
  • 방법론
    • 럼바우 방법 : 객체 동적 기능 모델을 나누어 수행
      • 객체 모델링
        • 정보 모델링(Information)이라고 하며 객체 다이어그램으로 표시
      • 동적 모델링
        • 상태 다이어그램을 이용하여 시간의 흐름에 따른 변환
      • 기능 모델링
        • 자료 흐름도를 사용함
    • Booch 방법 : 미시적 개발 프로세스와 거시적 개발 프로세스 모두 사용
    • Jacobson 방법 : 유스케이스를 강조하여 사용
    • Coad와 Yourdon 방법 : E-R 다이어그램 사용
  • 객체지향 설계 원칙
    • 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야할 원칙
    • 단일 책임 원칙(SRP)
    • 개방 폐쇄 원칙(OCP)
    • 리스코프 치환 원칙(LSP)
    • 인터페이스 분리 원칙(ISP)
    • 의존 역전 원칙(DIP)
더보기

문제 1. 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 하는 원칙

 

정답 : ISP 

 

문제 2. 럼바우 데이터 모델링에서 사용되는 것을 쓰시오

객체 모델링

동적 모델링

기능 모델링

 

정답 : 객체 다이어그램, 상태 다이어그램, 자료 흐름도 

📝67. 모듈

  • 모듈화를 통해 분리도니 시스템의 각 기능을 의미한다.
  • 결합도 
    • 모듈 간의 상호 의존하는 정도 또는 두 모듈 사이의 연관관게이다.
    • 결합도가 약할수록 품질이 높다
    • 자료 결합도
    • 스탬프 결합도
    • 제어 결합도
    • 외부 결합도
    • 공통 결합도
    • 내용 결합도 
  • 응집도
    • 모듈 내부 요소들이 서로 관련되어 있는 정도이다.
    • 응집도가 강할수록 품질이 높다.
    • 기능적 응집도
    • 순차적 응집도
    • 교환적 응집도
    • 절차적 응집도
    • 시간적 응집도
    • 논리적 응집도
    • 우연적 응집도 
  • 팬인/팬아웃
    • 팬인은 어떤 모듈을 제어하는 모듈의 수를 의미한다.
    • 팬 아웃은 어떤 모듈에 의해 제어되는 모듈의 수를 의미한다.
  • N-S 차트
    • 논리의 기술에 중점을 두고 도형을 사용해 표현하는 방법
더보기

문제 1. 모듈화는 모듈 간 (   1    )를 최소화하고 모듈 내 요소들의 (   2   )를 최대화하는 것이 목표이다.

 

정답 : 1. 결합도, 2. 응집도 

 

문제 2. 데이터 결합도에 대해 간략히 서술하시오.

 

정답 : 모듈간의 서로 의존성에 대한 정도이다. 

 

문제 3. 괄호에 알맞은 답을 쓰시오

1.(    1    )  : 모듈 간의 인터페이스로 데이터, 지역 변수 등을 직접 참조하거나 수정할 때의 결합도이다.

2.(    2    )  : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 대의 결합도이다.

3.(    3    ) :: 모듈 간의 인터페이스로 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식의 결합도이다.

 

정답 : 1. 내용 결합도, 2.스탬프결합도, 3.공통 결합도

 

문제 4. 결합도 종류 중 단순 처리 대상인 데이터만 전달되는 것이 아니라 어떻게 처리해야 하는지를 결정하는 제어 요소를 전달하는 경우의 결합도를 영문으로 쓰시오

 

정답 : Control Coupligin

📝68. 단위 모듈

  • 한 가지 동작을 수행하는 모듈을 구현한 것
  • 단위 모듈의 구현 과정
    • 단위 기능 명세서 작성- 입 출력 기능 구현 - 알고리즘 구현 
  • IPC
    • 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합이다.
    • 대표 메소드 5가지
      • Shared Memory
      • Socket
      • Semaphores
      • Pipes/named Pipes
      • Message Queueing
  • 단위 모듈 테스트
    • 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
  • 테스트 케이스
    • 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서이다. 
더보기

문제 1. 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합은?

 

정답 : IPC

📝69. 공통 모듈

  • 여러 프로그램에서 공통으로 사용할 수 있는 모듈이다.
  • 명세 기법 종류
    • 정확성
    • 명확성
    • 완전성
    • 일관성
    • 추적성
  • 재사용
    • 재사용의 규모
      • 함수와 객체
      • 컴포넌트
      • 애플리케이션
  • 효과적인 모듈 설계 방안
    • 결합도를 줄이고, 응집도를 높인다.
    • 복잡도와 중복성을 줄이고 일관성을 유지 

📝70. 코드

  • 자료의 분류, 조합, 집계, 추출에 사용하는 신호
  • 코드의 종류
    • 순차 코드
    • 블록 코드
    • 10진 코드
    • 그룹 분류 코드
    • 연산 코드
    • 표의 숫자 코드
    • 합성 코드

📝71. 디자인 패턴

  • 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제

🚩생성 패턴

  • 클래스나 객체의 생성과 참조 과정을 정의
  • 추상 팩토리(Abstract Factory)
    • 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현 
  • 빌더
    • 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성함 
  • 팩토리 메소드
    • 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
  • 프로토타입
    • 원본 객체를 복제하는 방법으로 객체를 생성 
  • 싱글톤
    • 하나의 객체만이 생성되는 것을 보장함
      •  

🚩구조 패턴

  • 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
  • 어댑터
    • 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
  • 브리지
    • 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장
  • 컴포지트
    • 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할때 사용하는 패턴
  • 데코레이터
    • 객체 간의 결합을 통해 능동적 기능 확장
  • 퍼싸드
    • 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스의 기능을 간편히 사용
  • 프록시
    • 접근이 어려운 객체와 여기에 연결하는 객체 사이에서 인터페이스 역할을 수행 대리자라함

🚩행위 패턴

  • 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의
  • 책임 연쇄
    • 요청을 처리할 수 잇는 개체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
  • 커맨드
    • 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그를 남기 패턴
  • 인터프리터
    • 언어에 문법 표현을 정의하는 패턴
  • 반복자(Iterator)
    • 자료 구조와 같은 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
  • 중재자(Mediator)
    • 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의한 패턴
  • 메멘토
    • 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능 제공
  • 옵서버
    • 한 객체의 상태가 변환하면 객체에 상속되어 잇는 다른 객체들에게 변화가 전달
  • 상태
    • 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할때 사용
  • 전략(Strategy)
    • 동일한 꼐열의 알고리즘을 개별적으로 캡슐화하여 상호 교환
  • 템플릿 메소드
    • 상위 클래스에서 골격을 정의하고, 하위 크랠스에서 세부처리를 구체화하는 구조 패턴
  • 방문자
    • 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
더보기

문제 1. 디자인 패턴은 23가지로 생성, 구조 ,(    )의 3가지로 분류된다.

 

정답 : 행위

 

문제 2. 다음 설명을 쓰시오

1. (   1    ) 패턴은 구현부에서 추상층을 분리하여 서로가 독립적으로 확장할 수 있도록 구성한 패턴이다.

2.(    2    ) 패턴은 한 객체의 상태가 변화하면 객체에 상속된 다른 객체들에게 변환된 상태가 전달되는 패턴이다.

 

정답 : 1. Bridge 패턴, 2.Observer 패턴

 

문제 3. (     )패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하느 ㄴ패턴이다.

 

정답 : 행위

📝72. 개발 지원 도구

  • 통합 개발 환경 IDE
    • 개발에 필요한 환경을 말한다.
  • 빌드 도구
    • 소스 코드 파일들을 컴퓨터에서 실행할 수 잇는 제품 소프트웨어이다.
    • Ant
    • Maven
    • Gradle

📝73. 서버 개발

  • 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버에 탑재하는 것을 의미한다. 

📝74. 배치 프로그램

  • 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
  • 필수 요소
    • 대용량 데이터
    • 자동화
    • 견고성
    • 안정성/신뢰성
    • 성능
  •