1과목
⭐️⭐️⭐️인스펙션

- 가 - 사전교육
- 나 - 준비
- 다 - 인스펙션 회의
- 라 - 수정
- 마 - 후속조치
⭐️⭐️⭐️ 메시지 지향 미들웨어(Message-Oriented Middleware, MOM)
- 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어이다.
- 온라인 업무보다는 이기종 분산 데이터 시스템의 데이터 동기를 위해 많이 사용한다.
⭐️⭐️⭐️⭐️⭐️ 개발 방법론
구조적 방법론 → 계획 중심의 접근 익스트림 프로그래밍(XP) → 반복적이고 점진적인 개발 강조
- 소규모 개발 조직이 불확실하고 변경이 많은 요구를 접하였을 때 적절한 방법이다.
- 상식적인 원리와 경험 기반
- 개발 문서보다는 소스코드 중심
⭐️⭐️⭐️⭐️ 유스케이스
- 시스템 : 만들고자 하는 프로그램
- 액터(Actor) : 시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의 기능을 사용하는 사람), 시스템(시스템에 정보를 제공하는 또 다른 시스템)
- 유스케이스 : 사용자 입장에서 바라본 시스템의 기능으로 시스템이 액터에게 제공해야 하는 기능으로 시스템의 요구사항
- 관계 : 액터와 유스케이스간 관계
- 연관관계(Association) : 유스케이스와 액터간의 상호작용이 있음을 표현
- 포함 관계(Include): 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계
- 확장 관계(Extend): 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성 되는 관계
- 일반화 관계(Generalization) : 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계
- 작성 순서
- 액터 식별 → 유스케이스 식별 → 관계 정의
⭐️⭐️⭐️⭐️⭐️ 기능적 요구사항과 비기능적 요구사항
- 기능적 요구사항 : 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
- WHAT에 집중
- 비기능적 요구사항 : 시스템 구축에 대한 성능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정성등으로 실제 수행에 보조적인 요구사항
- HOW에 집중
- 몇 초 안에 보여야 한다 → 비기능
⭐️⭐️⭐️⭐️ 미들웨어
- 클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어
- 이기종 하드웨어, 소프트웨어, 네트워크, 프로토콜, PC 환경, 운영체제 환경 등에서 시스템 간의 표준화된 연결을 도와주는 소프트웨어
- 표준화된 인터페이스를 통하여 시스템 간의 데이터 교환에 있어 일관성을 제공
- 운영체제와 애플리케이션 사이에서 중간 매개 역할을 하는 다목적 소프트웨어
⭐️⭐️⭐️⭐️⭐️ 디자인 패턴
생성패턴 : 객체를 생성하는 것에 대한 패턴
- 추상 팩토리 패턴(abstract factory), 빌더 패턴(builder), 팩토리 메소드 패턴(factory method), 프로토타입 패턴(prototype), 싱글톤 패턴(singleton)
구조패턴 : 구조를 통해 확장성을 꾀하는 패턴
- 어댑터 패턴(adapter), 브릿지 패턴(bridge), 컴포지트 패턴(composite), 데코레이터 패턴(decorator), 퍼사드 패턴(facade), 플라이웨잇 패턴(flysweight), 프록시 패턴(proxy)
행위 패턴 : 행위의 변경, 수정 등을 위한 패턴
- 역할 사슬 패턴(책임 연쇄, chain of reposibility), 커맨드 패턴(command), 인터프리터 패턴(interpreter), 이터레이터 패턴(반복자, iterator), 미디에이터 패턴(중재자, mediator), 메멘토 패턴(memento), 옵저버 패턴(observer), 상태 패턴(state), 전략 패턴(strategy), 템플릿 메소드 패턴(template method), 비지터 패턴(방문자, visitor)
⭐️⭐️⭐️ 사용자 인터페이스
- CLI(Command Line Interface) : 텍스트 형태 인터페이스
- GUI(Graphical User Interface) : 마우스로 선택하여 작업하는 그래픽 환경 인터페이스
- NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기 조작하는 인터페이스
- VUI(Voice User Interface) : 사람의 음성으로 기기 조작하는 인터페이스
- OUI(Organic User Interface) : 모든 사물과 사용자 간의 상호작용을 위한 인터페이스
2과목
⭐️⭐️⭐️⭐️ 결함 발견
- 워크스루: 요구사항 명세서 작성자를 포함하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견
- 인스펙션: 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견.
⭐️⭐️⭐️⭐️ DRM
- 디지털 콘텐트의 지적재산권보호, 관리 기능 및 안전한 유통과 배포를 보장하는 솔루션
- 디지털 콘텐트의 지적재산권을 보호하는 권한통제기술, 사용권한제어 기술, 패키징 기술, 라이선스 관리를 포함한 유통체계
- 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미
⭐️⭐️⭐️⭐️ RCS(Revision Control System)
- CVS와의 차이점은 소스 파일의 수정을 한 사람만으로 제한한다.
- 다수의 사용자가 동시에 파일 수정을 할 수 없도록 파일 잠금 방식으로 버전을 관리하는 도구이다.
- 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있다.
⭐️⭐️⭐️⭐️ 단위 테스트
- 테스트 드라이버(test driver) : 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈
- 상향식 통합 시험
- 테스트 스텁(test stub) : 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할
- 하향식 통합 시험
⭐️⭐️⭐️⭐️ 해싱 함수
- 제산법
- 제곱법
- 중첩법(폴딩법)
- 숫자분석법
- 기수 변환법
- 무작위 방법
3과목
⭐️⭐️⭐️ 데이터 사전(Data Dictionary)
- 시스템 자신이 필요로 하는 여러 가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등)에 관한 정보를 포함하고 있는 시스템 데이터베이스이다.
- 시스템 카탈로그(System Catalog), 메타 데이터(Meta Data)라고도 한다.
- 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능하다.
- 사용자가 시스템 카탈로그를 직접 갱신할 수 없다.
- SQL 문으로 여러 가지 객체에 변화를 주면 시스템이 자동으로 갱신한다.
⭐️⭐️⭐️⭐️⭐️ 정규화 과정(도부이결다조)
- 1NF : 모든 도메인이 원자 값으로만 구성
- 2NF : 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족, 부분적 함수 종속을 제거한 정규형
- 3NF : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형
- BCNF : 모든 결정자가 후보키인 정규형, 종속성 보존X
- 4NF : 다치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족
- 5NF : 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
⭐️⭐️⭐️⭐️⭐️ 트랜잭션의 특성
- 원자성(Atomicity) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 함
- 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 함
- 격리성(Isolation, 고립성) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 함
- 영속성(Durability, 지속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨
⭐️⭐️⭐️⭐️⭐️ 분산 데이터베이스의 목표
- 위치 투명성(Location Transparency):하드웨어와 소 프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
- 중복(복제) 투명성(Replication Transparency):사용 자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복사를 자유롭게할수 있다.
- 병행 투명성(Concurrency Transparency):다중 사용 자들이 자원들을 자동으로 공유할 수 있다.
- 장애 투명성(Fai ure Transparency):사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없다.
⭐️⭐️⭐️⭐️⭐️ DCL, DML, DDL
DCL(Data Control Language)
- COMMIT : 명령어로 수행된 결과를 실제 물리적 디스크로 저장하고, 명령어로 수행을 성공적으로 완료하였음을 선언한다.
- ROLLBACK : 명령어로 수행을 실패하였음을 알리고, 수행된 결과를 원상복구시킨다.
- GRANT : 데이터베이스 사용자에게 사용 권한 부여한다.
- REVOKE : 데이터베이스 사용자로부터 사용 권한 취소한다.
DDL(Data Definition Language)
- CREATE : SCHEMA(스키마), DOMAIN(도메인), TABLE(테이블), VIEW(뷰), INDEX(인덱스)를 정의
- ALTER : TABLE에 대한 정의를 변경하는 데 사용
- DROP : SCHEMA(스키마), DOMAIN(도메인), TABLE(테이블), VIEW(뷰), INDEX(인덱스)를 삭제
DML(Data Manipultaion Language) - SELECT : 테이블에서 조건에 맞는 튜플을 검색
- INSERT : 테이블에 새로운 튜플을 삽입
- DELETE : 테이블에서 조건에 맞는 튜플을 삭제
- UPDATE : 테이블에서 조건에 맞는 튜플의 내용 변경
⭐️⭐️⭐️⭐️⭐️ 릴레이션의 특징
- 튜플의 유일성 : 모든 튜플은 서로 다른값을 갖는다
- 튜플의 무순서성 : 하나의 릴레이션에 튜플에 순서는 없다
- 속성의 원자성 : 속성값은 원자값을 갖는다
- 속성의 무순서성 : 각 속성은 릴레이션내에서 유일한 이름을 가지며, 순서는 큰 의미가 없다
⭐️⭐️⭐️⭐️⭐️ DB key
- Candidate key(후보키) : 기본키가 될 수 있는 것들이기 때문에 유일성과 최소성을 만족하지만 Super key(슈퍼키)는 동일한 것이 없기에 유일성은 만족하나 속성의 집합이기 때문에 최소성을 만족하지 않음
- 기본키(Primary Key) : 후보키 중에서 선택됨, 중복된 값과 Null값 가질 수 없음. 반드시 필요한 키
- 슈퍼키(Super Key) : 한 릴레이션 내 속성들의 집합으로 구성된 키, 유일성○, 최소성X
⭐️⭐️⭐️⭐️⭐️ DB 설계
- 개념적 설계 : 트랜잭션 모델링/ 독립적인 개념 스키마 모델링/ 개념스키마 설계/ E-R 다이어그램
- 논리적 설계 : 트랜잭션 인터페이스 설계/ DBMS에 맞는 논리스키마 설계/ 테이블 설계/ 논리적 매핑/ 스키마 평가 및 정제
- 물리적 설계 : 레코드 집중의 분석,설계/ 저장레코드 양식 설계 / 저장 구조 및 액세스 경로 설정
4과목
⭐️⭐️⭐️⭐️⭐️ 응집도와 결합도
(내): 내용 결합도
(공): 공통 결합도
(부): 외부 결합도
(제): 제어 결합도
(스): 스탬프 결합도
(자): 자료 결합도
5과목
⭐️⭐️⭐️⭐️ 최신기술
- zing(NFC) : 근거리 지이이잉
- BcN(Broadband Convergence Network) :멀티미디어
- Marine Navi : 마린용 네비게이션(선박 gps)
- C-V2X(Cellular Vehicle to Everything) : 엘티이(LTE), 5G와 같은 셀룰러 이동통신망을 통해 차량이 다른 차량이나 교통 인프라, 보행자, 네트워크 등과 정보를 서로 주고받는 차량 통신 기술.
⭐️⭐️⭐️⭐️⭐️ 응용프로그램 보안
-
패치 관리 : 응용프로그램에 대한 패치 또는 서비스 팩 적용
-
응용프로그램 실행권한의 제한 필요
-
운영체제의 접근 제한
-
정보 수집 제한
-
불필요한 서비스 및 악성 프로그램의 확인 및 제거
-
시스템 무결성 검사 : 주요 파일을 검사하여 변경 내역 확인
-
환경 및 시설: 도난, 정전-오작동, 천재지변
-
하드웨어: 고장-오작동, 데이터 유실
-
소프트웨어: 소프트웨어 장애, 정보유출, 데이터 소실
⭐️⭐️⭐️⭐️⭐️ HSM(Cloud-based Hardware Security Module)
- 클라우드(데이터센터) 기반 암호화 키 생성, 처리, 저장 등을 하는 보안 기기이다.
- 국내에서는 공인인증제의 폐지와 전자서명법 개정을 추진하면서 클라우드 HSM 용어가 자주 등장하였다.
- 클라우드에 인증서를 저장하므로 기존 HSM 기기나 휴대폰에 인증서를 저장해 다닐 필요가 없다.
- 하드웨어적으로 구현되므로 소프트웨어식 암호 기술에 내재된 보안 취약점을 해결할 수 있다.
네트워크 설명인데 뭔가 길다 + 그물 언급 → Mesh Network
⭐️⭐️⭐️⭐️⭐️ 정보 보안 침해 공격
시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다.
⭐️⭐️⭐️⭐️⭐️ DoS 공격의 종류
| 공격기법 | 설명 |
|---|---|
| SYN 플러딩(SYN Flooding) | TCP 프로토콜의 구조적인 문제를 이용한 공격 |
| UDP 플러딩(UDP Flooding) | 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송하여 응답 메시지(ICMP Destination Unreachable)를 생성하게 하여 지속해서 자원을 고갈시키는 공격 |
| 스머프(Smurf) / 스머핑(Smurfing) | 출발지 주소를 공격 대상의 IP로 설정하여 네트워크 전체에게 ICMP Echo 패킷을 직접 브로드캐스팅(Directed Broadcasting)하여 마비시키는 공격 [2020년 1회] |
| 죽음의 핑(PoD; Ping of Death) | ICMP 패킷(Ping)을 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리(재조합)하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격기법 |
| 랜드 어택(Land Attack) | 출발지(Source) IP와 목적지(Destination) IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격기법| |
| 티어 드롭(Tear Drop) | IP 패킷의 재조합 과정에서 잘못된 Fragment Offset 정보로 인해 수신시스템이 문제를 발생하도록 만드는 DoS 공격 |
| 봉크(Bonk) / 보잉크(Boink) | 프로토콜의 오류 제어를 이용한 공격기법으로서 시스템의 패킷 재전송과 재조립이 과부하를 유발 |
이것저것 공격들
1. 워터링홀(Watering Hole)
- 목표 조직이 자주 방문하는 웹 사이트를 사전에 감염시켜, 사이트 방문 시 악성 코드에 감염되게 하는 공격 2. 좀비 PC(Zombie PC)
- 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
→ C&C 서버의 제어를 받아 주로 DDoS 공격 등에 이용됨 3. C&C 서버(Command&Control Server) - 해커가 원격지에서 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도의 서버 4. 봇넷(Botnet)
- 악성 프로그램에 감염된 다수의 컴퓨터들이 네트워크로 연결된 형태 5. 웜(Worm)
- 연속적으로 자신을 복제하여 시스템의 부하를 높임으로 시스템을 다운시키는 바이러스의 일종
→ 분산 서비스 거부 공격, 버퍼 오버플로 공격, 슬래머 등이 있음 6. 제로 데이 공격(Zero Day Attack) - 발견된 취약점의 존재가 널리 공표되기도 전에 해당 취약점으로 가해지는 보안 공격
→ 공격의 신속성을 의미함 7. 키로거 공격(Key Logger Attack) - 사용자의 키보드 움직임을 탐지해 ID, 패스워드, 계좌번호 등과 같은 개인 정보를 빼돌리는 공격 8. 랜섬웨어(Ransomware)
- 사용자의 컴퓨터에 잠임해 내부 문서나 파일 등을 암호화해 열지 못하게 하는 프로그램
→ 암호 해독용 프로그램의 전달을 조건으로 사용자에게 돈을 요구함 9. 백도어(Back Door, Trap Door) - 시스템 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로
→ 백도어 탐지 방법 : 무결성 검사, 열린 포트 확인, 로그 분석, SetUID 파일 검사 등 10. 트로이 목마(Trojan Horse) - 정상적인 프로그램으로 위장하여 숨어 있다가 프로그램이 동작할 때 활성화되어 부작용을 일으키는 것
→ 자기 복제 능력은 없음
⭐️⭐️⭐️⭐️ 접근 통제 방법
MAC (Mandatory Access Control)
- 강제 접근 통제
- 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
DAC (Discretionary Access Control)
- 임의적 접근통제
- 자원에 대한 접근을 사용자나 그룹의 신분에 따라 제한
- 자원의 소유권을 가진 사람이 다른 사람의 접근을 허용하거나 제한할 수 있음
RBAC (Role Based Access Control)
- 사용자 역할에 따른 접근 통제
- 개별적인 신분이 아니라 조직 내 그룹 / 역할에 따라 부여
⭐️⭐️⭐️⭐️⭐️ COCOMO 모형(비용 산정)
- 원시 프로그램 규모(LOC)에 의한 비용 산정 기법
- 보헴(Boehm)이 제안
- 비교적 작은 규모의 프로젝트들을 통계 분석한 결과를 반영한 모델 → 중소 규모 소프트웨어 프로젝트 비용 추정에 적합
- 비용 산정 결과는 Man-Month로 표현
소프트웨어 개발유형에 따른 분류
조직형(Organic)
- 5만 라인 이하
- 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
반분리형(Semi-Detached)
- 30만 라인 이하
- 컴파일러, 인터프리터 개발에 적합
내장형(Embedded)
- 30만 라인 이상
- 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합
⭐️⭐️⭐️⭐️⭐️ SDN(Software Defined Networking)
- 네트워크를 제어부, 데이터 전달부로 분리하며 네트워크 관리자가 보다 효율적으로 네트워크 를 제머. 관리할 수 있는 기술
- 기존의 라우터. 스위치 등과 같이 하드웨머에 의존하는 네트워크 체계에서 안정성, 속도, 보 만 등을 소프트웨머로 제어. 관리하기 위해 개발됨
- 네트워크 장비의 펌웨어 업그레이드를 통해 사 용자의 직접적인 데이터 전송 경로 관리가 가 능하고, 기존 네트워크에는 영향을 주지 않으면 서 특정 서비스의 전송 경로 수정을 통하며 인터넷상에서 발생하는 문제를 처리할 수있음
⭐️⭐️⭐️⭐️⭐️ 프로젝트 일정 관리 차트
- PERT
- 작업들 간의 상로 관련성, 결정경로, 경계시간, 자원할당 등 제시
- GANTT차트(간트차트)
- 각 작업이 언제 시작하고 언제종료되는지 막대 도표로 표시
- 시간선(Time-line) 차트라고도 불림
- 수평 막대의 길이는 각 작업의 기간