- job automation : bash | powershell | python | go | typescript
- iac : ansible | terraform, aws cdk, cloudformation
- OS : windows | linux
- Network : L2 ~ L7
- CI/CD : gihub | gitlab | jenkins | bitbucket | github action | argocd
- 가상화 : k8s+container | aws | azure | gcp | openstack(너무 퉁치나;)
- monitoring : zabbix | prometheus | grafana | loki | elastic stack | scout | datadog | newrelic
- agile : jira/confluence | notion | trello | slack
- 그 외 : kafka, rabbitmq, redis, http, 각종 파이프라인 관리(fluentd, fluentbit, beats, flume) 등등…
XP12가지 방법
짝 프로그래밍
공동코드소유
지속적 통합 (ci)
계획세우기
작은릴리즈 : 작은시스템을 먼저 만들고 짧은 단위로 업데이트 해야하는 원리
메타포어: 공통적인 이름체계와 시스템 서술서를 통해 고객과 개발자간의 의사소토을 원활하게 한다는 원리
간단한 디자인(심플 디자인)
테스트 기반 개발 (TDD) : 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성하는 원리
리팩토링 : 프로그램의 기능을 바꾸지 않으면서 중복제거,단순화 등을 위해 시스템 재구성
40시간 작업
고객상주
코드표준
객체 : 속성 (값) + 메서드(연산)
객체지향 구성요소 : 클랙매매인속
클래스 :일종의 틀 = 붕어빵 틀
객체 : object = 붕어빵
메서드 : 객체를 사용하는 방법( 함수 + 프로시저에 해당) 프로시저는 함수랑 같은데 순서대로 실행하는 게 프로시저는
메시지 : 객체간 상호작용하기 위한 수단
인스턴스 : 실제의 실형 객체 (메모리상에 할당)
속성 : 데이터 값들을 단위별로 정의
객체지향 기법
캡상 다추정관
캡슐화 : 서로 연관된 데이터와 함수를 함께 묶어 외부와 경계를 만들고 필요한 인터페이스만을 밖으로 드러내는 기법
정보은닉 관계과 깊음, 결합도가 낮음
상속성 : 하위 클래스에서 재정의 없이 물려받음
다형성 : 오버로딩, 오버라이딩
추상화 : 공통 성질을 추출하여 추상 클래스를 설정
정보은닉 : side-effect 최소화
관계성 : 관계를 나타냄
객체지향설계원칙 (solid)
단일책임의 원칙(srt) : 하나의 클래스는 하나의 목적을 위해서 생성
개방폐쇄 원칙(ocp) :소프트웨어의 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야한다는 원칙
리스코프치환의 원칙(lsp) : 서브타입 (상속받은 하위 클래스) 은 어디서나 자신의 기반 타입(상위클래스)으로 교체할 수 있어야 한다.
인터페이스 분리의원칙 (isp) : 관계없는 부분이 변해도 영향을 안 받는 원칙
의존성 역전의 원칙 (dip) : 실제 사용 관계는 바뀌지 않으며, 추상을 매개로 메세지를 주고 받음으로써 관계를 최대한 느슨하게 만드는 원칙
omt 분석절차
객체 모델링(object modeling): 정보 모델링
동적 모델링 : 시간의 흐름에 따라 객체 사이의 제어흐름, 동작순서 동적인 행위를 표현하는 모델링(Dynamic modeling)
기능 모델링 : 프로세스들의 자료 흐름을 중심으로 처리하는 과정 DFD(자료 흐름도) (functional modeling)
객삼자 -> 객체모델링/상태다이어그램/ 자료흐름도
프로젝트 관리
계획관리:
품질관리:
범위관리:
3대요소 (3P) = 사람(people) + 문제(problem) + 과정(process)
비용산정 = 하향식 + 상향식
하향식 = 전문가 판단 + 델파이기업
상향식 = 코드라인수 (loc) , man month, cocomo, putunam 등등…
man month = 한사람이 1개월동안 할 수 있는 일의 양 loc/프로그래머의 월간 생산량
cocomo = 규묘에 따라 유형이 달라짐
조직형(단순형) = organic mode = 5만줄
반분리형(중간현) = semi-detached mode = 30만줄이하
임베디드형 = embeded mode = 30만줄 이상
푸트남 = 각 단계별로 요구할 인력의 분포를 가정
fp(기능점수) : 총점수로 가중치를 부여
일정관리 = 주공정법 (cpm) , pert(비관치 중간치 낙관치), ccpm (자원제약사항 고려)
위험관리 : 프로젝트에 내재된 위험요소를 인식하고 그 영향을 분석하여 이를 관리
위험= 예측되지 않는 것
알려진 위험
예측 가능한 위험관리
예측 불가능한 위험
회전 완수 = 회피, 전가, 완화, 수용
요구사항 명세 단계 주요기법
비정형 명세 기법 = 자연어를 기반으로 서술하는 기법
정형 명세 기법 = 형태가 정해져 있는 것, 수학적 원리와 표기법으로 서술
요구사항 확인 및 검증 단계의 주요 기법
요구사항 검토 단계
정형기술검토활용기법(ftr)=동워인
동료검토 = 이해관계자들이 설명을 들으면서 결함을 발견하는 형태가
워크스루 = 회의전에 자료 배포 후 짧은 시간동안 회의해서 리뷰 (비형식적)
인스펙션 = 저작자 이외의 전문가 또는 팀이 검사하여 공식점 검토 방법
프로토타이핑
모델검증 = 모델의 품질검증
테스트 케이스, 테스트확인
베이스라인을 통한 검증 = 체계적으로 추적하고 통제하는 시점인 베이스라인을 통한 요구사항에 대한 지속적 검증
요구사항 추적표 통한 검증
NUI = 터치, 음성인식
OUI = 모든것들이 UI가 됨
ui 설계원칙 =직유학유
직관성 = 누구나 쉽게 이해 쉽게 사용하는
유효성 = 쉬운 오류 처리 및 복구, 사용자 목적을 정확하게 달성
학습성 = 쉽게 학습, 쉽게 접근
유연성 = 실수를 방지할 수 있도록 제작
ui설계지침 = 사일단결 가표점명오
사용자 중심 , 일관성, 단순성,
ui개발을 위한 주요기법
3c
swot분석
시나리오플래닝 = 다양한 시나리오를 설계하고 불확실성을제거 해나가려는 경영전략
사용성테스트 =직접 사용자가 테스트하면서, 시나리오 맞춰 과제 수행
워크숍
페르소나 =가상의 사용자
와스프
와이어프레임 = 서비스의 간략한 흐름, 화면단위레이아웃
스토리보드 =모든정보가 담겨있는 산출물
프로토타입
구조적 다이어그램
클객컴배복패 = 정적, 구조
유시커상활타 = 화살표가 많이 나옴
분석 - 유스케이스,커뮤니케이션, 활동 다이어그램
설계 - 클래스, 상태
설치 - 배치
스테레오타입은 길러멧사용
<<include>> 반드시 유스케이를 실행
<<extend>> 확장 .할 수도 있고 안 할 수도
<<interface>> 추상메서드의 일종, 선언만 함
데이터 모델= 현실계게의 정보를 인간과 컴퓨터가 이해할 수 있또록 추상화하여 표현한 모델
연관
associaion -> 실선
의존관계 dependency ---->점선
일반화 generalization 상속받는것 ->실선으로 위로 extends로
실체화관계 realization 위로 점선으로 ---> implements
포함관계 : 마름모 색칠
집합관계 : 마름모 색칙 x
구조 : 개체 타입, 데이터간의 관계과
연산 처리작업에 대한 명세
제야 조건 : 실제 데이터의 논리적인 제약조건
데이터 모델 절차 : 요개눈물
요구조건 분석 - 개념적 설계 - 논리적설계 - 물리적 설계
개념적 모델은 db종류와 관계가 없음 ERD = Entity relattion ship diagram = e-r 다이어그램
주요 산출물로 개체관계 다이어 그램이 있음
entitiy는 사각형
relathion은 마름모
논리적 데이터 모델 = 사람이 이해하기 쉽게 표현한 데이터 모델
모델에 맞계 설계 계층형, 관계형 등으로 설계
스키마 설계, 트랜잭션 인터페이스 설계
물리적 데이터 모델 = 특정 dbms 특성 및 성능에 맞게 고려하여 물리적 스키마를 만드는 데이터 모델, 반정규화 수행
논리 데이터 모델검증
관계 데이터 모델링 : 기본키(PK)와 외래키(FK)로 관계 표현
1:1, 1:N, N:N
계층적 데이터 모델링 : 상하관계과 존재 1:N만 존재
네트워크 데이터 모델 : CODASY DBTG모델이라 불림 , 그래프 형대로 구성된 모델
트리 VS 그래프
사이클X // 사이클 O
관계 데이터 모델 구성
릴레이션 = 행과 열로 구성된 테이플
튜플 = 행
속성 = 열
카디널리티 = 행의 개수
차수 = 열의 개수
스키마 = 데이터베이스의 구조, 제약조건등의 정보를 담고 있는 기본 구조
인스턴스 = 스키마에 저장된 값
관계 대수의 개념 = 대수적인 연산체계이자 절차적 정형 언어
일반 집합 연산자
합교차카 = 합집합, 교집합, 차집합, 카티션 프로덕트
합집합 = u
교집합 = n
차집합 = -
카티션 프로덕트 = x
프로젝트 = 파이
조인 = 나비넥타이
순수 관계 연산자 = 셀프조디
셀렉트 프로젝트 조인 디비전
설렉트 = 조건 만족하는 튜플 반화 ∂
프로젝트 = 속성만으로 구성된 튜플 반환 π
조인 = 공통속성이용 튜플연결 나비넥타이 문양
디비전 = R/S ÷
관계해석 = 튜플관계해석과 도메인 관계해석을 하는 비절차적 언어, 프레디킷 해석에 기반한 언어이며 비절차적 언어(= 원하는 정보가 무엇인지에 대해서만 대답)
관계대수 /관계해석을
대절해비 = 관계대수는 절차적 언어, 관계해석은 비절차적 언어
절차적언어/ 비절차적언어
how/what
순수관계, 일반집합/튜플, 도메인 관계해석
이상현상 = 릴레이션 조작 시 데이터블이 불필요하게 중복되어 예기치 않게 발생하는 곤란한 현상
이상현상 종류 = 삽삭갱
삽입이상 =
삭제이상 =
갱신이상 =
정규화 = 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상현상을 방지하고
데이터의 일관성 + 정확성을 유지하기 위한 무손실 분해과정
원부이 결다조
=부이거달조
원자화 - 부분함수종속 제거- 이행함수 종속제거- 결정자함수종속제거 - 다치종속제거 - 조인종속제거
1NF 2 NF 3NF BCNF 4NF 5NF
함수종속 = 릴레이션에서 속송의 의미와 속성 간 상호 관게로부터 발생하는 제약조건등의
함수 종속 종류
부분함수 종속 = 기본키가 복합키일 경우 기본키를 구성하는 속송중 일부에게 종속
완전함수종속 = x->y관계가 있을 때, y는 x의 전체속송에 대해 종속, 부분집학속성에 종속하지 않음
이행함수종속 = x->y, y->z 관계가 있을 떄 x->z가 성립
(transitive)
1정규화 원자화 = 원자값으로 쪼개주는 것
2정규화 = 부분 함숭 종속 제거
3차정규화 = 이행함수 제거 a ->b, b->c 이면 a->c이다
bcnf = 결정자 함수 종속, 모든 결정자가 후보 키이다.
결정하는 자는 무조건 키가 있어야 한다 = bcnf
4차정규화 = 다치종속성 제거 , 특정 속성값에 따라 선택적인 속성을 분리
5차 정규화 조인 종속성 제거 = 더 이상 쪼갤 수 없음
반정규화 = 정규화된 엔터티,속성,관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리등을 수행하는 데이터 모델링 기법
반 정규화 기법
테병분증 컬중 관중
테이블 병합/분할/중복 , 컬럼중복, 관계 중복
중복테이블 추가 기법 = 집진특 -> 집계 테이블, 진행 테이블, 특정부분만 포함하는 테이블
물리 데이터 모델링 개념 = 논리모델을 적용하고자 하는 기술에 맞도록 상세화해 가는 과정 -> 상세화가 스키마
무결성 개념 = 데이터값과 현실세계의 실제 값이 동일한지
개참속사키
개체무결성 (Entitiy ingtergrity) = 한 엔터티에서 같은 기본키를 가질수 없거나 기본 키의 속성값이 null을 허용할 수 없음
참조무결성 (referntial intergrity) = 외래 키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본 키값이나 null이어야함
속성무결성 (attribute intergrity) = 속성의 값은 기본값, null 여부, 도메인이 지정된 규칙을 준수
사용자정의 무결성(user defined ingtergrity) = 사용자의 의미적 요구사항을 준수
키 무결성(key intergrity) = 한 릴레이션에 같은 키 값을 가진 튜플들을 허용할 수 없음
리스트릭트, 카스케이드, 널값
키의 개념 = 데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성값에
유일성 = 식별자에 의해 엔터티 타입내에 모든 엔터티들의 유일하게 구분
최소성 = 최소한의 속성으로 식별자 구성
키의종류
기본키 (primary key = pk) = 테이블의 각 튜플들을 고유하게 식별하는 키
대체 키 (alternate key) = 후보 키 중에서 기본키로 선택되지 않은 키
후보 키 (candidate key) = 기본키와 대체키를 합친키
슈퍼키 = 유일성은 만족하지만 최소성을 만족하지 못하는 키
외래키 = 테이블 간의 참조 데이터 무결성을 위한 제약 조건 , 한 릴레이션의 컬럼이 다른 릴레이션의 기본키로 이용 됨
인덱스 = 검색연산의 최적화를 위해 데이터베시으 내 열에 대한 정보를 구성한 데이터 구조
결합 인덱스
파티셔닝 = 논리적인 단위로 나누어 성능 저하 방지 및 관리를 상대적으로 용이하게 만듦
파티셔닝 유형 = 레해리컴라
레인지, 해시, 리스트 파티셔닝, 컴포지티 파티셔닝(두 개이상 파티셔닝을 섞음), 라운드 로빈
데이터베이스 특성 : 실계동내
실시간 접근성, 계속적인 변화, 동시 공유, 내용 참조
HDFS 개념 = 대용량 데이터 집합을 처리하는 응용 프로그램에 적합하도록 설계된 하둡 분산 파일 시스템
맵 리듀스 = 소프트웨어 프레임워크
데이터 마이닝 = 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
Nosql = join 연산이 안 되며, 수평적 확장 가능하며, 데이터 저장 시 스키마가 필요하지 않음
eai : 서로 다른 플랫폼 및 애플리케이션 간의 정보전달, 연계, 통합을 가능하게 해주는 솔루션
WEB service /esb = 웹서비스가 설명된 wsdl 과 soap
socket
eai = 기업에서 운영되는 서로 다른 플래폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 하는 것
eai 플랫폼 = 상호운영, 메세지큐와 트랜잭션 미들웨어 기능 수행
어댑터 = 애플리케이션을 연결하는 eai의 핵심 장치로 데이터 입출력 도구
브로커 = 데이터 포맷과 코드를 변환하는 솔루션
메세지 큐 = 비동기 메시지를 사용하는 다른 응용프로그램 사이에서 데이터를 송수신하는 기술 (first-in, first out)
비지니스 워크 플로우 = workflow에 따라 업무를 처리할 수 있도록
포허메하 =
포인트 투 포인트 =1:1 단순 통합
허브앤 스포크 = 중앙에 허브를 두고 스포크로 데이터를 전송하는 방식
메세지버스 = 가운대 버스(미들웨어)를 두어 연계하는 미들웨ㅜ어 통합방식, 확장성이 용이하다
하이브리드 = 2개이상의 방식을 섞는 법
esb = 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍쳐, 주로 버스를 사용함
eai 와 esb의 차이는
eai는 기업 내부의 이기종 모듈
esb는 기업 간의 서비스 교환
웹서비스
WSDL UDDI SOAP
WSDL : 웹서비명, 제공위치, 메세지 포맷, 프로토콜 정보등 서비스 상세 정보가 기술된 xml 형식으로 구현돼 있는 언어
UDDI : 웹 서비스에 대한 정보인 WSDL을 등록하고 검색하기 위한 저장소로 공개적으로 접근,검색이 가능한 레지스트리이자 표준
SOAP : (HTTP,HTTPS, SMTP 등을 사용하여) XML 기반의 메세지를 전달하는 전송 프로토콜
네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)로 메세지를 요청하고, 서버는 메세지를 즉시 응답. 보통 HTTP위에 SOAP의 요청을 올려서 보내는 형태
SOAP은 보통 원격 프로시저 호출(RPC)을 하는 메세지 패턴을 사용한다.
simple object access protocol
IPC = 운영체제에서 프로세스간 서로 데이털을 주고 받기 위한 통신기술
메세지큐 = 메세지 또는 패킷 단위로 동작하여 프로세스간 통신기술
공유메모리 = 한 프로세스의 일부분을 다른 프로세스와 공유
소켓 = 클라이언트와 서버 프로세스 둘 사이에 통신을 가능하게 함(tcp/ip에서 사용)
세마포어 = 프로세스 사이의 동기를 맞추는 기능을 제공. 임계영역에 들어가면 접근 못하게 막음
Inter-process communication
인터페이스 모듈연계방법
대내 연계 = eai = 이기종 간의 정보 전달, 연계, 통합을 기능하게 해주는 기술 -> 어댑터를 이용해 사용
대외 연계 = esb = 이기종 간의 정보 전달, 연계, 통합 기능을 제공해주는데 다른점은 기업 간의 연계
포허메하 = 포인트 투 포인트, 허브 앤 스포크, 메세지 버스, 하이브리드
spof( single point of failover) -> 단일 지점(허브) 장애 발생 시 전체 장애가 발생할 수 있음
메세지 버스 = 중간에 미들웨어(버스)를 두어 연계하는 미들웨어 통합방식
하이브리드 = 그룹내 허브앤 스포크 방식, 그룹간 메세비 버스 방식사용
esb = 서로 다른 플랫폼 및 애플리케이션 간을 하나의 시스템으로 운영할 수 있도록 서비스 중심의 통합을 지향하는 기술
json = 속성/값 쌍 또는 키-값 쌍으로 이루어진 데이터이며, 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
name/value 쌍으로 구성, { 시작해서 } 끝남, 배열은 대괄호[ ]로 나타냄, 데이터가 가벼움
xml = html 단점을 보완하는 인터넷 언어로, sgml의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어로
트리 구조로 구성, xml은 무거움(헤드 태그를 무조건 가지고 있어야함)
ajax개념 = 자바스크립트를 사용하여 웹서버와 클라이언트 간 비동기적으로 xml 데이터를교환하고 조작하기 위한 웹 기술
rest 개념 = 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 http 메서드로 주고 받은 웹 아키텍쳐
rest 구성 = 자원(resource), 행위(verb), 표현(representation) 3가지 요소로 구성
restful = rest 등을 사용하는 서비스등을 일컫음
인터페이스 보안 방법 = 시큐어 코딩, 데이터베이스 암호화, 토인 암호화 전송
데이터베이스 암호화 기법 = 애플티하 = API 방식, Plug-in 방식, TDE 방식, Hybrid 방식사용
plug-in = db서버에서 암/복호화
tde = dbms커널에서 암/복호화를 진행
인터페이스 구현 검증 도구
엑스피 엔셀웨 = 윈도우 엑스피는 안 살래
xunit = java, c++ 등 다양한 언어를 지원하는 단위 테스트 프레임 워크
staf = 다양한 환경을 지원하는 테스트 프레임 워크, 분상환경에 데몬을 사용하여 테스트 수행, 통합하여 자동화하는 검증도구
fitness = 웹 기반 테스트 케이스/설계/실행/ 결과 확인등을 지원하는 테스트 프레임워크 + 협업 기능
ntaf = staf의 분산환경 지원 + fitness 효율적인 테스트 케이스 디자인 + 레포팅 기능을 지원
selenium = 다양한 브라우저 지원 및 개발언어를 지원 + 기능 테스트를 만들기 위한 플레이백 도구 지원
watir = ruby 기반 웹 애플리케시연 테스트 프레임워크
인터페이스 감시 도구 = 인터페이스가 잘 동작하는지 확인하고 모니터링 툴을 사용하여 동작 상태를 감지
도구 종류
scout = 애플리케이션에 대한 모니터링 및 db agent 를 통해 오픈소스 db 모니터링 기능, 인터페이스 감시 기능 제공위치
제니퍼 = 애플리케이션의 개발부터 테스트, 오픈, 운영, 안정화까지 전 생이 주기 단계동안 성능을 모니터링하고 분석해주는 apm 소프트웨어
화로테 =
0 = null
65 = A
97 = a
c언어 -> main 함수부터 시작
전처리기 종류 (preprocessor)
#include
#define
카멜 표기법 = 여러 단어가 이어지면 첫 단어시작만 소문자, 각 단어의 첫 글자는 대문자로 지정 ex ) numberCalculate
파스칼표기법 = 식별자 표기 시에 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법 ex) NumberCalculate
스네이크 표기법 = 여러 단어가 이어지면 단어 사시에 언더바를 넣는 표기법 ex) number_calculate
헝가리안 표기법 = 자료형을 붙이는 표기법, int형일 경우 n, char형일경우 c, 문자열일경우 sz ex) nNumberCalculate
전역변수 = 어떤 블록에도 속하지 않는 변수, 아무곳에서나 사용할 수 있음 , 프로그램이 시작할 때 부터 끝날 때 까지 살아있음
ex)
int a = 5;
void fn(){ a =a+3;}
void main(){ a= a+5; fn(); print("%d", a); }
지역변수 = 블록 내에서 속하는 변수 ,블록안에서 선언해주고 블록안에서 소멸 , 해당 블록안에서만 사용 가능함
static 변수 = 블록 내외부 상관없이 선언할 수 있는 변수 , static으로 붙여줘야함, 프로그램이 시작되면 생성 -> 프로그램 종료되면 소멸, 지역+글로벌 개념이 섞여있음
\n 개행, \t tab
%u = 부호 없는 10진수 정수 = unsigned decimal
%d = 10진수(decical)
%o = 8진수(octal)
%x, %X = 16진수 ( hex decimal
%e, %E = 지수표기
%f = 부동 소수점 = float
%lf = 부동 소수점 = double
[-] = 왼쪽정렬
[0] = 전체 자릿수에서 앞에 빈공간을 0으로 채움
[전체자리수] = 해당 공간 만큼 공간확보
.[소수점자리수] = 소수점 자리수만큼 출력
연산자
증산시 관비 논삼대 = 증산시 시장은 관노비들에게 논을 산대
증감연산자, 산술연산자, 시프트 연산자, 관계 연산자, 비트 연산자, 논리 연산자, 삼항 연산자, 대입 연산자
관계 연산자 : < > <= >= 이런 것들
삼항 연산자 = 조건이 참일 경우 물음표(?)와 콜른(:) 사이의 값을 반환하고 ,조건이 거짓일 경우 콜른(:)과
세미클론(;) 사이의 값을 반환
EX) a= 26,b=91
int x= a<b?a:b;
대입연산자 =+, -=, =*
예외
! = 논리 연산자 = NOT
~ = 비트연산자 = 2진수 0이면 1로 1이면 0으로
스위치문 = break 만날때까지 switch문을 실행. 안 만나면 쭉욱 실행~ //
와일문 = 참일동안 계속 구문을 돈다
do~while = 참,거짓 상관없이 무조건 실행 후 그 다음 조건이 참인동안 실행
for문의 조건식이 참일 때까지 계속 돔
for( 초기식 ; 조건식; 증감식;)
{
명령문;}
1. 초기식 2.조건식 3.명령문 4.증감식 5.조건식. 6명령문 7증감식 8조건식 9 명령문
즉 초기 for문 실행시 증감식 안 보고 초기식+조건식만 봄 두번째부터는 초기식을 안 보고 조건식 증감식만 봄
이중포문
세미클론이 끝나는 곳이 명령어
바깥쪽 안쪽 무조건 바깥쪽부터 실행 -> 안쪽포문으로 가야함 -> 안쪽포문을 다돌아야함 -> 다시 해당 값으로 바깥쪽 포문으로 돌아야함
루프제어 명령어 break = 반복문을 중지하도록 하는 명령어 continue = 다음 반복으로 넘어갈 수 있도록 하는 명령어
배열 = 같은 타입의 변수들로 이루어진 타입 <-> 다른 타입의 집합 = 구조체
배열은 어떤언어든 0번지 시작함
c언어는 문자열이 없어 배열로 선언. 마지막에 null값이 들어가서 문자보다 +1 들어가야함
printf 파라미터로 문자를 읽기 시작할 시작 주소를 알려주면 시작주소부터 null직전까지 값으 읽어서 출력
a-> 포인터 = 주소값
a랑 &a[0]은 같은 것
a+1 랑 &a[1] 랑 같은 것
null = \0 같음
a[0]+2 = &a[0][2]
a[1]+3 = &a[1][3]
구조체 = 사용자가 기본 타입을 가지고 새롭게 정희할 수 있는 사용자 정의 자료형을
ex)
struct 구조체명{
변수;
};
struct 구조체명 구조체변수;
사용자 정의 함수 = 블록이 종류 되면 사용자 정의 함수가 종료되면 없어짐 =지역변수임
전달인자 = argument 전달하는값
매개변수 = parameter 전달 받는 변수 값
call-by-value = 변수의 값을 넘겨주고 이 값은 새로운 공간에 할당, 어떠한 변화도 실 매개변수에 아무런 영향을 미치지 않음
call- by- reference = 메모리 공간의 주소를 넘겨주는 방식
재귀함수 = 함수자신이 자신을 부르는 함수
strcat(dest, src) src를 dest 붙어 넣음
strncat (dest,src, malen) malen 숫자만큼 덮어 씀
strcpy(dest, src) src를 dest로 떰어씀
strncpy(dest, src, malen) malen숫자만큼 덮어씀
strcmp 문자열을 비교하는 함수 = 아스키코드로 비교 / 똑같으면 0 크면 1 작으면 -1
strrev 문자열을 거꾸로 뒤집음
strchp
sqrt = 양의 제곱근을 계산 = 루트
atoi = 문자열을 정수형으로 변환하는 함수
atof = 문자열을 실수형으로 변환
포인터 = 변수의 주솟값을 저장하는 공간
선언은 자료형 *포인터_변수명 &변수명;
ex) int *p= &a
int a = 10;
&변수명 = 해당 변수 주소값
배열의 i번지 주소 : 배열명 + i == &배열명[i]
배열+i == &배열[i]
*(배열+i) == 배열 [i]
구조체는 일반구조체 변수로 접근할 때는 .으로 접근, 구조체 포인터로 접근할 때는 ->로 접근
자바에서 모든 소스코드는 클래스
프로그램은 public static void main에서 시작
public 접근제어자
static 메모리할당방법 나머지 하나는 heap
void = return값이 없을 때 쓰는 것
클래스명과 파일명은 같다
println <- 개행을 한다
자료형 = 메모리 공간을 효율적으로 사용하기위해서 = 데이터를 담는 그릇
문자형 = 문자하나만 저장할 떄 char
문자열형 = 문자에 여러개 String s가 대문자
정수형 byte, int int는 4바이트 short는 2바이트 long 은 8바이트
부동소수점 = 소수점을 포함하는 실숫값을 저장 float 4바이트 double 8바이트
논리형 = 변수의 참 거짓을 나타냄 true, false == boolean true, false 소문자!!! ==>파이썬은 대문자 True/False
변수 유효 범위
클래스 변수 = 클랙스블록에 선언하는 변수
지역변수 = 블록 내에서 선언하는 변수 = 블록이 닫히는 시점에 소멸
static 변수 = static이라는 키워드를 붙이며, 프로그램 전체에서 사용할 수 있는 변수 =프로그램이 생성될 때 생기며 프로그램이 종료될 때 소멸
메서드 = 함수
배열 초기값 없는 경우 자료형 배열명[] = new 자료형[]
자료형 []배열명 = new 자료형 []
초기값 선언경우 자료형 []배열명 = {초깃값}
자료형 배열명[] = {초깃값}
정수 일때는 0, 문자열일떄는 null, 실수일경우 0.0
2차원 배열 int a[][] = {{1,0},{2,0}}
자료형 [][]배열명 = new 자료형[행의개수][열의개수]
length 는 콤마의 개수로 세야함
print = 개행을 안 함, println = 개행을 함 , printf = 포맷을 지정한 후 사용
system.in.readline() = 전체 값 출력
a = r.readLine() <- 입력받은 값을 전부 출력함
system.out.println(a)
c언어와 다 똑같음 다른 하나는 문자열+ 숫자가 가능
문자열 + 숫자 = 문자열
문자열 + 숫자면 숫자가 문자열뒤에 숫자가 붙음
숫자+문자열도 동일 숫자뒤에 문자열이 붙음
"5+2=" 문자열임
("5+2 = "+3+4) -> 5+2 = 34
"5+2=" +3.1+4 -> 5+2 = 3.14
"5+2 =" +(3+4) -> 괄호가 제일먼저 5+2 = 7
5+2 = 3+4 -> 7=3+4
for each = 배열이나 리스트 크기만큼 반복, 반복할 때마다 배열이나 리스트의 항목을 순차적으로 변수에 대입
for each문은 : <-이 들어감
for(제어변수:배열){
명령문;
}
for(string nm:name) 이면 name에 있는 걸 nm에 넣는다라고 생각하면 됌
static 메서드 개념 = 클래스가 메모리에 올라갈 떄 자동적으로 생성되는 매서드, 인스턴스를 생성하지 않아도 호출이 가능하게 됨 (=접근이 가능함)
클래스명 변수선언 = 인스턴스를
ex ) soo a = new soo();
soo = 클래스명
a = 변수명
new soo(); <-인스턴스
클래스 = 변수 + 메서드
클래스 접근 제어자 = 지정된 클래스, 변수,메서드를 외부에서 접근할 수 있도록 권한을 설정하는 기능
public = 외부에 모든 클래스를 접근이 가능한 접근 제어자
protected = 같은 패키지 내부에 있는 클래스, 하위 클래스에서 접근이 가능한 접근 제어자, 자기 자신과 상속받은 하위 클래스 둘 다 접근이 가능한 접근제어자
default = 같은 패키지 내부에 있는 클래스에 접근이 가능한 접근제어자, 자바에만 있음
private = 같은 클래스 내에서만 접근이 가능한 접근제어자
클래스 변수 생성 = 클래스는 객체를 생성하하기 위해 변수와 메서드를 정의하는 틀, 실제 변수를 통해서 인스턴스 new키워드를 이용해 생성
사용할 떄는 변수명.메서드명()
this 개념 = 현재 객체를 가리키는 키워드 , 클래스 내부의 변수와 메서드를 가리킬 수 있음
getter,setter를 사용할 떄 많이 씀
생성자(constructor) = 해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드
일반적으로 클래스 멤버 변수를 초기화하거나 클래스를 사용하는 설정이 필요한 경ㅇ우
클래스이름과 같으면 생성자
생성자는 무조건 부모를 먼저 호출 후 자식을 호출
생성자는 클래스명과 동일한 이름의 메서드
반환값이 없음, return값이 없다는것
ex) 클래스명 클래스 변수 = new 클래스명(매개변수);
소멸자 = 객체의 수명이 끝났을 때 객체를 제거하기 위한 목적으로 사용되는 메서드 = finalize = 반환값이 없는 것이 특징
상속 = inheritance = 어떤 객체가 있을 때 그 객체의 변수와 메서드르 다른 객체가 물려 받는 기능
ex) class 부모_클래스명{
}
class 자식_클래스명 extends 부모_클래스명{
}
상속 받으면 부모클래스에 가진것+내가 가진것도 실행 둘 다 가능
오버로딩 = 동일한 이름의 메서드를 매개변수만 다르게하여 여러 개 정의할 수 있는 기능
1. 메서드 이름이 같아야함, 2.메개변수 개수가 달라야함 3. 매개변수 개수가 같아도 데이터 타입이 달라야함 4. 리턴 타입은 같거나 달라도 됨
오버라이딩 = 하위 클래스에서 상위 클래스 메서드를 재정의 할 수 있는 기능
부모클래스 = 슈퍼클래스 =상위 클래스
자식클래스 = 서브클래스 = 하위 클래스
오버라이드 하고자 하는 메서드가 상위 클래스에 존재해야함
메서드 이름이 같아야함
메서드 매개변수 개수, 데이터 타입이 같아야함
메서드 반환형이 같아야함
오버라이드는 자식메서드를 실행
부모클래스 접근하는 방법
super키워드를 붙여 접근 변수나 메서드 접근
추상클래스 = abstract = 미구현 추상 메서드를 한개 이상 가지며, 자식클래스에서 해당 추상 메서드를 반드시 구현하도록 강제 하는 기능
인터페이스 = 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기위한 문법 = 추상 클래스
껍데기만 구성해놓음 ->
인터페이스는 interface라고 씀
ex) interface 인터페이스_클래스명{
자료형 메서드명();
}
class 자식클래스명 implements 인터페이스_클래스명
스레드 = 프로세스보다 가벼운 독립적으로 수행되는 순차적인 제어흐름이되며 실행단위
ex) class T_Soojebi extends Thread{
pulic void run(){
//스레드 동작 시 수행할 코드
}
스레드변수.start -> 실제 스레드 호출하는 함수 start해줘야 run()에 있는 함수가 실행
implements Runnable로도 스레드 실행 가능
컬렉션 프레임워크 = 다수의 데이터를 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합을
list, set, map
linkedlist = 데이터의 삽입, 삭제가 빈번한 경우 사용
add = 값을 추가하는 메서드 , add(인덱스, 값) 인덱스에 값을 추가하는 메서드, remove(인덱스) 인덱스 값을 제거하는 메서드, size() 원수 개수
get = 해당 번지의 값을 가져오는 것
arrylist = list의 자식클래스로 크기가 가변적으로 변하는 선형 리스트 .
linkedlist와 메서드는 동일함 add,remove
출력은 둘 다 대괄호로 출력 [2] [2,1] ["구태성", 2]
hashset = set의 자식 클래스(하위클래스,파생클래스)로 중복된 원소를 허용하지 않는 집합
set 변수명 = new HashSet();
메서드 add(값) = 중복된 값이 들어오면 추가하지 않음 , remove(값), size()
보통 집합이라 2가 들어오고 1이 들어와도 정렬해서 [1,2]로 보여줌
TreeSet = 이진 검색 트리라는 자료구조 형태로 데이터를 저장하는 클래스
작은 값이 왼쪽으로 감
Set 변수명 = new TreeSet();
메서드 add(값)=중복된 값이 들어오면 추가하지 않음 , remove(값), size()
treeset에서만 사용하는 메서드
headeSet(값) = 값보다 작은 객체를 반환값
tailSet(값) = 값보다 큰 객체를 반환
Hasmap = 키와 값으로 구성된 객체를 저장하는 구조로 되어있는 자료구조를 구현한 클래스
키의 중복을 허용하지 않음
put(키,값) = 해당 키에 해당하는 값을 추가하는 메서드
remove(키)
get(키) 해당 키의 값을 얻는 메서드
size()
출력은 {1=A} //키랑 값이랑 매핑
TreeMap = 키와 값으로 구성된 객체를 저장하는 구조로 되어있는 자료구조를 구현한 클래스
put(키,값)
remove(키)
get(키)
size
예외처리 = 프로그램 동작중에 의도하지 않은 비정상적인 동작을 처리하는 기법
try{명령문} catch(예외처리명){ 예외처리 명령문} finally{ 명령문}
throw = 의도적으로 예외를 던지는 예약어
throws = 메서드에서 발생하는 예외를 던지는 예약어
개발환경 구축 = 개발 편의성, 개발 성능향상을 위해서 하드웨어및 소프트웨어 개발환경 구축
빌구테형 = 탐관오리가 잘못을 했을때 잘못을 빌구 테형을 맞았다
빌드도구 = 빌드 및 배포를 수행하는 도구, dependency를 관리(의존성 관리). 대표적인 도구로 grandle, maven, art? 그래임마로 외우면 됨
구현도구 = 코드의 작성과 디버깅 수정 등에 사용되는 도구. 이클립스, intellij, sts
테스트도구 = 기능 검증과 전체 품질을 높이기 위해 사용하는 도구. xUnit, PMD, FindBug
형상도구 = 개발자들이 작성한 코드와 리소스 등응 산출물에 대한 버전관리를 위한도구. git, CVS 등
서버hw 개발환경
웹서버 = 웹 브라우저의 요청을 받아 http를 통ㅎ애 웹 브라우저에서 html 문서나 오브젝트를 전송해주는 서버. 아파치,구글 웹서버 등
웹애플리케이션 서버(was) = 동적서비스를 제공하기 위해 웹 서버로부터 요청을 받아 데이터 처리를 수행. 웹서버와 파일서버의 인터페이스 역할. 아파치 톰캣, 오라클 웹로직
db서버 = dbms를 운영하는 서버 mysql 등
파일서버 = 파일 저장하드웨어로 물리저장 장치를 활요하는 서버. ssd, hdd, AWS S3
클라이언트 HW 개발환경
클라이언트 프로그램 = 설치를 통해 사용자와 커뮤니케이션하는 프로그램. 비주얼 베이직,C#등등…
웹브라우저 = 웹 애플리케이션을 응답 시 브라우저를 통해 사용자와 커뮤니케이션
모바일 앱 = 모바일 디바이스에 설치되어 활용되는 애플리케이션
모바일 웹 = 웹브라우저 동일한 형태로 모바일상 웹 브라우저를 통해 서비스 제공
SW개발환경
운영체제 = 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
미들웨어 = 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 도와주는 소프트웨어
DBMS = 데이터베이스 관리하는 시스템
형상관리 개념
소프웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
형상관리 절차
식통감기 = 식후 통증 감기
형상식별 = 형상관리 대상을 정의 및 식별하는 활동
형상통제 = 형상 항목의 버전 관리를 위한 형상통제위원회 운영. 베이스라인에(기존라인) 대한 관리 및 형상 통제 수행
형상감사 = 소프트웨어 베이스라인의 무결성 평가
형상기록 = 형상결과 보고서 작성
형상관리 도구
공클분
공유폴더 방식 (RCS/SCCS) = 공유 폴더에 복사하는 방식 -> 자기 PC로 들고가서 컴파일
클라이언트 서버 방식 (CVS/SVN) = 중앙에 버전 관리 시스템을 항시 동작시키는 방식. 현재 작업내용과 이전 작업 내용을 추적
분산 저장소 방식 (GIT) = 로컬 저장소와 원격저장소로 분리되어 분산 저장 방식. 우선 로컬 저장소에 commit을 한 후 원격 저장소에 push 하는 방식
재사용 개념 = 이미 개발되어 그 기능 성능 및 품질을 인정 받았던 소프웨어의 전체 또는 일부분을 다시 사용하는 기법
재공학(re engineering)
재개발 ( re-development)
모듈 = 하나의 완전한 기능을 수행할 수 있는 독립된 실체 ex) 결제 모듈, 회원 가입 모듈
모듈화 = 소프트웨어의 성능을 향상 시키거나 복잡한 시스템의 수정, 재사용, 기능 등 기능 단위의 모듈로 분해하는 설계 및 구현 방법
루틴 = 특정 동작을 수행하는 일련의 코드
메인 루틴 =주요한 부분, 전체의 개략적인 동작 절차
서브 루틴 = 메인 루틴에 의해 필요할 떄 호출
응집도의 개념 = 모듈의 독립성을 나타내는 개념, 모듈 내부 구성요소 간 연관 정도. 정보 은닉 개념의 확장개념으로 하나의 모듈은 하나의 기능을 수행
응집도는 높을 수록 좋음.
우논시절 통순기 = 우리가 놀던시절에 통은 순기다
우연적 - 논리적 - 시간적 - 절차적 - 통신적 -순차적 - 기능적
우연적 응집도(coincidental ) = 모듈 내부의 각 구성요소가 상관 없을 때
논리적(logical) = 유연한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리 ex) 입금, 출금
시간적 (temporal) = 연관된 기능이라기 보다, 특정 시간에 처리되어야 할 활동들
절차적 (procedural) = 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 순차적으로 수행
통신적(communication)= 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있음
순차적 (sequential) = 모듈내에서 한 활동으로부터 나온 출력값 을 다른 활동에 사용할 경우
기능적 (functional) = 모듈 내부의 모든 기능이 단일한 목적을 위해 수행 = 가장 완벽한 모듈 = 응집도가 가장 높음
결합도 = 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈간의 상호 의존성
내공외제스자 = 내부 공사는 외제껄 쓰자
내용 결합도 (content) = 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용
공통 결합도 (common) =모듈 밖에 선언되어 있는 전역 변수를 참조하여 전역변수를 갱신하는 방식
외부결합도 (external) = 두개의 모듈이 외부에서 도입된 데이터 포맷 통신 프로토콜, 인터페이스 등을 공유할 떄
제어 (control) = 단순 처리하 대상인 값만 전달 되는게 아니라 어떻게 처리해야한다는 제어 요소가 전달
스탬프 (stamp)= 인터페이스로 배열이나 객체, 구조체 등이 전달되는 경우 . 흔하게 쓰임 -> 큰데이터
자료 결합도 (data) = 파라미터를 통해서만 모듈간의 상호작용 -> 작은데이터
공통모듈테스트 = ide 도구를 활영하여 개별 공통 모듈에 대한 디버깅 수행
Junit= java 단위 테스트 프레임워크
Cppunit = 자바의 Junit을 C++로 구현 단위 테스트 도구
HttpUnit = 웹브라우저 없이 웹사이트 테스트 수행도구
batch 파일 = 배치 프로그램은 사용자와의 상호작용없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하는 프로그램
이벤트 배치 = 사전에 정의해둔 조건을 충족 시
온디멘드 배치 = 사용자 요구
정기배치 = 정해진 시점
cron 분,시간,일,월,요일,연도
쿼츠크론 초,분,시간,일,월,요일,연도
? = 미사용
- = 기간설정
,=
sw 개발보안 = 소스코드 등에 존재하는 보안 취약점 제거 및 기능 개선
주로 위험과 관련 됨. 위험을 인지해야함
자위치위 = 일본 자위대 취업은 위험하다
자산-위협-취약점-위험
자산 = 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
위협 = 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건, 행위
취약점 = 위협이 발생하기 위한 사전 조건으로 , 시스템의 정보보증을 낮추는데 사용되는 약점
위험 = 위협이 취약점을 이용해 조직의 자산 손실을 가져올 가능성
dos 공격 = 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격
syn 플러딩, udp 플러딩, smurf공격, pod ,랜드어택 ,티어드롭 ,봉크, 보잉크
syn 플러딩 = 사용자가 syn 패킷만 보내 점유하여 다른 사용자가 서버를 사용 불가능하게 하는 공격
udp 플러딩 = 대량의 udp 패킷을 만들어 임의의 포트 번호로 전송하여 응답메세지를 생성하개해서 지속해서 자원을 고갈
smurf, 스머핑 ,icmp 플러딩 = 출바지 주소를 공격 대상의 ip로 설정하여 네트워크 전체에게 icmp echo패킷을 직접 브로드캐스팅해서 마비
ping of death = icmp 패킷을 아주 크게 만들어서 ip단편화가 발생하고 재조합시 부하가 발생
랜드어택 = 출발지 ip와 목적지 ip를 같게 만들어서 , 수신자가 자기자신에게 응답을 보내도록 하는 공격
티어드롭 = ip 패킷 재조합 시 fragment offset 정보를 인해 수신 시스템이 문제를 발생하도록 만드는 dos 공격
ddos = dos의 또다른 공격, 여러 대의 공격자를 분산 배치하여 동시에 동작하게 해서 특정사이트를 공격하는 기법
drdos = 공격자는 출발지 ip를 공격대상 ip로 위조하여 다수의 반사 서버로 요청 정보를 전송, 공격 대상자는 반사 서버로 부터 다량의 응답을 받아서 서비스 거부가 되는 공격대상
세션하이재킹 = tcp 세션 관리 취약점을 이용한 공격 방법 , 대응 방법 = 비동기화 상태 탐지
slowroris = http get 메서드를 사용하여 헤더의 최종 끝을 알리는 개행문자를 전송하지 않고 ...웹서와 연결상태를 장시간으로 지속시키고 연결 아원을 모두소진
ㄴ 즉 개행을 하지 않아 서버가 응답을 기다리게 만드는 것들
rudy 공격 = 요청 헤더의 content-length를 비정상적으로 크게 설정하여 메세지 바디 부분을 매우 소량으로 보내 연결을 유지하는 공격
ㄴ음식점에 1000명을 예약해놓고 1명만 가는 짓, 그러면 나머지 999명은 해당 음식점을 이용못함
slow read attack = tcp 윈도크기를 낮게 설정하여 서버로 전달, 데이터 전송이 완료될 때 까지 연결을 유지하게 만드는 공격
hulk dos = 웹사이트 url을 지속적으로 변경시키면서 다량의 get 요청을 발생
hash dos = 조작된 많은 수의 파라미터를 post 방식으로 웹서버에 전달하여 다수의 hash 충돌을 발생시키는 공격
패스워드 크래킹 = 사전크래킹 + 부르트 포스
ip 스푸핑 = ip 어드레스를 위조하여 서비스에 대한 인증되지 않은 액세스를 권한을 입수
arp 스푸핑 = mac정보를 공격자의 mac정보로 위조하여 특정 호스트로 가는 패킷을 스니핑
icmp 리다이렉트 = 스니핑 시스텡을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격
스택가드 ,스택실드 ,aslr, 안전한 함수 활용
스택가드 = 카나리값 = 무결성 체크값
스택 실드 = global return값을 비교
aslr = 주소난수화
스피어 피싱 = 악성메일을 지속적으로 발송하여 클릭을 유도해서 개이정보 탈취
스미싱 = sms 문자 + 피싱
큐싱 = qr코드를 통해 악성앱을 받게해서 금융정보를 빼는것
apt 공격 = 지속적이고 지능적인 공격
공급망공격 = 배포서버에 접근하여 설치파일을 악의적인 파일로 변경
제로데이
웜 = 스스로를 복제하여 네트워크 등의 연결을 통해 전파
악성봇 = 스스로 실행되지 못하고 해커의 명령대로 실행
사이버킬체인 = 록히드 마틴 공격형 방위 시스템 , apt 공격을 방어하는 방법
랜섬웨어 = 몸값을 요구하는 악성 소프트웨어
이블트윈 = 무선 wifi 피싱기법
사회공학 = 사람들의 심리와 행동약식을 교묘하게 이용
트러스트 존 = 프로세서 안에 독립적인 보안 구역을 두고 거기에 정보를 보호 arm 사에서 개발한 보안길술
타이포 스쿼팅 = 사용자들이 주소를 잘못 입력하거나 ,실수할 경우 이를 이용해 유사하 도메인을 만들어 미리 등록해서 url 하이재킹
서버 접근 통제 유형
댁맥알백
dac = 임의적 접근 통제 = acl관리 =시스템에 대한 접근을 사용자/그룹의 신분 기반으로 제한하는 방법 = 식별자
mac = 허용등급을 기준으로 사용자가 갖는 접근 허가 권한에 근거하여 시스템에 대한 접근제한 = 관리자, 일반 사용자
rbac = 사용자와 시스템의 상호관계를 통제하여 조직 내 맡은 역할을 기초아혀 자원에 대한 접근
접근 통제 보호 모델에는 벨-라파둘라(BLP)와 비바 모델
벨-라파둘라 모델 = 기밀성을 강조하여 강제적 정책
비바 모델 = 무결성을 보장, 벨-라파둘라 단점 보완
벨기비무 = 벨기에까지 비행은 무리
인증, 권한, 계정 관리
암호 알고리즘 방식 =
양방향 -> 대칭키 , 비대치킹
대칭키 DES,SEED
비대칭키 RSA, Elgamal, ecc
일방향 -> 해시 - MAC, MDC
대칭키 = 암호화와 복호화도 같은 암호키를 쓰는 알고리즘
블록 암호 = 블록 단위로 암호 des, aes, seed
스트림 암호방식 = rc4 = 난수열을 발생시켜 평문과 더불어 암호문을 생성
MAC = 키를 사용하는 메세지 인증 코드로 메세지의 무결성과 송신자의 인증을 보장 HMAC,NMAC있음
MDC = 키를 사용하지 않는 변경 감지코드로 메세지의 무결성 보장 MD5, SHA
IDEA = DES 대체, 스위스연방, 블록암호화알고르짐
RSA = MIT 대학교수, 소인수 분해
ECC = 타원곡선, 이산대수
엘가멜=Elgamal = 이산대수, RSA유사, 전자서명,데이터
SHA2 = AES 의 키길이인 128.192.256비트에 대응하도록 출력 길이를 늘린 해이 알고리즘
HAS-160 =국내 표준 서명 알고리즘 KCDSA
SecureSDLC
Seven Touch Points = best practice , 소프트웨어 개발 보안 생명주기 방법론
ms-sdl =마이크로 소프트사가 자사의 보안을위해
owasp clasp =
xss 취약점 = 사용자가 웹페이지를 열람하면 웹페이지에 포함된 부적절한 스크립트가 실행 됨 -> 자기 pc를 공격
방어방법 : 특수문자 필터링 ,태그 사용 금지
csrf = 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 => 서버단 공격
방어방법 = post 방식 사용, csrf 토큰 사용
시스템 로그 = /etc/syslog.conf , 유닉스 로그 /var/adm 리눅스로그 /var/log
utm =방화벽 침입탐지시스템, vpn 등 다양한 보안장비의 기능을 한 장비에서 수행
esm = 모든 보안장비의 통합 관리, 모니터링, 로그관리 및 대응
siem = 정형, 비정형 데이터까지 보고, 테라비이트급의 로그등도 모아서 위협 징후를 빠르게 판단 후 대응 -> 빅데이터까지 대응가능
스팸차단 솔루션 = 메일 서버 앞단에 위치하여 프록시 메일 서버로 동작
보안 운영체제 = 커널에 보안 기능을 추가한 솔루션
소프트웨어 개발보안 테스트 유형
정적 분석 = 코드분석
동적 분석 = 실행해서 파악
BCP = 비지니스 연속성 계획
BIA = 영향도 및 손실평가를 bcp를 구축하기 위한 비지니스 영향분석
RTO = 재해 시 복구 목표시간
RPO(Recovery point object) =재해 시 복구 목표지점
DRP = 재난 복구 계획
DRS = 재해복구센터
DRS 유형
mirro site = 주센터와 데이터복구센터 모두 실시간 운영
hot site = 주센터와 동일한 자원을 대기 상태로 원격지 보유
warm site = hot site와 비슷하나 중요 정보만 부분적으로 보관
cold site = 데이터만 원격지에 보관 중
부채널 공격 = 전자기파 방사 등 물리적 특성을 측정하여 암호 키등 내부 비밀정보를 부채널에서 획등하는 공격기법
드라이브 바이 다운로드 = 악의적인 해커가 불특정 웹서버와 웹페이지에 악성스크립트 설치하고 의도된 서버로연결하여 감염
워터링 홀 = 자주 방문하는 사이트에 악성코드 심어 공격
스캠공격 = 기업 이메일 계정으로 도용하여 무역 거래대금 가로챔
하트블리드 = opensssl 암호화 라이브러리의 하트비트라는 확장모듈에서 클라리언트 요청 메세지를 처리할 떄 데이터 길이검증을 수행하지 않아 발생 되는 취약점
크라임웨어 = 금융정보 등을 탈취 하여 범죄행위를 목적으로하는 악성코드
토르네트워크 = 익명으로 인터넷을 사용할수 있는 가상네트워크
리버스 쉘 = 쉘을 획득해서 공격
익스플로잇 = 의도한 동작이나 명령을 실행하도록 하는 코드
스턱스넷 = 스카다 시스템을 공격 목표로하는 악성코드
허니팟 = 일부러 허술하게 시스템을 만들어서 해커에서 노출하는 유인 시스템
핑거프린팅 = 저작권 정보, 구매자 사용정보를 삽입하여 불법배포자에 대한 위치를 주적
워터마킹 = 저작권자 정보를 삽입, 원소유자 알 수 있음
pam = 리눅스 시스템내에서 사용되는 각종 애플리케이션 인증을 위해 제공되는 다양한 인증용 라이브러르
소프트웨어 테스트의 원리와
결완초집 살정오
결함존재 증명 : 결함이 존재함을 밝히는 활동
완벽한 테스트 불가능
초기 집중 = 개발 초기에 집중 해라 = 요르돈의 법칙 = 스노우볼 이펙트, 눈덩이 법칙
결합 집중 = 파레토 법칙 80대 20
살충제 패러독스 = 동일한 반복적 테스트를 지속적으로 사용해서 새로운 버그를 못 찾음
정황 의존성 = 소프트웨어의 성격에 맞게 테스트 = 유도리 있게 테스트해라
오류부재의 궤변 = 사용자의 요구사항을 충족해야함
테스트 산출물
테스트 계획서 = 테스트범위 ,일정 , 종료 조건등 을 계획한 문서
테스트 베이시스 = 분석, 설계 단계의 논리적인 case로 테스트 설계를 위한 기준이 되는 문서
테스트 케이스 = 입력 값 , 실행조건 , 기대결과로 구성된 테스트 항목 명세서
테스트 슈트 = 테스트 케이스를 실행환경에 따라 구분해 놓은 테스트 케이스 집합, 시나리오가 포함되지 않음.
테스트 시나리오 = 테스트가 필요한 상황을 작성한 문서
테스트 스크립트 = 테스트 케이스의 실행 순서(절차)를 작성한 문서 = 테스트 스텝 =테스트 프로시저
테스트 결과서 = 결과를 정리한 문서
화이트박스 테스트 = 코드 분석과, 프로그램 구조에 대한 지식을 바탕으로 모듈 내부를 직접관찰하고 ,테스트하는 기법 = 구조기반 테스트 =코드기반 테스트 =로직기반테스트
화이트박스 테스트 유형 = 구결조 조변다 기제데루
구문 커버리지= 문장커버리지 = 프로그램내의 모든 명령문을 적어도 한 번 수행하는 커버리지
결정 커버리지 = 선택 커버리지= 분기커버리지 = 결정포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓이 나오도록 하는 것 => 구문 커버리지를 커버함
ex) if a or b가 있으면 a와 b모두 한 번씩 수행
조건 커버리지 = 결정 포인트 내의 각 개별조건식이 적어도 참/거짓이 한 번씩 수행 => 구문커버리지 포함
ex) if a or b이면 a가 참/거짓 수행, b에서 참/거짓 수행
조건/결정 커버리지 = 전체 조건식 + 개별 조건식 참/거짓 적어도 한 번 수행되게 하는 커버리지
변경조건/결정 커버리지 = 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 줌 => 조건/결정 커버리지 향상 시킴
즉, 중복을 최소화하고 독립적으로 테스트하기 위해서
다중조건 커버리지 = 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
기본경로 커버리지 = 수행 가능한 모든 경로를 테스트하는 기법
제어흐름테스트 = 프로그램 제어 구조를 그래프형태로 나타내어 내부로직을 테스트하는 기법
데이터 흐름 테스트 = 제어흐름 그래프에서 데이터 사용현황을 추가한 그래프를 통해서 테스트
루프 테스트 =프로그램의 반복(loop )구조에 초점을 맞춰서 테스트
맥케이브 순환복잡도
브에노이
V(G) = E-N+2 V는 복잡도, E 간선 수 , N노드 ,
V(G) = P+1 P는 조건 분기문
블랙박스테스트 = 외부사용자가 요구사항 명세를 보면서 테스트함 -> 명세테스트
동경결상 유분페원비오
동등분할 테스트 또는 동치,균등,클래스분해 = 입력 데이터 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스 도출
경곗값 분석 = 등가 분할 후 경곗값 부분에서 오류발생 확률이 높기 떄문에 경계값을 포함하여 테스트 설계
결정테이블 테스트 = 요구사항 논리와 발생조건을 테이블 형태로 나열하여 조건과 행위를 모두 조합하여 테스트하는 기법
상태전이테스트 = 테스트 대상, 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우
유스케이스 테스트 = 유스케이스로 모델링이 돼 있을 때 프로세스 흐름을 기반으로 테스트 케이스 명세화
분류트리 테스트 = SW의 일부 또는 전체를 트리구조로 분석 및 표현하여 테스트 케이스 설계
페어와이즈 테스트 = 효율적 테스트 = 테스트 데이터값들 간에 최소한 한번씩 조합하는 방식, 커버해야할 기능적 범위를 모든 조합에 비해 상대적으로 적의 양을 테스트 가능
원인- 결과 그래트 테스트 = 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효영성이 높은 테스트 케이스 선정
비교 테스트 = 여러 버전의 프로그램에서 같은 입력값을 넣어서 동일한 결과 데이터가 나오도록 테스트
오류추정 테스트 = 경험기반 테스트 = 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스 설계
테스트 목적에 따른 분류
회안성 구회병
회복테스트 = 시스템에 고의로 실패를 유도, 시스템의 정상적으로 복귀하는지
안전 테스트 = 소스 코드 내의 보안적인 결함을 미리 점검
성능 테스트 = 비기능 테스트이며, 사용자의 이벤트에 응답하는 시간, 특정시간내 처리하는 업무량등, 시스템이 반응하는 속도 => 사용자가 요구하지 않았지만 당연하게도 빨라야하므로
비기능적 테스트임
구조테스트 = 화이트박스 테스트이며, 논리 경로, 소스코드 복작도 평가
회귀테스트 = 유지보수에서 사용, 프로그램 수정했을 시 오류가 있는지 확인, 오류가 있다면 오류 수정하는 반복 테스트
병행테스트 = 변경된 시스템과 변경시스템에 동일한 데이터를 넣어서 비교
성능테스트
부하테스트 = 시스템에 부하를 증가해서 임계점을 찾는 테스트
강도 테스트 = 임계점 이상의 부하를 가해서 비정상적인 상황에서 시스템 처리 능력
스파이크 테스트 = 짧은 시간에 사용자가 몰릴 때 시스템의 반응 측정
내구성 테스트 = 오랫동안 시스템에 높은 부하를 가하여 시스템 반응테스트
동워인
동료검토 = 2~3명이 모여서 요구사항 설명하고 ->빠진게 있나? 확인
워크스루 = 회의전 배포자료 배포후 짧은 시간동안 회의제공, 비공식적 검토 = 시간날때 하는 것
인스펙션 = 형식적 검토 , 저작자 외 전무가 똔느 팀이 검사하여 무제를 식별하여 문제에 대한 해결
리뷰는 도구를 사용하지 않음, 정적분석은 자동화된 도구를 이용해서 산출물의 결함을 검출하고 복잡도 측정
화이트박스 테스트 개념 =구조 기반 테스트, 코드기반 테스트, 로직기반테스트
테스트 커버리지 유형 = 기능 기반 커버리지, 라인 커버리지, 코드 커버리지
다중 조건 커버리지 > 변견 조건/결정 커버리지 > 조건/결정 커버리지(mc/dc) > 결정<-> (교집합) 구문 (교집합)< - > 조건
if (a>b and a<c)
if문을 결정식(결정 포인트)
a>b 개별 조건식
a>b and a>c 는 전체 조건식
마름모가 결정포인트임 = if문이 마름모 =
구문 커버리지 = state coverage
결정(선택)커버리지 = 분기 커버리지 = decision 또는 branch coverage
조건 커버리지 (condition coverage) =결정 포인트(if문) 각 개별조건식이 적어도 한 번은 참 한번은 거짓의 결과가 되도록 -> 구문 커버리지를 포함
조건/결정 커버리지 = condition/decision = 전체조건 t/f, 개별조건 T/f
변경조건/결정 커버리지 = modified condition/decical coverage = 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 전체 조건식의 결과에 독립적으로 영향을
주도록 함으로써 조건/결정 커버리지를 향상시키는 커버리지 = mcdc
즉 개별조건식이 전체조건식에 영향을 주는 것 을 선택하는것이 mcdc
다중조건 multiple condition = 모든 조건을 커버하는 것
기본 경로 커버리지 base path = 모든 경로를 테스트하는 기법
제어 흐름 테스트 = control flow testing
데이터 흐름 테스트 = 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법
블랙박스테스트= 명세기반 테스트
동경결상 유분페원비
equivalence partitioning testing = 동치 분할= 균등분할 = 동치 클래스
유효값/무효값을 그룹핑하여 대푯값을 테스트 케이스를 도출
경계값 분석,한계값 테스트 = boundary value analysis = 등가 분할 후 경곗값 부분에서 오류 발생확률이 높아서 경곗값을 포함하여 테스트 , 무효값도 테스트를 해야함
2-value, 3-value
2-value = 경계값에 있는 값, 바로 위 아래중 하나의 값들을
3-value = 경계에 있는 값, 경계바로 위의값, 경계 바로 아래의값
ex) 2-value 경계값이 19 20 60이면 18/18 20/21 60/61
ex) 3-value 경계값 19 20 60 이면 18/19/20 , 19/20/21 , 59/60/61임
결정테이블 테스트 = 테이블형태로나열하여, 조건과 행위 (원인과 결과)를 모두 조합하여 테스트 , 누락된 요구사항 검사에 용이
상태전이테스트( state transition) = 임베디드테스트에 많이 쓰임 = 전이 트리, 이벤트에 의해 어느 한상태에서 다른 상태로전이, 상태전이도로 모델링한 후 상태전이도에서 테스트 케이스 도출
즉 상태전이도를 전이트리로 만듦
유스케이스 테스트 = 유스케이스로 모델링되어 프로세스 흐름을 기반으로 테스트 케이스 명세화
분류트리테스트 (classification) = 전체를 트리구조로 분석 및 표현
페어와이즈 pairwise = 데이터 값들 간에 최소 한번씩 조합, 커버해야할 기능적 범위를 모든조합에 비해 상대적으로 적은 양으로 테스트 세트를 구성, 효과적인 테스트
원인-결과 그래프테스트 = 결정테이블테스트(조건,행위) + 그래프 = cause effect graph
비교테스트 =여러버전에 같은 입력 값을 넣어서 동일한 결과가 나오는지 확인 comparison testing
경험기반 테스트(블랙박스테스트) = 테스터의 경험 + 직관과 기술 능력을 기반으로
경험기반 테스트 유형이
탐색적 테스트 = 휴리스틱 한 능력, 중대한 테스트 위주 , 제품을 익히면서 테스트를 설계, 구성요소는 테스트 차터, 시간제한 등이 있음
오류추정 = 개발자가 할 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스 설계
테스트 케이스 = 특정 요구사항에 준수하는지를 화인하기 위해 개발된 입력값, 실행 조건 예상된 결과의 집합
테스트 오라클= 테스트 결과가 참인지 거짓인지 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
테스트 오라클 종류
참샘휴일 =참새는 휴일에 쉬어야한다
참 오라클 = 모든 입력 값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클
샘플링오라클 = 특정한 몇 개의 입력 값에 대해서만 기대하는 결과를 제공
휴리스틱 오라클 = 샘플링 오라클을 개선한 오라클 , 특정 입력 값에 대해 올바른 결과 제공하고 나머지 값들을 대해서는 휴리스틱(추정)으로 처리하는 오라클
일관성검사오라클 = 애플리케이션 변경이 있을 떄, 수행 전과 후의 결과값이 동일한지 확인
테스트 조건(전제조건) = 테스트간의 종속성, 테스트 수행전 실행되어야 할 고려사항
테스트 데이터 (입력데이터) = 입력할 입력 값, 선택 버튼,체크리스트
예상결과(기대결과) = 출력 데이터, 결과화면,기대동작
테스트레벨 = 함계 편성되고 관리되는 테스트 활동의 그룹간
단통시인
단위테스트 = 단위 모듈, 서브루틴 ,컴포넌트 초점, 주고 구조기반(화이트박스 테스트)위주로 진행 = 개발자가 테스트 , 드라이버/스텁 필요
통합테스트 = 모듈과 모듈사이의 인터페이스 테스트 , 통합된 컴포넌트 간의 상호작용을 검증. 상향식/하향식테스트, 샌으위치 방식의 테스트가 있음, 드라이버/스텁 필요
시스템 테스트 = 통환된 단위 시스템의 기능이 시스틈에서 정상적으로 수행되는지. 기능적요구사항/비기능적 요구사항테스가 있음
인수테스트 = 계약상의 요구사항이 만족되었는지 확인하는 테스트. 알파/베타 테스트
인수테스트 종류
알파테스트 = 선택된 사용자가 개발자 환경에서 통제된 상태로 개발자와 함꼐 테스트
베타테스트 = 실제 환경에서 일정 수의 사용자에게 대상 소프트웨어를 사용하게하고 피드백을 받는 인수 테스트
단위 테스트
상드하스 =상디 하스?
테스트 드라이브 = 상향식 통합시험을 위해 모듈 테스트 수행 후의 결과를 도출
테스트 스텁 = 하향식 통합시험을 위해 일시적으로 필요한 조건만을 가지고 이미로 제공되는 시험용 모듈
단위테스트는 빠르게 실행
통합테스트
하향식 통합 =메인제어모듈의 아래 방향으로 제어의 경로르 따라 이동하면서 하향식으로 통합테스트 =스텁(데이터만 줄 수 있는 더미)
깊이 우선방식과 너비 우선 방식이 있음
아래로 깊게 이동하는게 = 깊이 우선
옆으로 가는(같은 레벨) = 너비 우선
상향식 통합 = 드라이버 아래에서 위로 테스트
샌드위치 통합 = 상향식 + 하향식테스트를 결합한 방식 = 스텁과 드라이버를 씀
테스트 자동화 도구
정적 분석도구 = 프로그램을 실행하지 않고, 소스코드에 대한 이해를 바탕으로 코드 복작도등 결함을 발견하기 위해서 사용
테스트 실행 도구
성능 테스트 도구 = 처리량, 응답,경과시간, 자원 사용률에 대한 가상의 사용자를 생성하고 테스트를 수행하여 성능 목표 달성여부
테스트 통제도구 = 관리도구,
테스트 하네스 = 애플리케이션 컴포넌트 및 모듈을 테스트하는환경의 일부분으로 테스트를 지원하기 위한 코드와 데이터
결함 개념 = 개발자 오류로 인해 만들어지는 문서 또는 코딩상의 결점으로, 설계한것과 다르게 동작 + 다른 결과가 발생
소프트웨어 결함 종류
오류(error) = 결함의 원인이 되는 것으로 일반적으로 사람(개발자)에 의해 생성된 실수
결정(fault) = 고장을 일으키게 하여 오류가 있는경우 발생
버그(bug) =프로그램 오류로 인해 예상지 못한 결과가 나는 현장
고장/문제(failvre/problem) = 결함이 실행될 떄 발생하는 현상
결함관리 개념 = 단계별 테스트 수행 후 결함재발 방지와 유사 결함 발견 시 처리 시간 단추을 위해 결함을 추적하고 관리하는 활동
테스트 커버리지 유형
기능 기반 커버리지 = 전체 기능을 모수로 설정. ui가 많은 시스템의 경우 화면 수를 모수로 ㅏ용
라인커버리지 = 코드 줄 수로 측정하는 방법 , 단위테스트에서 척도로 삼음
코드 버리지 = 소스코드의 구문,조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지
결함 심각도별 분류 = 애플리케이션에 발생한 결함이 어떤 영향을 끼치며 ,그 결함이 얼마나 치명적인 나타내느 척도
치명적 결함 = ㄱ완전히 방해하거나 못하게 하는 결함
주요 결함 = 기능이 기대와 많이 다르게 동작, 그기능을 해야할 것을 못함
보통결합 = 일부기능이 오작동할 때
경미한 결함 = 사용상의 불편함을 유발
단순결함 = 사소한 버그, 기능에 영향은 없음
애플리케이션 성능 측정 지표
처응경자 = 처의 응원을 받은 경호자원봉사자
처리량(throughput) = 처리할 수 있는 트랜잭션의 수 , 시간당 페이지 수로 표현 (tps)
응답시간 (response time) = 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 떄까지 시간
경과시간 (turnaround time) = 사용자가 요구를 입력한 시점부터 트랜잭션을 처리후 그 결과의 출력이 완료할 떄까지 걸리는 시간
자원사용률 (resource usage) = cpu 사용량, 메모리사용량, 네트워크 사용량
성능분석 도구유형 = jmeter /loadui/opensta 또 scout 등
애플리케이션 성능저하원인 데이터베이스 /내부로직/외부호출/잘못된 환경설정/ 네트워크 문제
데이터베이스 락 = 데이터 조회, 과도한 업데이트 ,인덱스 생성 시 발생하는 현상
불필요한 데이터베이스 패치 = 실제 필요한 데이터보다 많은 대량의 데이터 요청이 들어올경우 응답 시간 저하 현상 발생
연결 누수 = db연결과 관련한 jdbc 객체를 사용 후 종료하지 않을 경우 발생
부적절한 커넥션 풀 크기 = 너무 작거나 크게 설정한 경우 성능 저하 현상이 발생할 가능성 존재
확정(commit) 트랜잭션이 확정이 되지 않고 커넥션 풀에 반환될 때 성능 저하 가능성 존재
내부로직 문제
웹 애플리케이션의 인터넷 접속 불량
특정 파일의 업로드 , 다운로드 인한 성능저 저하
정상적으로 처리되지 않은 오류처리로 인한 성능저하
배드코드의 개념 = 다른 개발자가 로직을 이해하기 어렵게 작성한 코드
외계인 코드 = 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
스파게티코드 = 소스코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유
알 수 없는 변수명 = 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
로직 중복 = 동일한 처리 로직이 중복되게 작성한 코드
배드코드의 유형
오염 = 비지니스 기능을 수행하지 못하는 많은 컴포넌트들이 존재
문서부족
의미없는 이름
높은 결합도
아키덱처침식
클린코드 = 가독성 높은 코드
가단의 중추
가독성 = 이해하기 쉬운 용어 사용 , 들여쓰기 기능 사용
단순성 = 한번에 한가지 처리만 수행
의존성 최소 = 영햐도를 최소화
중복성 제거 = 중복된 코드제거
추상화 = 클래스/메서드/함수에 대해 동일한 수준의 추상화 구현
소스코드 품질분석 개념 =
정적분석도구 =작성된 소스코드를 분석하여 결함 발견
동적 분석도구 = 애플리케이션을 실행해서 결함 발견
리팩토링 (refactoring) = 소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상 시키는 기법
목적
유지보수성 향상 = 복잡한 코드의 단순화 , 소스의 가독성 향상
유연한 시스템 = 소프트웨어 요구사항 변경에 유연한 대응
생산성 향상 = 정제 및 최적화된 소스의 재사용
품질향상 = 소프트웨어 오류발견이 용이하여 품질향상
사용자 편리성 제공 = 한정된 시스템 자원을 효과적으로 사용할 수 있또록 관리 및 운영
인터페이스 기능 담당 = 시스템과 사용자를 연결
스케줄링 = 다중 사용자와 다중 응용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 부래를 위해 스케줄링 담당
자원관리 = cpu, 메모리공간 등의 자원을 관리함
제어기능 = 입출력장치와 사용자 프로그램 제어
쉘 + 커널 = 운영체제
커널은 하드웨어를 담당, 쉘은 사용자 명령어
쉘은 커널에 전달하는 명령어 해석기
커널 = 프로세스 관리, 기억장치 관리 , 파일 관리 등을 해줌
모놀리틱 커널 = 모든 기능이 수행하는 커널
마이크로 커널 = 라이트하게 자원관리 스케줄 관리 등만 제공 나머지는 사용자 프로그램에서 이용
유닉스 1960년대 at&tbell 연구소, mit, 공동으로 개발 ,c언어로 재이식
대화식 운영체제 기능 ,다중 작업기능 ,다중 사용자 기능 ,이식성, 계층적 트리구조
리눅스 = 리눅스는 유닉스의 호환커널
리누스 토발즈가 개발
운영체제의 핵심 기능 = cpu, 메모리, 스토리지 주변 기기 등을 적절히 관리
메모리 관리 =메모리를 가용한 상태로 유지 및 관리
프로세스 관리 = 프로세스 관리 기법에는 일시중지 및 재실행 ,
메모리 관리 기법
반배할교 = 반배치시 할배교감이 왔다
반입기법/배치기법 /할당기법/ 교체기법
반입기법 = 페이지나 세그먼트가 보조 기억장치에서 주기억장치로 적대될 떄 어느 시기를 택할 것인가 결정할는 전략 when !
요구반입기법 = 실행중인 프로세스에 의해 요청이 있는 경우 적재
예상반입기법 = 사전에 미리 에측하여 적재
배치기법 = where 디스크에 있는 프로세를 주기억장치의 어느 위치에 저장할 것인지
배치기법 초적악
최초적합 first fit = 프로세스가 적재될 수 있는 가용공간중에 첫번쨰에 적재
최적 적합 best fit = 가용공간중 가장 크기가 비슷한 공간에 적재
최악적합 worst fit = 가용공간중 가장 큰 공간에 적재
할당기법 = how 실행해야할 프로세스를 주기억장치에 어떤 방법으로 할당할 것인지
연단다 분페세
연속할당기법 = 단일 분한 할당기법 /다중분할 할당기법
분산할당 기법 = 페이징기법/세그멘테이션/ 페이징-세그멘테이션기법
연속할당 기법 = 주기억 장치 공간내에서 인접되게 연속하여 저장
분산할당 기법 = 하나의 프로세스를 여러 개의 조각으로 나누어 주기억장치 공간애 분산하여 배치
페이징 기법 = 동일한 크기
세그멘테이션 = 가변크기로 나눔
논리주소 = 가상주소
물리주소 = 실제 메모리 주소
가상주소로 물리주소 찾아내는 기법을 주소사상기법
페이징기법 = 가상기억장치 내의 프로세스를 일정하게 분할하여 주기억장치의 분산된 공간에 적재 시킨 후 프로세스를 수행시키는 기법
단점 = 내부단편화 발생, 실제 할당된 공간보다 크기가 작을 시 메모리 낭비가 발생
세그멘테이션 = 가상기억장치내의 프로세스를 가변적 크리의 블록으로 나누고 메모리를 할당
단점 = 외부 단편화 = 공간이 남아있지만 공간이 커서 메모리에 적재를 못하는 현상이 발생
세그먼트 테이블은 메모리에 존재
페이징-세그멘테이션 혼영기법 = 외부단편화 , 내부단편화를 최소화 하기 위해서 개발한 방법
세그멘테이션으로 프로세스를 나눈 후 해당 크기에서 페이징 기법으로 적재
교체기법 = who 메모리 교체 대상 결정. 주기억 장치에 있느 프로세스 중 어떤 프로세스를 제거할 것인지 결정하는 기법
fifo, lru ,lfu,opt 등이 있음
firist in first out = 먼저들어온게 먼저 나가는 기법 = 선입선출
주기억장치 페이지에 순차적으로 참조 스트링이 들어오고, 페이지 교체는 가장 먼저 들어온 페이지부터 교체
페이지부재 (page fault) = cpu가 필요로하는 참조스트링에 페이지가 없다는 것
lru = 사용된 시간을 확인하여 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체
(least recently used )
lfu (least frequently used ) = 사용된 회수를 확인하여 참조횟수가 가장 적은 페이지
단, 교체 대상 여러 개가 동일할 경우 문제에서 "동일ㅎㄹ 경우는 lru 방식 사용 "
opt = 앞으로 가장 오랫동안 사용하지 않을 페이지 교체 기법 , 실현 가능성 없음
nur = lru 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체하는 기법, 최근 사용 여부를 확인하기 위해 페이지마다 참조비트와 변형 비트사용
scr = 가장 오랫동안 주기억 장치에 있떤 페이지중 자주 사용되는 페이지의 교체를 방지하기 위한 기법으로 fifo 단점을 보완
내부단편화 = 남는공간 =메모리 비효율적 사용
단편화 해결방안 = 통합/압축 <- 내부/외부 전부 다사용하는 해결방안
통합기법 =인접한 공간을 합치는 방법
압축 = 남는공간을 몰아서 한번에 모아놓는 기법
slab allocator = 내부단편화에서 사용 = 메모리를 사전에 작게 짤라놓고 요청올 시 분배
외부단편화 해결방법 = 버디메모리 할당<- 외부만 가능 (통합압축은 내외부 전부 가능)
버디 메모리 할당 = 메모리 사이즈를 1/2를 나눠서 적합한 크기가 될 떄까지 줄여가면서 최적의 메모리를 제공
페이징 기법의 문제점 - 스레싱 = 프로세스 처리시간보다 페이지 교체 시간이 더 많이지는 현상
페이징 기법의 문제점 해결방안
워킹세트 = 프로세스가 많이 참조하는 페이즐의 집합을 주기억장치 공간에 계속 상주하게하여 빈번한 페이지 교체 현상을 중임
페이지 부재 빈도 (pff) 페이지 부재율의 상한과 하한을 정해서 직접적으로 페이지 부재율을 예측하고 조절하는 기법
지역성 = 지역성(국부성,구역성, 국소성 )은 프로세스가 실행되는 동안 주기억장치를 참조할 떄 일부 페이지만 집중적으로참조하는 트것ㅇ
지역성의 유형 =시공순
시간지역성 = 가까운 시간내 또 사용될 확률이 높음 loop, stack
공간지역성 = 메모리 공간에서 사용되면 그 근처 공간에서 프로세스 실행 = 배열순회
순차지역성 = 명령어들이 순차적으로 실행
프로세스 = cpu에 의해서 처리되는 사용자 프로그램, 실행중인 프로그램
생준실대완
생성상태 (create)
준비상태(ready)
실행(running)
대기상태 (waiting)
완료상태(complete,exit)
생성-> "준비"상태에서 디스패치되면 "실행" -> 종료하면 "완료"
ㄴ"실행"에서 할당시간 초과하면 ->준비
ㄴ "실행"에서 입/출력 발생하면 -> "대기"
디타블웨
디스패치 = 준비 상태에 있는 여러 프로세스중 실행될 프로세스를 선정(스케줄링)하여 cpu할당 -> 문맥교환 발생
할당시간초과(timeout) = cpu를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 pcb저장,cpu 반납후 다시 준비상태로 전이, 타임슬라이스 만료, 선점 시 타임아웃발생
입출력 발생(block) = 즉시 실행 불가능한 시스템콜, i/o작업, 프로세스간 통신시 block 발생
꺠움 wake-up = 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료사싱을 wait& signal등에 의애 알려주고 준비상태로 전ㅇ ㅣ
process control block = pcb = 프로세스 제어블록 = 운영체제가 프로세스 관리를 위해 필요한 자료를 담고 있는 자료구조
스레드 = 프로세스보다 가벼운 독립적으로 수해오디는 순차적인 제어의 흐름, 실행단위
한개의 프로세스는 여러개의 스레드를 가질 수 있음
서비스시간 =프로세스가 결과를 산출하기 까지 소요되는 시간
응답시간 = 프로세스들이 입력되어 서비스를 요청하고 반응하기 시작할떄까지 소요되는 시간
반환시간 = 대기시간 +수행시간 프로세스들이 입력되어 수행하고 결과를 산출하기 까지소요되는 시간
대기시간 = 프로세서에 할당 되기까지 큐에 대기하는 시간
평균대기시간 = 큐에 대기하는 평균 시간
종료시간 =processing time 을 모두 수행하고 종료되는 시간
시건할당량 = 프로세서를 독점하는것을 방지하기 위해 서비스되는 시간 할당량
응답률 =(대기시간+서비스시간)/서비스 시간 , hrn스케줄링에서 사용 , 기아현상을 방지
스케줄링 = cpu를 사용하려는 프로세스들 사이에 우선순위를 관리하는 작업기능
선점형 스케줄링 = 다른 프로세스가 cpu차지할 경우 해당 프로세스를 뻇어서 사용 = 즉 낮은 우선순위의 프로세스가 실행중이면 높은 우선순위 프로세스가 뻇을 수 있음
대부분 운영체제는 선점형 , 비교적빠른응답
비선점형 스케줄링 = 현재 실행중인 프로세스가 종료될 때 까지 기다렸다가 사용. cpu 점유가 불가능
선점스케줄링 알고리즘 = smmr = 쇼미더머니 다음라운드 진출
SRT, MLQ, MLFQ/MFQ, Round Robin
라운드로빈 = 시간할당량 안에 처리못할 경우 준비 큐 리스트의 가장 뒤로 보내지고 CPU는 대기중인 다음 프로세스로 넘어감
SRT = 가장짧은 시간이 소요되는 프로세스를 먼저 수행
MLQ (다단계 큐) = 작업들을 여러 종류 그룹으로 분할 ,여러 개의 큐를 이용하여 CPU 선점
다단계 피드백 큐 = 만료가 된 큐를 다음 큐로 넘어가고 마지막 큐는 라운드로빈 방식으로 처리
비선점형 스케줄링 = 우기HFS = 우리기업은 홈패밀리서비스를 제공한다
우선순위 스케줄링 - 기한부 스케줄링 - HRN - FcFs - SJF
우선순위 = 우선순위가 부여
기한부 = 작업들이 명시된 시간이나 기한내에 완료되도록 계획
FCFS = 먼저들어온게 먼저 처리
SJF = 적은 시간의 프로세스가가 종료시까지 자원 점유. 기아현상 발생
HRN = 기아현상 해결. 대기시간+서비스시간/서비스시간 -> 대서서
대기시간이 긴 프로세스일 경우 우선순위를 높게 함
스케줄링 계산공식
반종도 대반서
반환시간(응답시간) = 종료시간 - 도착시간
대기시간 = 반환시간 - 서비스시간
응답시간 : 프로세스딜이 입력되어 서비스를 요청하고, 반응하기 시작할 떄까지 소요되는 시간
반환시간 : 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간
대기시간 : 프로세스가 프로세서에 할당되기 까지 큐에 대기하는 시간
deadlock 교착상태 = ㅏ중 프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태
발생조건 = 상점비환
상호배제
점유와 대기
비선점
환형대기
교착상태 해결 방법 = 예회발복
예방
회피 -> 은행가 알고리즘이 있음 , wound-wait, wait-die
발견 -> 자원할당 그래프
복구
디스크 스케줄링 개념 = 사용할 데이터가 디스크상의 여러곳에 저장되어 있어, 데이터를 액세스하기 위해 디스크 헤드를 움직이는 경로를 결정하는 기법
컴퓨팅가상화
스토리지가상화
i/o가상화
컨테이너 = 하이퍼바이저가 없음
분산처리기술
네트워크가상화 = SDN (소프트웨어로 정의된 네트워크), NFV
SDN => 보통 스위치에 포트 꽂는곳을 Dataplane, 그 위에 포트를 관리하는 s/w를 control 플레인 이 두개를 분리해서 사용하는데 이걸 분리해서 관리할 떄 쓰는 프로토ㅗㄹ이 openflow
nfv => 서버에 가상화를 하는 것
csma/cd 유선
csma/ca 무선
프로토콜의 개념 = 컴퓨터 메세지를 전달하고 제대로 도착했는지 확인하고 도착하지 않았을 시 재전송하는 인력의 방법
프로토콜의 3요소
구의타 =구의역에서 탄다
구문/의미/타이밍
구문= 데이터형식, 코딩, 신호레벨등의 규정
의미 =정보전송을 위한 제어 정보로 조정과 에러 처리를 위환 규정
타이밍 = 속도 조절 순서 관리
자동반복 요청방식
rip = 거리벡터 알고리즘을 기초하여 개발된 내부 라우팅 프로토콜 15홉제한, udp 사용 ,30초마다 공유
ospf = rip 단점 개선 , 링크상태 알고리즘을 적용해서 최단경로 찾음 ,전체 라우팅에 전달하여 최단경로 찾는것 = 링크상태 알고리즘
다익스트라 알고리즘 사용 ,홉카운트 무제한
tcp 특징
신뢰성 보장
연결 지향적 특징
흐름제어
혼잡제어
pop3 = 로컬 pc에 저장
imap = 서버에 저장
FLSM = 고정크기 subnet방식
VLSM = 가변크기
서킷
패킷 스위칭 =
wi-sun = ieee802.15.4 , 스마트그리드와 연계
nfc = 고주파 ,rfid 확장, 10cm 이내에서 저전력 비접촉식
스몰셀= 소형 기지국
블루투스 = 스캐터넷, 피코넷
ble= 저전력 블루투스 기술
zing = 키오스크 , 기가급, nfc에서 발달
bcn= 광대역 통합망
c-v2x= 자율주행
ad-hoc = 이동 노드간 자율적 구성, 단말간끼리 망 구성
메시네트워크
uwb = 초광대역
usn = 사물에 센서를 부착
wban = 인체삽입
ndn = data의 이름을 활용
cps = 가상 물리시스템
빌드 관리 = ant, 젠킨스
형상관리 = git ,svn
릴리즈 노트 작성항목
헤개목이 재수사소 노면연
헤더 = 문서 정보
개요 = 제품의 변경사항 요약
목적 = 목적
이슈요약 = 이슈요약
재현항목 = 버그를 재현한 항목
수정개선내용 = 수정사항
사용자 영향도 = 개선 후 사용자 영향도
소프트웨어지원 영향도 = 수정 후 제품에 영향
노트 =업데이트 된 항목을 기록
면책조항 = 법제도
연락정보 = 지원할 연락처
drm
제소분 클콘패 컨보
콘텐츠 제공자, 콘텐츠 소비자, 콘텐츠 분배자,
클리어링 하우스 => 콘텐츠 권한 정책, 콘텐츠 라이선스
drm 콘텐츠
패키저
drm 컨트롤러
보안컨테이너
바코드 = doi
트랜잭션 = 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위
트랜잭션의 특징 acid
A = atomicity 원자성 = 언산 전체가 정상적으로 실행되야 하거나 모두 취소 되어야한다
c = consistency 일관성 = 트랜잭션 수행전과 수행후의 상태가 같아야한다
i = isolation 격리성 /고립성 = 동시에 실행되는 트랜잭션들이 서로 영향을 미치면 안 된다
d =durability 영속성 = 성공이 완료된 트랜잭션의 결과가 영속적으로 데이터베이스에 저장되어야함
은행 계좌이체로 생각해보면 됨
트랜잭션의 상태 변화 =할부 완신철 = 이번달 할부금은 완전실철
활동(active)
부분완료(partially commit) = 마지막 명령문이 실행이 된 상태 . 커밋만 안 된 상태
완료 (commit)
실패(failed)
철회(aborted)
트랜잭션 제어 언어 tcl
커롤체
커밋 commit 트랜잭션이 확정된 상태
롤백 = rollback 트랜잭션이 취소된 상태
체크포인트 = savepoint 저장시기를 설정하는 명령어
병행제어 개념 = 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, db일관성을 유지하기 위해 상호작용을 제어하는 기법
병행제어 미보장시 문제점 = 갱현모연
갱신손실 lost upload =
현황파악오류 dirty read =
모순성 incosistancy
연쇄복귀 cascade rollback
병행제어 기법 =
` =록콘서트에가서 낙타를 타다
로킹 locking = 잠금 = 하나의 트랜잭션이 실행하는 동안 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능 제공
로킹 단위가 작아지면 오버헤드 증가
한꺼번에 로킹할 수 있는 객체의 크기를 로킹단위라고함
로킹 단위가 크면 로크의 수가 적어짐 -> 제어기법 간단 .병행성 감소
로킹 단위가 작아지면 로크의 수가 많아짐 -> 제어기법 복잡. 병행성 증가
낙관적 검증 (validation) = 트랜잭션이 어떤 검증도 수행하지 않고 일단 실행후 트랜잭션이 종료시 검증을 수행
타임스탬프 순서 (timestamp ordering) = 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임스태프를 부여하여 부여된 사간에 따라 트랜잭션 작업 수행
시스템은 기본적으로 시간계수기를 가지고 있음 -> 4byte값을 가지고 있음 요즘은 8byte도 많음. 1970.1.1에서 1초단위로 증가
다중버전동시성 제어 (mvcc) = 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬를 비교하여 적절한 버전을 선택하여 실행되는 기법
고립화수준 isolation level = 현재의 데이터에 대한 무결성을 해지지 않기 위해 잠금을 설정하는 정도
고립화 수준 종류 = RRRS
Read uncommitted = 연산 중인 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준 -> dirty read가 발생 non-repeatable read, phantom read 발생할 수 있음
Read commit = 연산을 수행할 떄 연산이 완료될 떄까지 연상 대상 데이터에 대한 읽기를 제한 -> non-repeatable, phantom 발생
repeatable read -> 선행 트랜잭션이 특정 데이터를 읽을 떄 트랜잭션 종료시까지 해당 데이터에 대한 갱신,삭제를 제한하는 수준 ->phantom문제점 발생
Serializable read -> 특정 데이터 영역을 순차적으로 읽을 떄 해당 데이터 영역 전체에 대한 접근을 제한함
주로 read-commit을 많이 씀
회복기법 개념 = 트랜잭셩 수행 중 장애로 인한 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구
회로체크
회복기법, 로그기반회복기법, 체크포인트 회복기법, 그림자페이징회복기법
redo = 비정상적으로 종료됐을 떄 로그를 분석하여 재작업하는 기법, 로그를 이용해 재실행함으로써 db복구
undo = 로그를 통해 작업한 내용을 모든 내용을 취소하는 기법
로그기반 회복기법
지연갱신 = deferred update = 트랜잭션이 완료되기 전까지 db에 기록하지 않음
즉시갱신 = immediate update 트랜잭션 수행중 갱신을 즉시 db에 반영 =undo 를 실행 =ctrl + z
체크포인트 회복기법 = 검사점 이후에 처리된 장애에 대해서만 복원 가능
그림자페이징회복기법= 복제본을 생성하여 db장애시 이를 이용해서 복구
sql 문법 분류 정조제
ddl 데이터 정의 create , alter , drop ,truncate 크알드트
dml 조작어 selecte,insert, update, delete crud를하는 언어 , 세인업데
dcl 제어어 grant, revoke 보안,무결성 유지, 병행성제어, 회복을 위해 보무병회
DLL = 데이터를 정의하는 언러로서, 데이터를 담는 그릇을 정의하는 언어
도스테뷰인
도메인 =하나의 속성이 가질 수 있는 원자값의 집합
스키마 =DB의 구조, 제약조건 등의 정보를 담고 있는 기본구조
테이블 = 데이터의 저장공간
뷰 = 물리테이블에서 하나의 논리적인 가상의 테이블
인덱스 = 검색을 빠르게 하기 위한 데이터 구조
스키마의 유형 = 틀, 기본구조
외계내
외부스키마 = 사용자 공간, 사용자가 DB바라보는 뷰, 논리적 구조
개념 스키마 = 외부와 내부 사이를 나타내며 전체적인 뷰, 개체간의 관게 ,접근권한
내부 스키마 = 물리적 저장 장치로 실제 디스크
테이블의 개념 = 데이터를 저장하는 필드들로 구성된 데이터의 집합체
행과 열에는 실제로 순서가 정해지지 않음
튜플/행 = 튜플은 릴레이션에서 같은 값을 가질 수 없음
애트리뷰트/열 = 열의 개수를 디그리(차수)라고 함
카디널리디 = 튜플의 수
도메인 = 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합 ->즉 문자만 들어올 수 있는 곳에 숫자가 들어올 수 없음
실제로 들어간 값들을 인스턴스
논리= 애트리뷰트 <->물리=열
논리 = 릴레이션 <-> 물리 =테이블
식별자 = 집합체를 담고 있는 관계형 DB에서 각각의 구분할 수 있는 논리적 개념
뷰 = 논리테이블 ,보안기능을 제공 ,뷰 변경 불가 , 논리적 데이터 독립성 제공
뷰는 삭제후에 재생성해야함 , 뷰는 변경을 제공하지 않음
뷰 삭제 명령어는 Drop VIEW 뷰이름;
인덱스는 = 검색연산의 최적화를 위해 값에 대한 주소정보로 구성된 데이터 구조
DB 파일구조
순차방법 = 레코들드의 물리적 순서와 논리적 순서가 같게 저장
인덱스 방법 = <키값, 주소> 쌍으로 구성
해싱방법 = 해시함수를 대입시켜 계산한 결과를 주소로 이용
순해비함 단결클
순서인덱스 = 정렬된 순서로 생성되는 인덱스
해시인덱스 = 해시함수에 의해 키값으로 접근하는 인덱스
비트맵인덱스 = 적은 개수값이 저장된 경우 선택하는 인덱스
함수기반인덱스 = 수식이나 함수를 적용
단일인덱스 = 하나의 컬럼
결합인덱스 = 두개 이상의
클러스터드인덱스 = 기본키(PK)기준으로 레코를 묶어서
클러스터드인덱스 = 기본키(PK)기준으로 레코드를 묶어서
인덱스 생성, 삭제, 변경
UNIQUE = 인덱스 걸린 컬럼에 중복 값을 허용하지 않음. 생략 가능
EX) CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);
EX) DROP INDEX 인덱스명;
EX) ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명);
인덱스 스캔방식=범전단생
범위스캔 =
전체스캔 =
단일스캔 = 수직적 탐사
생략스캔 =
ddl = 크알드트 = create , alter ,drop ,truncate
drop은 밥그릇을 없앤다면
트런케이트는 밥을 없애는것 = 테이블 내의 데이터를 삭제
CREATE TABLE 속성
PRIMARY KEY = 기본키 정의된
FOREIGN KEY = 외래 키 제외
UNIQUE = 유일한 값들
NOT NULL = NULL값에 포함 X
CHECK = 제악조건
DEFAULT = 기본 값
CREATE TABLE 사람 (
이름 VARCHAR(10), 성별 CHAR(1) CHECK ( 성별 = 'M' OR 성별 ='F')
);
ALTER
컬럼 추가 ALTER TABLE 테이블명 ADD 컬럼명 데이터_타입;
컬럼 수정 ALTER TABLE 테이블명 MODIFY 컬러명 데이터_타입
컬럼 삭제 ALTER TABLE 테이블명 DROP 컬럼명;
컬럼 수정 ALTER TABLE 테이블명 RENAME COLUMN 변경전_컬럼명 TO 변경 후_컬럼명;
DROP 명령 = 테이블 삭제
DROP TABLE 테이블명 [CASCADE| RESTRICT]
CASCADE = 참조하는 테이블까지 연쇄적으로 제거
RESTRICT = 다른 테이블이 삭제할 테이블을 참조중이면 제거하지 않음
TRUNCATE TABLE 명령어; = 테이블 내의 데이터들을 삭제하는 명령어
VIEW 관련 DDL- CREATE VIEW
CREATE VIEW 뷰이름 AS 조회쿼리;
EX) CREATE VIEW 사원뷰 AS SELECT 사번,이름 FROM 사원 WHERE 성별='M'
VIEW 는 AS, INDEX는 ON
CREATE OR REPLACE VIEW 뷰 교체 명령어
EX) CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;
DROP VIEW 뷰이름; 뷰삭제
CREATE INDEX 인덱스 생성 , 인덱스 걸린 컬럼에 중복값을 허용, 복수컬럼을 인데스로 걸 수 있음
EX) CREATE INDEX 인덱스명 ON 테이블명 - > CREATE INDEX IDX_NAME ON STUDENT(NAME);
ALTER INDEX 인덱스명 ON 테이블명
DROP INDEX
DML = 데이터베이스에 저장된 자료들을 입력, 수정, 삭제 조회하는 언어
세인업데 = SELECT, INSERT, UPDATE, DELETE
셀프웨구해오
SELECT ,FROM ,WHERE ,GROUP BY ,HAVING ,ORDER BY
SELECT FROM 검색할 테이블명 ; [WHERE 조건드] [ORDER BY { 컬러명, expr(표현식)}[ASC |DESC];
| : 또는
[]: 생략가능
{} : 문법 적용범위(묵음)
expression : 표현식 (사칙연산)
selecte -> 2개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명' 으로 표현
ALL = 모든 튜플을 검색
DISTINCT = 중복된 속서이 조회될 경우 그 중 한개만 검색
DISTINCTROW = SELECT 뒤에 속성들과 상관없이 튜플 전체가 중복된 튜플을 제거
SELECT = ALL이 기본값, 검색하고자하는 속성명, 계산식
FROM 다음에 테이블명 기술
WHERE 검색할 조건을 기술
GROUP BY = 속성을 그룹으로 분류
HAVING = GROUP BY에 의해 분류한 후 그룹에 대한 조건
ORDER BY 정렬 ASC 오름차순 DESC 내림차순
WHERE 조건
비교 >, < ,>=
범위 BETWEEN EX) PRICE BETWEEN 5000 AND 8000 가격은 5000보다 크거나 같고 8000보다 작거나 같음
즉 PRICE >=5000 AND PRICE <=8000
집합 IN, NOT IN EX) PRICE IN(4000, 5000, 6000) -> 가격이 4천 또는 5천또는 6천
패턴 LIKE EX) NAME LIKE '정보%' -> 이름이 '정보'로 시작하는 사람이 찾아짐
NULL = IS NULL, IS NOT NULL
복합조건 AND, OR ,NOT
LIKE 와 함꼐 사용하는 와일드 문자
+ =>문자열을 연결 EX) '축구' + '감독' = 축구감독
% => 0개이상의 문자열 일치 LIKE'키워드%'
[] => 1개의 문자와 일치 [0-8]% -> 0~8사이 숫자로 시작하는 문자열
[^] -> 1개의 문자와 불일치 EX) [^0-8]% 0~8사이 숫자로 시작하지 않는 문자열
_ -> 특정 위치의 1개의 문자와 일치 '_동%' -> 두 번쨰 위치에 '동'이 들어가는 문자열 예를 들어 '혼동'
SELECT * FROM PRODUCT WHERE NAME LIKE '[ABCD]%';
order by 과목, 이름; -> 과목이 먼저 수행 후 이름이 수행
count (*) : null 포함
count(컬럼명) : null 포함 x
join = 두개이상의 테이블을 연결하여 데이터를 검색
논리적 조인 유형
내부조인 inner join = 공통 존재 컬럼의 값이 같은 경우 추출 = 공통된 값만 출력
외부조인 outer join = 왼쪽,오른쪽 , 완전외부조인이 있음 => 왼쪽조인은 외쪽테이블을 기준, 오른쪽조인은 오른쪽 기준으로 조인
교차조인 cross join = 조인 조건이 없는 모든 데이터 조합을 추출
셀프조인 self join = 자기 자신에게 별칭을 지정 후 다시 조인
내부조인 ex) select a.컬럼1, B.컬럼1 FROM 테이벌 1A JOIN 테이블 2 B ON 조인조건
외부조인 동일하게 LEFT, RIGHT JOIN 완전외부조인 FULL ON
교차 조인 CROSS JOIN !! on이 없음
셀프 조인= 별칭만 드르게해서 조인 함
서브쿼리 sql문안에 또다른 sql문
두 가지 유형
from 절 서브쿼리 = from 절 안에 들어있음
where 절 서브쿼리 = whrer 절 안에 있음
where 컬럼명 in(select~)
집합연산자 = 두 개이상의 테이블에서 여러개의 질의의 결과를 연결하여 하나로 결합하는 연산자
union = 중복행이 제거 쿼리의 집합
union all = 중복행이 제거되지 않은 쿼리의 집합
intersect = 두 쿼리 결과에 공통적으로 존재 쿼리의 집합
minus = 첫 쿼리에 있고 두번쨰 쿼리에 없는 쿼리의 집합
insert into 테이블명(속성명) values(데이터1) => 속성명 생략 가능 , 속성명하고 데이터는 같아야함
update set where = 업셋웨
update 테이블명 set 속성명=데이터 where 조건;
delete from 테이블명 where 조건; == 델프웨!!
모든 레코드를 삭제할 떄는 where절 없이 delete만 삭제
dcl = 관리자가 데이터 보안, 무결 유지 , 병행제어, 회복을 위해 사용하는 언어
보무병회
데이터보안, 무결성유지, 병행제어, 회복
grant
시스템 권한 -> grant 권한 to 사용자
객체권한 -> grant 권한 on 테이블 to 사용자 = 그온투
with grant option
revoke
시스템 권한 revoke 권한 from 사용자
객체권한 revoke 권한 on 테이블 from 사용자 =리온프
+cascade constraint
다중행 연산자 종류
in = 리턴되는 값중에 조건에 해당값이 있으면 참
any,some = 하나 이상을 만족하면 참
all = 모든 값과 조건값을 비교하여 모든 값을 만족해야하는 참
exist = 서브 쿼리의 결과중 만족하는 값이 하나라도 존재하면 참
다중행 함수의 종류
집그윈 = 집계함수, 그룹함수, 윈도함수
집계함수 = 여러 행 또는 테이블 전체 행으로부터 하나의 결과값을 반환 = sum, avg
그룹함수 = 중간합계 분석 데이터 산출
윈도함수 = olap 에서 사용되는 함수
집계함수 select 컬럼 집계함수 from 테이블명 [where조건] group by 컬럼 [having]
집계함수의 종류
count
sum
avg
max
min
STDDEV =표준편차
VARIANCE = 분산
그룹함수 = 테이블의 전체행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹하하여 그룹별로결과를출력
group by 절 그룹별 속성의 값을 집계
roll up함수 = 중간 집계값 산출
cube 함수 = 결함 가능한 모든 값에 대해 다차원 집계
grouping sets함수 = 개별집계
윈도함수 = 온라인 분석처리 용도로 표준 sql 에추가된 함수. group by절을 이용하지 않고 행 그룹을 기반으로 집계값을 계산
select 함숨여 over ([partition by 컬럼] [order by 컬럼명] from 테이블명
대표적으로 순위함수가 있음
rank = 공동순위 반영 = 2위 2위 2위 5위
dense_rank = 동일 순위 존재시에도 후순위로 넘어가지 않음 ex 2위 2위 2위 3위 3위 4위
row_number =동일 순위가 값에 존재해도 이와 무관하게 연속 번호 부여 ex)2위가 3개라도 2위 3위 4위 순으로 부여
블루투스 2가지
피코넷과 =작은 단위 이걸 피코넷끼리 연결해야 스캐터넷
스캐터넷 = 네트워크끼리 연결
db에서 검색시 %는 0글자 이상이라서 %A이면 A가 나와도 맞음
int(*pf)(int,int); <- 함수 포인터
ㄴ 함수 포인터임
따라서 (*pf) <- 함수명임
요구ㅏ항 명세단계에서는 2가지가 있음 -> 비정형 명세기법과 / 정형 명세기법
비정형은 자연어 <-> 정형은 수학적 표기
데이터 흐름도는 데이터가 흘러가는 흐름도를 보여줌
처리기는 원으로 표시 , 데이터 흐름도는 -> , 데이터저장소는 =표시 , 단말(Terminator) 사각형으로 나타냄
iso9126 = 기신사효유이
기능성/신뢰성/사용성/효율성/유지보수성/이식성
선형자료구조 스택=한쪽에서 넣고 한쪽으로 나옴, 큐는 한쪽으들어오고 반대쪽으로 나감
소프트웨어 개발 방법론
Chart 1
요설구태유 :
폭포수 모델: 각 단계를 확실히 한 후 다음단계
나선형 모델: 계위개고
프로토타입모델: 시제품
반복적개념모델 : 병렬, 반복, 점증완성 iteration
Chart2
어떻게 개발 할 것인지? SDLC 전 과정에 영향을 줌
구조적 방법론 개념 : 기능에 따라 나누어 개발, 분할과 정복 접근 방식 , 나씨-슌이더만 차트 사용
ㄴ나씨슈나이더만 : 논리의 기술에 중점을 둔 도형식 표현방법 , 시각적으로 보기 편함
정보 공학 방법론 개념 : 체계화한 방법론(DB)
객체지향 방법론 : 객체라는 기본단위로 시스템을 분석 및 설계 -> 복잡한 현실 세계를 사람이 이해하는 방식을 시스템에 적용 = 객체, 클래스, 메세지를 사용
컴포넌트 기반 방법론 : 컴포넌트를 조립해서 응용프로그램 개발
애자일방법론 : 사람이 중심, 변화에 유연
제품 계열 방법론 : 공동퇸 기능을 정의하여 개발하는 방법, 임베디드 소프트웨어 작성에 유용, 영영공학과 응용 공학으로 그분
**애자일방법론: 기능중심 ,소통 중심, 요구변화에 유연하고 신속하게 대응
XP 개념 : 소프트웨어 품질을 높이기 위한 방법론
XP 5가치 가치 개념 : 용단의 피존 = 용기, 단순성, 의사소통, 피드백, 존중
XP 12가지 원리 : 짝프로그래밍, 공동 코드소유, 지속적 통합(CI), 계획세우기, 작은 릴리즈(짧은 단위의 업데이트), 메타포어(고객과 자주소통), 심플디자인, 테스트 기반 개발(=TDD), 리팩토링,40시간작업, 고객상주, 코드표준
스크럼 개념 : 매일 정해진 시간, 장소에서 짧은 시간의 프로젝트 관리 중싱 방법론
백로그 =요구사항, 스프린트 =반복기간, 스크럼 미팅=데일리 미팅, 번다운 차트는 그래프를 그려서 얼마나 진행됐는지 확인 , 스크럼 마스터 =리더
린 = 도요타에서 온 것
객체지향 개념 = 개체를 속성과 메세드를 결합한 형태
클객메메인속
클래스 = 틀!
객체 = 식별가능한 대상
메서드 = 객체 사용방법
메세지 = 객체 간 상호작용
인스턴스 = 메모리상에 할당, 실제의 실형 객체
속성 = 데이터 값들들 단위별로 정의
객체 지향 방법 :캡상다추정관
캡슐화 = 메서드로만 통신해서 정보은닉가능, 결합도가 낮아져 오류 파급효과가 낮음
상속성 = 하위클래스에서 재정의 없이 물려받을수있음
다형성 = 오보로딩, 오보라이딩 ////오보로딩은 메서드가 이름이 같은데 변수가 갯수가 다름 , 오로라이딩은 하위클래스에서 상위클래스 정의 가능
추상화 = 공통 성질추출
정보은닉 = 데이터와 메서드를 숨기는데, 노출 가능한 메서드로 통신해서 코드를 보안하는 기술, 사이드 이펙트(오류) 최소화
관계성 = 두 개체간의 연관성이 있나 확인
객체지향설계 원칙(SOLID)
Single Responsiblity Principle - [SRP] 단일책임의 원칙 : 하나의 클래스는 하나의 목적을 위해 생성해야한다. ex) 사칙연산 클래스는 오직 사칙연산만 수행해야 한다.
Open Close Principle- [OCP)]개방폐쇄원칙 : 구성요소는 확장에는 열려있고, 변경에는 닫혀있어야한다. EX) 캐릭터를 하나 생성한다고 할때, 각각의 캐릭터가 움직임이 다를 경우 움직임의 패턴 구현을 하위 클래스에 맡긴다면 캐릭터 클래스의 수정은 필요가없고(Closed) 움직임의 패턴만 재정의 하면 된다.(Open)
Liskov Substitution Principle - [LSP]- 리스코프치환의원칙: 서브타입은 어디서나 자신의 기반 타입으로 교체할 수 있어어한다. 자식클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 LSP를 만족한다.
Interface Segregation Principle [ISP] 인터페이스분리의 원칙: 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 인터페이스가 변해도 그 기능과 영향을 받지 않아야함
Dependency Inversion princplc [ DIP]의존성역전의 원칙 : 추상을 매개로 메세지를 주고 받음으로써 관계를 최대한 느슨하게 만듦
객체지향 분석 개념 : 사용자 요구사항을 분석
OMT 분석절차
객체모델링(object modeling) : 정보모델링 , 객체 다이어그램을 활용
동적모델링(dynamic) : 시간의 흐름에 따라 객체들 사이의 흐름, 순서등 동적행위 , 상태다이어그램
기능모델링(functional) : 자료흐름도를 사용해서 활용
데이터흐름도 : 데이터가 각 프로세스를 흐르면서 변화되는 모습
자료사전 : 자료흐름, 자료요소 , 관계, 값, 범위등을 명시하는 사전 =>만드는 이유는 명확히 정의해서 누구나 정확히 자료를 이해하기 위해 작성
CHART3
프로젝트 관리 개념 = 시스템을 개발하기 위한 전반적인 활동
계획관리
품질관리
범위관리
비용관리
일정관리
위험관리
3대요소 = 3P
인적자원, 문제, 프로세스
비용산정모델 분류
하향식 = 전문가판단, 델파이
상향식 = 코코모,푸트남, FP ,LOC= 낙관치,비관치,중간치, Man month =한 사람이 1개월동안 할 수있는 일 man month= loc/프로그래 월간 생산량, 프로젝트기간 =man month/프로젝트 인력
코코모 = 조직형, 반분리형, 임베디드형
조직형은 = 작은규모 5만 이하
반부리형 =dbms, 트랜잭션처리 30만이하
임베디드 =os , 30만 이상
푸트남 = 각 단계별 요구할 인력의 분포 가정, 레일리 노든 그래프
fp 기능점수 = 가중치 점수를 내서
일정관리모델개념
주공정기법 : 여러 작업의 순서가 얽혀있는 프로젝트 일정 계산법
PERT = 비관치 중간치 낙관치
CCPM = 자원제약사항을 고려
위험관리
위험은 예측되지 않는 것
알려진 위험
예측가능한 위험
예측 불가능한 위험
=>나선형 모델을 이걸 방지하기 위해서
회전완수 = 회피 전가 완화 수용
======================
현행시스템 파악
구성/기능/인터페이스 파악 -> 아키텍처 및 SW구성 파악 -< HW및 NW 구성 파악
소프트웨어 아키텍처 = 여러가지 소프트웨어 간의 외부로 드러나는 특성, 구성요소 관계
소프트웨어 아키텍쳐 프레임워크 = 아키텍쳐가 표현해야하는 내용 및 이들 간의 관계를 제공하는 아키텍처 기술 표준
비기능사항이 가장 중요하다.
제약사항/품질속성 -> 비기능사항
소프트웨어 아키텍처 4+1뷰 = 고객의 요구사항을 정리해놓은 시나리오를 4개의 과넘에서 바로보는
소프트웨어적인 방법
유논프구배
유스케이스뷰: 다른 뷰를 검증하기 위해 사용
논리뷰 : 기능 요구 사항= 설계자 개발자가 보는 관점
프로세스뷰 : 비기능적, 자원, 동기/비동기
구현뷰 = 모듈 구성
배포뷰 = 실제 구현된 컴포넌트들의 배치
===========================================
소프트웨어 아키텍쳐 패턴
계층화패턴 ex)OSI 7계층
클라이언트-서버패턴 : EX)웹 서비스
파이프 필터 패턴 : 데이터를 받으면 파이브를 받아서 넘기고 필터를 걸쳐서 다음 파이프로 넘겨줌
브로커 패턴 : 중간에서 브로커가 중계해줌(Redirect)
모델뷰컨트롤패턴 (mvc) ex)안드로이드
====================
아키텍처 비용평가
SACAA=두음
SAAM =제일 먼저 나온 것, 단순비용평가 모델
ATAM = 품질 속성을 잘 만족하는지
CBAM = 경제적, 비용 측면
ADR = 응집도평가
ARID = 품질속성을 특정부분만
=======================
디자인 패턴 = 공통으로 자주 발생하는 패턴을 고치기위해 만든 것
디자인 패턴 구성요소 = 패문솔사결샘
패턴의 이름, 문제및배경, 솔루션, 사례, 결과,샘플코드
목적에 따른 디자인패턴 유형 = 생구행
생성패턴 =instance
구조패턴 =조합
행위패턴= 어떻게 행동하는 지
생빌프로팩앱싱
구브데퍼플프록컴어
행미인이템옵스테비커스트매체
================================================
운영체제
운영체제 현행 시스템 분석시 고려사항
신성기주구 = 신뢰도, 성능, 기술지원, 주변 기기, 구축비용
============
DBMS의 기능
중복제어, 접근통제, 관계 표현 ,무결성 제약 조건
가용성, 성능, 상호호환성, 기술 지원, 구축지원
JDBC 자바데이터베이스 이용하게해주는 인터페이스
ODBC 데이터베이스 액세스하기위한 표준 개방형 프로그램 인터페이스
미들웨어 = 응용프로그램과 프로그램이 운영되는 환경간에 원만하게 통신하도록 지원하는 소프트웨어
==========================
요구공학 = 사용자의 요구가 반영된 시스템을 개발하기위해 사용자 요구사항에대한
도출 - 분석 - 명세- 확인 및 검증
기능적 요구사항 = 시스템이 제공하는 기능 = 기능성,완전성, 일관성
비기능적 요구사항 = 품질, 제약 사항 , 성능 =신사효유이 보품제
비기능적 요구사항 : 신뢰성, 사용성,효율성,유지보수성, 이식성, 보안성, 품질관련, 제약사항
요구공학 프로세스 = 욕사항 개발 단계 요구사항 관리단계
도출 -> 분석->명세->확인 및 검증
요구사항 개발 단계
도분명확
도출 = 이해관계자 식별, 관계형성 ,의사소통 => 브레인스토밍, 인터뷰
분석 = 일관성, 안정성획득
명세 = 문서 작성
확인 및 검증 = 베이스라인 수립
ㄴ여기서 인스펙션,동료검토 등이 사용됨
분석단계
요구사항 분류 = 기능인지 비기능인지
개념모델링 생성및 분석 =
자료흐름지향분석 = 데이터 흐름도 및 자료사전으로부터 소프트웨어 구조를 유도
객체지향분석 = 시스템의 기능과 데티어를 함께 분석, UML로 표준화
소프트웨어 시스템 모델링 기법
기능모델링 : 행위관점
자료모델링 : 데이터 중심, ER모델링
동적모델링 : 시간의 변화, 유스케이스 다이어그램 상태변화도
요구사항 명세기법
비정형 명세 기법 = 자연어를 기반으로 서술
정형명세기법 = 표현이 간결, 표기법에 맞게 서술
명세서는 최종산출물
요구사항 명세원리 및 검증항목 : 명완검일수추개
명확성, 완전성,검증가능성, 일관성, 수정용이, 추적가능성,개발 후 이용성
요구사항 확인 및 검증 단계의 주요 기법
요구사항 검토 =
정형기술 검토활용= 동워인
동료검토, 워크스루, 인스펙션
프로토타이핑 활용
모델 검증
테스트케이스와 테스트를 통해확인
CASE도구 활용검증
베이스라인을 통한 검증
RTM(요구사항추적표)를 통한 검증가능성
요구사항 관리 단계 절차
요구사항협상
요구사항 기준선 설정
요구사항 변경관리
요구사항 확인 및 검증
'자격증 > 정보처리기사' 카테고리의 다른 글
XP(eXtreame Programming)기법 (0) | 2021.04.29 |
---|---|
스크럼기법 (0) | 2021.04.28 |
소프트웨어 생명주기 (0) | 2021.04.28 |