1과목 : 소프트웨어 설계
- 목업(Mockup)
- 디자인, 사용방법설명, 평가등을 위해 실제 화면과 유사하게 만든 정적인 형태의 모형
- 시각적으로만 구성요소를 배치하는 것으로 일반적으로 실제로 구현되지는 않음.
- CASE(Computer-Aided software Engineering)의 원천 기술
- 구조적 기법
- 프로토타이핑기술
- 자동프로그래밍 기술
- 정보저장소 기술
- 분산처리 기술
- 파이프 필터 구조
- 서브시스템이 입력데이터를 받아 처리 -> 그 결과를 다른 시스템에 보내는 작업 반복
- 클라이언트 서버 구조
- 컴포넌트가 다른 컴포넌트에게 서비스를 요청
- 데이터가 여러 컴포넌트를 거치며 처리
- 계층 구조
- MVC 구조
- Usecase 구성요소와의 관계
- 연관 : use case와 actor의 관계
- 확장 : 특별한 조건을 만족할 때 수행
- 포함 : 시스템의 기능이 별도의 기능 포함
- 일반화 : 하위 유스케이스가 상위 유스케이스에게 기능/역할을 상속받음
- 그룹화 : 여러개의 유스케이스를 단순화
- 소프트웨어의 사용자 인터페이스개발시스템이 가져야할 기능
- 소스코드 분석 및 오류복구는 보통 백엔드에서 컴파일러가 수행함
- 도움과 프롬프트 제공 해야함
- GoF(Gang of Four) 디자인 패턴의 구조 패턴
- 어댑터
- 브릿지
- 컴포지트
- 데코레이트
- 퍼싸트(facade)
- 플라이웨이트(flysweight)
- 프록시
- 빌더 패턴은 생성패턴임
- 디자인 패턴
- 소프트웨어 설계에서 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
- 시스템 연계 기술
- DB 링크 : 데이터 베이스에서 제공하는 DB 링크 객체 이용
- 소켓 :
- 통신을 위한 프로그램을 생성하여 포트를 할당
- 클라이언트의 통신 요청 시 클라이언트와 연결하는 내.외부 송.수신 연계기술
- RPC ( Remote Procedure Call)
- 미들웨어에 대한 설명
- 여러 운영체제에서 응용 프로그램들 사이에 위치한 소프트웨어
- 소프트웨어 컴포넌트를 연결하기 위한 준비된 인프라 구조를 제공
- 여러 컴포넌트를 1대1, 1대 다, 다대 다 등 여러가지 형태로 연결이 가능
- 사용자가 정보 교환 방법 등의 내부 동작을 확인할 필요가 없음
- 요구사항 모델링
- 애자일 방법
- 유스케이스 다이어그램
- 시퀀스 다이어그램
- 단계 다이어그램은 요구사항 모델링과 관계 없음
- 공통 모듈 원칙
- 명확성 : 해당 기능에 대해 일관되게 이해하고 한가지로 해석될 수 있도록 함
- 정확성, 완전성, 일관성, 추적성
- 객체지향 기법
- 집단화 is part of (part가 들어가면 집단화 생각)
- 캡슐화
- 추상화
- 코드 종류
- 표의 숫자 코드 : 코드화 대상 항목의 중량, 면적, 용량 등의 물리적 수치를 이용하여 만든 코드
- 블록 코드 : 블록으로 구분한 후 그 안에서 순서대로 코드를 부여
- 마스터-슬레이브(master-slave) 아키텍처
- 일반적으로 실시간 시스템에서 사용
- 마스터 프로세스는 연산, 통신, 조정을 책임진다
- 슬레이브는 마스터의 작업 요청을 처리, 처리된 결과를 되돌려줌
- 마스터 작업을 분리, 배포
- 자료사전
- + : 자료 연결
- [] : 선택 ex) [A|B|C]
- {} : 반복
- 럼바우
- 객체 모델링 : 정보 모델링, 시스템에서 요구
- 동적 모델링 : 제어, 흐름, 동작, 상태
- 기능 모델링 : 자료
- LSP(Liskov Substitution Principle)
- 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 함
2과목 : 소프트웨어 개발
- White Box testing
- 소스코드의 모든 문장을 한번 이상 수행함으로서 진행됨
- 모듈 안의 작동을 직접 관찰할 수 있음
- 산출물의 각 기능별로 적절한 프로그램의 제어구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검
- 종류 : Condition Testing, Loop Testing, Data Flow Testing
- 소프트웨어 품질 측정 (개발자 관점)
- 정확성
- 신뢰성
- 효율성
- 무결성
- 유연성
- 이식성
- 사용성
- 상호운용성
- -> 무신사(에서) 효정(이라는애가 옷을샀는데)이상(하다)
- 전위 표기법 - 연산자가 앞에
- 중위 표기법 - 연산자가 안에
- 후위 표기법 - 연산자가 뒤에
- 1.연산자에 따라 묶는다
- ( - ( / ( * A ( + B C )) D ) E )
- 2.연산자를 각 괄호 뒤로 뺀다(후위식)
- 3.괄호를 제거한다.
- 블랙박스 테스트 유형
- 동등 분할 검사
- 경계값 분석
- 원인-효과 그래프 검사
- 오류 예측 검사
- 비교 검사
- 화이트박스 테스트 유형
- 전위 순회
- 루트를 먼저 방문
- root → left → right
- +**/ABCDE
- 중위순회
- 왼쪽 하위트리를 방문한 뒤 루트 방문
- left → root → right
- A/B*C*D+E
- 후위 순회
- 하위트리를 방문한 뒤 루트를 방문
- left → right → root
- AB/C*D*E+
- 테스트 : 오류 찾음
- 디버깅 : 오류 수정
- 통합 테스트
- 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것
- 하향식 통합 테스트
- 상위 모듈 -> 하위 모듈 방향으로 통합
- BFS, DFS 사용
- 초기부터 사용자에게 시스템 구조를 보여줌
- 상향식 통합 테스트
- 하위 모듈 -> 상위 모듈 방향으로 통합
- 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요
- 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘 되고 있는지를 빨리 파악하고자 할 때 상향식 보다는 하향식이 좋음
- 버블 정렬
- 인접한 데이터를 비교하면서 데이터의 위치를 바꾸어 정렬하는 방법
- Pass 1: 6 7 3 5 9
Pass 2: 6 3 5 7 9
Pass 3: 3 5 6 7 9
- 스택(stack)
- LIFO 방식으로 처리
- 인터럽트 처리, 서브루틴 호출 작업 등에 응용됨
- 소프트웨어 버전 등록 관련 용어
- 체크인 : 저장소에 새로운 버전의 파일로 갱신하는 것
- 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인
- 정형 기술 검토(FTR)의 지침
- 의제를 제한한다
- 논쟁과 반박을 제한한다
- 문제 영역을 명확히 표현한다
- 참가자의 수를 제한한다
- 발견된 오류는 문서화한다
- 안건을 세우면 고수한다
- 의견을 제한하되 충분히 받아들인다.
- 검토를 위한 자료를 사전에 배포하여 검토하도록 한다
- 오류 검출에 초점을 두고 해결책을 나중으로 미룬다.
- 검증 : 소프트웨어가 요구사항에 부합하게 구현되었음을 보장하는 활동
- 확인 : 소프트웨어가 고객의 의도에 따라 구현되었음을 보장하는 활동
- 소프트웨어 형상관리
- 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동
- 단위테스트
- 필요한 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과 값을 받는 역할을 하는 가상의 모듈을 테스트 드라이버라고 한다.
- 복잡도
- O(N * log2N) : 퀵정렬, 합병정렬
- O(N^2) : 버블정렬, 삽입정렬, 선택정렬
3과목 : 데이터베이스 구축
- 데이터베이스의 논리적 설계 (데이터모델링)
- 논리적 데이터베이스 구조로 매핑
- 트랜잭션 인터페이스 설계
- 스키마의 평가 및 정제
- 목표 DBMS에 맞는 스키마 설계
- 데이터베이스의 물리적 설계
- 레코드 집중의 분석 및 설계
- 저장 레코드 양식 설계
- 접근 경로 설계
- 카디널리티 = 행
- 디그리(차수) = 열
- 개체 무결성 : 릴레이션에서 기본키를 구성하는 속성은 널값이나 중복값을 가질 수 없다
- 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함.
- NULL => 개체무결성이 국룰!!!!!!!!!
- 뷰(view)
- 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있음
- 뷰는 일종의 가상 테이블, update에는 제약이 따름
- 뷰는 기본테이블을 만드는 것 처럼 create view를 사용해 만듦
- 뷰는 논리적으로만 존재함 (물리적 존재 X)
- CREATE TABLE문 기능
- 속성의 NOT NULL 여부 지정
- 기본키를 구성하는 속성 지정
- CHECK 제약 조건의 정의
- 속성 타입을 변경하는 건 없음
- 관계 대수에 대한 설명
- 릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가 모두 릴레이션
- 일반 집합 연산과 순수 관계 연산으로 구분
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 원하는 릴레이션을 어떻게 유도하는가를 기술하는 절차적 언어
- 속성(attribute)에 대한 설명
- 개체의 특성을 기술
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 데이터 항목 또는 데이터 필드에 해당
- 속성의 수는 차수(degree)
- 튜플의 수 = 카니널리티(cardinality)
- 카(풀)행, 차열
- Update (테이블) set (열 = 변경할 값) where (조건)
- 정규형
- 제 1 정규형 : 릴레이션에 속한 모든 속성의 도메인이 더는 분해되지 않는 원자값으로만 구성되어 있음
- 제 2 정규형 : 제 1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속 되어야 함
- 제 3 정규형 : 제 2 정규형에 속하고 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않을 시 속함
- BCNF : 모든 결정자가 후보키인 정규형
- 제 4 정규형 : 보이스/코드 정규형을 만족하며 함수 종속이 아닌 다치 종속 제거시 만족
- 제 5 정규형 : 제 4 정규형을 만족하며 후보키를 통하지 않는 조인 종속 제거해야 만족
- OLAP 연산
- roll-up
- slicing & dicing
- drill-up & down & throught
- pivot
- DDL
- CREATE 생성
- ALTER 변경
- DROP 삭제
- DML
- SELECT 검색
- INSERT 삽입
- DELETE 삭제
- UPDATE 갱신
- DCL
- COMMIT
- ROLLBACK
- GRANT
- REVOKE
- 데이터 모델에 표시해야 할 요소
- Recovery
- 트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전에 정상적인 상태로 복구
4과목 : 프로그래밍 언어 활용
- HRN 방식
- (대기시간 + 서비스시간) / 서비스 시간 (값이 클 수록 우선순위가 높음)
- x++ : 대입연산 후 x의 값 증가
- --x : 대입연산 전 x의 값 감소
- IP 프로토콜의 주요 특징
- 패킷을 분할, 병합하는 기능을 수행함
- 비연결형 서비스 제공
- Best Effort 원칙에 따른 전송 기능 제공
- 헤더 체크섬 제공
- 내용 결합도
- 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 경우의 결합도
- 공통 결합도
- C 언어
- for : 반복문
- scanf : 값 받음
- struct : 구조체
- abstract : 자식 클래스가 메소드를 무조건 구현하도록 함
- 비트 논리 연산자
- PHP 연산자
- 응집도가 높은 순
- 기능 - 순차 - 교환 - 절차 - 시간(temporal) - 논리 - 우연
- 기순교절시논우
- 결합도가 강한 것
- 자료 - 스탬프 - 제어 - 외부 - 공통 -내용
- <- 독립성 강함, 결합도 약함
- 내공외제스자
- OSI 7계층
- 1계층 - 물리계층(Physical Layer) : Coax, Fiber, Wireless
- 2계층 - 데이터 링크계층(DataLink Layer) : Ethernet, SLIP, PPP, FDDI, HDLC
- 3계층 - 네트워크 계층(Network Layer) : IP, IPSec, ICMP, IGMP
- 4계층 - 전송 계층(Transport Layer) : TCP, UDP, ECN, SCTP, DCCP
- 5계층 - 세션 계층(Session Layer) : VARIOUS API;S, SOCKETS
- 6계층 - 표현 계층(Presentation Layer) : SSL, FTP, IMAP, SSH
- 7계층 - 응용 계층(Application Layer) : HTTP, FTP, IRC, SSH, DNS
- Prevention(예방) : 교착 상태의 원인이 되는 조건 중 하나를 제거
- Avoidance(회피) : 은행가 알고리즘
- Detection(탐지) : 자원 할당 그래프
- Recovery(복구) : 자원 선점/프로세스 종료
- JAVA의 예외
- 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류
- 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류
- 존재하지 않는 파일을 읽으려고 하는 경우 발생하는 오류
- 문법 오류는 컴파일 시 에러발생
- 프로세스
- 스레드
- 문맥 교환
- 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재
- PCB는 프로세스 식별자, 프로세스 상태 등의 정보로 구성됨
- 디스패치
- 프로세스가 준비 상태에서 프로세서가 배당되어 실행 상태로 변화하는 것
- JAVA 데이터 타입
- char : 문자 하나를 저장
- string : 나열된 여러개의 문자
5과목 : 정보시스템 구축 관리
- 고가용성 솔루션(HACMP)
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮여 다수의 시스템을 동시에 연결
- 조직, 기업의 기간 업무 서버 등의 안정성을 높이기 위해 사용됨
- 2개의 서버를 연결하는 것으로 2개의 시스템이 각각 업무를 수행하도록 구현하는 방식이 사용됨
- 루팅
- 안드로이드 운영체제상에서 최상위 권한(루트 권한)을 얻음으로 해당 기기의 생산자 또는 판매자 측에서 걸어 놓은 제약을 해제하는 행위
- Zing
- 기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져올 수 있는 기술
- 10cm 이내 근접 거리에서 기가급 속도로 데이터 전송이 가능한 초고속 근접무선통신
- 근거리로 가까이가면 지이이잉하고 소리가 난다~
- 서비스 지향 아키텍처 기반 애플리케이션(SOA) 계층
- 표현 계층
- 프로세스 계층
- 서비스 계층
- 비즈니스 계층
- 영속 계층
- CMM(Capability Maturity Model) 모델의 레벨
- 초기 단계 - 반복 단계 - 정의 단계 - 관리 단계 - 최적화 단계
- Docker
- 컨테이너 응용프로그램의 배포를 자동화하는 오픈소스 엔진
- 소프트웨어 컨테이너 안에 응용프로그램들을 배치시키는 일을 자동화해주는 오픈소스 프로젝트
- StackGuard
- stack 상에 일정한 주소번지에 프로그램이 선언한 canary를 심어둠
- 스택이 변조 된 경우 canary를 체크해 프로그램이 비정상적으로 종료 시킴
- 시스템 공격 기법
- Ping of Death
- 허용범위 이상의 ICMP 패킷을 전송하여 대상 시스템의 네트워크를 마비시킴
- ICMP가 패킷을 맣이 쏘니 핑하고 죽음 -> 핑오브데스
- XSS 크로스 사이트 스크립팅
- 대칭 암호 알고리즘
- 키 교환이 필요하기 때문에 키를 교환하는 중 키가 탈취 될 수 있음
- 공개 암호화 방식에 비해 속도가 빠름
- AES, DES, IDEA
- 세션 하이재킹 탐지 방법
- 비동기화 상태 탐지
- ACK STORM 탐지
- 패킷의 유실 및 재전송 증가 탐지
- 리셋 탐지
- MQTT ( Message Queuing Telemetry Transport)
- TCP/IP 를 통해 실행되어 기본 네트워크 연결 제공
- 발행 / 구독 프로토콜
- LOC 예측치를 구하기 위해서는 낙관치, 비관치, 기대치가 필요
- 보안 요소
- 기밀성 - 열람
- 무결성 - 수정
- 가용성 - 사용
- 구조적 방법론
- 정형화된 분석절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론
- 객체지향 방법론
- 현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 소프트웨어를 개발할 때 기계의 부품을 조립하듯이 객체들을 조립해서 필요한 소프트웨어를 구현
- 정보공학 방법
- 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성있게 통합 및 적용