하 이런 운빨범위시험이 다 있나... 범위가 너무 넓어서 아는 거 위주로 나오면 잘 맞고(당연함), 공부를 안 했거나 별로 잘 들어보지 못한 범위가 조금만 많이 나올라치면 아주 아슬아슬해져버림... 큰일이다 3번 중 2번은 나가리
사실 외워야 하는 거 이제 좀 특정되는데 그거 외우기 싫어서 미치겠음 하ㅏ이ㅏ밍리;ㅁㄴㅇㄹ
2021년 1회 문제 풀이
1과목: 소프트웨어 설계
미들웨어
→ 분산 컴퓨팅 환경에서 서로 다른 기종 간의 하드웨어나 프로토콜, 통신환경 등을 연결하여 응용 프로그램과 운영 환경 간에 원만한 통신이 이루어질 수 있게 서비스를 제공하는 소프트웨어
종류: DB, RPC, MOM, TP-Monitor, ORB, WAS
유스케이스 확장 관계
→ 특별한 조건을 만족할 때 수행할 유스케이스 <<extends>>
로 연결하여 표현
UML 다이어그램
- 구조적(Structural) 다이어그램
- 클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계 표현
- 객체 다이어그램: 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
- 컴포넌트 다이어그램: 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스 표현
- 배치 다이어그램: 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치 표현
- 복합체 구조 다이어그램: 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
- 패키지 다이어그램: 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계 표현
- 행위(Behavioral) 다이어그램
- 유스케이스 다이어그램: 사용자의 요구를 분석하는 것, 기능 모델링 작업에 사용
- 시퀀스 다이어그램: 상호 작용하는 시스템이나 객체들이 주고받는 메시지 ㅛㅍ현
- 커뮤니케이션 다이어그램: 메시지뿐만 아니라 객체들 간의 연관까지 표현
- 상태 다이어그램: 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
- 활동 다이어그램: 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 상호작용 다이어그램: 제어 흐름
- 타이밍 다이어그램: 객체 상태 변화와 시간 제약을 명시적으로 표현
리눅스 버전 확인 명령어
→ cat
명령어를 통해 etc 디렉터리의 release로 끝나는 파일을 읽기
→ uname
명령어로 시스템 정보를 확인
럼바우 분석 기법
- 객체 모델링 (Object Modeling): 정보 모델링
- 동적 모델링 (Dynamic Modeling): 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 동적인 행위 표현
- 기능 모델링 (Functional Modeling): 자료 흐름도를 이용
디자인 패턴
- 생성 패턴: 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤
- 구조 패턴: 어댑터, 브리지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시
- 행위 패턴: 책임 연쇄, 커맨드, 인터프리터, 반복자, 주재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메소드, 방문자
객체지향 분석의 방법론
- 럼바우 방법 → 객체 모델, 동적 모델, 기능 모델로 나누어 분석 활동 수행
- 부치 방법 → 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석
- Jacobson 방법 → Use Case를 강조하여 사용하는 분석 방법
- Coad와 Yourdon 방법 → E-R 다이어그램을 사용하여 객체의 행위 모델링
- Wirfs-Brock 방법 → 분석과 설계 간의 구분 X
객체지향 분석
→ 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 이와 관련된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링하는 작업
→ 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석해 내는 기법
요구사항 모델링
→ 애자일 방법, 유스케이스 다이어그램, 시퀀스 다이어그램
미들웨어 - RPC
→ 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식의 미들에어
시스템 연계 기술 - 소켓
→ 통신을 위한 프로그램을 생성하여 포트를 할당하고, 클라이언트의 통신 요청 시 클라이언트와 연결하는 내/외부 송/수신 연계 기술
CASE(Computer Aided Software Engineering)
→ 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
- 소프트웨어 모듈의 재사용성 향상
- 자동화된 기법을 통해 소프트웨어 품질 향상
- 소프트웨어 유지보수를 간편하게 수행
2과목: 소프트웨어 개발
전위식 → 후위식
- / * A + B C D E
- 인접한 피연산자 두 개와 왼쪾의 연산자를 괄호로 묶음
- 연산자를 피연산자의 뒤로 옮김
- 필요없는 괄호 제거
정렬
- 기수 정렬 → Queue를 이용하여 자릿수 별로 정렬하는 방식, 레코드의 키 값을 분석하여 같은 수 또는 같은 문자끼리 그 순서에 맞는 버킷에 분배 하였다가 버킷의 순서대로 레코드를 꺼내어 정렬
- 버블 정렬 → 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
- 퀵 정렬 → 레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어가면서 정렬하는 방법, 키를 기준으로 작은 값은 왼쪽에, 큰 값은 오른쪽 서브 파일로 분해시키는 방식으로 정렬
- 쉘 정렬 → 삽입 정렬을 확장한 개념, 입력 파일을 어떤 매개변수(h)의 값으로 서브 파일을 구성하고, 각 서브파일을 삽입 정렬 방식으로 순서 배열하는 과정을 반복하는 정렬 방식
DRM(디지털 저작권 관리)
→ 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현 정책 관리, 크랙 방지, 인증
인수 테스트
- 알파 테스트: 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법, 통제된 환경에서 행해짐
- 베타 테스트: 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법, 실업무를 가지고 사용자가 직접 테스트하는 것으로, 개발자에 의해 제어되지 않는 상태에서 테스트가 행해짐
이진 검색 알고리즘
→ 검색할 자료를 반씩 나누어서 나머지 반만 검색하는 방식을 반복하여 자료를 찾는 검색 방법
→ 탐색 효율이 좋고 탐색 시간이 적게 소요
→ 검색할 데이터가 정렬되어 있어야 함
→ 비교횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다
Stub
→ 하향식 통합시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈
해싱 함수의 종류
→ 제산법, 제곱법, 폴딩법, 기수 변환법, 대수적 코딩법, 계수 분석법(숫자 분석법), 무작위법
블랙박스 테스트
소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트, 기능테스트라고도 한다
→ 동치 분할 검사, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사 등
화이트박스 테스트
모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
→ 기초 경로 검사, 제어 구조 검사, 조건/루프 검사
자료구조
큐 → 한쪽에서는 삽입이, 다른 한쪽에서는 인출이 이루어지는 선형 자료구조 / FIFO 처리 수행
스택 → 서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에 응용 / LIFO 처리 수행
3과목: 데이터베이스 구축
관계형 데이터베이스 관련 용어
카디널리티 → 테이블에 속한 튜플의 수
차수 → 속성의 수
데이터베이스 설계
- 논리적 설계 (데이터 모델링)
- 현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정
- 개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계
- 물리적 설계 (데이터 구조화)
- 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 저장 레코드의 형식, 순서, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사
시스템 카탈로그
→ 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
일반 이용자도 SQL을 통해 검색할 수는 있으나, 갱신은 허용되지 않는다
이상현상
→ 삽입 이상, 삭제 이상, 갱신 이상
트랜잭션의 특성
→ 원자성, 일관성, 독립성, 영속성
순수 관계 연산자
- Select → 연산자의 기호: 시그마
- Project → 연산자의 기호: 파이
- Join → 연산자의 기호:
⨝
- Division → 연산자의 기호:
%
릴레이션
- 릴레이션의 각 행을 스키마라고 함
- 릴레이션의 각 열을 튜플이라고 함
- 속성들의 집합을 릴레이션 스키마라고 함
스키마
- 외부 스키마 = 서브 스키마 = 사용자 뷰
- 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것 (전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마라고도 함)
- 개념 스키마 = 전체적인 뷰
- 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재함 (단순히 ‘스키마’라고 하면 개념 스키마를 의미하며 DBA에 의해서 구성됨)
- 내부 스키마
- 데이터베이스의 물리적 구조로 데이터의 실제 저장 방법을 기술 (시스템 프로그래머나 시스템 설계자가 보는 관점)
정규화 과정
![image.png]()
정규형
- 1NF → 릴레이션에 속한 모든 도메인이 원자값으로만 되어 있음
- 2NF → 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족
- 3NF → 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
- BCNF → 결정자가 모두 후보키인 정규형
- 4NF
- 5NF
E-R 다이어그램 표기법
사각형 - 개체 타입
마름모 - 관계 타입
타원 - 속성
이중 타원 - 다중값 속성
밑줄 타원 - 기본 키 속성
복수 타원 - 복합 속성
선, 링크 - 개체 타입과 속성 연결
로킹
- 로킹 단위는 병행 제어에서 한꺼번에 로킹할 수 있는 객체의 크기
- 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고 데이터베이스 공유도가 저하됨
- 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아지고, 데이터베이스의 공유도가 증가
4과목: 프로그래밍 언어 활용
운영체제의 제어 프로그램 종류
→ 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램
교착상태 발생의 필요 충분 조건
→ 상호 배제, 점유와 대기, 환형 대기, 비선점
배치 전략
최초 적합(First-Fit) → 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 적합(Best-Fit) → 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
최악 적합(Worst-Fit) → 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
결합도 (낮 → 높)
- 자료 결합도 (모듈 간의 인터페이스가 자료 요소로만 구성될 때)
- 스탬프 결합도
- 제어 결합도
- 외부 결합도
- 공통 결합도
- 내용 결합도
가상기억장치 구현 방법
- 페이징 기법 → 동일한 크기로 나눔
- 세그먼테이션 기법 → 다양한 크기의 논리적 단위로 나눔
C언어 함수
atoi()
→ 문자열을 정수형으로 변환
atof()
→ 문자열을 실수형으로 변환
itoa()
→ 정수형을 문자열로 변환
ceil()
→ 실수를 정수형으로 올림처리
WAS의 종류
→ Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogin, WebSphere
∗ JVM → 자바 가상머신
OSI-7Layer - 데이터 링크 계층
→ 물리적 연결을 이용해 신뢰성 있는 정보를 전송하려고 동기화, 오류 제어, 흐름제어 등의 전송에러를 제어하는 계층
IEEE 802.3의 매체 접근 제어 방식 → CSMA/CD
TCP
→ 전송 계층에 해당
응집도 (강→약)
- 기능적 응집도
- 순차적 응집도
- 교환적 응집도
- 절차적 응집도
- 시간적 응집도
- 논리적 응집도
- 우연적 응집도
continue
→ 이후 코드를 수행하지 않고 반복문의 처음으로 돌아가는 예약어
5과목: 정보시스템 구축 관리
Baas
→ 블록체인 개발 환경을 클라우드로 서비스하는 개념
CBD (컴포넌트 기반 방법론)
- 생산성과 품질을 높이고, 유지보수 비용 최소화
- 컴포넌트 제작 기법을 통해 재사용성 향상
- 독립적인 컴포넌트 단위의 관리로 복잡성 최소화
∗ 구조적 방법론 → 분할과 정복 원리를 사용하는 설계 방법론
LOC 기법
라인수 / (프로그래머 수 * 평균 생산성)
암호화 알고리즘
- 개인키 암호화 알고리즘 → AES
- 해시 알고리즘 → MD4, MD5, SHA-1
접근통제 기술
- 임의 접근통제 (DAC), 강제 접근통제(MAC), 역할기반 접근통제(RBAC)
정보보안의 4요소
→ 기밀성, 무결성, 가용성
악의적인 사용자가 지인 또는 특정 유명인으로 가장하여 활동하는 공격 기법
→ Evil Twin Attack, Phishing
비용 산정 기법 - COCOMO 모델
→ Organic, Semi-Detach, Embedded
구조적 개발 방법론
→ 정형화된 분석 절차에 따라 요구사항을 파악, 문서화하는 체계쩍 분석 방법
→ 자료흐름도, 자료사전, 소단위명세서의 특징
스마트 그리드
→ 전기 및 정보통신기수릉ㄹ 활용하여 전력망을 지능화, 고도화함으로써 고품질의 전력 서비스를 제공하고 에너지 이용효율을 극대화하는 전력망
스트림 암호화 방식
- 비트/바이트/단어들을 순차적으로 암호화
- RC4는 스트림 암호화 방식에 해당
- 대칭키 암호화 방식
∗ 해쉬 암호화 방식 → 블록 단위로 해쉬 알고리즘을 적용하는 방식
공개키 암호화 기법
- 키의 개수: 2n
- 복호화 키는 비공개
- 송신자는 수신자의 공개키로 문서 암호화
- RSA
MQTT
- 사물통신, 사물인터넷과 같이 대역폭이 제한된 통신환경에 최적화하여 개발된 푸시기술 기반의 경량 메시지 전송 프로토콜
- IBM이 주도하여 개발
세션 하이재킹
- 비동기화 상태 탐지
- ACK STORM 탐지
- 패킷의 유실 및 재전송 증가 탐지
2021년 2회 문제 풀이
1과목: 소프트웨어 설계
디자인 패턴의 종류
- 생성 패턴
- 추상 팩토리 → 인터페이스를 통해 서로 연관/의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴
- 빌더 → 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성하는 패턴
- 팩토리 메소드 → 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴
- 프로토타입 → 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴
- 싱글톤 → 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없는 패턴
- 구조 패턴
- 어댑터 → 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
- 브리지 → 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴
- 컴포지트 → 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴
- 데코레이터 → 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
- 퍼싸드 → 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
- 플라이웨이트 → 인스턴스가 필요할 때마다 매번 생성하는 것 X 가능한 한 공유해서 사용함으로써 메모리를 절약하는 패턴
- 프록시 → 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
- 행위 패턴
- 책임 연쇄 → 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴
- 커맨드 → 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
- 인터프리터 → 언어에 문법 표현을 정의하는 패턴
- 반복자 → 자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
- 중재자(Mediator) → 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
- 메멘토 → 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
- 옵서버 → 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
- 상태 → 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
- 전략 → 동일한 계얼의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
- 템플릿 메소드 → 상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
- 방문자 → 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴
CASE(Computer-Aided Software Engineering)
→ 구조적 기법, 프로토타이핑 기술, 응용 프로그래밍 기술, 정보 저장소 기술, 분산처리 기술
럼바우 분석 기법의 활동
→ 객체 모델링, 동적 모델링, 기능 모델링
UML의 관계
- 연관 관계 → 2개 이상의 사물이 서로 관련
- 집합 관계 → 하나의 사물이 다른 사물에 포함
- 포함 관계 → 집합 관계의 특수한 형태
- 일반화 관계 → 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지
- 의존 관계 → 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지
- 실체화 관계 → 사물이 할 수 있거나 해야 하는 기능으로 서로를 그룹화 할 수 있는 관계
시스템의 구성 요소
→ 입력, 처리, 추력, 제어, 피드백
요구사항 개발 프로세스
도출 → 분석 → 명세 → 확인
소프트에어 아키텍처 설계에서 시스템 품질 속성
→ 속성, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성
주요 아키텍처 패턴의 종류
- 레이어 패턴: 시스템을 계층으로 구분하여 구성하는 고전적인 방법 중의 하나, 상위 계층은 하위 계층에 대한 서비스 제공자가 되고, 하위 계층은 상위 계층의 클라이언트가 됨
- 클라이언스-서버 패턴: 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
- 파이프-필터 패턴: 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴
- 모델-뷰-컨트롤러 패턴: 서브시스템을 모델, 뷰, 컨트롤러의 세 부분으로 구조화하는 패턴
GoF 디자인 패턴의 생성 패턴
→ 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱글톤
송신 시스템
→ 시스템 인터페이스를 구성하는 시스템으로, 연계할 데이터를 데이터베이스와 애플리케이션으로부터 연계 테이블 또는 파일 형태로 생성하며 송신하는 시스템
UML 다이어그램의 종류
- 구조적 다이어그램
- 클래스 다이어그램
- 객체 다이어그램
- 컴포넌트 다이어그램
- 배치 다이어그램
- 복합체 다이어그램
- 패키지 다이어그램
- 행위 다이어그램
- 유스케이스 다이어그램
- 시퀀스 다이어그램
- 커뮤니케이션 다이어그램
- 상태 다이어그램
- 활동 다이어그램
- 상호작용 개요 다이어그램
- 타이밍 다이어그램
2과목: 소프트웨어 개발
소프트웨어 형상 관리 도구
→ Git, CVS, Subversion, Mercurial 등
∗ 빌드 자동화 도구 → Ant, Maven, Gradle
EAI의 구축 유형
- Point-to-Point: 가장 기본적인 애플리케이션 통합 방식
- Hub & Spoke: 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
- Message Bus(ESB): 애플리케이션 사이에 미들웨어를 두어 처리하는 방식
- Hybrid: Hub & Spoke와 Message Bus의 혼합 방식
소프트웨어 패키징
→ 개발자가 아니라 사용자를 중심으로 진행
DRM(디지털 저작권 관리) 구성 요소
→ 클리어링 하우스, 콘텐츠 제공자, 패키저, 콘텐츠 분배자, 콘텐츠 소비자, DRM 컨트롤러, 보안 컨테이너
파레토 법칙
→ 대부분의 결함이 소수의 특정 모듈에 집중해서 발생하는 현상 (결함 집중)
버블 정렬
주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
초기 상태: 9, 6, 7, 3, 5
![image.png]()
인터페이스 구현 검증 도구
→ xUnit, STAF, FitNesse, NTAF, Selenium, watir 등
빅오 표기법(Big-O Notation)
- O(1) → 스택의 삽입, 삭제
- O(log2n) → 이진트리, 이진 검색
- O(n) → for문
- O(nlog2n) → 힙 정렬, 2-Way 합병 정렬
- O(n^2) → 삽입 정렬, 선택 정렬, 쉘 정렬, 버블 정렬, 퀵 정렬
- O(2^n) → 피보나치 수열
화이트박스 테스트의 종류
- 기초 경로 검사 → 수행 가능한 모든 경로를 의미함
- 제어 구조 검사
블랙박스 테스트의 종류
- 동치 분할 검사
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교 검사
힙 정렬 (Heap Sort)
전이진 트리를 이용한 정렬 방식
평균과 최악 모두 시간 복잡도는 O(nlog2n)
소프트웨어의 버전 등록 관련 주요 기능
- 저장소(Repository)
- 가져오기(Import)
- 체크아웃(Check-Out) → 저장소에서 소스 파일과 함께 버전 관리를 위한 파일들을 받아옴
- 체크인(Check-In) → 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신함
- 커밋(Commit)
- 동기화(Update) → 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함
스택 자료 구조
→ 재귀 호출, 후위 표기법, 깊이 우선 방식과 같이 왔던 길을 되돌아가는 경우에 사용됨
3과목: 데이터베이스 구축
카티션 프로덕트(Cartesian Product) = 교차곱
→ 두 릴레이션의 차수(Degree, 속성의 수)는 더함
→ 카디널리티(튜플의 수)는 곱함
시스템 카탈로그
→ 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
→ 사용자가 조회할 수는 있으나 갱신하는 것은 불가능
순수 관계 연산자
→ Selet(시그마), Project(파이), Join(⨝), Division(%)
데이터베이스 설계 - 물리적 설계
→ 레코드 집중의 분석 및 설계, 접근 경로 설계, 저장 레코드의 양식 설계
병행제어 기법의 종류
→ 로킹, 타임 스탬프 순서, 최적 병행수행, 다중 버전 기법
관계형 데이터베이스 용어
- 튜플 (Tuple)
- 릴레이션을 구성하는 각각의 행
- 속성의 모임
- 파일 구조에서 레코드와 같은 의미
- 카디널리티 또는 기수, 대응수
- 속성 (Attribute)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드
- 개체의 특성 기술
- 속성의 수를 디그리(Degree) 또는 차수라고 함
- 도메인 (Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자 값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용
파티셔닝(=분할) 방식
→ 범위 분할, 목록 분할, 해시분할, 조합 분할, 라운드로빈 분할
무결성 제약 조건
- 개체 무결성 → 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
- 도메인 무결성 → 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
- 참조 무결성 → 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 하고, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
- 사용자 정의 무결성 → 속성 값들이 사용자가 정의한 제약조건에 만족해야 한다는 규정
E-R 다이어그램
사각형 - 개체 타입
다이아몬드(마름모) - 관계 타입
타원 - 속성
선, 링크 - 개체 타입과 속성 연결
4과목: 프로그래밍 언어 활용
페이징 기법
페이지 크기가 작아질 수록
→ 기억장소 이용 효율 증가
→ 입/출력 시간 늘어남
→ 내부 단편화 감소
→ 페이지의 개수가 많아져 주소를 저장하는 맵 테이블의 크기가 커짐
C 언어
#include <stdio.h>
int main(int argc, char *argv[] {
int a = 4;
int b = 7'
int c = a | b;
printf("%d", c);
return 0;
}
OSI-7Layer - 네트워크 계층
- 패킷을 발신지로부터 최종 목적지까지 전달하는 책임
- 패킷에 발신지와 목적지의 논리 주소 추가
- 라우터 또는 교환기는 패킷 전달을 위해 경로를 지정하거나 교환 기능을 제공
- 데이터 단위 → 패킷
∗ 데이터 링크 계층의 데이터 단위 → 프레임
응집도 (강 → 약)
기능적 응집도(Functional) → 순차적 응집도(Sequential) → 교환(통신)적(Communication) 응집도 → 절차적 응집도(Procedural) → 시간적(Temporal) 응집도 → 논리적(Logical) 응집도 → 우연적(Coincidental) 응집도
Java 언어
public class Operator {
public static void main(String[] args) {
int x = 5, y = 0, z = 0;
y = x++;
z = --x;
System.out.print(x + ", " + y + ", " + z);
}
}
출력 결과 ⇒ 5, 5, 5
C 언어
#include <stdio.h>
int main (int argc, char *argv[]) {
int a[2][2] = {{11, 22}, {44, 55}};
int i, sum = 0
int *p;
p = a[0];
for (i=1; i<4; i++)
sum += *(p + i);
printf("%d", sum);
return 0;
}
![image.png]()
C언어의 대표적인 표준 라이브러리
- stdio.h
- math.h
- string.h
- stdlib.h
- 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능들 제공
- time.h
스레싱(Thrashing)
프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상, 전체 시스템의 성능 저하
- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 됨
- 스래싱 현상 방지 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지
- 페이지 부재 빈도를 조절하여 사용
- 워킹셋 유지
- 부족한 자원 증설, 일부 프로세스 중단
- CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영
은행원 알고리즘
→ 교착상태의 해결 방법 중 회피 기법에 해당함
결합도 (낮 → 높)
자료(Data) 결합도 → 스탬프(Stamp) 결합도 → 제어(Control) 결합도 → 외부(External) 결합도 → 공통(공유, Common) 결합도 → 내용(Content) 결합도
연산자 우선 순위
→ 단항, 산술, 시프트, 관계, 비트, 논리, 조건, 대입, 순서 연산자 순
→ 관계 연산자 중에서 <, <=, >=, >
는 ==, !=
보다 우선순위가 높다
![image.png]()
Java 언어
public class array1 {
public static void main(String[] args) {
int cnt = 0;
do {
cnt++;
} while (cnt < 0);
if (cnt==1)
cnt++;
else
cnt = cnt + 3;
System.out.printf("%d", cnt);
}
}
UNIX/LINUX의 export
명령어
→ 기존 환경 변수의 값을 변경하거나, 새로운 환경 변수를 설정할 때 사용하는 명령어
∗ 환경 변수를 명령어나 스크립트에서 사용하기 위해서는 $
를 입력해ㅑㅇ 함
∗ set, env, printenv, setenv
중 하나를 입력하면 모든 환경 변수와 값을 표시
- export가 매개변수 없이 쓰일 경우 현재 설정된 환경변수들이 출력
- 사용자가 생성하는 변수는
export
명령어로 표시하지 않는 한 현재 쉘에 국한됨
- 변수를
export
시키면 전역(Global) 변수처럼 되어 끝까지 기억됨
TCP 프로토콜
- 흐름 제어 기능을 수행
- 전이중 방식의 양방향 가상회선 제공
- 전송 데이터와 응답 데이터를 함께 전송할 수 있음
CSMA/CA
→ 무선 랜에서 데이터 전송 시 , 매체가 비어있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법
→ 네트워크에 데이터의 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비하여 확인 신호를 전송
5과목: 정보시스템 구축 관리
SSH(Secure Shell)
- 기본 네트워크 포트: 22번
- 전송되는 데이터는 암호화 됨
- 키를 통한 인증은 클라이언트의 공개키를 서버에 등록해야 함
- 서로 연결되어 있는 컴퓨터 간 원격 명령 실행이나 셀 서비스 등을 수행
코드의 오류
- 필사 오류 = 오자 오류: 입력 시 임의의 한 자리를 잘못 기록한 경우
- 전위 오류: 입력 시 좌우 자리를 바꾸어 기록한 경우 발생
- 이중 오류: 전위 오류가 2개 이상 발생한 경우
- 생략 오류: 입력 시 한 자리를 빼놓고 기록한 경우
- 추가 오류: 입력 시 한 자리를 더 추가하여 기록한 경우
- 임의 오류: 오류가 두 가지 이상 결합하여 발생한 경우
N-Screen
→ PC, TV, 휴대폰에서 원하는 콘텐츠를 끊김없이 자유롭게 이용할 수 있는 서비스
스택 가드(Stack Guard)
→ 메모리상에서 프로그램의 복귀 주소와 변수 사이에 특정 값을 저장해 두었다가 그 값이 변경되었을 경우 오버플로우 상태로 가정하여 프로그램 실행을 중단하는 기술
벨 라파듈라 모델
→ 군대의 보안 레벨처럼 정보의 기밀성에 따라 상하 관계가 구분된 정보를 보호하기 위해 사용
∗ 클락-윌슨 무결성 모델 → 무결성 중심의 상업용 모델, 사용자가 직접 개체에 접근할 수 없고 프로그램에 의해 접근 가능한 보안 모델
∗ PDCA 모델 → 프로세스 및 제품의 제어 및 지속적인 개선을 위해 ‘계획, 행동, 평가, 개선’의 4 단계를 반복하는 모델
∗ 만리장성 모델 → 서로 이해 충돌 관계에 있는 객체 간의 정보 접근을 통제하는 모델
ISO 12207 표준의 기본 생명 주기의 프로세스
→ 획득 프로세스, 공급 프로세스, 개발 프로세스, 운영 프로세스, 유지 보수 프로세스 등
OSPF 라우팅 프로토콜
- 네트워크 변화에 신속하게 대처
- 멀티캐스팅 지원
- 최단 경로 탐색에 Dijkstra 알고리즘 사용
∗ RIP → 거리 벡터 라우팅 프로토콜
SAN(Storage Area Network)
→ 네트워크상에 광채널 스위치의 이점인 고속 전송과 장거리 연결 및 멀티 프로토콜 기능을 활용
∗ MBR(Memory Buffer Register) → 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터
∗ NAC(Network Access Control) → 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔류션
∗ NIC(Network Interface Card) → 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치
소프트웨어 비용 산정 기법 - COCOMO 모형
→ Organic, Semi-Detached, Embedded로 구분
SPICE 모델의 프로세스 수행 능력 수준 6단계
불완전 - 0
수행 - 1
관리 - 2
확립 - 3
예측 - 4
최적화 - 5
라우터
→ 서로 다른 네트워크 대역에 있는 호스트를 상호간에 통신할 수 있도록 해주는 네트워크 장비
∗ L2 스위치: OSI 2계층에 속하는 장비로 MAC 주소를 기반으로 프레임 전송, 동일 네트워크 간의 연결만 가능
∗ HIPO → 시스템의 분석 및 설계나 문서화할 떄 사용되는 기법
∗ RAD → 소프트웨어를 빠르게 개발하기 위해 우수한 개발 도구를 이용하고, 기존의 개발 프로세스를 통합하는 등 빠른 개발주기를 가진 점진적 소프트웨어 개발 방식
대칭키 암호화 기법
암호화 키와 복호화 키가 동일한 암호화 알고리즘
→ DES, SEED, AES ,ARIA, LSFSR, RC4 등
IPSec
→ 암호화와 복호화가 모두 가능한 양방향 암호 방식
- ESP는 발신지 인증, 데이터 무결성, 기밀 성 모두를 보장
- 운영 모드는 Tunnel 모드와 Transport 모드로 분류
- AH는 발신지 호스트를 인증하고, IP 패킷의 무결성을 보장함
nmap
→ 서버에 열린 포트 정보를 스캐닝하여 보안 취약점을 찾는데 사용하는 도구
type
→ 명령어의 정보를 확인하는 옵션 또는 ftp에서 전송 모드를 설정할 때 사용하는 명령어
mkdir
→ 서버에 디렉터리를 생성하는명령어
ftp
→ FTP 서버에 접속할 때 사용하는 명령어
하둡(Hadoop)
→ Sqoop, 하둡과 관계형 데이터베이스 간 데이터를 전송할 수 있도록 설계된 도구
해쉬 기법
- 임의의 길이의 입력 데이터를 받아 고정된 길이의 해쉬 값으로 변환
- 대표적인 해쉬 알고리즘으로 HAVAL, SHA-1 등
- 해쉬 함수는 일방향 함수
- RHDROZL
∗ 공개키 암호화 알고리즘들 → 해시 기법이 아닌 소인수 분해나 이산대수 등 고유의 방법으로 키 생성
소프트웨어 비용 추정 모형
→ COCOMO, Putnam, Function-Point
∗ PERT → 프로젝트 일정 계획 및 관리에 사용되는 방법론
2021 3회 문제 풀이
1과목: 소프트웨어 설계
UML의 관계
- 연관(Association) 관계: 2개 이상의 사물이 서로 관련
- 집합(Aggregation) 관계: 하나의 사물이 다른 사물에 포함
- 포함(Composition) 관계: 집합 관계의 특수한 형태 → 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 일반화(Generalization) 관계: 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현하는 관계
- 의존(Dependency) 관계: 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
- 한 사물의 명세가 바뀌면 다른 사물에 영향을 주며, 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우에 나타나는 관계
- 실체화(Realization) 관계: 사물이 할 수 있거나 해야하는 기능으로 서로를 그룹화 할 수 잇는 관계
추상화 기법
→ 과정 추상화, 데이터 추상화, 제어 추상화
기능적 요구사항
→ 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
∗ 성능, 보안, 품질, 안정 등에 대한 요구사항은 비기능적 요구사항에 해당함
크래스 다이어그램의 구성 요소
- 클래스
- 각각의 객체들이 갖는 속성과 오퍼레이션(동작)을 표현한 것
- 속성 - 클래스의 상태나 정보를 표현 / 오퍼레이션 - 클래스가 수행할 수 있는 동작으로 함수라고도 함
- 제약조건 → 중괄호를 이용
- 관계
- 클래스와 클래스 사이의 연관성 표현
- 연관 관계, 집합 관계, 포함 관계, 일반화 관계, 의존 관계
요구사항 분석 과정에서 사용되는 다이어그램
→ 자료 흐름도(Data Flow Diagram), UML(Unified Modeling Language), E-R(개체-관계) 모델
∗ AVL Diagram → 이진 탐색트리에서 활용되는 다이어그램
GoF 디자인 패턴 - 전략(Strategy) 패턴
→ 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 행위 패턴
∗ 프로토타입(Prototype) 패턴 → 인스턴스를 복제하여 사용하는 패턴 (생성 패턴)
럼바우 분석 기법 - 기능 모델링
→ 자료 흐름도를 주로 이용함
순차 다이어그램
→ 시간의 흐름에 따라 상호 작용하는 개체들을 표현하는 동적 다이어그램
미들웨어
→ 애플리케이션과 사용자 사이 뿐만 아니라 클라이언트와 서버, 운영체제와 응용 프로그램과 같이 두 시스템 사이에서 다양한 서비스를 제공하는 소프트웨어
- 분산 시스템에서 다양한 부분을 관리하고 통신하며 데이터를 교환하게 해주는 소프트웨어
- 위치 투명성을 제공
- 분산 시스템의 여러 컴포넌트가 요구하는 재사용 가능한 서비스의 구현을 제공
파이프-필터 패턴
→ 데이터 통로인 파이프를 이용하여 컴포넌트인 필터 간에 데이터를 전송하는 구조로, 단방향 및 양방향 모두 구현할 수 있으며, 필터 간 이동 시 오버헤드 발생
2과목: 소프트웨어 개발
목적에 따른 테스트
- 회복 테스트: 시스템에 여러 가지 결함을 주어 실패하도록 한 후 올바르게 복구되는지를 확인하는 테스트
- 안전 테스트: 시스템에 설치된 시스템 보호 도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인
- 강도 테스트: 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
- 성능 테스트: 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트, 소프트웨어의 응답 시간, 처리량 등을 테스트
- 구조 테스트: 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
- 회귀 테스트: 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
- 병행 테스트: 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트
버블 정렬
→ 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
깊이 우선 탐색(DFS)
→ 정점에서 자식 노드 방향으로 운행하면서 형제 노드와 자식 노드가 있을 때 자식 노드를 우선 탐색하는 기법
→ 자식 노드의 탐색이 모두 끝나면 다시 형제 노드부터 탐색을 시작하는 방식으로 모든 노드를 한 번씩 방문
테스트 하네스(Test Harness)의 구성 요소
- 테스트 드라이버 → 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 도구
- 테스트 스텁 → 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈
- 테스트 슈트 → 테스트 케이스의 집합
- 테스트 케이스 → 테스트 항목의 명세서
- 테스트 스크립트 → 실행 절차에 대한 명세서
- 목 오브젝트 → 사용자 행위를 조건부로 입력해두면, 그 상황에 맞는 예정된 행위를 수행하는 객체
자료 구조의 분류
- 선형 구조 → 배열, 선형 리스트, 스택, 큐, 데크
- 비선형 구조 → 트리, 그래프
스택
- 언더플로 → 더 이상 삭제할 데이터가 없는 상황에서 데이터 삭제될 때 발생
- 오버 플로 → 모든 기억 공간이 꽉 채워져 있는 상태에서 데이터가 삽입될 때 발생
소프트웨어 검증과 확인
- 검증 (Verification) → 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지를 점검
- 확인 (Validation) → 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지를 확인
형상 관리 기능의 종류
- 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어: 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 과정
- 형상 통제(변경 관리): 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영되 수 있도록 조정하는 작업
- 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상 기록(상태 보고): 형상의 식별, 통제, 감사 작업의 결과를 기록/관리하고 보고서를 작성하는 작업
결함(Fault)
→ 오류 발생, 작동 실패 등과 같이 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생하는 것
소프트웨어 품질 특성
- 기능성(Functionality) → 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는지 여부를 나타냄
- 신뢰성(Reliability) → 소프트웨어가 요구된 기능을 정확하고 일관되게 오류 없이 수행할 수 있는 정도를 나타냄
- 사용성(Usability) → 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고 사용하며, 향후 다시 사용하고 싶은 정도를 나타냄
- 효율성(Efficiency) → 사용자가 요구하는 기능을 할당된 시간 동안 한정된 자원으로 얼마나 빨리 처리할 수 있는지 정도를 나타냄
- 유지 보수성(Maintainability) → 환경의 변화 또는 새로운 요구사항이 발생했을 때 소프트웨어를 개선하거나 확장할 수 있는 정도를 나타냄
- 이식성(Portability) → 소프트웨어가 다른 환경에서도 얼마나 쉽게 적용할 수 있는지 정도를 나타냄
트리 구조의 검색 효율
→ 이진 탐색트리의 평균 시간 복잡도는 O(logN)
→ 이를 보완하고자 개발된 균형트리가 AVL, 2-3, 레드-블랙 트리
중위 순회
Left → Root → Right
테스트 케이스 생성 도구
→ 자료 흐름도, 기능 테스트, 입력 도메인 분석, 랜덤 테스트
3과목: 데이터베이스 구축
논리 데이터베이스 설계
→ 트랜잭션의 인터페이스 설계, 데이터 타입 및 타입들 간의 관계 표현
키(Key)
데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
- 슈퍼키: 유일성은 만족하지만 최소성은 만족시키지 못함
- 후보키: 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합 → 유일성과 최소성 모두 만족
- 기본키
- 대체키: 후보키 중에서 선정된 기본키를 제외한 나머지 후보키
- 외래키
로킹
- 로킹 단위가 크면 병행성 수준이 낮아짐
- 로킹 단위가 크면 병행 제어 기법이 단순해지고, 로킹 단위가 작아지면 병행 제어 기법이 복잡해짐
- 로킹 단위가 작으면 로크의 수가 많아지고, 로킹 단위가 크면 로크의 수가 적어짐
- 파일, 레코드, 필드는 물론 데이터베이스까지 로킹 단위가 될 수 있음
관계해석
→ 원하는 릴레이션을 정의하는 방법을 제공하는 비절차적 특성을 지님
정규화
→ 개념적 설계 다음에 수행하는 논리적 설계 단계에서 수행하는 작업
병행 제어 기법
- 로킹
- 주요 데이터의 액세스를 상호 배타적으로 하는 것
- 타임 스탬프 순서
- 동시성 제어를 위한 직렬화 기법으로, 트랜잭션 간의 처리 순서를 미리 정함
- 최적 병행수행(검증 기법, 확인 기법, 낙관적 기법)
- 다중 버전 기법
제5정규형
→ 테이블의 모든 조인 종속이 테이블의 후보키를 통해서망 성립되는 정규형
함수적 종속
X가 Y를 함수적으로 종속할 때 X → Y로 표기함
4과목: 프로그래밍 언어 활용
자동반복 요청방식의 오류 제어
→ Stop-and-Wait ARQ, Go-Back-N ARQ, Selective-Repeat ARQ, Adaptive ARQ
Python
def cs(n):
s = 0
for num in range(n+1):
s += num
return s
print(cs(11))
C
#include <stdio.h>
int main(void) {
int a = 3, b = 4, c = 2;
int r1, r2, r3;
r1 = b <= 4 || c == 2;
r2 = (a > 0) && (b < 5);
r3 = !c;
printf("%d", r1+r2+r3);
return 0;
}
![image.png]()
뭐야 시발..
Java 연산자의 우선순위
단항 → 산술 → 시프트 → 관계 → 비트 → 논리 → 조건 → 대입 → 순서 연산자
SSTF
→ 현재 위치에서 가장 가까운 거리에 있는 트랙의 요청을 먼저 서비스
IP 주소
A 클래스 0~127
B 클래스 128~191
C 클래스 192~223
D 클래스 224~239
E 클래스 실험적 주소이며 공용되지 않음
Java
public class ovr {
public static void main(String[] args) {
int arr[];
int i = 0;
arr = new int[10];
arr[0] = 0;
arr[1] = 1;
while(i < 8) {
arr[i+2] = arr[i+1] + arr[i];
i++;
}
System.out.println(arr[9]);
}
}
![image.png]()
스레드
→ 프로세스 내에서의 작업 단위
- 프로세스가 준비 상태에서 프로세서가 배당되어 실행 상태로 변화하는 것을 디스패치라고 함
- 프로세스 제어 블록은 프로세스 식별자, 프로세스 상태 등의 정보로 구성
- 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정을 문맥 교환이라고 함
결합도
→ 모듈들이 변수를 공유하여 사용하게 하거나 제어 정보를 교류하게 하면 결합도가 높아짐
- 오류가 발생했을 때 전파되어 다른 오류의 원인이 되는 파문효과를 최소화해야 함
- 인터페이스가 정확히 설정되어 있지 않을 경우 불필요한 인터페이스가 나타나 모듈 사이의 의존도는 높아지고 결합도가 증가
- 다른 모듈과 데이터 교류가 필요한 경우 전역변수보다는 매개변수를 사용하는 것이 결합도를 낮추는데 도움이 됨
TCP 헤더
→ 윈도우의 최대 크기는 65,535(2^16-1) byte
- 순서 번호는 전달하는 바이트마다 번호가 부여
- 수신 번호 확인은 상대편 호스트에서 받으려는 바이트의 번호 정의
- 체크섬은 데이터를 포함한 세그먼트의 오류를 검사
페이지 교체 알고리즘의 종류
→ OPT, FIFO, LRU, LFU
C언어의 예약어
→ else는 예약어인데 True는 예약어가 아님 파이썬이랑 ㅏㄱ각함
파일 디스크립터
리눅스 또는 유닉스에서 프로세스가 파일에 접근하는 데 사용하는 일종의 키
→ 사용자가 파일 디스크립터의 정보를 확인할 수는 있으나 직접 참조할 수는 없다
- 파일 관리를 위해 시스템이 필요로하는 정보를 가지고 있음
- 보조기억장치에 저장되어 있다가 파일이 개방되면 주기억장치로 이동
- 파일 제어 블록이라고도 함
5과목: 정보시스템 구축 관리
이상 탐지 기법
→ 평균적인 시스템의 상테를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려주는 시스템
∗ 오용 탐지 기법 → Signature Base나 Knowledge Base라고도 불리며 이미 발견되고 정립된 공격 패턴을 입력해두었다가 탐지 및 차단
∗ HIDS(Host-Based Intrusion Detection) → 운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지에 대한 기록을 남기고 추적
∗ NIDS(Network-Based Intrusion Detection System) → 대표적: Snort
∗ 외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크인 DMZ에는 IDS가 설치될 수 없음
접근통제
- MAC(Mandatory Access Control) → 강제 접근 통제, 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
- DAC(Discretionary Access Control) → 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- RBAC(Role Based Access Control) → 사용자의 역할에 따라 접근 권한을 부여하는 ㅂ방식
텐서플로
→ 구글의 구글 브레인 팀이 제작하여 공개한 기계 학습을 위한 오픈 소스 소프트웨어 라이브러리
∗ 타조 → 오픈 소스 기반 분산 컴퓨틴 플랫폼인 아파치 하둡 기반의 분산 데이터 웨어하우스 프로젝트
∗ 원 세그 → 일본의 디지털 휴대 이동 방송 서비스
∗ 포스퀘어 → 소셜 네트워크 서비스 (위치 기반)
PaaS-TA
→ 국내 IT 서비스 경쟁력 강화를 목표로 개발, 개방형 클라우드 컴퓨팅 플랫폼
∗ N20S → 한국전자통신연구원이 개발한 네트워크 운영체제
XDMCP
→ GUI 환경을 구축한 유닉스나 리눅스 시스템에서 서버와 클라이언트가 GUI 환경 관리자인 XDM과 네트워크를 통해 소통하는데 사용하는 프로토콜
VLAN
→ 논리적으로 LAN을 구성하여 Broadcast Domain을 구분할 수 있게 해주는 기술
RSA
→ 비대칭 암호화 방식으로 소수를 활용한 암호화 알고리즘
스토리지
-
SDS
→ 가상화를 적용하여 필요한 공간만큼 나눠 사용할 수 있도록 하며 서버 가상화와 유사, 스토리지 자원을 효율적으로 나누어 쓴느 방법
-
DAS → 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
-
NAS → 서버와 저장장치를 네트워크를 통해 연결하는 방식
-
SAN →DAS + NAS
COCOMO 소프트웨어 개발 유형
- 조직형 (Organic) → 기관 내부에서 개발된 중/소 규모의 소프트웨어, 5만 라인 이하의 소프트웨어를 개발하는 유형
- 반분리형 (Semi-Detached) → 조직형과 내장형의 중간형, 30만 라인 이하의 소프트웨어를 개발하는 유형
- 내장형 (Embedded) → 최대형 규모의 트랜잭션 처리 시스템이나 운영체제 등의 30만 라인 이상의 소프트웨어를 개발하는 유형
나선형 모델(Spiral Model)
→ 계획 수립, 위험 분석, 개발 및 검증, 고객 평가 과정을 반복하며 수행하는 개발 방법론
- 비교적 대규모 시스템에 적합
- 개발 순서: 계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
- 소프트웨어를 개발하면서 발생하 수 있는 위험을 관리하고 최소화하는 것
MQTT(Message Queuing Telemetry Transport)
→ TCP/IP 기반 네트워크에서 동작하는 발행-구독 기반의 메시징 프로토콜, 최근 IoT 환경에서 자주 사용되고 있음
SSO (Single Sign On)
→ 하나의 시스템에서 인증에 성공하면 다른 시스템에 대한 접근 권한도 얻는 시스템
LOC 기법
→ S/W 각 기능의 원시 코드 라인수와 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
OWASP
→ 오픈소스 웹 애플리케이션 보안 프로젝트, 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 곳