빙응의 공부 블로그
[정처기]실기 4장 - 서버 프로그램 구현 본문
📝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. 배치 프로그램
- 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
- 필수 요소
- 대용량 데이터
- 자동화
- 견고성
- 안정성/신뢰성
- 성능
'정처기' 카테고리의 다른 글
[정처기]실기 6장 - 화면 설계 (0) | 2024.04.07 |
---|---|
[정처기]실기 5장 - 인터페이스 구현 (0) | 2024.04.07 |
[정처기]실기 3장 - 통합 구현 (0) | 2024.04.04 |
[정처기]실기 2장 - 데이터 입출력 구현 (2) | 2024.04.02 |
[정처기]실기 1장 - 요구사항 확인 (0) | 2024.04.01 |