< 1과목 : 요구사항 확인 >소프트웨어 생명주기 SDLC 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차ㄴ 요구사항 분석 - 설계 - 구현 - 테스트 - 유지보수"폭포수 모델 : 각 단계 마무리 후 다음 단계로 , 가장 오래된, 선형순차적"프로토타이핑 모델 : 고객의 피드백 반영나선형 모델 : 점진적으로 완벽한 시스템 개발ㄴ절차 : 계획 및 정의 - 위험 분석 - 개발 - 고객 평가반복적 모델 : 반복적으로 개발하여 점증 완성(증분방식으로 병행 개발)"소프트웨어 개발방법론 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차"구조적 방법론 : 분할과 접근 (나씨-슈나이더만 차트(도형식표현))"정보공학 방법론 : 정보시스템 개발에, 개발 주기 이용"객체지향 방법론 : 객체라는 기본단위로 분석컴포넌트 기반 방법론 CBD : 컴포넌트 조립해서 새로운 프로그램애자일 방법론 : 절차보다 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서효율적으로 시스템 개발할 수 있는 신속 적응적 경량 개발방법론제품 계영 방법론 : 공통된 기능 정의하여 개발애자일 방법론 유형XP - 가치 : 용기/ 단순성/ 의사소통/ 피드백/ 존중" - 기본 원리 : 짝 프로그래밍, 공동 코드 소유, 지속적인 통합(CI), 계획 세우기, 작은릴리즈""메타포어, 간단한디자인, 테스트기반개발, 리팩토링, 40시간, 고객상주, 코드표준"스크럼"매일 정해진 시간, 장소에서 짧은시간 개발하는 팀을 위한 관리방법론"" ㄴ 백로그, 스프린트, 스크럼미팅, 스크럼마스터, 스프린트회고, 번다운차트"린도요타의 린 품질기법을 SW개발 프로세스에 적용해 낭비요소 제거비용산정 모형하향식 산정방법 "전문가에게 비용 산정 의뢰 (전문가 판단, 델파이 기법)"상향식 산정방법요구사항과 기능에 따라 비용 계산"LoC : 원시 코드 라인 수의 낙관치, 중간치, 비관치"Man Month : 한 사람이 1개월동안 할 수 있는 일의 양을 기준으로 비용 산정Man Month = 코드라인수 / 월간 생산성프로젝트 다이어그램"구성요소 : 시작점, 전이, 액션, 종료점, 조건 노드, 병합노드, 포크노드, 조인노드, 구획면"상태 다이어그램"구성요소 : 상태, 시작상태, 종료상태, 전이, 이벤트, 전이조건"커뮤니케이션 다이어그램"구성요소 : 액터, 객체, 링크, 메시지"컴포넌트 다이어그램(물리적)"구성요소 : 컴포넌트(탭 달린 직사각형), 인터페이스, 의존관계"UI 시나리오 문서 작성 요건완전성/ 일관성/ 이해성/ 가독성/ 추적용이성/ 수정용이성프로토타이핑 도구UX핀 : 웹브라우저로 와이어 프레임과 프로토타이핑 작업 동시에액슈어 : 스토리보드에 포함되는 것들 모두 작성 가능네이버 프로토나우 : 네이버 프로토타이핑 툴UI디자인 산출물로 작업하는 프로토타이핑 도구"인비전 : 작업결과 사이트에 업로드, UI연결해 간단한 인터랙션 적용"픽사에이트 : 구글이 인수한 프로토타이핑 툴프레이머 : 커피스크립트 언어< 3과목 : 데이터 입출력 구현 >데이터 모델 : 현실세계의 정보를 인간과 컴퓨터가 이해할 수 있도록 추상화해 표현한 모델데이터 모델 절차 : 개념적 데이터 모델 / 논리적 데이터 모델 / 물리적 데이터 모델논리 데이터 모델링 : 업무의 모습을 모델링 표기법으로 형상화해 이해하기 쉽게 표현"관계 데이터 모델 : 2차원 테이블 형태, 기본키와 외래""계층 데이터 모델 : 트리형태, 상하(1:N)""네트워크 데이터 모델 : 그래프 형태, 다대다(N:M)"행 = 튜플 = 카디널리티(튜플 수)열 = 애트리뷰트 = 차수(애트리뷰트 수)관계 대수관계형 DB에서 원하는 정보와 그걸 어떻게 유도하는가 기술하는 절차적 정형언어일반 집합 연산자합집합 / 교집합 / 차집합 / 카티션 프로덕트순수 관계 연산자셀렉트 / 프로젝트 / 조인 / 디비전관계 해석관계 해석을 하는 비절차적 언어 - 프래디킷 해석에 기반논리 데이터 모델링 속성 : 개체 / 속성 / 관계개체-관계(E-R) 모델현실세계에 존재하는 데이터와 관계를 사람이 이해하게 명확하게 표현 모델" 개체 (사각형), 관계 (마름모), 속성 (원) : SQL응용>트랜잭션데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위특성 : 원자성 / 일관성 / 격리성 / 영속성TCL 명령어 (트랜잭션 제어 언어)COMMIT : 확정 - 트랜잭션을 메모리에 영구적으로 저장"ROLLBACK : 취소 - 저장 무효화, 오류 발생시 오류 이전의 특점 시점으로 되돌려주는 제어어"CHECKPOINT : 저장 시기 설정 (ROLLBACK위한 시점 지정)병행 제어다수 사용자 환경에서 여러 트랜잭션 수행할 떄 DB 일관성 유지를 위해 상호작용 제어병행 제어 미보장 시 문제 갱신 손실 : 먼저 실행된 트랜잭션 나중 트랜잭션이 덮어쓸 때현황 파악 오류 : 중간 수행결과 다른 트랜잭션이 참조모순성 : D29두 트랜잭션 동시 실행되어 DB일관성 결여연쇄복귀 : 부분을 취소하지 못하는 오류병행제어 기법로킹 : 순차적 진행 직렬화 기법 ( ~작아지면 ~증가)낙관적 검증 : 일단 수행하고 종료시 검증타임 스탬프 순서 : 타임스탬프 부여다중버전 동시성 제어 : 적절한 버전 선택하여 접근회복 기법 종류로그 기반 회복 기법 ㅡ 지연 갱신 회복 기법 : 완료되기 전엔 반영Xㅡ 즉각 갱신 회복 기법 : 바로 반영체크 포인트 회복 기법 : 검사점 이후 처리된 트랜잭션만 복원그림자 패키징 회복 기법 : 복제본 생성하여 복구데이터 정의어 DDL : 데이터 구조 정의도메인 원자값들의 집합스키마정보를 담고 있는 기본적 구조" ㅡ 외부스키마(사용자나 개발자 관점), 개념스키마(논리적 구조), 내부스키마(물리적 저장장치)"테이블데이터 저장 공간튜플 = 행 = 카디널리티애트리뷰트 = 열 = 차수뷰가상의 테이블인덱스검색을 빠르게 하기 위한 데이터 구조" ㄴ종류 : 순서, 해시, 비트맵(적을경우), 함수기반, 단일, 결합, 클러스터드(기본키기준)"" ㄴ스캔 방식 - 범위스캔(수직 후 리프), 전체스캔(수평적), 단일스캔(수직만), 생략스캔(인덱스로)"테이블 생성CREATE TABLE 테이블명 (컬럼명 데이터타입 );테이블 수정ALTERARP 스푸핑 : 자신의 MAC주소로 위조한 ARP Reply만들어 전송ICMP Redirect 공격 : 패킷의 흐름을 바꿈트로이 목마 : 겉보기에는 정상적인 프로그램이지만 실행하면 악성코드 실행하는 프로그램TFN : 많은 소스에서 하나 혹은 여러 개의 목표 시스템에 대해 서비스 거부공격 수행 도구버퍼 오버플로우 공격 - 스택 버퍼 오버플로우 / 힙 버퍼 오버플로우 공격ㄴ 대응방안 스택가드 : 카나리 값스택쉴드 : Global RET 특수스택ASLR : 주소 공간 배치 난수화"안전한 함수 활용, 실행 제한"포맷 스트링 공격검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용레이스 컨디션 공격둘 이상의 프로세스가 공유자원 동시에 접근할 때 비정상적인 결과 발생키로거 공격키보드 움직임을 탐지해서 중요 정보 빼가는 해킹 공격루트킷 침입 후 침입사실 숨김. 불법적 해킹에 사용"스피어 피싱 : 일반 이메일로 위장한 메일 발송, 본문 링크나 첨부된 파일 클릭 유도"스미싱 : SMS 피싱. 문자메시지를 이용한 피싱 공격큐싱 : QR코드를 이용한 피싱 공격봇넷 : 악의적인 의도로 사용될 수 있는 컴퓨터들 네트워크로 연결된 형태APT공격 : 특정 타깃을 목표로 지속적이고 지능적인 맞춤형 공격기법공급망 공격 : 개발사의 네트워크에 침투하여 소스코드나 파일 변경등으로 설치나 업데이트시 감염제로데이 공격 : 취약점이 널리 공표되기 전에 해당 취약점을 악용웜 : 스스로 복제하여 연결을 통해 전파하는 악성 프로그램"악성 봇 : 스스로 실행 X, 해커의 명령에 의해 원격에서 제어 가능한 프로그램"사이버 킬체인 : 7단계 프로세스별 공격분석 및 대응 APT공격 방어 분석 모델랜섬웨어 : 감염된 파일들을 암호화하여 복호화할 수 없게 하고 인질처럼 몸값 요구이블트윈 : 무선 WIFI 피싱 기법난독화 : 가독성 낮춰 역공학 대비하기 위해 프로그램 일부 또는 전체를 변경Tripwire : 백도어를 만들어 놓았을 때 이러한 사실을 알 수 있게 분석하는 도구Ping : 원격 호스트가 정상적으로 운버 필요성 높음"빅뱅 테스트 : 모든 모듈 동시에 테스트 - 스텁,드라이버X"에러/오류(사람의 실수) - 결함/결점/버그(실패나문제) - 실패/문제(결함실행시)"테스트 리포팅 : 테스트결과정리, 테스트요약문서, 품질상태, 테스트결과서, 테스트실행절차 리뷰및평가""결함 분석 방법 - 구체화(명확히 파악), 고립화(어떤요소가 영향미치는지 분석), 일반화(요소 일반화)"테스트 커버리지 주어진 테스트케이스에 의해 수행되는 SW테스트 범위 측정 품질 측정 기준기능 기반 커버리지 : 기능의 수 측정라인 커버리지 : 소스코드의 라인 수 측정코드 커버리지 : 얼마나 테스트 되었는지 측정"결함 심각도 - 치명적, 주요, 보통, 경미한, 단순"어플리케이션 성능 측정 지표 - 처리량/ 응답시간/ 경과시간/ 자원 사용률배드코드"외계인코드(오래되거나 개발자 없어 유지보수 어려운 코드), 알 수 없는 변수명""스파게티코드(복잡하게 얽힌, 작동은 정상이지만 읽기 힘듬), 로직 중복"" ㄴ 오염, 문서부족, 의미없는 이름, 높은 결합도, 아키텍처 침식"클린코드:가독성이 높고 단순하며 의존성 줄이고 중복 최소화 잘 정리된 코드" ㄴ 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화"리팩토링 "유지보수 생산성 향상 목적으로 기능 변경하지 않고, ""복잡한 소스코드 수정, 보완해 가독성과가용성 높이는 기법""리팩토링 목적 : 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질향상"< 11과목 : 응용 SW 기초 기술 활용 >운영체제사용자가 컴퓨터 하드웨어 쉽게 사용하게 인터페이스 제공해주는 소프트웨어" ㄴ 편리성 제공, 인터페이스 기능, 스케줄링, 자원관리, 제어 기능"=> 인터페이스(쉘) + 커널윈도즈 운영체제멀티테스킹 기능과 GUI환경 제공하는 마이크로소프트사 운영체제"그래픽 사용자 인터페이스 GUI 제공, 자동 감지 기능 제공""선점형 멀티테스킹 방식 제공, OLE 사용(자유롭게 연결,삽입)"유닉스 운영체제범용 다중 사용자 방식의 시분할 운영체제"대화식 운영체제 기능(프롬프트), 다백업