[이해안가는 개념 및 한번더 보면 좋을 개념 모음집 - 1과목]
*요구 사항 명세기법
[정형 명세법]
- 수학적 기반/ 모델링 기반
- Z, VDM, Petri-Net(모형기반)
- CSP, CCS, LOTOS(대수적방법)
- 시스템 요구특성이 정확하고 명세가 간결하다. 명세와 구현이 일치.
- 그러나 이해도가 낮으며 이해관계자의 작성 부담 가중.
- 수학적 기호, 정형화된 표기법으로 작성
- 정확하고 간결하게 표현할 수 있지만 표기법이 어려워 사용자가 이해하기 어렵다.
- 일관성이 있다.
[비정형 명세법]
- 상태, 기능, 객체 중심 명세법
- FSM(Finite state machine)
- Decision Table, ER모델링
- State chart(SADT)
- UseCase : 사용자기반모델링
- 명세 작성이 간편하고 의사전달 방법이 다양하다.
- 불충분한 명세가능성, 모호성.
- 일반 명사, 동사 등의 자연어를 기반으로 작성한다.
- 이해가 쉽다.
- 일관성이 떨어진다.
*분산시스템을 위한 마스터-슬레이브 아키텍처에 대한 설명
찾아보기...!
*gof 디자인패턴
생성패턴 - 추(추상화:앱스트렉트)빌(빌더)팩(팩토리)프(프로토타입)싱(싱글톤)
구조패턴 - 어(어댑터)브(브릿지)컴(컴포시트)데(데코레이터)퍼(퍼케이드)플(플라이웨이트)프(프록시)
행위패턴 - 나머지
]
*럼바우
!!객동기 외우기!!
-객체:객체 객2
객체(정보 모델링, 시스템에서 요구)
-동적: 상태 동상
동적(제어,흐름,동작)
-기능: 자료 기자
기능(DFD)
*객체지향 분석기법은 상향식 처리방식! 하향식 처리방식은 절차지향분석기법
즉, 객체 지향 분석기법은 동적 모델링, 상향식! 추상화 시키는 작업, 코드 재사용성, 시스템 변경 쉬움
*분산시스템에서 미들웨어는 애플리케이션- 사용자 외에도 서비스 제공가능함. 위치 투명성, 여러 컴포넌트가 요구하는 재사용가능한 서비스 구현, 분산 시스템에서 다양한 부분 관리및 통신, 데이터 교환가능
*소프트 웨이 아키텍처에서 데이터는 파이프를 통해 양방향,단반향으로 흐르고 필터 이동시 오버헤드 발생할 수 있음.
*유저 인터페이스는 직관성, 유효성, 학습성, 유효성 중요! 메세지 이해쉽게 오류의 구체적 설명! 오류로 인해 발생사항은 부정적내용을 사용자에게 알리기!
- 프로젝트 요구사항은 기능! 중심
- 공정과 도구보다 '개인' 과 소통을 중요
- '변화'에 유연 신속 대처!
- '고객'과 피드백 중요!
요구사항 개발 프로세스는 도출-분석-명세-확인
- 소프트웨어 사용시 발견되는 오류 정리 단계는 검증단계임(정형기술검토활용)
정형기술검토활용
- 동료 검토 : 작성자 내용 직접 설명 후 동료가 결함찾기
- 워크스루 : 검토회의전 요구사항 명세서 미리 배포 후 짧은 검토 회의를 통해 결함 발견)
- 인스펙션 : 전문가가 확인해 오류 찾는 것
- 계층 구조상 주요 컴포넌트 찾은후 낮은 수중의 컴포넌트들로 분해(단계적 정제) ! 메인 모듈 설계-> 단계적으로 구체화
- 인터페이스 이미 정의되어 있어 통합 간단
- 레벨 낮은 데이터 구조의 세부사항은 설계초기 단계에서 필요
상향식
- 기본적 컴포넌트 먼저 설계 후 이를 사용하는 상위 수준의 컴포넌트 설계
- 최하위 수준에서 모듈들 설계 후 완성되면 이들 결합해 검사함.
- 기존 컴포넌트를 조합해 시스템을 개발하는 경우 상향식이 적합함
- 인터페이스가 이미 성립이 되어있어야 기능추가가 쉽기에 꼭 인터페이스 성립을 해줘야한다.
- 자료 흐름도(DFD) 요소
-처리(process) :원
- 자료흐름(data flow) : 화살표
- 자료 저장소 (data store) : 평행선
- 단말 (terminal) :사각형
-
개발시스템을 이해하기 쉽게 표현해 분석가, 의뢰인, 설계자가 효율적인 의사소통을 할 수 있게 하는 표준화된 모델링 언어 UML
-
애자일 기법 중 스크럼과 관련된 용어 설명
-스크럼 마스터 : 스크럼 프로세스 따르며, 팀이 스크럼을 효과적으로 활용할 수 있게 보장하는 역할
-제품 백로그 : 스크럼팀이 해결하는 목록, 소프트웨어 요구사항, 아키텍처 정의 등
- 속도 : 한번의 스프린트에서 한팀이 어느정도 제품백로그를 감당할 수 있는지 추정치
- 스프린트 : 개발을 2~4주간 진행하는 과정
- 백로그에 작성된 테스크를 대상으로 작업시간 측정 후 개발자에게 할당
*UML 다이어그램
-정적 구조 : 클래스, 객체, 패키지, 컴포넌트, 복합구조, 배치
-동적구조: 유스케이스, 상태, 활동, 시퀀스, 통신, 상호작용, 타이밍
- 메서지 기반 비동기형 메시지 전달 방식 미들웨어
- 온라인 업무보다 이기종 분산데이터 시스템 으로 데이터 동기를 위해 많이 사용
- 즉각적 응답보다는 느리지만 안정적 응답을 필요로 할때 주로 사용
- 소규모 개발 조직이 불확실하고 변경이 많은 요구 접할경우 적절함.
- 익스트림 프로그래밍을 구동시키는 원리는 상식적 원리와 경험을 최대한 끌어올리는 것
-구체적 실펀방법을 정의, 개발문서보다 소스코드에 중점
-애자일 방법론
- 반복적 점진적 개발을 강조해 변화에 유연하게 대응할 수 있도록 설계된 방법론
- 프로그래밍에 있어 재사용이 가능한 각각의 독립된 모듈
- 특정기능 수행을 위해 독립적으로 분리한것
*구조적 방법론?
-계획중심 접근방식
-
소프트 웨어 설계에서 자주 발생하는 문제에대한 일반적이고 반복적인 해결방법(디자인패턴)
-
객체지향 분석기법
-럼바우 방법: 그래픽 표기법을 이용하여 모델링
부치 방법: 미시적 개발프로세스와 거시적 개발 프로세스를 모두 사용하는 분석방법
-제콥슨방법: 유스케이스를 강조하여 사용하는 분석방법 클래스와 객체들 분석 및 식별, 클래스 속성과 연산 정의
-코드와 유리든 : E-R다이어 그램사용하여 객체 행위 모델링, 객체식별, 구조식별,주제정의,송성과 인스턴스 연결정의, 연산과 메세지 연결정의등 과정으로 구성
-와이어퍼스블록 방법: 분석과 설계간 구분없고 고객명세서 평가해 설계까지 연속 수행기법
-
EAL(enterprise applixation integration) : 기업 응용 프로그램 통합 기업용응용프로그램의 구조적 통합방안
FEP(fornt-end-process : 입력되는 데이터를 컴퓨터 프로세서가 처리전 미리 처리해 시간 줄여주는 것
GPL(general public license): 자유소프트웨어 재단에서 만든 자유소프트웨어 라이선스
Duplexing :이중화 쌍방향 통신 (두지점사이에서 정보를 주고 받는 전자통신시스템)
-
객체 지향 개념
- 메서드 : 클래스로부터 생성된 객체 사용방법, 객체가 메서지 받아 실행해야하는 객체의 구체적연산
- 메세지 : 객체간 상호작용하기 위한 수단, 객체에게 어떤 행위를 하도록 지시방법
- 클래스 : 특정 객체 내 변수와 메서드 정의하는 일종의 틀, 객체 지향 프로그래밍에서 데이터 추상화하는 단위
- 필드 : sql에서 열또는 속성으로 불리는 것
- 피드백
: ul와 관련된 기본개념 중 하나, 처리된 결과를 측정하고 목표에 도달되었는가를 검사하며 불충분할 경우 다시 입력하는 요소
정처기 2과목
1. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션
IPsec(IP security) : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜;
SSL(Secure Sockets Layer) : TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜;
S-HTTP(Secure Hypertext Transfer Protocol) : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화 하는 프로토콜;
SMTP: 이메일 송수신!
2.반규정화는? 처리량 감소, 속도향상을 위해 저장공간 투자하는것
[집중이부진]
집계테이블(계산미리수행),
중복테이블(서버분리,업무구별),
이력테이블(레코드중복저장),
부분테이블(접근시도가 많은 자료모으기),
진행테이블(A에 접근하기 위해 다수의 테이블 거칠경우 간소화)
- ISO/IEC 9126 하위특성 기능성,신뢰성, 사용성 효율성, 유지보수성 ,이식성
- 기능성 : 적합성, 정확성, 상호 운용성, 보안성, 준수성
- 신뢰성 : 성숙성, 결함허용성, 복구성
- 사용성 : 이해성, 학습성, 운용성, 준수성
- 효율성 : 시간반응성, 자원효율성, 준수성
- 유지성 : 분석성, 변경성, 안정성, 시험성, 준수성
- 이식성 : 적응성, 설치성, 공존성, 대체성, 준수성
-
트리의 차수와 단말노드
트리의 차수? 전체 트리에서 가장 큰 차수
단말 노드 ? 자식이 없는 차수
차수? 특정 노드에 연결된 자식 노드의 수 만약 특정 노드 언급이 없을 때 가장 큰 차수가 가지는 값
노드 : 자식이 없는 노드
-
디지털 저작권 관리 (DRM)의 기술 요소
- 암호화(Encryption) : 콘텐츠 및 라이선스를 암호화하고 전자 서명을 할 수 있는 기술
- 키 관리(Key Management) : 콘텐츠를 암호화한 키에 대한 저장 및 분배 기술
- 암호화 파일 생성(Packager) : 콘텐트를 암호화된 콘텐츠로 생성하기 위한 기술
- 식별 기술(Identification) : 콘텐츠에 대한 식별 체계 표현 기술
- 저작권 표현(Right Expression) : 라이선스의 내용 표현 기술
- 정책 관리(Policy Management) : 라이선스 발급 및 사용에 대한 정책 표현 및 관리 기술
- 크랙 방지(Tamper Resistance) : 크랙에 의한 콘텐츠 사용 방지 기술
- 인증(Authentication) : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
- 소프트웨어 테스트 법칙
- 파레토 법칙 :오류의 80%는 전체의 20%내에서 발견된다는 법칙
-Brooks의 법칙 : 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어짐
(이 두가지가 가장 많이 나왔음)
6-1 소프트웨어 테스트 기본 원칙
- 살충제 패러독스: 동일한 테스트 케이스로 반복 실행하면 더이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하고 개선해야 한다.
-오류 부재의 궤변: 사용자의 요구사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 말할 수 없다.
-결함 집중 : 애플리케이션 결함의 대부분은 소수의 특정한 모듈에 집중되어 존재함. 결함은 발생한 모듈에서 계속 추가로 발생할 가능성이 높음 (파레토법칙 좌우)
- 소프트 웨어 형상 관리의 의미
- 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것(단순 버전 관리보다 더 포괄적인 개념
즉, 소프트웨어에서 일어나는 수정이나 변경을 알아내고 제어하는 것을 의미한다.
- 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
- 형상관리를 위하여 구성된 팀을형상통제위원회(CCB; Change Control Board)이라고 한다.
- 형상관리의 기능 중 하나는 버전 제어 기술이다.
형상 관리 절차: 형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록/보고
형상 식별
- 형상 관리의 대상들을 구분하고 관리 목록의 번호를 정의하여 부여하는 과정
- 형상 관리 대상: 품질관리 계획서, 품질관리 매뉴얼, 요구 사항 명세서, 설계/인터페이스 명세서, 테스트 설계서, 소스코드
형상 통제
- 소프트웨어 형상 변경 제안을 검토, 현재 소프트웨어 기준선(Baseline)에 반영하도록 통제
- 형상 통제가 이루어지기 위해서는 형상 통제 위원회(Configuration Control Board, CCB)의 승인을 통한 변경 통제가 이루어짐
형상 감사
- 형상 항목의 변경이 계획에 따라 제대로 이뤄졌는지를 검토/승인하는 것
- 개발자, 유지보수 담당자가 아닌 제 3자의 객관적인 확인 및 검증 과정을 통해 새로운 형상의 무결성을 확보하는 활동
형상 기록/보고
- 소프트웨어 개발 상태에 대한 보고서를 제공하는 것
- 베이스라인 산출물에 대한 변경과 처리 과정에서의 변경을 상태 보고에 모두 기록
7-1. 형상관리 도구의 주요 기능
소프트웨어 버전 등록 관련 주요 용어
- 저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳
- 가져오기(Import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사
- 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아 옴. 소스 파일과 함께 버전 관리를 위한 파일들도 받음
- 체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우 충돌을 알리고 diff 도구를 이용해 수정 후 갱신 완료
- 동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화함
- 알고리즘 시간 복잡도
- O(1) : 비례하지 않는 (항상 일정한)
- O(log2^n) : 로그에 비례하는
- O(n) :정비례하는(선형-> 검색효율이 최악)
- O(nlog2^n) : 로그*변수에 비례하는(선형 로그)
- O(n^2) : 제곱에 비례하는
- O(n^3) : 세제곱에 비례하는
- O(2^n) : 지수에 비례하는
- O(n!) : 팩토리얼에 비례하는
여기서
0(1) : 상수형 복잡도 (해시함수)
0(logN) : 로그형 복잡도 (이진 탐색)
0(N) : 선형 복잡도 (순차탐색)
0(Nlog2N) : 선형 로그형 복잡도 (퀵 정렬, 병합정렬)
-> 로그,변수에 비례/ 문제 해결에 필요한 단계가 그 만큼 수행되는것
0(N^2) : 제곱형(거품(버블)정렬, 삽입정렬, 선택정렬,쉘정렬,퀵정렬)
->제곱에 비례
문제해결에 필요한 단계가 입력값(N)의 제곱만큼 수행되는 것
그래서 정렬된 데이터는 버블정렬과 삽입정렬은 o(N)이 될 수 있음.
- 소스코드 품질분석 도구
- 정적분석도구
pmd: 소스 코드에 대한 미사용 변수 최적화 안된 코드 등 결함을 유발할 수 있는 코드 검사
cppcheck: C/C++ 코드에 대한 메모리 누수 오버플로우 등 분석
ConarQube: 중복 코드 복잡도 코딩 설계 등을 분석하는 소스 분석 통합 플랫폼
checkstyle: 자바 코드에 대해 소스코드 표준을 따르고 있는지 검사
ccm: 다양한 언어의 코드 복잡도를 분석
cobertura: 자바 언어의 소스코드 복잡도 분석 및 테스트 커버리지 측정
- 동적분석도구
Avalanche : Valgrind 프레임워크 및 STP기반 / 프로그램 결함 및 취약점 분석
valgrind : 프로그램 내에 존재하는 메모리 및 쓰레드 결함 분석
- 검증 검사 기법
-동치 분할 검사 : 입력자료에 초점을 맞춰 케이스를 만들고 검사하는 방법
그중 인스 테스트의 종류
-알파테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
-베타 테스트 : 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 테스트 기법
- 사용자 인수 테스트
- 운영상의 인수 테스트
- 규정 인수 테스트
가 있음.
-
형상 검사?
구성 검토 검사인데 구성요소, 목록, 유지보수를 위한 모든 사항이 표현되었는가를 검사
-
애플리케이션 통합 테스트 유형
하향식 통합 (Stub)
- 상위 컴포넌트 테스트를 하고 점증적으로 하위 컴포넌트를 테스트 하는 것
- 하위 컴포넌트 개발이 완료되지 않으면 스텁을 사용함
- 깊이 우선 방식, 너비 우선 방식
상향식 통합(Driver)
-프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
- 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요
- 상위 모듈 개발이 완료되지 않은 경우 드라이버를 사용함.
회귀 테스트
- 이미 테스트된 프로그램의 테스팅 반복
- 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인
빅뱅테스트
-통합테스트 중 비점진적 통합방식
- SW 패키징 도구용 시 고려 사항
- 사용자 운영체제, CPU,메모리 등 필요한 최소환경 정의
- UI는 편의성, 직관성을 고려하고 매뉴얼과 일치시켜 패키징
- 소프트웨어와 하드웨어가 함께 관리될 수 있도록 Managed Service형태로 제공
- 암호화, 모듈화 하여 배포(다양한 기종에서 사용 가능하게)
-
외계인 코드?
외계인은 없는 존재를 뜻하고 즉, 코드에 대해 아는 사람이 없다는 것이다. 그래서 유지보수가 어려운 코드를 말한다.
-
스파게티 코드?
프로그램의 로직이 복잡하여 이해하기 어려운 프로그램을 의미함(나쁜코드..)
16 . 소프트웨어 테스팅 중 화이트박스테스팅 (White Box Testing)과 블랙박스테스팅(Black Box Testing)
White Box Testing? 내부 구조와 동작을 검사하는 테스트 방식, 소프트웨어 내부 소스를 테스트, 내부의 모든 경로를 테스트하여 테스트 케이스를 설계한다.
-> 이건 '내부 소스코드;를 테스트하는 기법이기에 개발자 관점의 단위 테스트로 생각하면 됨.
- 기초 경로 검사(Base Path Testing),
- 제어 구조검사(Control Structure Testing),
- 조건검사(Condition Testing),
- 루프검사(Loop Testing),
-데이터 흐름 검사(Data Flow Testing)
화이트박스 테스트 기법
- 문장검증 : 프로그램의 모든 문장이 적어도 한번씩 수행되는 검증 기준
-선택검증 : 선택하는 부분만 검증
-경로검증 : 수행 가능한 모든 경로 검사
-조건검증 : 문장 내 조건식을 조사하는 기준
Black Box Testing? 내부 구조나 작동 원리를 모르는 상태에서 입력에 따른 출력 결과를 테스트
따라서, 경계값을 분석할수 있고, 기능을 테스트할 수 있고, 프로그램 구조를 고려하지 않는다.
->이건 사용자 관점의 테스트이며, 작동원리를 모르는 상태에서 동작을 검사하는 방식이라고 생각하면 됨!
- 동치(동등)분할검사 (Equivalence Partitioning Testing)
- 경계값 분석(Boundary Value Testing)
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing)
- 오류 예측 검사(Error Guessing)
- 비교 검사(Comparison Testing)
- 소프트 웨어 품질 측정 개발자 관점
- 무결성(integrity): 시스템이 프로그램이나 데이터에 대한 허용되지 않거나 잘못된 접근을 막는 정도. 무결성의 기본 개념에는 데이터의 적절한 접근을 보장할 뿐만 아니라 권한이 없는 사용자의 접근 제한 기능이 포한된다. 즉, 병렬 데이터를 갖는 데이블은 병렬로 변경되고 날짜 필드는 타당한 날짜만을 포함하는 식이다.
- 신뢰성(reliability): 정해진 상황에서 언제든지 필요한 기능을 수행할 수 있는 시스템의 능력 - 고장 사이의 시간
- 사용용이성(=유용성)(usability): 사용자가 시스템을 배우고 사용하는 데 있어서의 용이함
- 효율성(efficiency): 메모리와 실행 시간 같은 시스템 리소스의 최소 사용
- 정확성(correctness): 시스템의 사양과 설계, 구현에 있어서 오류가 없는 정도
- 적응성(adaptablility): 시스템을 변경하지 않고 설계된 환경에서 뿐만 아니라 다른 응용 분야나 환경에서도 사용될 수 있는 정도
- 정밀성(accuracy): 구성된 시스템에 오류가 없는 정도. 특히 대량의 데이터를 고려한다. 정밀성은 정확성과 다르다. 정밀성은 시스템이 정확하게 구성되었는지가 아닌 시스템이 용도대로 얼마나 잘 수행하는지를 결정한다.
- 견고성(robustness): 시스템이 잘못된 입력이나 악조건에서도 기능을 계속해서 수행할 수 있는 정도
-
인터페이스 구현 검증 도구 (잘봐아)
xUnit : Java, C++ 등 다양한 언어 지원하는 단위 테스트 프레임워크
STAF : 서비스 호출 및 컴포넌트 재사용 등 환경 지원하는 테스트 프레임워크
FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 네이버의 테스트 자동화 프레임워크이다.
Selenium : 다양한 브라우저 및 개발 언어 지원하는 웹 애플리케이션 테스트 프레임워크
Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
Ruby : 인터프리터 방식의 객체지향 스크립트 언어
-
EAI(Enterprise Application Integration)의 구축 유형
정의 : 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달 연계 통합등 상호연동이 가능하게 해주는 솔루션
Point - to - Point : 가장 기본적인 애플리케이션 통합 방식 1:1로 연결
Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터 전송하는 중앙 집중형 방식
(미들웨어를 둘수도 두지않을수도 있음)
Message Bus : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식
Hybrid : Hub & Spoke 와 Message Bus 혼합 방식
\Hybrid에 대한 설명
(1) Hub & Spoke와 Message Bus의 혼합방식이고!
(2)필요한 경우 한 가지 방식으로 EAI구현이 가능하고
(3)데이터 병목현상을 최소화할 수 있고
(4)중간에 미들웨어를 둔다.
- 트리 순회 방법
전위(Preorder)순회 : 루트를 먼저 방문 Root->Left->Right
중위순회(Inorder) : 왼쪽 하위트리를 방문한 뒤 루트를 방문 Left->Root->Right
후위순회(Postorder) : 하위트리를 방문한 뒤 루트를 방문 Left->Right ->Root
<이진트리 운행법)
Preorder 운행 : Root->Left->Right
Inorder 운행 : Left->Root->Right
Postorder 운행 : Left->Right ->Root
(이거 잘 이해가 안되서 ... 다시 봐야할듯)
비슷하게 연산식에 적용하면???
PreFix(전위표기식)
root(연산자)->left(피연산자)->right(피연산자)
Infix (중위표기식)
left(피연산자)->root(연산자)->right(피연산자)
Postfix (후위표기식)
left(피연산자)->right(피연산자)->root(연산자)
3 4 5 6 + =>
(34)(56)(+)
12+30
- 소프트 웨어 공학의 기본 원칙
- 품질높은 소프트 웨어 상품 개발
- 지속적인 검증 시행
- 결과에 대한 명확한 기록 유지
- 클린코드 작성원칙
- 가독성 : 누구든지 코드를 쉽게 읽을 수 있도록 작성, 코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용
- 단순성 : 코드를 간단하게 작성, 한 번에 한 가지를 처리하도록 코드를 작성하고 클래스/메소드/함수 등을 최소 단위로 분리
- 의존성배제 : 코드가 다른 모듈에 미치는 영향을 최소화, 코드 변경 시 다른 부분에 영향이 없도록 작성
- 중복성 최소화 : 코드의 중복을 최소화, 중복된 코드는 삭제하고 공통된 코드를 사용
- 추상화 : 상위(부모,슈퍼) 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위(자식,서브) 클래스/메소드/함수에서 구현
- 알고리즘 설계 기법 (31번)
Divide and Conquer(분할 정복 알고리즘) : 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 알고리즘
Greedy(탐욕 알고리즘) : 현재 시점에서 가장 최적의 방법을 선택하는 알고리즘
Backtracking : 가능성이 없는 경우의 수는 가지치기를 하고 진행되는 알고리즘이다
brute force 알고리즘 (완전탐색 알고리즘): 모든 조합을 시도하여 문제의 답을 찾는 알고리즘
- 제품 소프트웨어의 형상관리
- 이전리버전, 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용하게 하기
- 불필요한 사용자의 소스 수정을 제한하기
- 동일한 프로젝트에 대해 여러개발자가 동시에 개발이 가능하게 하기
- 소프트웨어에 가해지는 변경을 제어하고 관리함.
- 유지보수 단계 뿐만 아니라 개발단계에서도 적용가능
- 프로젝트 계획, 분석서, 프로그램, 테스트 케이스 모두 관리대상임.
대표적인 형상 관리 도구
GIT,CVS, Subversion 등
- 제품 소프트 웨어 패키징 도구 활용시 고려할 점
- 반드시 내부 콘텐츠에 대한 암호화 및 보안 고려
- 여러가지 이기종 콘텐츠 및 단말기 간 DRM연동 고려
- 사용자 입장에서 불편해질 수 있는 문제를 고려해 최대한 효율적으로 적용시킴(복잡성, 비효율성문제 고려)
- 제품 소프트웨어의 종류에 맞는 알고리즘 선택해 배포시 범용성에 지장없도록 고려
- 소프트웨어와 관련, 기본적으로 설명되어야 할 항목들
소프트웨어 개요 / 설치관련파일 / 설치 아이콘 / 프로그램 삭제 / 관련추가정보
- 인터페이스 구현시 사용하는 기술
- ajax : 자바스크립트를 사용한 비동기 통신 기술로 클라이언트와 서버간에 xml 데이터를 주고 받는 기술
- procedure : 절차형 SQL을 활용하여 특정 기능을 수행하는 일종의 트랜잭션 언너
- Trigger : 데이터의 삽입, 갱신, 삭제 등의 이벤트가 발생할 때 마다 관련 직업이 자동으로 수행되는 절차형 SQL
- 소프트 웨어 재공학이 소프트 웨어의 재개발에 비해 갖는 장점
- 위험부담 감소
- 비용절감
-시스템 명세의 오류엊게
-개발시간 절약
-
스키마
외부 스키마 : 개인 또는 응용 개발자 입장에서 보는 데이터베이스
개념 스키마 : 모든 응용 프로그램 또는 사용자들이 필요로 하는 조직 전체 데이터베이스로 단 하나만 존재한다.
내부스키마 : 물리적 저장장치
-
정점이 n개인 무방향 그래프에서 최대의 간선수? n(n-1)/2개
정점이 n개인 그래프에서 최대 간선수? n(n-1)개
-
소프트 웨어 테스트관련
-테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서
그렇다면?
*테스트 케이스의 구성요소
식별자(항목 식별자, 일련번호)
테스트항목(테스트 대상-모듈 또는 기능)
입력 명세(입력 데이터 또는 테스트 조건)
출력 명세(테스트 케이스 수행 시 예상되는 출력 결과)
환경 설정(필요한 하드웨어나 소프트웨어의 환경)
특수 절차 요구(테스트 케이스 수행 시 특별히 요구되는 절차)
의존성 기술(테스트 케이스 간의 의존성)
-테스트 시나리오 : 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합
-테스트 오라클 : 테스트의 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동
참, 샘플링, 휴리스틱, 일관성 검사가 존재함
-
디지털저작권 관리(DRM) 구성요소
콘텐츠 제공자(Contents Provider):콘텐츠를 제공하는 저작권자
콘텐츠 분배자(Contents Distributor):암호화된 콘텐츠를 유통하는 곳이나 사람 (플레이 스토어, 앱스토어 생각하면 될 듯)
클리어링 하우스(Clearing House):저작권에 대한 사용 권한, 라이센스 발급, 암호화된 키 관리, 사용량에 따른 결제 관리 등을 수행
DRM 컨트롤러(DRM Controller): 배포된 콘텐츠의 이용권한을 통제하는 프로그램
패키저(Packager):콘텐츠를 메타 데이터와 함계 배포 가능한 형태로 묶어 암호화하는 프로그램
-
빌드 자동화 도구
빌드 자동화 도구는?
- 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
- Ant, Make, Maven, Gradle, Jenkins 등이 있음
Jenkins
- JAVA 기반의 오픈소스 형태
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 친숙한 Web GUI 제공
- 분산 빌드나 테스트 가능
Gradle
- Groovy를 기반으로 한 오픈 소스 형태
- 안드로이드 앱 개발 환경에서 사용
- 행할 처리 명령들을 모아 태스크(Task)로 만든 후 태스크 단위로 실행
-
해싱함수 방법
폴딩법 : 해싱함수 중 레코드 키를 여러부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용
제산법 : 레코드키를 해시표로 나눈 나머지를 홈 주소로 사용
기수변환법 : 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수 절단, 다시 주소 범위에 맞게 조정
숫자분석법 : 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 선택
-
자료구조
스택이란?
-한쪽 끝으로만 삽입, 삭제 작업이 이루어짐.
그래서 입출력이 한쪽 끝으로만 제한되어 있는 리스트이다.
-
가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO) 즉, Last In – First out 처리를 수행한다.
-서브루틴 호출, 인터럽트 처리, 수식 계산 및 수식 표기법에 응용된다.
-
더이상 데이가 없는데 삭제하려고 하면 Underflow가 발생하고,
-스택이 가득찼는데 넣을 경우 Overflow가 발생한다.
-Top과 Bottom 2개로 이루어져 있음
-선형 구조
Queue?큐?
-한쪽에서는 삽입 작업, 다른 한쪽에서는 삭제 작업이 이루어짐. 즉, First In – First Out 처리를 수행한다
- 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO)
-선형 구조
그외 선형 구조 는? 리스트, 데크
비선형 구조 ? 트리, 그래프
-
사용자 인터페이스(UI)요소?
-체크박스 : 여러개의 선택상황에서 1개 이상의 값을 선택할 수 있는 버튼
-라디오버튼 : 여러 항목 중 하나만 선택할 수 있는 버튼
-텍스트박스 : 사용자가 데이터를 입력하고 수정할 수 있는 상자
-토글 버튼 : on / off와 같이 둘중 하나의 값을 선택하는 버튼
-
이진 검색 알고리즘
정의 : 전체 파일을 두 개의 서브파일로 분리해가면서 key 레코드를 검색하는 방식
- 탐색 효율이 좋고 탐색 시간이 적게 소요된다.
- 검색할 데이터가 정렬되어 있어야 한다.
- 비교횟수를 거듭할 때마다 검색 대상이 되는 데이터의 수가 절반으로 줄어든다.
피보나치 수열에 따라 다음에 비교할 대상을 선정하여 검색하는 건 피보나치 검색!
- 퀵 정렬
레코드의 많은 자료 이동을 없애고 하나의 파일을 부분적으로 나누어 가면서 정렬하는 방식
삽입정렬: 가장 간단한 정렬 방식, 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬
쉘 정렬: 삽입정렬 확장 개념, 입력파일을 매개변수값으로 서브파일 구성하고 각 서브파일을 삽입정렬 방식으로 순서 배열하는 과정을 반복하는 정렬
선택정렬: n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하는 정렬
버블정렬: 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식
ex 9,6,7,3,5
Pass 1 9 6 7 3 5 → 6 9 7 3 5 → 6 7 9 3 5 → 6 7 3 9 5 → 6 7 3 5 9
Pass 2 6 7 3 5 9 → 6 3 7 5 9 → 6 3 5 7 9
힙 정렬: 전이진 트리를 이용한 정렬 방식
*2-Way 합병 정렬: 이미 정렬되어 있는 두 개의 파일을 한 개의 파일로 합병하는 정렬 방식
40.해싱 함수(Hashing Function)의 종류
제산법,
제곱법,
중첩법(폴딩법),
숫자분석법,
기수 변환법,
무작위 방법이 있다.
개방 주소법은 해싱충동 시 빈노드에 데이터를 저장하는 방식이고
선형탐색, 제곱탐색, 랜덤탐색, 이중 해싱 등을 아우른다.
-
컴파일이란? 사람의 언어를 컴퓨터가 이해할 수 있도록 언어로 바꾸는 과정을 말함.
-
힙정렬?
- 정렬할 입력 레코드들로 힙을 구성하고 가장 큰 키 값을 갖는 루트 노드를 제거하는 과정을 반복하여 정렬하는 기법
- 완전 이진트리(complete binary tree)로 입력자료의 레코드를 구성
-최적,평균,최악 모두 O(nlog2n)
- 단위 테스트
- 테스트 코드가 독립적이어야 함으로 각 모듈간의 상호작용은 해당되지 않음
- 알고리즘 오류에 따른 원치 않는 결과
- 탈출구가 없는 반복문의 사용
- 틀린 계산 수식에 의한 잘못된 결과
- 테스트와 디버그의 목적
- 테스트는 오류를 찾는 과정 디버깅은 오류를 수정하는 과정임.
Coding
→ Testing
→ Error 발생 (== Bug 발견)
→ Error 수정 (== Debugging)
→ Retesting
- 스택을 이용한 연산
중간값에대해 접근할 수 없음. 그래서 선택정렬은 못함
- 재귀호출
- 후위표현(Post-fix expression)의 연산
- 깊이 우선탐색
- 테스트자동화 도구
단위 테스트(Unit Test)
: 하나의 "모듈"을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트
내부에 존재하는 논리적인 오류를 검출, 기능이 제대로 수행되는지 점검
단위테스트의 종류
- 명세 기반 테스트: 주어진 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 확인하는 테스트
- 구조 기반 테스트: 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행, 제어 흐름과 조건 결정 등이 목적
성능 테스트 도구(Performance Test Tools) : 애플리케이션의 처리량, 응답시간, 경과시간, 자원 사용률 등 성능 목표 달성 여부 확인
- 인위적으로 적용한 가상 사용자를 만들어 테스트 수행
통합 테스트(Integration Test): 모듈을 통합하는 과정에서 "모듈 간의" 호환성을 확인하기 위해 수행되는 테스트
시스템 테스트(System Test): "완전한 시스템"에 대해 수행하는 테스트. 기능적, 비기능적 요구사항을 만족하는지 확인
인수(Acceptance Test): 실제 환경에서 "사용자"가 참여하는 테스트. 요구 분석 명세서에 나타난 사항을 모두 충족하는지, 시스템이 예상대로 동작하는지 사용자의 관점에서 확인
- 소프트웨어 버전 관리도구 방식
1) 분산 저장소 방식 : 하나의 원격 저장소와 개발자 PC의 로컬 저장소에 저장
자신의 로컬 저장소로 복사해 작업, 로컬 저장소에서 우선 반영(commit) 그 후 원격 저장소에 반영(push) , 문제가 생겨도 로컬 저장소의 자료를 이용해 작업 가능,
로컬 저장소에서 작업 및 처리 속도 빠름
2) 공유 폴더 방식 : 로컬 컴퓨터의 공유 폴더에 저장되어 관리
공유폴더의 파일을 자기 pc로 복사 후 이상 유무 확인
3) 클라이언트/서버 방식 : 중앙 시스템(서버)에 저장되어 관리 방식
개발자별로 자신의 pc(클라이언트)로 복사
모든 버전 관리는 서버에서 수행
서버에 문제 생기면 다른 개발자 협업 및 버전 관리 작업 중단
- 각종 용어
모듈
-규모가 큰 것을 여러 개로 나눈 조각,
-소프트웨어 구조를 이루는 기본적인 단위
모듈이 되기 위한 특징
- 다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위.
- 유니크한 이름을 가짐
- 모듈에서 또 다른 모듈을 호출 가능
- 다른 프로그램에서도 모듈을 호출할 수 있다.
데이터
관찰하고 측정해서 얻은 Value
저장소
데이터를 논리적 구조로 조직화, 혹은 물리적 공간에 구축한것
- 소프트웨어 품질 목표
정확성, 신뢰성, 효율성, 무결성, 유지보수 용이성, 사용 용이성, 검사 용이성, 이식성, 상호 운용성, 유연성, 재사용성
-이식성(Portability): 다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정될 수 있는 능력
-효율성(Efficiency): 최소의 작업으로 요구되는 기능을 수행하는 정도
-사용 용이성(Usability): 소프트웨어를 쉽게 사용할 수 있는 정도
-정확성(Correctness): 사용자의 요구사항을 충족시키는 정도
- 테스트 수행 도구
: 자료 흐름도, 기능 테스트, 입력 도메인 분석, 랜덤 테스트
스터브(Stub)와 드라이버(Driver)는 통합 테스트 시 사용되는 것
스터브(Stub)는 하향식 테스트에 사용되는 테스트용 임시 모듈이고, 드라이브(Drive)는 상향식 테스트에 사용되는 테스트 가동기
- 테스트 목적
강도(Stress) 테스트: 과다 정보량을 부과하여 시스템이 정상적으로 작동되는지 검증하는 테스트
회복(Recovery) 테스트 : 시스템에 고의로 실패를 유도하고 시스템이정상적으로 복귀하는지 테스트한다.
성능 테스트 :사용자의 이벤트에 시스템이 응답하는 시간,특정 시간 내에 처리하는 업무량, 사용자 요구에 시스템이 반응하는 속도 등을 테스트한다
안전(Security) 테스트: 부당하고 불법적인 침입을 시도하여 보안시스템이 불법적인 침투를 잘 막아내는지 테스트한다.
51.소스코드 정적분석
- 프로그램을 실행 시키지 않고 코드를 분석하는 방법
- 코드 내에 존재하는 보안 취약점, 잠재적 결함, 위험 등을 발견 가능
- 규칙과 흐름에 맞게 코드가 올바르게 작성되어 있는지 점검
- 소프트웨어 재공학의 주요 활동
Analysis: 기존 소프트웨어를 분석하여 재공학 대상을 선정하는 것
Migration: 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
Restructuring: 기존 소프트웨어를 향상시키기 위하여 코드를 재구성하는 작업(기능과 외적 동작은 변하지 않음)
Reverse Engineering: 기존 소프트웨어를 분석하여 소스코드를 얻어내는 작업(소스코드로 소프트웨어를 만드는 작업의 역작업)
-
프로그래밍 언어의 선정 기준
친밀감, 언어의 능력, 처리의 효율성, 프로그램 구조, 프로그램의 길이, 이식성, 과거의 개발 실적, 알고리즘과 계산상의 난이도, 자료 구조의 난이도, 성능 고려 사항들, 대상 업무의 성격, 소프트웨어의 수행 환경, 개발 담당자의 경험과 지식, 사용자의 요구사항, 컴파일러의 이용 가능성
-
소프트 웨어 재사용
소프트웨어 재사용함으로써 얻을 수 있는 이점들
-
개발 시간과 비용 단축
-
소프트웨어 품질 및 생산성 향상
-
프로젝트 실패 위험 감소
-
시스템 구축 방법에 대한 지식 공유
소프트웨어 재사용함으로써 얻을 수 있는 문제점들
-
재사용할 소프트 웨어 선정 필요
-
시스템에 공통적으로 사용되는 요소 발견 필요
-
프로그램의 표준화 부족
-
새로운 개발 방법론 도입이 어려움
-
재사용을 위한 관리 및 지원 부족
-
기존 소프트웨어에 재사용 소프트웨어를 추가하기 어려움
-
NS Chart
NS-Chart(Nassi-Schneiderman Chart)
- 3가지 기본구조만으로 논리를 표현(표준화 가능)
- Flow Chart의 최대 단점인 화살표가 표시되지 않음
- 기본구조의 입구와 출구는 각 하나씩
- 전체적인 알고리즘을 일목요연하게 볼 수 있음
N-S 차트는 논리 기술에 중점을 둔 도형을 이용한 표현 방법으로 박스 다이어그램, Chapin Chart 라고도 한다.
- ISO/IEC 25000
- SW 품질 평가 통합 모델
- SQuaRE로도 불림
- ISO/IEC 9126, ISO/IEC 12119, ISO/IEC 14598의 3개 표준을 통합한 모델
- 2500n : 개요 및 품질관리
- 2501n : 품질모델
- 2502n : 품질측정
- 2503n : 품질요구
- 2504n : 품질평가
- 2505n : 확장분야
- 코드 인스펙션
- 결함 뿐만 아니라 모든 것이 표준대로 되어 있는 지 확인하기 위한 검토
- 표준이나 명세서에 서술한 내용과 비교하여 편차와 에러를 식별하기 위해 산출물을 근거로 수행하는 검사
- 정적 테스트에 가까움
-
Critical Path Method(CPM, 임계 경로법) :
네트워크를 중심의 논리적 구성. 시간과 비용 문제를 취급.
프로젝트를 일정 기일 내에 완성시키고 해당 계획이 원가의 최소값에 의해 보증되는 등의 최적 스케줄을 구하는 관리 방법.
(주로 건설과 설계를 포함하는 복잡한 일에 이용되어 효과를 발휘 함.
-
Risk Analysis : 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것
-
Work Breakdown Structure(업무 분업 구조) :
성과 목표 완전 달성을 위한 프로그램.
산업 관리 간접 부문의 기술 혁신형 업무-목표를 설정하여 소정 기간, 자원 내에서 달성하는 형태의 업무-를 효과적으로 수행하기 위한 수법.
-
Waterfall Model(폭포수 모델) :
S/W 개발 생명주기에 기반하고 있는 소프트웨어 개발 기법 중 하나.
한 번 떨어지면 다시 거슬러 올라갈 수 없는 폭포수처럼, 각 개발 단계를 확실히 매듭 짓고 다음 단계로 넘어간다는 의미.
-
정형기술검토(FTR)의 지침
- 오류 검출에 초점을 두고 해결책을 나중으로 미룸(제품 검토의 집중성)
- 검토를 위한 자료를 사전에 배포하여 검토하도록 한다(사전 준비성)
- 의견을 제한하되 충분히 받아들인다(의제의 제한성)
- 안건을 세우면 고수한다(안건 고수성)
- 논쟁과 반박을 제한한다(논쟁 반박의 제한성)
- 문제 영역을 공개한다(문제 공개성)
- 참가자의 수를 제한한다(참가 인원의 제한성)
- 발견된 오류는 문서화한다(문서성)
- Selection Sort - 배열 내에서 최소값을 찾은 다음 정렬 되지 않은 맨 앞 값과 교환을 하며 정렬을 해 나아가는 방법 (정렬 시간 복잡도 모두 O(n^2))
- Bubble Sort - 왼쪽에서 부터 두 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터 보다 크면 자리를 바꾸는 정렬 알고리즘(정렬 시간 복잡도 모두 O(n^2))
- Insert Sort - 한 개의 값을 추출한 다음 앞쪽으로 비교해서 본인의 자리를 알맞게 찾아가게끔 하는 정렬 방법. 정렬 시간 복잡도는 최상일 경우 O(n), 평균과 최악일 경우 O(n^2)
- 병합 정렬 - 또한 분할 정복에 기반한 알고리즘으로 리스트를 1 이하인 상태까지 절반으로 자른 다음 재귀적으로 합병 정렬을 이용해서 전체적인 리스트를 합병하는 정렬 과정. O(n log n)
※ n(n-1)/2 = O(n^2)
정렬이란? 여러 개의 자료를 순서에 따라 나열하는 방법
8개 종류: [선택, 버블, 삽입, 쉘, 퀵, 힙, 이진병합, 버킷정렬]
61.종류 최상 평균 최악
선택 정렬 O(n) O(n2) O(n2)
버블 정렬 O(n2) O(n2) O(n2)
삽입 정렬 O(n2) O(n2) O(n2)
쉘 정렬 O(n) O(n1.5) O(n2)
퀵 정렬 O(nlog2n) O(nlog2n) O(n2)
힙 정렬 O(nlog2n) O(nlog2n) O(nlog2n)
이진병합 정렬 O(nlog2n) O(nlog2n) O(nlog2n)
버킷 정렬 O(dn) O(dn) O(dn)
62.퀵 정렬: 분할 정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법
- 하나의 리스트를 피벗(pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법
정처기 3과목
1. SQL 분류 중 DDL
DDL(Data Definition Language 데이터 정의어): CREATE, ALTER, DROP, TRUNCATE
DML(Data Manipulation Language 데이터 조작어): SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language 데이터 제어어): GRANT(권한부여), REVOKE(DCL에 해당하는 권한해제)
-> 데이터 베이스 관리자가 데이터 보안, 무결성 유지, 병행 제어, 회복을 하기 위해 DBA가 사용하는 제어용 언어
TCL(Transaction Control Language 트랜잭션 제어어): COMMIT, ROLLBACK, CHECKPOINT
- 데이터 제약조건
개체 무결성 제약 조건 : 기본 키를 구성하는 어떤 속성도 Null값이나 중복값을 가질 수 없다.
릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
외래키 값은 참조 릴레이션의 기본키 값과 동일해야 한다.
도메인 무결성 제약 조건 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다.
참조 무결성 제약 조건 : 외래키의 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
3.뷰(view)
뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. 저장장치 내에 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 간주된다.
논리적 독립성을 제공하고 있다.
- 데이터 베이스의 논리적 설계(데이터모델링)
-현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정
-개념 세계의 데이터를 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화
-개념 스키마를 평가 및 정제하고 DBMS에 따라 서로 다른 논리적 스키마를 설계하는 단계(종속적인 논리 스키마)
-트랜잭션의 인터페이스 설계
-관계형 데이터베이스라면 테이블 설계
-특정목표 DBMS에 따른 스키마설계
-스키마의 평가 및 정제
그렇다면? 데이터 베이스 설계단계에서의 트랜잭션 설계단계
-개념적 설계 :
트랜잭션 모델링/ 독립적인 개념 스키마 모델링/ 개념스키마 설계/ E-R 다이어그램
-논리적 설계 : 트랜잭션 인터페이스 설계/ DBMS에 맞는 논리스키마 설계/ 테이블 설계/ 논리적 매핑/ 스키마 평가 및 정제
-물리적 설계 : 레코드 집중의 분석,설계/ 저장레코드 양식 설계 / 저장 구조 및 액세스 경로 설정
물리적 설계 시 고려사항?
o 어떤 인덱스를 만들 것인지에 대한 고려
o 성능 향상을 위한 개념 스키마의 변경 여부 검토
o 레코드의 크기
o 파일과 구조 저장을 위한 최소한의 공간
o 빈번한 질의와 트랜잭션들의 수행 속도를 높이기 위한 고려사항
- 응답 시간
- 저장 공간의 효율화
- 트랜잭션 처리량
- 애트리뷰
-관계 데이터 모델에서 데이터의 가장 작은 논리적 단위의 값, 이 값은 원자 값만을 허용한다.
-같은 타입의 모든 원자 값들의 집합을 그 애트리뷰트의 도메인이라고 한다.
-도메인은 같은 도메인의 값들끼리 비교가 허용된다.
-하나의 도메인에 대하여 둘 이상의 애트리뷰트가 정의될 수도 있다.
-한 릴레이션에서는 모든 애트리뷰트들의 이름이 반드시 달라야 한다.
(원자)
②튜플 : 릴레이션을 구성하는 각각의 행을 말한다. 속성의 모임으로 구성된다. 파일 구조에서 레코드와 같은 의미이다. 튜플의 수를 카디널리티(cardinality) 또는 기수, 대응수라고 한다.
(각각의 행)
다형성 - 하나의 객체가 여러 가지 타입을 가질 수 있는 것
(여러가지)
엔티티: 데이터베이스의 논리적 구성요소, 데이터베이스에 표현하려는 유형, 무형의 개체로 정보의 단위
(데이터베이스 형태를 띈 단위)
- 관계 대수 연산
- 셀렉트(Select)σ : 릴레이션에서 조건을 만족하는 튜플 반환 / 수평적으로 절단, 행 가져옴
- 프로젝트(Project)π : 릴레이션에서 주어진 속성들의 값으로만 구성된 튜플 반환 / 수직적으로 절단, 열 선택적 가져옴
- 조인(Join)⋈ : 공통 속성을 이용해 두개의 릴레이션 튜플들을 연결해 만들어진 튜플 반환
- 디비전(Division)÷ [R%S] : 릴레이션S의 모든 튜플과 관련있는 릴레이션R의 튜플 반환
- 트랜잭션의 특성
- Durability 영속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
- Consistency 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.
- Atomicity 원자성 : 트랜잭션 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.
- Isolation 격리성 : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가하다.
- 분산데이터의 목표
- 위치투명성(Location Trasparency) 데이터 베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적인 명칭만으로 엑세스할 수 있음
-중복투명성(Replication Transparency) 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것 처럼 사용 가능, 시스템은 자동으로 여러 자료에 대한 작업 수행
-병행투명성(Concurrency Transparency) 다수의 트랜잭션이 동시에 실현되더라도 그 결과는 영향을 받지 않음
-장애투명성(Failure Transparency) 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 트랜잭션을 정확히 처리함.
-
E-R모델
요구사항으로부터 얻어낸 정보들을 개체(Entity), 애트리뷰트(Attribute), 관계성(Relation)으로 기술하는 데이터 모델
개체 타입 (사각형)
관계 타입 (마름모)
속성 타입 (타원)
연결 (선)
다중값 (원두개)
-
후보키는 유일성, 최소성이며, 슈퍼키는 유일성 , 최소성은 아님.
-
키 : 레코드 또는 튜플을 확인하기 위해 이용되는 속성값
1) 기본키
유일성과 최소성을 만족하는 속성을 가지는 후보키 중에 지정된 하나의 키
중복되는 값, Null 값을 가질 수 없음.
- 값의 변화가 거의 없고 단순한 후보키가 기본키로 적합.
2) 슈퍼키
*데이터베이스에서 테이블의 행을 고유하게 식별할 수 있는 속성 or 속성의 집합
3) 외래키
- 관계형 데이터베이스에서 한 테이블 속성 집합이 다른 테이블의 기본키가 됨.
- 데이터베이스 내에 존재하는 테이블들의 관계에서 참조의 무결성을 보장하기 위함임
- 중복되는 값, 비어있는 값(Null) 가질 수 있음(<->기본키)
4) 후보키
- 유일성과 최소성을 만족하는 속성 or 속성들의 집합
- 슈퍼키 중 최소성을 만족하는 것이 후보키가 됨.
- 후보키(candidate key)는 기본키(primary key)로 사용 할 수 있으며, 후보키가 여러개일 경우에는 하나를 지정해 사용.
(지정되지 않은 나머지 후보키 = 대체 키(alternate key))
-
이행적 함수 종속 관계
a->b b->c일때 A->c 이다.
-
Distinct는 중복제거임!
-
데이터 베이스 시스템
트리거 : 데이터페이스가 미리 정해 놓은 조건이 충족되거나, 특정테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생하면 DBMS 에서 자동적으로 실행되도록 구현한 프로그램
[해설작성자 : G다다]
무결성(integrity) : 데이터의 무결성은 데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다. 데이터의 무결성을 유지하는 것은 데이터베이스 관리시스템 (DBMS)의 중요한 기능이며, 주로 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지한다.
잠금(lock) : 삽입, 삭제, 갱신 등의 트랜잭션이 일어나는 동안 DBMS의 테이블, 행이나 열 등의 요소들은 잠기게 된다.
복귀(rollback) : 작업 중 문제가 발생되어 트랜잭션의 처리과정에서 발생한 변경사항을 취소하는 명령어
*트랜잭션(Database Transaction) : 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위
- DDL :
PRIMARY KEY : 기본키 정의 / FOREIGN KEY : 외래키 정의
UNIQUE : 지정 속성은 중복값 가질 수 없음 / NO ACTION : 변화가 있어도 조취를 취하지 않음
CASCADE : 참조 테이블 튜플 삭제 시 관련 튜플 모두 삭제 및 속성 변경 시 속성값 모두 변경
RESTRICTED : 타 개체가 제거할 요소를 참조중이면 제거를 취소
SET NULL : 참조 테이블 변화 시 기본 테이블 관련 속성값 Null로 변경
SET DEFAULT : 참조 테이블 변화 시 기본테이블의 관련 튜플 속성값을 기본값으로 변경
CONSTRAINT : 제약 조건 이름 지정 / CHECK 속성값에 대한 제약 조건 정의
DML :
INSERT INTO ~ VALUES : 튜플 삽입 / DELETE FROM~ WHERE : 튜플 삭제
UPDATE ~ SET ~ WHERE : 튜플 내용 변경 / SELECT~FROM~WHERE : 튜플 검색
DISTINCT : 중복 튜플 발견 시 그 중 첫번째 하나만 검색 / DISTINCTROW : 중복 튜플 제거 및 하나만 검색 (튜플 전체를 대상으로 검색)
PREDICATE : 검색할 튜플 수 제한 / AS 속성명 정의
ORDER BY : 특정 속성 기준으로 정렬 후 검색할 때
ASC : 오름차순 / DESC : 내림차순 / 생략 시 오름차순
GROUP BY : 특정 속성 기준 그룹화하여 검색할 때 사용 having절과 같이 사용되어야함
[해설작성자 : 거상 주작섭]
CLUSTER
이 옵션은 데이터베이스 객체들을 물리적으로 그룹화하기 위한 것으로, 삭제와는 관련이 없다.
SET-NULL
부모 테이블에서 튜플이 삭제될 때, 참조하는 자식 테이블의 외래키 값을 NULL로 설정합니다. 이는 데이터를 유지하면서 외래키 연결만 끊는 방법
RESTRICTED
일반적으로 RESTRICT 옵션은 부모 테이블의 튜플이 자식 테이블에 의해 참조되고 있을 때 삭제를 금지하는 데 사용됩니다. 삭제하려면 먼저 모든 참조가 제거되어야 한다.
- 병행제어의 로킹(Locking) 단위
-로킹단위↑ : 로크 수↓, 병행성↓, 오버헤드↓, 공유도↓, 제어기법 간단하여 관리 수월
-로킹단위↓ : 로크 수↑, 병행성↑, 오버헤드↑, 공유도↑, 제어기법 까다로워 관리 복잡
- 데이터베이스 병행 제어를 위해 트랜잭션(transaction)이 접근하고자 하는 데이터를 잠가(lock) 다른 트랜잭션이 접근하지 못하도록 하는 병행 제어 기법이다.
- 트랜잭션이 어떤 데이터에 접근하고자 할 때 로킹을 수행
- 로킹이 되어 있는 데이터에는 다른 트랜잭션이 접근할 수 없음
- 트랜잭션은 로킹이 된 데이터에 대해서만 연산을 수행
- 로킹 단위: 필드, 레코드, 테이블, 파일, 데이터베이스 모두 로킹 단위가 될 수 있다.
- 한 번에 로킹 할 수 있는 객체의 크기를 로킹 단위라고 한다.
- 릴레이션의 정규형 조건들?!
원부이 결다조
1NF(제1정규형) 조건 : 모든 도메인이 원자 값으로만 구성
2NF(제2정규형) 조건 : 기본키가 아닌 속성이 기본키에 대한 완전 함수적 종속을 만족, 부분적 함수 종속을 제거한 정규형
3NF(제3정규형) 조건 : 기본키가 아닌 모든 속성이 기본키에 대해 이행적 함수 종속 관계를 만족하지 않는 정규형
BCNF 조건 : 모든 결정자가 후보키인 정규형, 종속성 보존X
4NF(제4정규형) 조건 : 다치 종속이 성립하는 경우, R의 모든 속성이 A에 함수적 종속 관계를 만족
5NF(제5정규형) 조건 : 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형
- 저장 레코드 양식 설계 시 고려 사항
- 트랜잭션 모델링은?
- 트랜잭션을 개념적 시스템 독립적으로 정의한다.
- 트랜잭션의 입출력 기능, 형태만 정의한다.
- 검색, 갱신, 혼합(검색, 갱신)
- 개념적 설계단계에서 실행함.
- 릴레이션의 특징
- 튜플의 유일성 : 모든 튜플은 서로 다른값을 갖는다
- 튜플의 무순서성 : 하나의 릴레이션에 튜플에 순서는 없다
- 속성의 원자성 : 속성값은 원자값을 갖는다
- 속성의 무순서성 : 각 속성은 릴레이션내에서 유일한 이름을 가지며, 순서는 큰 의미가 없다
-
키의 종류
후보키(Candidate Key): 기본키로 사용 가능한 속성, 유일성/최소성 만족
기본키(Primary Key): 후보키 중에서 선택됨, 중복된 값과 Null값 가질 수 없음. 반드시 필요한 키
슈퍼키(Super Key): 한 릴레이션 내 속성들의 집합으로 구성된 키, 유일성○, 최소성X
-
데이터 모델의 구성요소
- 논리적구조(Structure):논리적인 개체 타입들 간의 관계, 데이터 구조 및 정적 성질을 표현
- 연산(Operation):실제 데이터를 처리하는 작업에 대한 명세로, 조작하는 기본 도구
- 제약 조건(Constraint):DB에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
- 논리 데이터 모델의 구성요소
- 분산 데이터베이스 시스템
목표 => 투명성!(분산투명성 고려해야함)+ 그안의 세부목표를 가짐
- 위치 투명성(Location Transparency):하드웨어와 소 프트웨어의 물리적 위치를 사용자가 알 필요가 없다.
- 중복(복제) 투명성(Replication Transparency):사용 자에게 통지할 필요없이 시스템 안에 파일들과 자원들의 부가적인 복사를 자유롭게할수 있다.
- 병행 투명성(Concurrency Transparency):다중 사용 자들이 자원들을 자동으로 공유할 수 있다.
- 장애 투명성(Fai ure Transparency):사용자들은 어느 위치의 시스템에 장애가 발생했는지 알 필요가 없다.
- 기본키 속성
: 후보키 중에서 선정된 주키(MAIN KEY)
-중복된 값을 가질 수 없다.
-NULL 값을 가질 수 없다.
-기본키로 검색 시 듀플을 조회할 수 있음.
- 유일하게 특정 듀플을 유일하게 구별할 수 있는 속성
- Delete 명령어 설명
- 테이블의 행을 삭제할 때 사용한다
- SQL을 사용 용도에 따라 분류할 경우 DML에 해당한다.
- 기본 사용 형식은 “DELETE FROM 테이블 [WHERE 조건];” 이다.
- 테이블내의 튜플들(행만)만 삭제! Drop은 테이블 자체 삭제이므로 차이가 있음.
- 관계 해석의 논리 기호
- ∃: 존재한다(There exist)
- ∈: t가 r에 속함( t ∈ r )
- ∀: 모든 것에 대하여(for all)
- ∪: 합집합
-
릴레이션에서 Degree(열!세로 =>디열!/ 열차!) Cardinality(행!가로 => 카행!)
-
between은 이상이하! 를 뜻함!
-
분산데이터베이스 시스템(Distributed Database System)
분산 데이터베이스의 구성 요소 - '분산'
1) 분산 처리기
2) 분산 데이터베이스
3) 통신 네트워크
4) 분산 트랜잭션
분산 데이터베이스의 구조
: 전역, 분할(단편화), 할당, 지역 스키마
-
UNION: 중복제거(합집합)
UNION ALL 중복제거 x(합집합)
-
병행제어의 목적
- 여러 사용자들의 데이터베이스 공동 사용을 최대화
- 사용자의 응답 시간 최소화
- 데이터베이스 시스템의 활용도 최대화
- 데이터베이스의 일관성 유지
-
데이터 베이스에서 개념들
뷰 : 하나 이상의 기본 테이블로 유도되어 만들어지는 가상 테이블
튜플 : 관계데이터 구조 테이블에서 행을 의미함
카디널리지 : 튜플의 갯수
트랜잭션 : 하나의 논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야 할 일련의 연산들
-
관계 대수 연산(순수 집합 연산자)
-
Select
-
Project
-
Join
-
Division
그리고
일반 집합 연산자는 이게 있음 !
합집합
교집합
차집합
카티션 프로덕트
- 이상 현상
데이터 정규화가 되지 않은 테이블에서 연산을 수행(삽입, 삭제, 수정)할 시 데이터에 생기는 논리적 오류들.
종류
1) 삽입 이상
자료 삽입 시 아직 정해지지 않은 부분에 대한 NULL값 등을 삽입해야 하는 경우를 뜻함
2) 갱신 이상
데이터 수정 시 중복된 다른 쪽의 데이터가 수정되지 않아 생긴 모순된 데이터 등을 지칭함
3) 삭제 이상
한 정보를 삭제했을 때 의도치 않게 해당 행의 다른 데이터까지 삭제되는 현상을 뜻함.
- 트랙잭션 기법
- 로킹기법 : 같은 자원을 엑세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜젝션의 순차적 진행을 보장하는 직렬화 기법.
타임스탬프 기법 : 트랜젝션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임스탬프를 부여하여 부여된 시간에 따라 트랜젝션 작업을 수행하여 트랜잭션 간의 처리순서를 미리 정하는 기법
-
카디션 프로덕트 는 두테이블의 곱집합!
intersect는 교집합!
-
수평분할
하나의 테이블의 각 행을 다른 테이블에 분산시키는 것
(=파티셔닝)
파티셔닝 유형 : 범위분할(rang),해시분할(hash),list분할, composite분할, 라운드로빈(round-robin)분할이 있음
-
시스템 카탈로그
- DBMS가 스스로 생성하고 유지함
- 저장되는 내용 메타데이터라고 함
- 시스템 자신이 필요로 하는 스키마 및 여러가지 객체에 관한 정보를 포함하고 있는 시스템 데이터베이스
- 시스템 카탈로그를 갱신하는 것은 허용 x
40 차수/어트리뷰트(열)는 + 카디널리티/튜플(행)는 *
- 속성의 특징
- 개체의 특성을 기술
- 데이터 베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상 데이터 항목 또는 데이터 필드에 해당됨
- 속성의 수는 디그리 임!
- 데이터 모델링 기법
1) 인덱스 정규화 : 인덱스는 키 값으로 행 데이터의 위치를 식별하는데 사용하는 기능(인덱스 정규화는 인덱스를 효과적으로 사용하려면 정규화가 되어 있어야 하는 것을 말하는 듯)
2) 반정규화 : 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
3) 집단화 : 속성(유형, Type)들의 세트로 구성되는 새로운 속성(유형, Type)을 정의하는데 사용되는 개념
4) 머징 : 둘 이상의 데이터 세트를 단일 데이터 세트로 결합 또는 공통된 컬럼명 또는 행 이름에 따라 데이터 프레임을 병합
43.데이터 모델
: 현실 세계의 정보를 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델
구성요소
: 논리적 데이터 구조, 연산, 제약 조건
모델 절차
: 개념적 데이터 모델>논리적 데이터 모델>물리적 데이터 모델
-
차수 구하기
릴레이션에서 차수는 속성의 수!
스키마는 속성의 집합을 말함.
스키마가 4개속성, 2개후보키 라고 했는데 왜 난 스키나 4개, 속성 2개, 후보키로 본거지.........배보..
-
데이터 웨어 하우스의 기본적인 OLAP
개념: 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식.
roll-up,
slicing & dicing,
drill-up & down,
pivot,
drill-through
-
분산데이터베이스 투명성 조건
-
Location Transparency (위치 투명성)
: 데이터베이스의 실제 위치를 알 필요 없이 단지 데이터베이스의 논리적 명칭만으로 액세스할 수 있음
-
Replication Transparency (중복 투명성; 복제 투명성)
: 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행
-
Failure Transparency (장애 투명성)
: 장애가 발생해도 트랜잭션을 정확하게 처리하고 데이터 무결성을 보장함
-
Concurrency Transparency (병행 투명성)
: 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음
-
Division Transparency (분할 투명성)
: 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 단편의 사본이 여러 시스템에 저장되어 있음을 인식할 필요가 없음
-
anomaly 이상 / normalization 정규화 / cardinality (튜플의 수)
-
트랜잭션 특성
- 원자성 : 트랜잭션 연산은 DB에 모두 반영되어 Commit(완료)되든지 아니면 반영안되어 Rollback(복구)되어야 한다.
- 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환한다.
- 독립성 : 둘 이상 트랜잭션이 동시 병행 실행될 경우 트랜잭션 실행 중 타 트랜잭션의 연산이 끼어들 수 없다.
- 지속성 : 성공적 완료된 트랜잭션 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
**
Commit과 Rollback이 나오면 원자성(Atomicity) 국룰이라고 보시면됩니다.
-
함수 종속 추론 규칙
(1) 분해 규칙 : X -> YZ이면 X -> Y와 X -> Z이다.
(3) 반사 규칙 : X -> Y이면 X -> Y와 X -> X이다.
(4) 결합 규칙 : X -> Y이고 X -> Z이면 X - > YZ이다.
-
Division 연산결과 구하기
해당 조건에 대한 내용에서 그 내용을 제거한 결과값만 나타내는 것을 말함.
- 회복 기법 ?
트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
트랙잭션의 연산을 수행할 때 데이터베이스를 변경하기 전에 로그 데이터를 생성하고,
취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정할 수 있음.
-
즉각 갱신 기법(Immediate Update)
트랜잭션의 연산을 수행하여 데이터를 갱신할 때 실제 데이터 베이스에 반영하는 기법
갱신한 모든 내용을 로그(Log)에 보관합니다.
회복 작업을 위해 취소(Undo)와 재시도(Redo) 모두 사용할 수 있습니다.
-
연기 갱신 기법(Deffered Updatae)
트랜잭션을 완료할 때까지 데이터베이스에 갱신을 연기하는 기법
트랜잭션 수행으로 갱신할 내용은 로그(Log)에 보관합니다.
트랜잭션이 부분 완료 시점에 Log의 기록을 실제 데이터 베이스에 반영합니다.
트랜잭션 수행 중에 장애가 발생하여 Rollback하여도 취소(Undo)할 필요가 없습니다.
재시도(Redo) 작업을 통해 최근의 정상적인 데이터베이스로 회복한 후에 트랜잭션을 재실행할 수 있습니다.
-
검사점 기법(Check Point)
트랜잭션 중간에 검사점을 로그에 보관하여 트랜잭션 전체를 취소하지 않고 검사점까지 취소할 수 있는 기법
-
그림자 페이지 대체 기법(Shadow Paging)-로그가 필요없음
트랜잭션의 연산으로 갱신할 필요가 있을 때 복사본인 그림자 페이지를 보관하는 기법
트랜잭션을 취소할 때 그림자 페이지를 이용하여 회복.
로그(Log), 취소(Undo), 재시도(Redo)할 필요가 없습니다.
정처기 4과목 정리
1. 문자열 처리 함수 서식과 연결
함수명에 의미하는 약어가 포함되어 있음
str -> string 문자
len -> length 길이
cpy -> copy 복사
cmp -> compare 비교
rev -> reverse 변환
strcat - 문자열 연결 함수
-
c언어 계산 결과
&& (=and) => 모든 값이 true 인경우 1반환
||(=or) =>둘중하나만 true여도 1반환
!(not) => 무조건 0이라는 값
-
IP프로토콜에서 사용하는 필드
- Header Length : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다.
- Packet Length : IP 헤더를 제외한 패킷 전체의 길이를 나타내며 최대 크기는 232-1비트이다.
- Time To Live : 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것이다. (최대값 2^16-1)
- Version Number : IP 프로토콜의 버전번호를 나타낸다.
IP 프로토콜의 주요 특징
- 패킷을 분할, 병합하는 기능을 수행하기도 한다.
- 비연결형 서비스를 제공한다.
- Best Effort 원칙에 따른 전송 기능을 제공한다.
- 데이터 체크섬은 제공하지 않고, 헤더 체크섬만 제공한다.
-
파이썬에서는 조건 작성시 if elif else를 씀
-
RIP 라우팅 프로토콜
- 최단 경로 탐색에는 Bellman-Ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜
- 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 IGP에 해당한다.
- 최단경로탐색에는 Bellman-Ford 알고리즘을 사용한다.
- 최적의 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, RIP을 선택한 경로가 최적의 경로가 아닌 경우가 많이 발생할 수 있다.
- 소규모 네트워크 환경에 적합하다.
- 최대 홉 카운트를 15홉 이하로 한정하고 있다.
- HRN 스케줄링 방식
- 비선점 스케줄링
- 실행시간이 긴 프로세스에 불리한 SJF를 보완하기 위해 대기시간 및 서비스 시간을 이용
- 긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다.
- 우선순위를 계산 숫자가 높은것부터 낮은순으로 순위 부여
- (대기시간 + 서비스시간) / 서비스시간 = 우선순위값) 값이 클수록 우선순위가 높다.
- UNIX 운영체제
- 주로 서버용 컴퓨터에서 사용됨
- time sharing system을 위해 설계된 대화식 운영체제
- c언어로 작성되어 이식성 높고, 장치간 호환성 높다.
- Multi user, Multi tasking 모두 지원.
- 트리 구조의 파일시스템
- UDP(User Datagram Protocol)프로토콜
- 비연결형 및 비신뢰성 전송 서비스를 제공한다.
- 흐름 제어나 순서 제어가 없어 전송 속도가 빠르다.
- 수신된 데이터의 순서 재조정 기능을 지원하지 않는다.
- 복구 기능을 제공하지 않는다.
-
파이썬의 다양한 데이터 타입
시퀀스-> 리스트 - 순서있고,가변 [1,2,3]
시퀀스-> 튜플 - 순서있고,불변 (1,2,3)
세트-> 세트(set) - 순서없고,중복x {1,2,3}
맵-> 딕셔너리- 순서없고,key-value쌍 {'a':1,'b:2,'c':3}
-
Myers가 구분한 응집도(Cohesion)
응집도
(기순교절시논우)
- 기능적 응집도(강함) >
순차적 응집도 >
교환적 응집도 >
절차적 응집도 >
시간적 응집도 >
논리적 응집도 >
우연적 응집도 (약함)
-
데이터 결함 체크방법은 적재되어 있는 데이터를 빼고 나머지를 보면된다(적재 데이터는 이전에 체크한? 겹친 데이터로 생각하면 된다.)
LRU페이지 교체 알고리즘은? 최근까지 남아있던 것을 제거한 후 현재것을 적재시키는 것을 말함.
-
결함도
: 두 모듈간의 상호작용, 또는 의존도 정도를 나타내는 것
-
스탬프 결합도 : 두 모듈이 매개변수로 자료를 전달할 때, 자료구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.
-
내용 결합도: 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.
내용 참조, 자료 참조 (단어가 있으면) 내용 결합도
-
공통 결합도 : 두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어 있다고 한다.
"전역변수" (단어가 있으면) 공통 결합도!
- 모듈화(Modularity)
- 시스템을 모듈로 분할하면 각각의 모듈을 별개로 만들고 수정할 수 있기 때문에 좋은 구조가 된다.
- 모듈 간의 결합도가 약해야 독립적인 모듈이 될 수 있다.
- 모듈 내 구성 요소들 간의 응집도가 강해야 좋은 모듈 설계이다.
- 결합도는 모듈과 모듈 사이의 상호의존 또는 연관 정도를 의미 (음 마치 그 집단의 있는 사람들의 의존여부 )
- 응집도는 모듈이 독립적인 기능으로 정의되어 있는 정도를 의미한다.(음 마치 그 집단에 모여있는 사람들 정도?)
그래서 응집도는 강하고 결합도는 약해야한다. (음 독립적으로 기능은 하지만 의존성이 높지 않아서 하나가 오류가 발생해도 큰 영향이 없게하려고 그런게 아닐까?)
-
IP주소 체계
1) IPv4
ㄱ. 32비트 주소
ㄴ. 유니캐스트/멀티캐스트/브로드캐스트 사용
ㄷ. 헤더가 가변적임
2) IPv6
ㄱ. 128비트 주소
ㄴ. 기존 IPv4의 주소 부족 문제를 해결하기 개발
ㄷ. 인증성/기밀성/무결성 지원 (=보안성 강화)
ㄹ. 유니캐스트, 애니캐스트, 멀티캐스트 사용
ㅁ. 헤더가 40바이트(320비트)로 고정되어 있음 패킷헤더도 아님!
ㅂ. 16비트씩 8부분의 16진수로 표시한다.
ㅅ. 등급별, 서비스별로 패킷을 구분할 수 있어서 품질보장이 용이함
ㅇ. 확장기능을 통해 보안기능을 제공한다.
-
C언어로 계산법 (어려워죽어..)
예로 arr[2][3] ={1,2,3,4,5,6}
여기서 arr[2][3]의 2는 세로 3은 가로를 뜻한다
즉 행2,열3 을 뜻함
123
456 이라고 생각하면 된다. 그렇게 보고 문제를 풀면 좀 쉬울 듯
첫번째!
(p[0]+1) + (p[1]+2)는 p[0][1] 와 p[1][2] 를 더한 값을 보면 된다.
위
123
456에서 해당부분을 찾는다면
2,6인 것을 알 수 있다. 합은 8임.
두번째, ((p+1)+0 )+((p+1)+1)에서 p+1은 p[1]을 뜻하고 뒤 +0은 p[0]을 뜻한다. 그래서 앞부분이 뜻하는건 p[1][0]뒷 내용도 마찬가지로 보면 p[1][1]으로 보면된다.
그래서 4와 5를 뜻하고 합은 9인것을 알 수 있다.
그래서 정답은 8,9!
쉽죠잉?
- 자바에서 예외란?
- 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류
- 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류
- 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류
문법오류는 컴파일 시 에러가 발생하고 때문에 프로그램 실행이 불가능하여 이건 예외로 보지 않음!
- IP 프로토콜
- ARP(Address Resolution Protocol) : IP 네트워크 상에서 IP주소를 MAC주소로 변환하는 프로토콜(물리적 주소로 바꾸는 역할을 함)
- PPP(Point-to-Point Protocol) : 점대점 데이터링크를 통해 3계층 프로토콜들을 캡슐화시켜 전송하는 프로토콜
- ICMP(Internet Control Message Protocol) : IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 하는 프로토콜
- Best Fit
: 내부 단편화(자투리)가 가장 적게 남는 공간에 넣음
여기서 제안하는 프로그램 크기를 모든 기억 공간 크기에 넣고 값을 빼서 가장 적게 나오는 것으로 고르면 된다.! 즉, 문제에서 Best Fit을 물을 시 내부단편화가 제일 작은 보기를 찾으면 됨!
여기서 예시가 17KB프로그램 적재시라고 했고 빈기억공간 크기는 20KB, 16KB, 8KB, 40KB 이라고 했는데 가장 적은건 3KB이다 (20KB일때) ! 그리고 -로 떨어지는 건 불가한것!
그외
First Fit: 들어갈 수 있는 첫 번째 공간에 넣음(여기서는 20KB이겟지? 이건 맞는지 모르겠네)
Worst Fit: 가장 큰 공간에 넣음(여기서는 23KB)
으로 알면된다.
- 1, 2, 1, 0, 4, 1, 3 일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?
12
1//
120
204
041
413
기출 22.3.05 75번 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3 일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?
이거 무슨말인지 모르겠네...
찾아보자..
- UNIX 시스템의 쉘(shell)의 주요 기능
- 사용자 명령을 해석하고 커널로 전달하는 기능을 제공한다.
- 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공한다.
- 초기화 파일을 이용해 사용자 환경을 설정하는 기능을 제공한다.
커널은 메모리나 프로세스 관리 ! 쉘은 명령 해석해서 커널로 전달만 ! 기능을 제공하는 부분이 쉘 그 기능을 바탕으로 무언가를 하는 건 커널!~**
21.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
- 상호 배제 기법
- 데커의 알고리즘Dekker Algorithm
- 프로세스가 두개일때 상호 배제를 보장하는 최초의 알고리즘
- flag와 turn 변수를 사용하여 조정
상호배제보장/.최초
- 램퍼드 알고리즘 Lamport Algorithm
- 프로세스 n개의 상호 배제 문제를 해결한 알고리즘
- 프로세스에게 고유한 번호를 부여하고, 번호를 기준으로 우선순위를 정하여 우선순위가 높은 프로세스가 먼저 임계구역에 진입하도록 구현.
우선순위/고유번호부여
- 피터슨 알고리즘 피터슨 알고리즘
- 프로세스가 두개일때 상호 배제를 보장, 데커의 알고리즘과 유사하지만 상대방에게 진입 기회를 양보한다는 차이가 있고 보다 더 간단하게 구현됨
*상호배제보장 인데 진입기회양보 데커보다 간단
- 세마포어 Semaphore
- 공유된 자원의 데이터 혹은 임계영역 등에 따라 여러 Process 혹은 Thread가 접근하는 것을 막아줌(동기화 대상이 하나 이상)
임계영역
- 모듈의 특징
- 독립적인 기능을 가진 단위
- 유일한 이름을 가져야 함
- 독립적 컴파일 가능하게함.
- 다른모듈에서도 접근이 가능하게 폐쇄적이지만 접근 불가능은 x
- 응집도 종류
- Temporal Cohension(시간적 응집도) : 모듈 내 구성 요소들이 서로 다른 기능을 같은 시간대에 함께 실행하는 경우의 응집도
- Logical Cohension(논리적 응집도): 모듈 내 구성 요소들이 같은 범주에 속하는 기능끼리 묶인 경우(ex. 새글, 불러오기, 저장하기, 다른이름으로 저장하기)
- Coincidental Cohension(우연적 응집도): 모듈 내 구성 요소들이 뚜렷한 관계없이 묶인 경우
- Sequential Cohension(순차적 응집도): 모듈 내 구성 요소들이 이전의 명령어로부터 나온 출력결과를 그 다음 명령어의 입력자료로 사용하는 경우(ex. 총점과 평균의 관계)
-
자바에서 연산자 우선순위
-- > % > & > =
-
SSTF (shortest seek time first ) 스케쥴링 사용한 처리 순서
=> 현재 헤드위치에서 가장 가까운 것 부터
예 : 98, 183, 37, 122, 14, 124, 65, 67 / 53현재 헤드
53이 시작이니 가장 가까운것 65
두번째 , 가장 이동 거리 짧은 것 => 현재 트랙과 남아있는 트랙 중 차이가 적은 것
53 - 65 - 67 - 37 - 14 - 98 - 122 - 124 - 183
-
IPaddress
A class에 속하는 ip 주소 범위: 0.0.0.0 ~ 127.255.255.255
B class에 속하는 ip 주소 범위: 128.0.0.0 ~ 191.255.255.255
C class에 속하는 ip 주소 범위: 192.0.0.0 ~ 223.255.255.255
a는 127까지
b는 128-191까지
c는 192-223까지
d는 224-239까지
e 255까지
- 모듈의 독립성을 높이기 위한 결합도와 관련된 설명
- 오류가 발생했을 때 전파되어 다른 오류의 원인이 되는 파문 효과(Ripple Effect)를 최소화해야 한다.
- 인터페이스가 정확히 설정되어 있지 않을 경우 불필요한 인터페이스가 나타나 모듈 사이의 의존도는 높아지고 결합도가 증가한다.
- 다른 모듈과 데이터 교류가 필요한 경우 전역변수(Global Variable)보다는 매개변수(Parameter)를 사용하는 것이 결합도를 낮추는 데 도움이 된다.
- 모듈이 변수를 공유해 사용하게 하거나 제어 정보를 고류하게 하면 모듈간의 결합도가 높아지기에 이를 줄여야한다.
- TCP 헤더와 관련된 설명
원도우 크기는 16비트로 65535바이트임.
-순서번호(시퀀스넘버)는 전달하는 바이트마다 번호가 부여됨
- 수신번호확인(Acknowledgement Number)은 상대편 호스트에서 받으려는 바이트의 번호를 정의한다
- 체크섬(Checksum)은 데이터를 포함한 세그먼트의 오류를 검사한다.
30 페이지 교체 (page Replacement)의 알고리즘
OPT - Optimal : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
FIFO - First In First Out
LRU - Least Recently Used : 가장 오랫동안 사용되지 않은 페이지 교체
LFU - Least Frequently Used : 참조 횟수가 가장 적은 페이지 교체
MFU - Most Frequently used : 참조 횟수가 가장 많은 페이지 교체
NUR - Not Used Recently : 최근에 사용하지 않은 페이지 교체
-
C언어에서의 변수 선언
else 는 예약어라 변수명으로 사용할 수 없고 첫자리가 숫자거나 예약어는 사용이 불가능하다.
언더바나 영문 대소문자는 모두 사용 가능!
-
자동요청 방식(ARQ: Automatic Repeat reQuest)
- Stop-and-Wait ARQ(정지-대기 ARQ): 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음, 에러 발생 유무 신호를 보내올 때까지 기다리는 방식
- Go-Back-N ARQ: 여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록부터 모두 재 전송
- Selective-Repeat ARQ(선택적 재전송 ARQ): 여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록만을 재전송
- Adaptive ARQ(적응적 ARQ): 전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 동적으로 변경하는 방식
- 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 4개의 Subnet으로 나누고 IP Subnet-zero를 적용했다. 이 때 Subnetting 된 네트워크 중 4번째 네트워크의 4번째 사용가능한 IP는 무엇인가?
192.168.1.(00)000000 (0)
192.168.1.(01)000000 (64)
192.168.1.(10)000000 (128)
192.168.1.(11)000000 (192)
여기서 4번째 이니 192.168.1.196임.
뭐라는걸까...........개어렵ㄷr ... 와로알왈왈
- 프로세스
- 프로세스 준비과정에서 실행으로 바뀌는것 디스패치!
- 프로세시 제어 블록은 식별자, 상태, 실시간 통계, 스레드, 주소공간 자원, 스택 등 등의 정보로 구성됨.(음 맞나)
- 상태 레지스터 내용을 보관하고 다른 레지스터를 적재하는 과정을 문맥교환이라고 함.(콘텍트 스위칭)
- 프로세스의 실행단위를 스레드라고 함.
- 충돌 발생에 관련된 제어방식
- Collision Domain(충돌도메인) => 충돌 발생을 검출
: 충돌 발생을 검출할 수 있는 브리지 간 혹은 다른 계층 장치 간의 이더넷 세그먼트 범위
- CSMA/CD (Carrier-sense multiple access with collision detection) "충돌 감지" => 규칙있게 접근하기 위한 제어 방식
: 이더넷에서 각 단말이 전송 공유 매체에 규칙있게 접근하기 위한 매체 엑세스 제어 방식
- CSMA/CA(Carrier-sense multiple access with collision avoidance)
: 충돌 방지 => 충돌을 회피하기 위해서 대비하는 것
무선 랜에서 데이터 전공 시, 매체가 비어있음을 확인한 후 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방식.
- 교착상태 해결 방법
- Detection(탐지)
: 교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결 (ex 자원할당 그래프)
- Avoidance (회피)
: 교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법 (ex 은행원 알고리즘)
- Recovery (복구)
: 교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 (ex 선점, 프로세스 중지(희생자 선택)
- Prevention(예방)
: 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법 (ex 환형대기, 비선점, 점유와 대기, 상호배제 4가지 부정)
결합도 외우기(높은순)
내게 공부를 하라고 하지말아요
제가 스트레스 받자나요
내용 공통 외부 제어 스탬프 자료
응집도 외우기
높은-> 낮은
기순교절시절우
우리 논산 시절 기억나 교자랑 순대 기대했었는데
낮은 -> 높은
우 논 시 절 교 순 기
기순 교절 시논우
정처기 5과목 정리
- 소프트웨어 개발 정보보안 3요소 (무기가)
무결성,기밀성,가용성
-무결성 : 인가된 사용자에 대해서만 자원 수정이 가능하며 전송중인 정보는 수정되지 않는다.
-기밀성 : 인가된 사용자에 대해서만 자원 접근이 가능하다.
-가용성 : 인가된 사용자는 가지고 있는 권한 범위 내에서 언제든 자원 접근이 가능하다.
-
tcp wrapper
어떤 외부 컴퓨터가 접속되면 접속 인가 여부를 점검해서 인가된 경우에는 접속이 허용되고, 그 반대의 경우에는 거부할 수 있는 접근제어 유틸리티
-
Zing
기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져올 수 있는 기술로 10㎝ 이내 근접 거리에서 기가급 속도로 데이터 전송이 가능한 초고속 근접무선통신(NFC : Near Field Communication) 기술
그 외 다양한 기술들
-
BcN(Broadband Convergence Network) : 음성·데이터·유무선 등 통신·방송·인터넷이 융합된 품질 보장형 광대역 멀티미디어 서비스를 공간에 제한없이 실시간으로 이용할 수 있는 차세대 네트워크 환경
-
Marine Navi는 소형 선박에 설치된 GPS 기반 선박자동 식별장치(AIS: Automatic Identification System)를 기본으로 주변 선박의 이동 속도와 위치를 파악
-
엘티이(LTE), 5G와 같은 셀룰러 이동통신망을 통해 차량이 다른 차량이나 교통 인프라, 보행자, 네트워크 등과 정보를 서로 주고받는 차량 통신 기술.
- 응용프로그램 취약점 관리
패치 관리 : 응용프로그램에 대한 패치 또는 서비스 팩 적용
- 응용프로그램 실행권한의 제한 필요
- 운영체제의 접근 제한
- 정보 수집 제한
- 불필요한 서비스 및 악성 프로그램의 확인 및 제거
- 시스템 무결성 검사 : 주요 파일을 검사하여 변경 내역 확인
취약점 분석
- 환경 및 시설: 도난, 정전-오작동, 천재지변
- 하드웨어: 고장-오작동, 데이터 유실
- 소프트웨어: 소프트웨어 장애, 정보유출, 데이터 소실
- 소프트웨어 개발 프레임워크
- 반제품 상태의 제품을 토대로 도메인별로 필요한 서비스 컴포넌트를 사용하여 재사용성 확대와 성능을 보장 받을 수 있게 하는 개발 소프트웨어이다.
- 설계 관점에 개발 방식을 패턴화시키기 위한 노력의 결과물인 소프트웨어 디자인 패턴을 반제품 소프트웨어 상태로 집적화시킨 것으로 볼 수 있다.
-프레임워크의 동작 원리를 그 제어 흐름의 일반적인 프로그램 흐름과 반대로 동작한다고 해서 IoC(Inversion of Control)이라고 설명하기도 한다.
- 클라우드 기반 HSM(Cloud-based Hardware Security Module)
- 클라우드(데이터센터) 기반 암호화 키 생성, 처리, 저장 등을 하는 보안 기기이다.
- 국내에서는 공인인증제의 폐지와 전자서명법 개정을 추진하면서 클라우드 HSM 용어가 자주 등장하였다.
- 클라우드에 인증서를 저장하므로 기존 HSM 기기나 휴대폰에 인증서를 저장해 다닐 필요가 없다.
- 하드웨어적으로 구현되어 소프트웨어식 암호 기술에 내재된 보안 취약점 해결 가능
- Mesh Network (그물#)
- 직접 접속되는 그물 모양의 네트워크
- 통신량이 많은 곳에서 구성될 경우 경제적, 간편함. 하지만 다수 회선이 세분화 되어 있어 비경제적일 수도 ...
- 대용량을 빠르고 안전하게 전달할 수 있어 군, 행사장에서 주로 사용
- 물리적 위협
- 천재지변, 방화나 테러로 인한 하드웨어와 기록장치를 물리적으로 파괴하는 것, 하드웨어의 파손과 고장으로 인한 장애
- 악성코드의 유형
- Worm : 악성코드의 유형 중 다른 컴퓨터의 취약점을 이용하여 스스로 전파하거나 메일로 전파되며 스스로를 증식하는 것
(취약점 이용해 전파하며 스스로 증식)
- Rogue Ware(Rogue security software; 가짜 백신 소프트웨어) : 사용자가 컴퓨터에 바이러스가 있다고 잘못 믿게 하고 컴퓨터에 실제로 악성 프로그램을 설치토록 하거나, 가짜 악성 프로그램 제거 도구에 대한 비용을 지불하도록 설득함. 공포심을 통해 사용자를 조종
(바이러스가 있다고 하는 등 공포심을 통해 사용자 조종)
- Adware : 특정 소프트웨어를 실행할 때 또는 자동으로 활성화되는 광고프로그램으로 이 자체는 악성코드로 보기는 힘들지만, 무분별한 광고 팝업을 뜨게 하는 등의 악용 위험성으로 악성코드로 분류되기도 함.
( 자동으로 활성화되는 광고프로그램)
- Reflection Attack(반사공격) : 송신자가 생성한 메시지를 가로챈 공격자가 그 메시지를 다시 송신자에게 재전송하여 접근 권한을 얻는 형태의 공격 방법.
(음 스팸인건가..? 메서지를 다시보내며 접근권환 얻으며 공격)
- DoS(Denial of Service) 공격
- Ping of Death : 허용범위 이상의 ICMP패킷을 전송해 대상 시스템의 네트워크 마비시키는 것 (ICMP가 패킷을 많이 쏘니 핑하고 죽어삣네. 핑오브데스)
-Session Hijacking(세션 가로채기) : 컴퓨터 시스템의 정보나 서비스에 무단으로 접근하기 위해 유효한 컴퓨터 세션(세션 키라고도 함)을 이용하는 것 일반적인 예로 두 컴퓨터 간에 활성화된 상태(즉, 로그인된 상태)에서 공격자가 피공격자의 로그인 정보를 활용하여 자신에게 필요한 행위를 하는 것을 뜻한다.
(유효한 세션을 이용해 정보를 활용해 필요행위를 하는 것 == 원격제어인가?)
-
Piggyback Attack(피그백 공격) : 공격자가 다른 사용자의 연결에서 계정을 사용하지 않는 비활성 기간(비활성 간격)을 이용하여 시스템에 액세스(접근)한다. 이는 간선(회선 간) 공격이라고도 불린다.
-> 쉽게 설명하자면, 시스템에 대한 합법적인 권한을 가진 사용자가 시스템에 접근할 때, 활성화된 기간(직접 로그인 인증을 받아야 하는 상황)에는 접근 권한이 없는 공격자가 비활성화된 기간(합법적 사용자가 시스템에 접근 인증을 받은 상황)에 마치 사용자와 관련있는 사람인 듯이 태그를 붙여 몰래 뒤따라 들어가는 것이라 할 수 있다.
(비활성 기간을 이용해 접근해 공격)
-
XSS (크로스 사이트 스크립팅) : 웹사이트에 악성 스크립트를 주입하는 행위. 공격자가 상대방의 브라우저에 스크립트가 실행되도록 해 사용자의 세션을 가로채거나, 웹사이트를 변조하거나, 악의적 콘텐츠를 삽입하거나, 피싱 공격을 진행하는 것.
(악성스크립트 주입 , 바이러스 까는건가..?)
-
Smurf 공격 : 브로드 캐스트를 활용하여 공격 대상이 네트워크의 임의의 시스템에 패킷을 보내게 만드는 공격
-
SYN Flooding : 존재하지 않는 클라이언트가 서버별로 한정된 접속 가능 공간에 접속한 것처럼 속여 다른 사용자가 서비스를 이용하지 못하게 하는 것
-Land : 패킷 전송 시 출발지 IP주소와 목적지 IP주소 값을 똑같이 만들어서 공격 대상에게 보내는 공격 방법
11.소프트웨어 개발 프레임 워크
: 개발해야할 애플리케이션의 일부분이 이미 내장된 클래스 라이브러리로 구현이 되어 있는 것
-
대칭 암호화와 비대칭 암호화
대칭 암호화 : 비교적 실행 속도가 빠름, 다양한 암호의 핵심함수로 사용될 수 있음, 대칭 암호화 알고리즘은 키교환이 필요해 교환 시 키 탈취 문제가 발생할 수 있음, 대표적 대칭키 암호 알고리즘은 AES,IDEA등이 있음(난 에이스,이디야로 보여서 그렇게 외워야짐...)
비대칭 암호화 : 자신만이 보관하는 비밀키를 이용해 인증, 전자서명 등 적용 가능
-
비용 산정 계산법
노력 측정 = 개발기간 X 투입인원
개발비용 측정 = 개발기간 X 투입인원 x 단위비용
개발기간 측정 = 예측된 LOC(라인) / (투입인원 X 1인당 월평균 LOC)
생산성 측정 = 개발된 LOC / (투입인원 X 개발기간)
-
역할 기반 접근통제 (Role Based Access Control)
: 권한이 있는 사용자들만 접근할 수 있는 보안 방법
MAC (Mandatory Access Control)
- 강제 접근 통제
- 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
DAC (Discretionary Access Control)
- 임의적 접근통제
- 자원에 대한 접근을 사용자나 그룹의 신분에 따라 제한
- 자원의 소유권을 가진 사람이 다른 사람의 접근을 허용하거나 제한할 수 있음
RBAC (Role Based Access Control)
- 사용자 역할에 따른 접근 통제
- 개별적인 신분이 아니라 조직 내 그룹 / 역할에 따라 부여
- COCOMO(Constructive Cost Model) 모형
- 보엠이 고안한
- 원시 프로그램 규모(LOC)에 의한 용 산정 방법.
- man-month = 투입 노력
[개발 유형에 따른 3종류]
organic(조직형)
- 5만 라인 이하
- 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
semidetached(반분리형)
- 30만 라인 이하
- 컴파일러, 인터프리터 개발에 적합
embedded (내장형)
- 30만 라인 이상
- 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합
-
사용자 인증 유형
1) 지식 - 본인이 알고 있는 것 (ex. 패스워드, PIN 등)
2) 소유 - 본인이 가지고 있는 것 (ex. 토큰, 스마트카드 등)
3) 존재 - 본인을 나타내는 것 (ex. 홍채, 지문 등)
4) 행위 - 본인이 하는 것 (ex. 서명, 움직임, 음성 등)
-
사용자가 로그인하여 명령을 내리는 과정에 대한 시스템의 동작
:Authentication (인가!)
- IT 기술?
-
SDN(Software Defined Networking) : 네트워크를 제어부, 데이터 전달부로 분리하여 네트워크 관리자가 보다 효율적으로 네트워크를 제어, 관리할 수 있는 기능. 안정성, 속도, 보안 등 소프트웨어로 제어, 관리하기 위해 개발됨. 경로 수정을 통해 인터넷상 발생 문제를 처리할 수 있음.
-
NFS(Network File System) : 네트워크상에서 공유되는 파일시스템. 다른 원격 호스트의 파일 시스템을 로컬 디스크에 접근하듯 간단하게 접근하여 자신의 디렉토리처럼 사용할 수 있다
-
Network Mapper : 네트워크 보안을 위한 유틸리티. 네트워크의 보안을 위해 물리적 연결과 어떤 서버와 운영 체제가 작동 중인지 따위를 조사하는 응용 프로그램
-
AOE Network(Activity On Edge Network) : 어떤 프로젝트를 마치기까지 수행되는 작업의 각 단계(상태)를 그래프의 정점(Vertex)으로 표현하고, 작업 하나가 완료되어 다음 단계로 넘어가는 시간을 그래프의 간선(Edge)으로 나타낸 방향 그래프
- 프로젝트 일정 관리시 사용하는 차트
PERT 차트
- 네트워크 도표 작성
- 작업들 간의 상호 관련성, 결정경로, 경계시간, 자원할당 등을 제시한다.
GANTT 차트
- 막대도표를 이용해 표시
- 시간선 차트
- 수평 막대의 길이는 각 작업의 기간을 나타냄 (소작업별로 작업기간을 한눈에 볼수 있고 자원 배치 계획에 유용하게 사용됨.)
- CPM네트워크로 부터 만드는 것 가능함.
- 정보 시스템
고가용성 솔루션(HACMP:High Availability Cluster Multi Processing)
- AIX를 기반으로 한 IBM의 High Availability Solution
- Resource의 중복 또는 공유를 통해 Application의 보호를 가능하게 해줌
- 같은 Data를 공유하거나 동시에 access하는 node들에서 여러 개의 application을 실행하게 해줌
- 두대 이상의 시스템을 하나의 Cluster로 묶어 Cluster내의 한 시스템에서 장애가 발생할 경우 다른 시스템이 장애가 발생한 시스템의 자원을 인수할 수 있도록 하여 서비스의 중단을 최소화 할 수 있도록 도와주는 솔루션
(다수의 프로그램을 동시에 연결)
점대점 연결 방식(Point-to-Point Mode)
- 네트워크에 있어 물리적으로는 중개 장치를 통과하지 않고 한 지점에서 다른 지점으로 직접 가는 채널
- 두 스테이션간을 별도의 회선을 사용하여 1 대 1로 연결.
- 전용회선이나 공중 전화 회선을 이용.
- 회선 구성이 간단하고 대용량 전송에 유리.
- 별도의 회선과 포트에 따른 높은 설치비용
(중개장치없이 한지점에서 다른지점으로 직접 갈 수 있음)
스턱스넷(Stuxnet)
- 2010년 6월에 발견된 웜 바이러스
- 윈도우를 통해 감염, 지맨스산업의 SW 및 장비를 공격
루팅(Rooting)
- 모바일 기기에서 구동되는 안드로이드 운영체제상에서 최상위 권한 (루트 권한)을 얻음으로 해당 기기의 생산자 또는 판매자 측에서 걸어 놓은 제약을 해제하는 행위
- 용어찾기 ! 제목을 뭐라짓지
- Parsing
: 하나의 프로그램을 런타임 환경(예를 들면, 브라우저 내 자바스크립트 엔진)이 실제로 실행할 수 있는 내부 포맷으로 분석하고 변환하는 것을 의미함
- LAN Tapping
: 처음 들어보는 용어이고, 찾아도 제대로된 정의가 나오지 않으나 Lan+Tapping으로 해석한다면 LAN신호를 직접 자신에게 끌어오는 방식의 공격정도로 해석 가능함
- Switch Jamming
: 스위치의 기능이 방해 받아 정상 동작을 하지 못해 스위치가 더미 허브처럼 작동 하게 되는 것 (MAC주소를 흘려보내 더미허브처럼 자도하는 것)
-> Switch + Jamming(방해)
- FTP(SYN) Flooding
: TCP의 3 Way Handshake 취약점을 이용한 DoS 공격으로 다량의 SYN패킷을 보내 백로그큐를 가득 채우는 공격 (취약점을 이용한 디도스 공격!)
: 통상적으로 위의 공격법을 TCP SYN Flooding 이라고 칭하는 경우가 많음
: FTP프로토콜을 사용한 서버에 다량의 SYN 패킷을 보내 마비시키는것을 FTP Flooding이라고 볼 수 있음.
- 스토리지 시스템
- DAS : 직접 연결 저장장치 -> 데이터 저장장치를 호스트버스 어댑터에 직접연결하는 방식!
- NAS : 네트워크 결합 스토리지
- NFC : 근거리 무선 통신
- 블루투스 공격
- 블루버그: 블루투스 장비사이의 취약한 연결 관리를 악용한 공격
- 블루스나프(블루스나핑): 블루투스의 취약점을 활용하여 장비의 파일에 접근하는 공격으로 OPP를 사용하여 정보를 열람
- 블루재킹: 블루투스를 이용해 스팸처럼 명함을 익명으로 퍼뜨리는 것
- 블루프린팅(BluePrinting) - 블루투스 공격 장치의 검색 활동을 의미
-
시스템 종류?
Honeypot : 비정상적 접근의 탐지를 위해 의도적으로 설치해 둔 시스템, 침입자를 속여 실제 공격처럼 보여주며 크래커를 추적 및 공격기법의 정보를 수집하는 역할을 함.
Apache : 월드 와이드 웹 컨소시엄(W3C)에서 사용하고 아파치 소프트웨어 재단에서 관리 및 운영하는 서버용 오픈소스 소프트웨어(아파치!!)
Hadoop : 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
MapReduce : 대용량 데이터를 분산 처리하기 위한 목적으로 Google에 의해 고안된 프로그래밍 모델
-
파이썬 기반의 웹크롤링 프레임 워크 = Scrapy (가볍고 확장성 좋음)
그외
Li-fi : 스펙트럼의 빛을 이용한 5세대 이동 통신 기술
SBAS(위성항법보강시스템) : GPS의 오차를 보정해 신뢰성과 안정성을 높인 기법
CrawlCat : 구글에서 개발한 웹 크롤링 도구로, 웹사이트를 탐색하고 페이지의 구조와 링크를 파악하여 데이터를 수집함.
- 입력 데이터의 보안 약점
- 크로스사이트 스크립트 : 검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행
- 운영체제 명령어 삽입 : 운영체제 명령어 파라미터 입력 값이 적절한 사전검증을 거치지 않고 사용되어 공격자가 운영체제 명령어를 조작
- SQL 삽입 : 사용자의 입력 값 등 외부 입력 값이 SQL 쿼리에 삽입되어 공격
- 자원 삽입 : 자원을 조작할 수 있는 문자열을 삽입해 시스템이 보호하는 자원에 임의로 접급할 수 있는 취약점
27.FAT와 NFAT
FAT
- DOS때부터 사용되던 윈도우의 파일시스템
- 저용량에 적합, 호환성이 좋음, 저장가능한 파일의 최대크기가 4GB
NTFS
- FAT시스템을 대체하기 위해 개발된 윈도우 파일 시스템
- 사용자마다 다른 보안 적용 가능 즉 보안이 FAT보다 뛰어남
- 대용량 저장 가능 및 안정성이 뛰어남
- 리눅스의 파일 생성 권한
리눅스의 초기 권환을 설정할 때 파일인 경우 666/ 디렉터리 일경우 777에서 해당 값을 빼면됨. 뺐을 때 앞자리가 0이면 0을 붙이는 것이 umask값임.
- 로그파일
wtmp
- 성공한 로그인/로그아웃 정보를 담고 있는 로그파일
- var/log/wtmp에 위치
- last 명령어 사용
1,2,3 전부 없는 명령어이다.
utmp
- 현재 로그인 사용자 상태 정보를 담고 있는 로그파일
btmp
- 실패한 로그인 정보를 담고 있는 로그파일
last log
- 마지막으로 성공한 로그인 정보를 담고있는 로그파일
-
상향식 비용 산정 기법 중 LOC(원시 코드 라인 수) 기법에서 예측치 구하는 항목
낙관치, 비관치, 기대치(낙비기)
예측치 구하는 방법 : (낙관치+비관치+기대치*4)/6
-
PLCP(Physical Layer Convergence Procedure : 물리계층 수렴 처리)
- 논리적인 802.11 MAC 부계층과 물리적인 특성을 연결하는 역할
- 802.11 MAC 부계층이 물리적 특성에 관계없이 동작하도록 함
Traffic Distributor
- 네트워크 통신 간에 트래픽을 분배해주는 솔루션
DPI(Deep Packet Inspection 내부 분석)
- 네트워크에서 전송되는 패킷의 헤더와 페이로드 내 정보를 분석하는 컨텐츠 내용 분석 기술
- 네트워크 보안, 관리, 컨텐츠 관리 등이 목적
-
나선형 모델(Spiral Model)
- 소프트웨어 개발 프로세스를 위험 관리(Risk Management) 측면에서 본 모델이다.
- 시스템을 여러 부분으로 나누어 여러 번의 개발 주기를 거치면서 시스템이 완성된다.
- 요구사항이나 아키텍처를 이해하기 어렵다거나 중심이 되는 기술에 문제가 있는 경우 적합한 모델이다.
- 점진적으로 개발이 반복되기에 위험분석 및 계획 수립 이후 추가적 위험 분석이 가능하다.
- 소프트 웨어 생명주기 모델 중 V모델
: 소프트웨어 개발 프로세스로 폭포수 모델의 확장된 형태 중 하나로 볼 수 있다
- 폭포수 모델의 변형
- 작업과 결과 검증에 초점을 둠
- Perry에 의해 제안, 세부적인 테스트 과정으로 구성돼 신뢰도 높은 시스템 개발에 효과적
검증(Verification)단계
1. 요구사항 분석
2. 시스템 설계
3. 아키텍처 설계
4. 모듈 설계
- 개념찾기! 두둥
<문제 해설>
StackGuard
- Stack 상에 일정한 주소번지에 프로그램이 선언한 canary를 심어 두어, 스택의 변조 된 경우에, canary를 체크하여 프로그램이 비정상적으로 종료 시키는 기법
(비정상적으로 종료)
Docker
- 컨테이너 응용프로그램의 배포를 자동화 하는 오픈소스 엔진
- SW 컨터에이너 안의 응용 프로그램들을 배치시키는 일을 자동화해 주는 오픈소스 프로젝트 이자 소프트웨어
(배포자동화 + 소프트웨어)
Cipher Container
- 자바에서 암호화 복호화 기능을 제공하는 컨테이너
Scytale
- 암호화 기법으로 단순하게 문자열의 위치를 바꾸는 방법
- DES는 64비트의 암호화 알고리즘이지만 7비트마다 오류검출을 위한 정보가 들어가기에 실질적인 것은 56비트임.
즉, 블록크기는 64비트 키 길이는 56비트
AES는 암호화 알고리즘은
AES-128, AES-192, AES-256로 나뉘어지며 숫자는 비트수!
- 소프트 웨어 개발방법론의 테일러링 (Tailoring)
프로젝트 상황 특성에 맞게 정의된 소프트웨어 개발 방법론 절차, 사용기법 등을 수정 및 보완하는 작업
- 프로젝트에 최적화된 개발 방법론을 적용하기 위해 절차, 산출물 등을 적절히 변경하는 활동이다.
-관리 측면에서의 목적 중 하나는 최단기간에 안정적인 프로젝트 진행을 위한 사전 위험을 식별하고 제거하는 것이다.
-기술적 측면에서의 목적 중 하나는 프로젝트에 최적화된 기술 요소를 도입하여 프로젝트 특성에 맞는 최적의 기법과 도구를 사용하는 것이다.
- 정보 보안 시스템
- 강제접근통제(Mandatory Access Control), 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식
즉, 보안레이블에 기초해 높은 보안 수준을 요구하는 정보가 낮은 보안 수준의 주체에게 노출되지 않도록 하는 접근제어방법
- 임의접근통제(Discretionary Access Control), 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식
- 사용자계정컨트롤(User Access Control), 프로그램에서 관리자 수준의 권한이 필요한 작업을 수행할 때 사용자에게 알려서 제어할 수 있도록 돕는 기능
- 자료별 접근통제(Data-Label Access Control > Label-Based Access Control), 개별 행, 열에 대해 쓰기 권한, 읽기 권한을 가졌는지를 명확하게 결정하는 제어 방식
-
오픈 소스 소프트 웨어 라이브러리
타조 => 하둡기반 데이터 웨어하우스 시스템
포스퀘어 => 위치기반 소셜 네트워크 서비스
템서플로=> 구글브레인팀에서 제작해 공개한 머신러닝을 위한 오픈 소스
-
PaaS-TA
한국지능정보사회진흥원(NIA)가 지원하는 개방형 클라우드 플랫폼입니다
-> 국내 IT 서비스 경쟁력 강화를 목표로 개발되었으며 인프라 제어 및 관리 환경, 실행 환경, 개발 환경, 서비스 환경, 운영환경으로 구성되어 있는 개방형 클라우드 컴퓨팅 플랫폼
클라우드 컴퓨팅 플랫폼 : Iaas(Infrastructure), Paas(platform), Saas(software), Baas(block chain)가 있음
- 정보 보안을 위한 접근 제어와 관련된 설명
- 적절한 권한을 가진 인가자만 특정 시스템이나 정보에 접근할 수 있도록 통제
- 시스템 및 네트워크에 대한 접근 제어의 가장 기본적인 수단은 IP와 서비스 포트
- 네트워크 장비에서 수행하는 IP에 대한 접근 제어로는 관리 인터페이스의 접근제어와 ACL(Access Control List) 등이 있음
42.VLAN(Virtual Local Area Network)
물리적 배치와 상관없이 논리적으로 LAN을 구성하는 것
=> 보드캐스트 도메인을 구분할 수 있게 하는 기술! 접속된 장비들의 성능향상과 보안성을 증대하는 효과가 있음.
STP(Spanning Tree Protocol)
: 2개 이상의 스위치가 여러 경로로 연결될 때,
무한 루프 현상을 막기 위해서 우선순위 따라 1개의 경로로만 통신하도록 하는 프로토콜
ARP(Address Resolution Protocol)
: 네트워크 상에서 IP 주소를 물리적 네트워크 주소로 대응(bind)시키기 위해 사용되는 프로토콜,
(IP를 MAC주소로 바인딩)
- 비대칭 암호화 방식으로 소수를 활용한 암호화 알고리즘
REA
DES,AES는 대칭키 암호화
=> 이게 맞는지 잘모르겠음.
SMT
- IT스토리지 기술중 소프트웨어 정의 스토리지 (Software-defined storage) (SDS)
: 스토리지에 가상화를 적용, 소프트웨어로 전체 스토리지 자원을 관리하여 하나의 저장장치럼 사용할 수 있도록 하는 기법
-
랜선웨어(RansomWare)
Ransom(몸값)과 Ware(제품)의 합성어로서 악성코드의 일종
암호키 없이 개별적으로 복호화하는 것은 불가능에 가까움
사이버 범죄!!! 금전요구!! 나빠!
-
MQTT 프로토콜 (Message Queuing Telemetry Transport)
- IBM 개발
- 발행/구독 프로토콜
- TCP/IP를 통해 실행되어 기본 네트워크 연결을 제공
그렇다면 이건 무슨 뜻일까?
-
MLFQ(=MFQ)(Multi Level Feedback Queue) : 짧은 작업이나 입출력 위주의 프로세스에 우선순위를 부여하는 선점형 스케줄링 기법
-
Zigbee : 홈 네트워크 및 무선 센서망에서 사용되는 기술로, 버튼 하나의 동작으로 집안 어느 곳에서나 전등 제어 및 홈 보안 시스템을 제어관리하는 가정 자동화를 목표로 출발하였음.
-
SSO - Single Sign On
: 여러시스템 중 하나의 시스템에 인증을 성공하면 다른 시스템의 접근 권한도 모두 얻는 방식을 말함.
-
salt
: 시스템에 저장되는 패스워드들은 Hash 또는 암호화 알고리즘의 결과 값으로 저장되는데 그때 암호 공격을 막기 위해 다른 암호값으로 저장되도록 추가되는 값의 의미이다. 소금을 바친다~~ 암호공격을 막기위해 소금을 줄테야! 임
-
침입탐지 시스템(IDS : Intrusion Detection System)
이상탐지(Anomaly Detection) -> Behavior, Statistical Detection로 불리며 평균적 시스템의 상태 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알려줌. 감지가 되었을때 알려주는것임.
- HIDS(Host-Based Intrusion Detection)는 운영체제에 설정된 사용자 계정에 따라 어떤 사용자가 어떤 접근을 시도하고 어떤 작업을 했는지에 대한 기록을 남기고 추적한다.
- NIDS(Network-Based Intrusion Detection System)로는 대표적으로 Snort가 있다.
-외부 인터넷에 서비스를 제공하는 서버가 위치하는 네트워크인 DMZ(Demilitarized Zone)에는 IDS가 설치될 수 있다.
- COcomo model : 비용산정 방식(LOC 수학산정기법) (
Organic: 5만 라인 이하의 프로젝트에 적합, 소규모 팀이 개발에 사용
Semidetached: 30만 라인 이하의 프로젝트에 적합, 트랜잭션 처리시스템 등
Embeded: 30만 라인 이상의 프로젝트에 적합, 하드웨어가 포함된 실스간 시스템 등
- Putnam 모델 : Rayleigh-Norden 곡선의 노력 분포도를 이용한 비용 산정 기법
- 기능 점수 모델 : 기능 점수를 산출하여 비용 산정
51.waterfall Model 폭포수 모델
- 고전적 생명주기 모델
- 요구사항의 변경이 어려움(각단계 결과가 확인되야 다음단계로 넘어갈 수 있음)
- 그래서 나선형 (Sprial model)로 폭포수 타입의 장점에 위험성 분석을 추가했다!
- 나선형 모델(spiral Model)
- 비교적 대규모 시스템에 적합함
- 개발 순서는 계획 및 정의- 위험 분석 - 공학적 개발 - 고객평가 순임
- 소프트웨어 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것 목적으로 함
- 여러번 개발과정을 거쳐 점진적으로 개발과정이 반복되기에 추가, 누락사항은 첨가가능함.