1과목 소프트웨어 설계
MOM : 메시지 지향 미들웨어
- 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어
기능적/비기능적 요구사항
- 기능적 요구사항 : 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
- 비기능적 요구사항 : 성능, 보안, 품질, 안정성 등으로 실제 수행에 보조적인 요구사항(3초 안에 모든 화면이 보여야 한다 등)
GoF 디자인 패턴
생성(Cretaional)
구조(Structional)
- 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
- 객체들을 묶어 단일 인터페이스를 제공하거나 새로운 기능을 제공하는 패턴
행동(Behavioral)
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
- 작업을 여러 개의 객체로 분배하는지, 객체 사이의 결합도를 최소하하는 것이 중점
UI 종류
- GUI : 그래픽
- CLI : 글자만
- OUI : 모든 사물과 사용자 간의 상호작용
- NUI : 말이나 행동으로 기기를 조작하는 인터페이스
- VUI : 목소리로 기기 조작하는 인터페이스
소프트웨어 아키텍쳐 설계과정
- 설계 목표 -> 시스템 타입 결정 -> 아키텍쳐 패턴 적용 -> 서브시스템 구체화 -> 검토
클래스 설계 원칙
- 단일 책임 원칙 : 힌 클래스는 하나의 역할 만
- 개방 페쇄 원칙 : getter setter 사용하는 이유
- 리스코프 교체의 원칙 : 하위 클래스는 상위 클래스로 대체 가능
- 의존 관계 역전의 원칙 : 관계를 최대한 느슨하게 만드는 원칙
- 인터페이스 분리의 원칙 : 클라이언트가 사용하지 않은 인터페이스 때문에 영향을 받아선 안됨
럼바우 기법
- 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기겁
- 객체/동적/기능 모형 3개의 모델링을 통해 분석이 이루어짐
2과목
통합 테스트
-
비점진적/점진적 : 단계적으로 통합하는지, 아닌지
-
하양식 : 상위 -> 하위 모듈 순으로 통합 및 테스트
-> 깊이 우선 방식, 넓이 우선 통합법을 사용한다
-> 테스트 드라이버 : 하위 모듈 테스트시 사용하며, 파라미터 등을 전달
-
상향식 : 하위 -> 상위 모듈 방향으로 통합하며 테스트
-> 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구.
일시적으로 필요한 조건만을 가지고 있는 시험용 모듈
-> 하위 모듈을 상세하게 설계 후 개발 하므로, 인터페이스가 이미 성립되어야 기능 추가가 쉽다
요구사항 검증 방법
- 요구사항 검토 방법
-> 동료 검토 : 명세서 작성자가 명세서 내용을 직접 설명하는 것을 들음
-> 워크스루 : 요구사항 명세서를 미리 배포하여 사전 검토하는 방식
-> 인스펙션 : 작성자를 제외한 다른 검토 전문가가 검토
위험 모니터링
- 위험 요소 징후들에 대하여 계속적으로 인지하는 것
NS Chart
- 3가지 기본 구조만을 논리를 표현
- 기본구조의 입구와 출구는 각각 하나씩 존재
- 전체적인 알고리즘을 일목요연하게 볼 수 있음
- 화살표나 GOTO는 사용하지 않는다
화이트 박스 테스트 종류
- 기초 경로 검사
- 제어구조 검사
- 루프 검사
- 데이터 흐름 검사
화이트 박스 검증 기준
블랙박스 테스트 종류
- 동치, 분할 검사
- 경계값 분석
- 원인-효과 검사
- 오류 예측 검사
- 비교 검사
ISO/IC 25000
- sw 품질 평가 통합 모델
- SQuaRE라고 불림
- 3개 표준을 통합한 모델
소프트웨어 재공학의 주요 활동
- Analysis : 분석 후 재공학 대상 선정
- Migration : 기존 소프트웨어를 새로운 기술/하드웨어 환경에서 사용할 수 있도록 변환
- Restructuring : 코드 재작성
- Reverse Engineering : 프로그램 -> 소스코드 변환
YAML : Json과 비슷한 사람이 읽기 쉬운 데이터 표현 형식
3과목
정규화 과정
- 1NF : 각 칼럼이 하나의 속성만을 가져야 한다
- 2NF : 모든 칼럼이 부분적 종속이 없어야 한다
- 3NF : 기본키를 제외한 속성들 간의 이행 종속성이 없어야 한다
- BCNF : 3정규화의 강화형 -> 모든 결정자가 후보키 집합에 속해야 한다
- 4NF : 다치 종속이 없어야 한다...
- 5NF : 중복을 제거하기 위해 분해할 수 있을 만큼 전부 분해하는 것
트랜잭션 정질
- 원자성(Atomcity) : 연산이 db에 모두반영하거나, 반영하지 않거나
- 일관성(consistency) : 시스템의 고정요소의 상태가 같아야 함
- Isolation(독립성) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 다른 트랜잭션이 연상에 끼어들 수 없음
- 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함
저장 레코드 양식 설계시 고려사항
SQL의 기능에 따른 분류
- DDL : db 스카마, 테이블, 뷰 등을 정의, 변경, 삭제
- DML : 데이터를 CRUD
- DCL : 데이터베이스 관리자가 데이터 관리를 목적으로 함(데이터 커밋, 권한 부여 등)
데이터 사전
- 데이터를 실제로 접근하는데 필요한 정보를 관리, 유지하는 시스템
- 시스템만 접근 가능
관계형 데이터베이스의 릴레이션
- 데이터들을 표 형태로 표한한 것
- 튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임
- 속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
- 도메인 : 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의집합
트랜잭션의 상태
- Active : 트랜잭션이 실행 중인 상태
- Failed : 트랜잭션 실행에 오류가 발생하여 중단된 상태
- Aborted : 비정상적으로 종료되어 Rollback 연산을 수행한 상태
- Partially Committed : 연산 종료 휴 commit 연산이 실행되기 전 단계
- Commited : commit 연산을 실행한 후의 상태

릴레이션
- Degree : 열 (4개)
- Cardinality : 행 (3개)
뷰
- 뷰 위에 또다른 뷰를 추가 가능
- DBA는 보안성 측면에서 뷰를 활용 가능
- 사용자가 필요한 정보를 요구에 맞게 가공하여 뷰로 만들 수 있음
- 뷰에 대한 삽입, 삭제, 갱신 연산에 제한 존재
분산 데이터베이스 시스템
- 논리적으로 하나의 시스템이나 물리적으로 여러 개의 컴퓨터
- 위치/중복/병행/장애 투명성이 목표
- 설계가 어려우며 개발 비용 및 처리 비용 증가
- 구성 요소는 대부분 '분산'이 붙어 있음
4과목 프로그래밍 언어와 활용
c언어
함수
- strlen : 문자열 길이 구함
- strcpy(a, b) : b를 a로 복사한다
- strcmp(a, b) : 문자열 비교
- strrev : 문자열 거꾸로 변환
- stract : 문자열 연결
c언어에서 true = 1, false = 0
// 비교 - and 연산
a && b
// 비교 - or 연산
a || b
//not 연산
printf("%d\n", !1); // 0 : NOT 1은 거짓
printf("%d\n", !0); // 1 : NOT 0은 참
자바
삼향 연산자
//if else
int a;
if(5<4) {
a = 50;
}else {
a = 40;
}
System.out.println(a); //결과 = 40
//삼항연산자
int b = (5 < 4) ? 50 : 40;
System.out.println(b); //결과 = 40
unix 운영체제
- 하나 이상의 작업에 대해 백그라운드에서 수행이 가능
- multi suer, multi tasking 모두 지원
- 트리 구조의 파일 시스템
- 이식성이 높으며 장치 간 호환성이 높다
응집도
- 하나의 모듈이 하나의 기능을 수행하는 요소들간의 연관성 척도
- 독립적일수록 더 강함
결합도
- 모듈과 모듈 사이의 상호의존도
- 낮을수록 더 독립적임
스레드
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당 받아 실행하는 프로그램의 단위
- 스레드 기반 시스템에선 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
- 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
- 병행성 증진, 응답시간 단축, 스레드끼리 서로 효율적으로 통신함
스레드 구분
- 사용자 수준 스레드 : 라이브러리를 통해 운용하며 속도는 빠르나 구현이 어려움
- 커널 수준의 스레드 : 운영체제의 커널에 의해 스레드를 운용함, 속도 느림
tpc/ip 프로토콜
- ARP : ip -> mac 주소 변환
- ppp : 점대점 데이터링크를 통해 3계층 프로토콜들을 캡슐화하여 전송하는 프로토콜
- icmp: 전송 오류 발생 대비
unix 시스템의 셀의 주요 기능
- 사용자 명령을 해석하고 커널로 전달
- 반복적인 명령 프로그램을 만드는 프로그레밍 기능을 제공
- 초기화 파일을 이용해 사용자 환경을 설정하는 기능을 제공
커널의 기능
5과목 : 정보시스템 구축 관리
tcp wrapper : 접속 인가 여부를 점검하여 인가된 경우 접속을 허용
- 3 way - handshake을 통해 원활한 통신이 가능하게 함
응용 프로그램 취약점 관리
- 패치 관리
- 응용 프로그램 실행권한의 제한
- 운영체제의 접근 제한
- 정보 수집 제안
- 시스템 무결성 검사
악성코드 종류
- worm : 취약점을 통해 스스로 전파 or 메일로 전파
- rogue ware : 가짜 백신 소프트웨어 -> 악성프로그램이 있다고 거짓말함
- adware : 특정 소프트웨어를 실행시 활성화되는 광고프로그램
- reflection attack : 송신자가 생성한 메시지를 가로채어 접근 권한을 얻는 공격 방법
접근 통제 방식
- RBAC : 직책에 따른 권한 부여
- DAC : 임의 접근 통제, 자원에 대한 접근을 사용자나 그룹의 신분에 따라 제한
- MAC : 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
COCOMO 모델의 특징
- MAN-MONTH를 통해 산정 결과를 나타낼 수 있다
- 보헴이 제안한 원시 코드 라인 수에 의한 비용 산정 방법
- 비교적 작은 규모의 프로젝트 기록을 통계분석하여 얻은 결과를 반영
- 유형에 따라 organic, semo-detached, enbedded로 나누어짐
DAS : 저장장치와 호스트 기기 사이에 네트워크 디바이스 없이 직접 연결하는 방식
윈도우 파일 시스템 : FAT
- dos 때부터 사용되던 윈도우 파일 시스템
- 저용량에 적합, 호환성 좋음, 저장 가능한 파일의 최대크기가 4GB
NTFS
- fat를 대체하기 위해 개발된 윈도우 파일 시스템
- 사용자마다 다르게 보안을 적용 가능 -> 보안성이 좋음
- 대용량 볼륨에 효율적, 안정성이 좋음
wtmp : 리눅스 시스템에서 사용자의 성공한 로그인/로그아웃 정보 기록
LOC 기법에서 예측치를 구하려면
낙관치, 비관치, 기대치가 필요하다
추가할 내용
- 데이터베이스 설계 과정
- 정규화
- LOC 기법
- 프로토콜 관련 내용 추가...
- 스레드
- 비대칭/대칭 암호 알고리즘