셤숌셤/정보처리기사 필기 오답노트

2020-09 4회차

moonday 2021. 8. 13. 09:05

[1과목]
XP기본원리 : 의사소통, 단순성, 피드백, 용기
- Pair Programming
- Collective Ownership 공동책임, 누구든지 수정가능
- Continouous Integration 컴포넌트 또는 모듈 단위로 나눠서 개발된 소스들은 하나의 작업이 끝날 때, 지속적인 통합과 테스트를 동시에 함
- Test-Driven Developer 테스트 주도 개발
- Whole Team
- Design Improvement 또는 Refactoring
- Small Releases 소규모릴리즈


Linear Sequential Method : 순차적 방법
* XP와 관련없음

럼바우
객체모델링 - 객체다이어그램
동적 모델링 - 상태도(상태 다이어그램)
기능 모델링 - 자료흐름도

상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것 => 상속


객체지향 설계원칙SOLID
인터페이스 분리원칙 ISP(segregation)=>
클라이언트는 자신이 사용하지 않은 메서드와 의존관계를 맺으면 안됨 + 클라이언트가 사용하지 않은 인터페이스 때문에 영향을 받으면 안됨
개방 폐쇄의 원칙 OCP=> 확장에 open, 수정에 close
리스코프 치환(교체)의 원칙 LSP =>
A가 B의하위이면(like마치 상속) B는 A의 모든 것을 추가/수정 없이 객체로 치환(교체) 가능
의존성 역전 원칙 DIP(Inversion) =>
의존관계를 맺을 때, 변화하기 어려운 것(=잘 변하지 않는 것)에 의존

아키텍쳐 패턴 종류
- 레이어 패턴 : 계층 구분, 고전적
상위계층(서비스제공자)<—->하위계층(클라이언트)

코드 : 데이터를 사용목적에 따라 식별, 분류, 배열하기 위해 사용되는 숫자, 문자 또는 기호로 컴퓨터 처리에 효율적인 것을 선정
1) 순차코드 : 자료의 발생, 크기, 이름 순 등 일정 순서를 따른 코드
2) 블록코드 : 코드화 대상을 미리 파악하여 블록으로 구분 한 후, 그 안에서 순서대로 코드를 부여
3) 그룹 분류 코드 : 세분화한 형태로 대/중/소 분류별로 자릿수를 구성
4) 표의 숫자 코드(Significant Digit Code) : 의미제외, 수치만 적용(물체의 물리적 중량,면적,크기 등)
5) 십진 분류 코드 (Decimal):일정 소속으로 구분-> 십진수 한 자리씩 구분하여 대분류 -> 같은 방법으로 중/소도 분류
*십진분류(십진수한자리씩구분)와 그룹분류(세분화한형태)를 알기
6) 연상코드(Mnemonic) : 숫자나 문자 조합, 어떤 내용을 기억할 수 있도록 표시
7) 약자코드 : 일반적으로 사용하는 단위의 약자
8) 끝자리 분류 코드 : 다른 종류 코드와 조합, 코드 끝에 붙여서 의미 표현

디자인 패턴 사용의 장점
- 디자인패턴 + 객체지향언어 => 효율성 극대화
- 소프트웨어 구조 파악 용이
- 객체지향 설계 및 구현의 생산성 높이는데 적합
- 재사용을 위한 개발 시간 단축

DFD
- 버블차트 = 자료 흐름 그래프
- 구조적 분석 기법
- 시간 흐름 명확히 표현 X안됨X
- 요소를 화살표, 원, 사각형, 직선(단선, 이중선)으로 표시

UML구성요소
1) 사물
2) 관계
3) 다이어그램

소프트웨어 상위 설계
- 아키텍쳐 설계, 데이터 설계, 시스템 분할, 인터페이스 정의, 사용자 인터페이스 설계(=UI)

소프트웨어 하위 설계
- 모듈설계, 인터페이스 작성

자료사전
= 정의, +연결, [ ]선택, { }반복, **설명


소프트웨어 사용자 인터페이스 개발 시스템이 가져야할 기능
-사용자 입력 검증, 에러처리와 에러메세지 처리,도움과 프롬프트 제공 …


*소스코드 분석 및 오류 복구는 보통 Back-end에서 컴파일러가 하는 역할


<정형 명세 기법과 비정형 명세 기법>


소프트웨어 개발 단계
요구 분석 과정
- 보다 구체적인 명세를 위해 소단위 명세서가 활용 될 수 있음

애자일 방법론
- 기능중심, 스크럼, 익스트림, 프로그래밍

미들웨어 솔루션 유형
- DB미들웨어
- 원격 프로시저 호출(PRC)
- 메세지 지향 미들웨어 MOM
- 트랜젝션 처리 TP모니터
- 레거시웨어
- 객체기반 ORB미들웨어
- WAS

모듈 간 결합도는 약 /응집도는 강
=> 독립성과 재사용성이 좋다는 뜻

[2과목]
정적 분석 도구 : pmd,cppcheck, SonarQube, ccm…
동적 분석 도구 : Valgrind, Avalanche

인터페이스 보안을 위해 “네트워크”영역에 적용될 수 있는 것
- IPSec, SSL, S-HTTP

형상관리
- 관리항목에는 소스코드 뿐만 아니라 각종 정의서, 지침서, 분석서 등 포함
* 개발비용은 형상관리에 들어가지 않음


개념스키마 : 단 하나만 존재, 모든 응용 프로그램 또는 사용자들이 필요로하는 조직 전체 DB
내부스키마 : 물리적 저장 장치 입장
외부 스키마 : 개인 또는 응용 개발자 입장




Preorder전위 : 위->아래(왼쪽먼저 가지내리고, 오른쪽으로 높은곳에서 이동, 맨위에서 왼쪽가지 끝내고 오른쪽으로 이동할때, 선택되지않은 상위노드 기준으로 다시 가지내려가기 시작 => ABDCEF
Inorder 중위 : 아래->위(왼쪽으로이동, 한 노드에 연결된 하위노드가 2개이상일 때 하위->상위->하위 루트로 상위를 거쳐서 감 )=> DBAECF
Postorder 후위 : 아래->위(한 노드에 연결된 하위노트가 2개 이상일때 하위->하위->상위 식으로 이동) =>DBEFCA


방향최대 간선 거리 : n(n-1)
무방향 최대 간선 거리 : n(n-1)/2

테스트 오라클 : 테스트 결과 참/거짓 판단을 위해 사전에 정의된 참 값을 입력하여 비교하는 기법 및 활동 + 종류(참, 샘플링, 휴리스틱, 일관성검사)
테스트 케이스 : 테스트 항목에 대한 명세서(구현된 소프트웨어가 사용자의 요구사항을 정확히 준수했는지 확인을 위함)
테스트 시나리오: 여러개의 테스트 케이스를 묶은 집합(테스트 케이스 적용하는 순서에 따라)

Jenkins : JAVA기반 오픈소스, 서블릿 컨테이너에서 실행되는 서버 기반도구, 친숙한 Web GUI제공, 분산 빌드나 테스트 가능
Gradle : Groovy를 기반으로 한 오프 소스, 안드로이드 앱 개발 환경에 사용, 행할 처리 명령들을 모아 task로 만들고 task단위로 실행

콘텐츠 분배자 : 암호화된 콘텐츠 유통하는 곳이나 사람
패키저 : 콘텐츠를 메타데이터와 함께 배포가능한 형태로 묶어 암호화

<해싱함수> 홈주소를 삼는 법에 따라 방식이 다름
1) 폴딩법 : 부분값 더하거나 XOR(배타적 논리합) 값
2) 제산법 : 가장 작은 소수Q로 나눈 나머지 h(K)=K mod Q
3) 제곱법 : 제곱 후, 중간부분 값
4) 기수 변환법 Radix : 높은 자리수 절단 후, 주소 범위에 맞게 조정
5) 대수적 코딩법 : 다항식으로 나눠 얻은 나머지 다항식의 계수
6) 계수 분석법(숫자 분석법) : 키값을 이루는 숫자 분포를 분석 후, 비교적 고른 자리를 필요한 만큼 선택
7) 무작위법 : 난수(Random Number)를 발생시켜 나온 값


관계대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 “절차적 언어”
- 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어
- 피연산자 = 릴레이션 = 결과
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 대표적으로 순수관계연산자와 일반집합연산자

<데이터모델>
데이터모델 : 현실세계 정보를 컴퓨터가 이해할 수 있도록 추상화
구성요소 : 논리적 데이터 구조, 연산, 제약조건
절차 : 개념 - 논리 - 물리

[4과목]
UNIX SHELL환경변수 출력
- printenv, env, setenv
* configenv (X)

JAVA 기본 자료형
- char, short : 2byte
- float, int : 4byte
- double, long : 8

[슬라이스]

:7 => 0~6까지 7개 반환(0,10,20,30,40,50,60)
:2 => 2씩 증가하면서 해당 요소 반환 (0, 20, 40, 60)

1) 객체명[초기위치:최종위치]
2) 객체명[초기위치:최종위치:증가값]
3) 객체명[:] 또는 객체명[::] = 객체의 모든 요소를 반환
4) 객체명[초기위치:]
5) 객체명[:최종위치]
6) 객체명[::증가값]
*최종위치에서 -1 => 0부터 시작하기 때문
*슬라이스는 일부 인수를 생략할 수 있기때문에 : 를 기준으로 잘 볼 것


흐름제어(Flow Control) : 수신측 버퍼의 오버플로를 방지
- Slow start :
패킷이 문제없이 도착하면 혼잡 윈도우 크기를 패킷마다 1씩 증가시키고 한 주기가 지나면 혼잡 윈도우 크기가 2배가 됨.
혼잡 윈도우 크기 발생 시, 혼잡윈도우 크기를 1로 줄이는 방식
- Sliding Window :
한번에 여러패킷을 전송할 수 있어 전송 효율이 좋음,
수신 통지를 이용하여 송신 데이터 양을 조절,
송신측은 수신측의 ACK(확인신호)없이도 보낼 수 있는 패킷의 최대치를 미리 약속 받고,
최대치는 윈도우 크기(유동적)를 의미= 이전 송신 패킷의 부정 수신 응답(NAK)가전달 되면 감소, 긍정(ACK)이었으면 증가
- Congestion Avoidance(=Congestion Control) :
네트워크 내에서 패킷의 지연이 너무 높아지게 되어 트래픽이 붕괴되지 않도록 패킷의 흐름을 제어하는 트래픽 제어(AMID, Slow Start ..)

*그만 헷갈리기(약->강)
(결합도 Coupling - 자스제외공내/ 응집도 Cohesion - 우논시절교순기)
스탬프 결합도 :모듈 간 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
자료 결합도 : 모듈 간의 인터페이스가 자료요소로만 구성

[5과목]
IDS: 침입탐지 시스템
ZIGBEE : 저전력 라디오를 이용한 개인 통신망

CMM(Capability Maturity Model)
- 초기단계, 관리단계, 정의단계, 정량적 관리단계, 최적화 단계

SOA(Service Oriented Architecture)
서비스 지향 아키텍쳐 계층
- 표현, 비즈니스 프로세스, 서비스, 전사적 요소, 운영

<Storage종류>
하드디스크와 같은 데이터 저장장치를 호스트 버스 어댑터에 직접 연결 하는 방식 + 저장장치와 호스트 기기 사이에 네트워크 디바이스가 있지 말아야 하고 직접 연결하는 방식
=> DAS(Direct Attached Storage)

서버와 저장장치가 네트워크로 연결된 저장장치
=> NAS(Network Attached Storage)

DAS의빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식, 서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
=> SAN(Storage Area Network)


<구조적 분석 도구>
자료흐름도DFD : 도형 중심 자료흐름 그래프 = 버블차트
자료사전DD : 자료흐름도 자료를 자세히 정의/기록. 데이터의 데이터, 메타 데이터
소단위 명세서Mini-Spec : 프로세스 명세서(세분화된 자료흐름도에서 최하위 단계 버블(프로세스)처리 절차 기술
개체 관계도ERD : 개체의 구성과 속성, 개체간 관계를 표현하여 자료 모델화 하는데 사용 됨
상태 전이도STD : 시스템에 어떤 일이 발생할 경우 시스템의 상태와 상태 간의 전이를 모델화 한 것, 개발자는 이를 통해 시스템의 행위를 정의 가능
SADT(Structured Analysis and Design Techniques) : 미국SOFTECK사에서 개발, 청사진 다이어그램, 계층 구조적으로 전개, 시스템 논리를 구체화, 블록다이어그램을 채택한 자동화 도구


SREM(Softward Requirements Enginering Methodlogy) : TRW사가 우주 국방시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발(RSL, REVS를사용하는 자동화도구)

PSL/PSA : 미시간 대학에서 개발한 것으로 PSL과 PSA를사용하는 자동화 도구

HIPO(hierarchy plus input-process-output): 하향식 소프트웨어 개발을 위한 문서화 도구



<다중화기 종류>
TDM(Time Division Multiplexing)
- 시분할 다중화기
- 통신 회선의 대역폭을 일정한 시간폭으로 나눠 여러대의 단말 장치가 동시에 사용할 수 있도록 함
- 디지털 회선을 주로 이용
- STDM, ADTM

FDM(Frequency Division Multiplexing)
- 주파수 분할 다중화기
- 통신회선의 주파수를 여러개로 분할하여 여러대의 단말장치가 동시에 사용할 수 있도록 함
- 다중화기 중 주파수 대역폭을 다수의 작은 대역폭으로 분할 전송하는 방식
- 간섭 방지 위한 보호대역(Guard Band)필요 -> 대역폭의 나비 초래
- 저속의 비동기식 전송, 멀티 포인트 방식, 아날로그 신호 전송에 적합

CDM(Code Division Multiplexing)
- 코드 분할 다중화 방식
- 무선 통신에서 가장 널리 사용, 도청과 간섭방지가 가능하지만 잡음을 분리해야하는 오버헤드 발생

WDM(Wavelength Division Multiplexing)
- 파장 분할 다중화 방식
- 빛의 파장을 제외하고 FDM방식과 동일
- 초고속 대용량 전송가능
- 시스템 확장성, 유연성 우수




N-S차트(Nassi-Schneiderman)
- 논리 기술에 중점
- = 박스다이어그램(도형이용표현)
- = chain chart
- 제어 논리 구조로 표현(연속, 선택, 다중선택, 반복 등)
- 조건이 복합되어있는 곳의 처리를 시각적으로 명확히 식별하는데 적합

MapReduce
- 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델
- Google에 의해 고안된 기술
- 데이터 처리를 위한 병렬 처리 기법을 제공
- 임의의 순서로 정렬된 데이터를 분산 처리하고 이를 다시 합치는 과정을 거침


Hijacking : 다른 사람의 세션 또는 터미널 상태를 도용하는 해킹 기법