소프트웨어 생명 주기
폭포수 모델 : 고전적 모델, 변경 어려움
프로토타이핑모델 : 견본품을 만들어 피드백 반영. 최종 결과물 예측
나선형 모델: 점진적 개발 과정.
반복적 모델:병렬적으로 개발 후 통합. 반복적 개발
소프트웨어 개발 방법론
구조적 방법론: 전제 시스템을 나눠 개발, 통합하는 분할-정복 방식의 방법론, 니씨 슈더만 차트 이용
정보공학 방법론: 정보 시스템 개발에 필요한 정차를 체계화한 방법론
객치지향 방법론: 객체라는 단위로 시스템을 설계
컴포넌트 방법론: 컴포넌트를 조힙해 작성
애자일 방법론: 절차보다 사람 중시 변화에 유연하고 신속하게 대비 ex) XP, 스크럼, 칸반, 크리스탈, 린
제품계열 방법론: 제품에 적용할 공통 기능을 정의하여 개발 (임베디드 소프트웨어 작성에 유용)
XP의 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중
원리 : 짝 프로그래밍, 공동 코드 소유, 지속적인 통합. 계획 세우기, 작은 릴리즈, 메타포어, 간단한 디자인. 테스트 기반 개발,리팩토링, 40시간 작업, 고객 상주, 코드 표준
스크럼:
백로그, 스프린트, 스크럼 미팅, 스크럼마스터, 스프린트 회고, 번다운 차트
디자인 패턴 유형
생성
빌더 Builder: 작게 분리된 인스턴스를 건축하듯 조합하여 객체 생성. 객체의 생성 과정과 표현 방법을 분리 -> 동일 객체 생성에서도 다른 결과를 만들어 낼 수 있음
프로토타입 Prototype:원본 객체를 복제하는 방법으로 객체를 생성
팩토리 메서드Factory Method: 생성할 객체의 클래스를 국한하지 않고 객체를 생성. 상위 클래스에서 인터페이스만 정의. 실제 생성은 서브 클래스가 담당
추상 팩토리 Abstract Factory: 인터페이스를 통해 서로 연관, 의존하는 객체들의 그룹으로 생성하는 객체들의 그룹으로 생성하여 추상적으로 표현. 연관된 서브 클래스를 묶어 한번에 교체하는 것 가능
싱글톤 Singleton : 전역 변수 사용하지 않음. 한 클래스에 한 객체만 존재. 생성된 객체는 어디서든지 참조 가능. 여러 프로세스가 동시에 참조할 수는 없다.
구조
브리지 Bridge: 구현부에서 추상층을 분리 -> 서로 독립적으로 확장할 수 있도록 구성한 패턴. 기능과 구현을 두 개의 별도의 클래스로 구현
프록시 Proxy: 실체 객체에 대한 대리 객체를 사용, 메모리 아끼고 정보은닉 가능
퍼사드 Facade: 더 상위의 인터페이스를 구현, 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴. 통합된 인터페이스 제공
플라이웨이트 Fly weight: 모두가 갖는 요소를 클래스화 해 공유. 클래스의 경량화
컴포지트 Composite: 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용. 복합 객체 안에 복합 객체가 포함되는 구조 구현 가능
데코레이터 Decorator: 객체 간 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴. 임의의 객체에 부가된 기능을 추가하기 위해 다른 객체들을 덧붙이는 방식으로 구현
어댑터 Adapter: 기본에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 인터페이스 패턴/ 클래스 패턴
행위
중재자 Mediator: 중재자를 만들어 중재자에게 모든 것을 요구, 복잡한 상호작용을 캡슐화
인터프리터 Interperter: 언어의 다양한 해석을 맡는 클래스를 각각 작성해 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
이터레이터 Iterator: 컬렉션 구현 방법을 노출하지 않으면서 그 집합테 안에 들어있는 모든 항목에 접근 할 수 있는 방법을 제공
템플릿 메소드 Template Method: 작업 처리 일부분을 서브 클래스로 캡술화해 전체 수행 구조는 바꾸지 않으면서 특정 단계 수행 내역을 바꾸는 패턴
옵저버 Observer: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에 연락이 가고 자동으로 내용이 수정되는 방식
상태 state: 객체 싱태를 캡슐화 하여 클래스화함으로써 그것을 참조하게 하는 방식. 상태에 따라 다르게 처리 할 수 있도록 행위 내용 변경 가능
방문자 Visitor: 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행함
커맨드 Command: 요청을 객체 형태로 캡슐화.재이용하거나 취소할 수 있도록 요청에 필요 정보를 저장하거나 로그를 남기는 패턴
전략 Strategy: 알고리즘 정의 후 각각 하나의 클래스 캡슐화 필요할 때 서로 교환해서 사용.행위 객체를 클래스로 캡슐화해 동적으로 자유롭게 변환
메멘토 Memento: 객체를 이전의 상태로 복구 시켜야 하는 경우.작업취소 Undo 요청
책입 연쇄 Chain of responsibility: 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴. 요청을 처리할 수 있는 각 객체들이 고리들로 묶여 있어 요청이 해결될 때 까지 고리를 따라 책임이 넘어감
OSI 7계층
Application 응용 : 인터페이스 담당 HTTP FTP
Presentation표현: 데이터의 변환, 압축, 암호화 JPEG, MPEG
Session 세션: 응용 프로그램 간의 연결을 성립하게 하고 연결이 안정되게 유지 관리, 작업 완료 후 연결 끊음 SSL/STL
Transport 전송 :종단과 종단 사이 오류 수정과 흐름 제어 혼잡제어 수행. 신뢰성. TCP, UDP
Network 네트워크 :최종 목적지까지의 최적의 경로 IP. ICMP
Datalink 데이터 링크 : 노드와 노드 사이 데이터를 전송, 상위 계층이 물리 계층을 정상적인 상태로 인식 할 수 있도록 도와줌 이더넷
Physical 물리: 0,1비트. 기계적, 전기적 RS-232C
트랜잭션 특징 ACID
원자성 Atomicity: all or nothing 연산 전체가 모두 저장 되거나 모두 취소 되어야 하는 특성
일관성 Consistency : 트랜잭션 성공 후 일관된 데이터베이스 상태를 보존해야하는 특
격리성 Isolation : 트랜잭션 연산 중에 다른 트랜잭션이 접근 할 수 없어야 함
영속성 Durability: 성공이 완료된 트랜잭션의 결과는 계속적으로 데이터베이스에 저장함
요구공학 개발 단계 : 도출 - 분석 - 명세 - 확인
요구공학 관리 단계 : 협상 - 기준성 설정 - 변경관리 - 확인 및 검증
uml다이어그램
구조적
클래스 : 클래스의 속성 및 연산과 클래스간의 정적인 관계 표현
객체: 객체와 객체 사이의 관계
컴포넌트: 컴포넌트와 그들 사이의 의존 관계
배치: 컴포논트 사이의 종속성, 몰리적 요소들의 위치
복합체 구조: 클래스나 컴포넌트가 복합 구조를 갖는 경우
행위
유스케이스: 기능과 관련 외부 요소를 사용자 관점에서 표현
시퀀스: 객체간 동적 상호작용을 시간적 개념 중심으로 메시지 흐름으로 표현
커뮤니케이션: 객체들이 주고받는 메시지와 객체 간 연관 표현
상태: 하나의 객체가 자신이 속한 클래스의 상태변화 혹은 다른 객체와의 상호장굑에 따라 어떻게 변화하는지 표현
활동: 시스템이 어떤 기능을 수행하는지, 객체의 처리 로직이나 조건에 따른 처리 흐름을 순서대로 표현
타이밍: 객체 상태 변화와 시간 제약을 명시적으로 표현
관계대수연산자
일반집합연산자 : 합집합U (전체), 교집합 뒤집힌 U(공통), 차집합 - (전자에만 존재하고 후자에는 없음), 카티션 프로덕트 X(전자와 후자에 속한 모든 튜플 연결)
순수관계연산자 :select 조건만족하는 튜플 반환 (시그마 ), Project 속성리스트 (파이), Join 공통속성 반환 (보타이), Division관련 튜플 반환 (나누기 )
EAI( 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간 연계를 돕는 솔루션)
구성요소
어댑터: 핵심 장치, 입출력 도구
브로커:데이터 포맷과 코드를 변환하는 솔루션
메시지큐: 사용하는 다른 응용 프로그램사이에서 데이터를 송수신하는 기술
유형
포인트 투 포인트: 1:1 단순 통합 방식
허브 앤 스포크 : 단일한 접점의 허브 시스템을 통하여 데이터 전송, 중앙 집중 방식
메시지 버스 : 앱 사이 미들웨어를 두어 연계하는 미들웨어 통합 방식 , 대용량에 적절
하이브리드: 그룹 내는 허브앤스포크, 그룹 간은 메시지버스
인터페이스 관련:
Json: 키값쌍으로 이루어진 데이터를 전달하기 위해 인간이 읽기 쉽게
Ajax: 서버 클라이언드 간 비동시적으로 데이터를 교환하기 위한 기술
XML: HTML의 단점 보완. 특수 목적 마크업언어
REST: HTTP URI 자원을 표시 HTTP 메서드를 통해 해당 자원에 대한 삽입 삭제갱신 등의 명령을 적용하는 아키텍쳐
IPSec: 3 네트워크계층에서 사용하는 보안 프로토콜
SSL/TSL: 4전송계층과 7응용계층 사이에서 안전한 데이터 전송을 보장하는 보안 프로토콜
S-HTTP: 클라이언트 서버 간 메시지를 암호화하는 보안기술
추상클래스 : 유사 클래스들의 공통된 특성을 정의, 하나 이상의 추상 메서드와 일반 필드, 메서드를 포함하는 클래스
오버라이딩: 부모에게 상속받은 메서드 재정의
오버로딩: 한 클래스 내에서 메서드를 중복해서 생성하는 것
상속Inheritance: 객체 지향 개념에서 이미 정의되어 있는 상위 클래스의 메소드 등 모든 속성을 하위 클래스가 물려받는 것
캡슐화:객체의 속성과 행위를 하나로 묶고 실제 구현 내용 일부를 외부에 감추어 은닉
병행제어 미보장시 문제점 : 갱현모연
갱신손실 lost Update, 현황파악오류 Dirty read, 모순성 Inconsistency, 연쇄복귀 Casading Rollback
회복기법 :회로체크
로그기반기법
지연 갱신 회복 기법: 트랜잭션 완료 전에는 로그에만 기록, 장애 발생 시 로그 폐기
즉각 갱신 회복 기법: 트랜잭션 갱신 결과를 바로DB 에 기록, 장애 발생시 로그 참고
체크포인트회복기법: 체크포인트 이전으로 복원
그림자페이징회복기법: 트랜잭션 수향 시 복제본을 생성해 이를 이용해 복구
형상관리 : 식통감기
형상식별, 형상통제, 형상감사. 형상기록
응집도 Cohesion(낮->높)
우연적 Coincidental: 모듈 내부의 각 구성요소들이 연관 없음 (낮)
논리적 Logical: 유사한 성격, 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리
시간적 Temporal:특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우
절차적 Procedure:모듈이 다수의 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적 수행
통신적 Communication:동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있음
순차적 Sequential:모듈 내에서 한 활동으로부터 나온 출력 값을 다른 활동이 사용할 경우
기능적 Functional:모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경
결합도 Coupling(높음 -> 낮음)
내용결합도: 다른 모듈 내부에 있는 지역 변수나 기능을 다른 모듈에서 사용하는 경우
공통: 모듈 밖에서 선언된 전역 변수를 참조 갱신하는 등 상호 작용
외부: 두 개의 모듈이 외부에서 도립된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유
제어: 단순 처리할 대상인 값과 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우
스탬프: 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
자료: 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈간의 상호작용
정보보안 3요소
기밀성 confidentiality: 인가받지 않은 사용자 혹은 시스템 접근에 따른 정보 공개 및 노출 차단
가용성 Availabilty: 권한을 가진 사용자는 서비스를 지속해서 사용 할 수 있어야
무결성 Intergrity: 정당한 방법을 따르지 않고서는 데이터가 변경 될 수 없음.
DOS서비스 거부 공격: 시스템을 악의적으로 공격해 시스템 자원을 고갈시켜 이용할 수 없게 만듦
SYN flooding : 3 way hand shakes 과정을 의도적으로 중단
UDP Flooding : 대량의 UDP 패킷을 만들어 임의의 포트 번호로 전송, 응답 메세지를 생성하게 해 자원 고갈시킴
스머프, 스머핑: 출발지 주소를 공격 대상의 IP로 설정,네트워크 전체에 ICMP Echo패킷을 직접 브로드캐스팅하여 타켓 시스템 마비
죽음의 핑 : 큰 사이즈의 패킷을 지속적으로목표 시스템에 발생시켜 서비스 마비 시킴
랜드어택: 출발지ip주소와 도착지 ip주소를 동일하게 설정해 동작 마비
티어드롭: ip패킷의 재조합 과정에서 잘못된 Fragment offset 정보로 인해 수신 시스템의 문제 발생
봉크 : 시스탬 패킷 재전송과 재조립이 과부하를 유발하게 하는 공격 기법
DDOS
Trinoo: udp flooding 공격도구
TFN: 여러 공격이 가능한 도구
Stacheldraht: 에이전트 역할을 하는 도구
세션 하이재킹 : tcp의 세션 관리 취약점을 이용한 공격 기법
애플리케이션 공격
HTTP GET Floding : 과도한 get 메시지를 이동하여 웹 서버에 과부하를 유발시키는 공격
slowloris: 헤더의 최종 끝을 알리는 개행 문자열을 전송하지 않아 연결 상태를 지속시켜 자원 고갈
RUDY:요청 헤더의 content - length를 비정상적으로 크게 설정, 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태를 유지하는 공격
Slow Http Read Dos: TCP원도 크기와 데이터 처리율을 감소시킨 상태에서 다수 HTTP 패킷을 지속적으로 전송. 연결자원 소진
Hulk Dos: 공격자가 공격대상 URL을 계속 변경하면서 다량의 GET 요청을 보내는 공격
Hash Dos:웹 서버의 해시 테이블에 해시 충돌을 일으켜 자원을 소모시키는 공격
네트워크 공격
스니핑 : 직접 공격하지 않고 데이터만 몰래 봄
네트워크 스캐너/ 스니퍼 : 공격도구
사전 크래킹 = 사전 대입 공격: 가능성 있는 단어 대입
무차별 대입 공격:
레인보우 테이블 공격: 패스워드별로 해시값 생성
스푸핑: 승인받은 사용자 인 것 처럼 접근헤 허가된 주소로 가장, 접근 제어 우회하는 공격기법
ip 스푸핑, ARP 스푸핑, 트로이목마
ICMP Redirect: 3계층에서 스니핑 시스템을 네트워크에 존재하는 또다른 라우터라고 알려 패킷의 흐름을 바꿈
버퍼오버플로우: 할당된 메모리에 버퍼 크기를 초과하는 데이터를 입력헤해 프로세스 흐름을 변경시키는 공격
스택 버퍼 오버 플로우, 힙 버퍼 오버플로우
XSS: 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지를 열 때 부적절한 스크립트가 실행되는 공격
사이트간 요청 위조 CSRF:사용자가 자신의 의도와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하는 공격기법
SQL Injection: 외부에서 SQL 쿼리를 삽임해 시스템 권한을 획득하거나 데이터를 훔치는 공격기법
접근 통제 방법:
임의적 접근 통제 DAC : 접근을 사용자/ 그룹 신분을기준으로 제한
강제적 접근 통제 MAC: 객체에게 부여된 허용 등급을 비교해접근을 통제
역할기반 접근 통제RBAC: 조직 내에서 맡은 역할에 기초하여 자원에 대한 접근 허용 여부를 결정하는 방법
대칭키 암호화 방식 :
DES: 미국표준 nist 블록 암호 알고리즘. 블록크기 64bit, 키 길이 56bit 인 페이스텔 구조. 16라운드 반복
3DES:암호화키 2개를 사용
AES:DES의 대안. 전사공격 가능. 키 길이에 따라 128, 192, 256으로 분류
SEED: 한국 인터넷 진흥원KISA 에서 개발.
ARIA:아카데미, 연구기관,정부
IDEA: 스위스 연방 기술 기관에서 개발
RC4:스트림암호
LFSR:시프트 레지스터의 일종
비대칭키 암호 방식
디피-헬만: 최초의 공개키 알고리즘, 유한 필드 내에서 이산 대수의 계산이 어려운 문제를 기본 원리로 둠.
RSA: MIT 교수 세 명,소인수 분해하는 알고리즘
DSA: 이산대수의 어려움을 안전성의 바탕으로 개발
ECC: 이산 대수의 문제에 기초한 공개키 암호화 알고리즘. 타원 기반 구조체의 안전성과 효율성 기반으로 생성
ELGamal:이산 대수의 어려운 문제를 기본 원리로 하고 있음. 전자서명서 사용
해시 암호 방식
MD5: MD4개선. 무결성 검사에 사용
SHA:1993, NSA 미국 국가 표준으로 발표. DSA에서 사용
SHA-256/384/512: AES에 대응하도록 출력 길이를 늘인 해시알고리즘
HAS-160:국내 표준 디지털 서명 알고리즘을 위해 개발, MD5+SHA1
HAVAL:다이제스트를 출력하는 해시 알고리즘
라우팅 프로토콜: 송수신측 간의 전송 경로 중 최적 패킷 교환 경로를 설정하는 기능
RIP: 인접한 라우터와 라우팅 정보를 교환하는 거리벡터 라우팅. 홉 카운트 15
OSFP: 홉수제한 없음. 랑크상태 라우터.
BGP: snumber가 서로 다른 네트워크 간에 라우팅 정보를 주고 받을 때 사용하는 외부 프로토콜
BCP비즈니스 영속성 계획
BIA Busimess Impact Analysis: 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정해 시간 흐름에 따른 영향도 및 손실 평가하는 BCP를 구축하기 위한 비즈니스 영향 분석
RTO Recovery time objective: 업무 중단 시점부터 업무가 복구되어 다시 가동될때 까지의 시간,재해시 복구 목표의 시간 설정
RPO Recovery Point Objective: 업무 중단 시점으로부토 데이터가 복구되어 다시 정상가동 될 때 데이터의 손실 허용 시점. 재해시 복구 목표 지점의 선정
DRP Disaster Recovery Plan : 재난으로 장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획
DRS Disaster Recovery System: 재해복구 계획의 원활한 수행을 지원하기 위하여 평상시에 확보해두는 인적,물적 자원 에 대한 지속적인 관리체계가 통합된 재해복구센터
IDS: 네트워크에 대한 공격을 실시간으로 탐지하는 시스템
IPS: 네트워크에 대한 공격을 실시간으로 차단 및 능동적으로 대응하는 시스
블랙박스 : 동등분할, 경곗값분석, 결정테이블, 상태전이, 유스케이스, 분류트리, 페어와이즈, 원인결과, 비교
화이트박스: 구문,결정,조건, 조건/결정,변경 조건/결정, 다중조건, 기본겨오 커버리지, 제어흐름, 데이터흐름 테스트
성능 테스트
부하 테스트:부하 증가, 시스템의 임계점 테스트
스트레스: 부하 가해 비정상적인 상황에서의 처리를 테스트
스파이크: 짧은 시간 많은 사용자 반응 측정
구성: 오랜시간 동안 시스템에 높은 부하를 가함
선점 스케줄링 알고리즘
SRT: 가장 짧은시간이 소요되는 프로새스 먼저 실행
다단계 큐: 큐 생성. 프로세스 할당
다단계 피드백 큐 : 큐 생성, 무조건 첫 큐 할당
라운드로빈: 균등한 시간 할당.처리 실패시 뒤로
비선점 스케줄링 알고리즘
우선순위: 주요/ 긴급 프로세스에 대한 우선처리
기한부:
HRN: 응답률 높은 것 선택, 기아현상 최소화
FCFS: 도착한 순서대로 처리
SJF: 도착 시점에 따라 가장 작은 서비스 시간을 갖는 프로세스가 끝날 때까지 점유
'정보처리기사' 카테고리의 다른 글
정보처리기사: 데이터베이스 구축 (0) | 2025.01.11 |
---|---|
정보처리기사 실기 데이터베이스 (1) | 2023.10.03 |
정보처리기사 실기 정리 (0) | 2023.10.01 |
정보처리기사 실기 정리 (0) | 2023.09.28 |
정보처리기사 (0) | 2023.09.24 |