수제비 2024 실기 final 실전 모의고사
시작!
<table border="1" style="width: 100%;">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
LMS(Learning Management System) : LMS는 교육 과정의 전반적인 관리기능뿐만 아니라, 교육에 필요한 콘텐츠 생성 및 관리, 커뮤니케이션 기능도 포함한다.
디지털 발자국 : 개인이 인터넷상에 남겨놓은 SNS 계정이나 커뮤니티 게시글, 쇼핑몰 후기 댓글 등을 통해 사용자를 추적할 수 있다고 붙여진 용어.
킬스위치 : 스마트폰 이용자가 도난당한 스마트폰의 작동을 웹사이트를 통해 정지할 수 있도록 하는 일종의자폭 ㅣ능.
IPC 기법(Inter Process Communication) : 프로세스간소통
- 메시지 큐 : 패킷 단위로 동작 통신
- 공유메모리: 프로세스의 일부를 공유
- 소켓 :클라이언트, 서버 프로세스간 통신.
- 세마포어 : 프로세스 사이 동기 맞추는 기능.
소켓 : IP address 와 PORT 넘버가 합쳐진, 네트워크상에서 서버 프로그램과 클라이언트 프로그램이 데이터를 송수신하고 통신할 수도 있도록 해주는 교환 기술.
피코넷 : 여러개의 독립된 통신 장치가 블루투스 기술이나 UWM 통신 기술을 사용하여 통신망을 형성하는 무선 네트워크 기술.
지그비 : 저속 전송 속도를 갖는 홈오토메이션 및 데이터 네트워크를 위한 표준 기술.
스몰셀 : 스몰셀은 10미터에서 수 킬로미터 범위의 스펙트럼에서 작동하는 저전력 셀룰러 무선 접속 노드이다. 전력 소모가 적고 가격이 저렴한 기지국이다.
-피코셀 : 200~300명을 수용하는 소형 이동통신 기지국. 전파 음영지역을 없애 휴대폰 등의 통화 품질을 높이는 데 쓰인다.
-펨토셀 : 펨토셀은 가정이나 소규모 사무실을 위한 초소형, 저전력의 이동통신 기지국이다. 데이터 트래픽 분산 및 음영지역 해소의 목적으로 사용된다. 더 널리 퍼져있는 용어는 소규모 셀이며 펨토셀이 여기에 포함된다
-마이크로셀 :
CVE(Common Vulnerabilities and Exposures) : 미국비영리회사인 MITRE사에서 공개적으로 알려진소프트웨어의 보안취약점을 표준화한 식별자 목록.
CVE 규칙 : CVE - (해당연도) - (취약점 번호)
사이버 킬체인 : 록히드 마틴. 공격형 방위시스템. 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모델.
크라우드소싱 : 군중관 아웃소싱의 합성어. 클라우드 컴퓨팅이 실용화되면서 가능하게 된 정보 기술 아웃소싱 전략의 하나로 기업 활동의 전 과정에 소비자 또는 대중이 참여할 수 있도록 일부를 개방하고 참여자의 기여로 기업활동 능력이 향상되면 그 수익을 참여자와 공유하는 방법.
커넥티드 카 : 자동차와 정보통신기술을 연결시켜 양방향 인터넷 및 모바일 서비스 이용이 가능한 차량.
WPAN : 까까운거리의 저가의 무선 통망
WBAN(Wireless Body Area Network) : 체내 혹은 인체 주변 3m 이내에서 일어나는 저비용, 저전력, 고속통신이 가능한 신체 접촉 근거리 무선 네트워크.
UWB(Ultra Wide Band; 초광대역무선) : 빠른 속도와 저전력 특성이 있고, 평균 10~20m, 최대 100m의 근거리 개인 무선 통신망(WPAN)에서 PC와 주변기기 및 가전제품들을 초고속 무선 인터페이스로 연결하거나 벽 투시용 레이더, 고정밀도의 위치 측정 차량 충돌 방지 장치, 신체 내부 물체 탐지 등 여러 분야에서 활용 가능,
NDN(Named Data Network) : 기존의 ip 주소 대신 Data의 이름을 활용하여 정보의 효율적인 검색 및 배포를 목적으로 하는 인터넷 기술로, ip 주소 대신 콘텐츠의 Name을 기반으로 정보를 획득하는 기술.
MDM(Mobile Device Management) : OTA(Over The Air; 휴대폰 무선 전송기술)을 이용하여 언제, 어디서나 모바일 기기가 Power On 상태로 있으면 원격에서 모바일 기기를 관리할 수 있는 시스템. 스마트폰이나 태블릿, 휴대용 컴퓨터와 같은 모바일 기기를 보호, 관리, 감시, 지원하는 기능의 시스템.
NFC(Near Field Communication) : 13.56MHz 주파수를 사용하고 , 424Kbps의 속도로 데이터를 전송하는 RFID의 확장 기술로, 10cdm 이내에서 저전력, 비접촉식 무선 통신 기술이다.
RFID (Radio Frequency IDentification) : 사물에 고유코드가 기록된 전자태그를 부착하고 무선신호를 이용하여 해당 사물의 정보를 인식·식별하는 기술로써 '무선식별', '전자태그', '스마트태그', '전자라벨' 등으로 불리기도 합니다. RFID는 주파수를 이용해 ID를 식별하는 방식으로 일명 전자태그로 불린다. RFID 기술이란 전파를 이용해 먼 거리에서 정보를 인식하는 기술을 말하며, 전자기 유도 방식으로 통신한다.
CC(Common Criteria) : 보안 기능이있는 IT제품의 국제표준에 기반하여 보안성을 평가기관에서 평가하고, 이에 대한 결과를 인증기관에서 인증하는 제도. (정보보호 제품평가기)
EDI(Electronic Date Interchange) 또는 전자 문서 교환 : 기업 간 수주, 발주, 수송, 결제 등 상업 거래를 위한 자료를 데이터 통신 회선을 통해 표준화된 포맷, 규약에 따라 컴퓨터 간에 온라인으로 전달하는 방식. 문서표준화, 컴퓨터 통신망으로 거래 당사자가 직접 송수신하는 정보 전달 시스템.
다크데이터 : 수집된 후 저장은 되어 있지만, 분석에 활용되지는 않는 다량의 데이터.
NAT(Network Address Translation) : 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 네트워크 주소 변환기술.
종류: Static NAT, Dynamic Nat
서버리스 컴퓨팅 : MSA, BaaS, FaaS 등의 기술을 활용하여 서버가 없는 것과 같이 직접 해당 이벤트에 접근하여 처리하는 컴퓨팅 기술.
엔 스크린 : 하나의 멀티미디어 콘텐츠를 'N"개의 기기에서 자유롭게 이용할 수 있는 서비스 및 기술.
선택도(=분포도) :전체 대산 레코드 중에서 특정 조건에 의해 선택될 것으로 예상되는 레코드 비율.
선택정렬 : 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 방식. 주어진 리스트 중에서 최솟값을 찾고 그 값을 맨 앞에 위치한 값과 교체함으로써 정렬을 완성시키는 알고리즘.
신기술 용어
용어 | 설명 |
스마트 그리드 | 전기 및 정보통신기술을 활용하여 전력망을 지능화, 고도화함으로써 고품질의 전력서비스를 제공하고 에너지 이용 효율을 극대화하는 전력망 |
Wi-Sun | IEEE 802.15.4g 표준에 기반을 둔 기술로, 900MHz 대역을 활용한 장거리 무선 통신 기술로 스마트 그리드와 연계하여 전기, 수도, 가스 등의 공급자가 무선 네트워크를 이용하여 에너지를 효율적으로 관리할 수 있도록 특화된 무선 통신 기술. |
유형 | 설명 |
CSMA/CD | IEEE802.3 유선 LAN의 반이중방식에서, 각 단말이 신호전송 전에 현재 채널이 사용 중인지 체크하여 전송하는 매체 액세스 제어 방식. |
CSMA/CA | 무선 LAN 반이중방식에서, 사전에 가능한 충돌을 회피하는 무선전송 다원접속 방식. |
무선랜 표준
표준 | 설명 |
802.11a | 5GHz 대역에서 54Mbps 속도를 제공 |
802.11b | 2.4GHz 대역에서 11Mbps 속도를 제공 |
802.11e | QoS 강화를 위해 Mac 지원 기능 채택 |
802.11f | AP간의 로밍기능을 향상시킨 표준 |
802.11g | 802.11b와 비슷하거나 속도가 향상 |
802.11h | 802.11e에 전파 간섭을 방지하는 기능 지원 |
802.11ac | |
802.11ad | 대용량의 데이터나 무압축 HD 비디오 등 높은 동영상 스트리밍에 적합 |
802.11ax | 하나의 AP가 다수의 디바이스를밀도있게 지원하는 Capacity를 최대화하는 무선랜 표준. |
ap : 무선랜과 유선랜을 연결시켜주는 단
주요 용어 | 설명 |
BCP(Business Continuity Planning) 업무 연속성 계획 |
재난 및 재해 상황을 대비하여 기업의 비즈니스 연속성을 유지하기 위한 업무 복구에 대한 계획 BIA토대로 BCP구축. |
BIA(Business Impact Analysis) | 재해 발생 시 기업의 비즈니스에 영향을 미치는 업무를 선정하고, 업무중단에 대한 정량적/정성적 분석을 통해 복구우선순위를 도출하는 BCP구축을 위한 비즈니스 영향 분석 |
RTO(Recovery Time Objective) | 업무 재개 위한 필요 시간 |
RPO(Recovery Point Objective) | 핵심 업무 복구 수준(백업) 업무 중단 시점부터 데이터가 복구되어 다시 정상 가동될 때 데이터의 손허용 시점. |
DRP(Disaster Recovery Plan) | 재난으로장기간에 걸쳐 시설의 운영이 불가능한 경우를 대비한 재난 복구 계획 |
DRS(Disaster Recovery System) | 재해복구계획의 원활한 수행을 지원하기 위하여 평상시에 확보하여 두는 인적, 물적 자원 및 이들에 대한 지속적인 관리체계가 통합된 재해복구시스템. |
DRS유형 | 설명 |
Mirror Site | -주 센터와데이터복구센터 모두 운영 상태로 실시간 동시 서비스가 가능한 재해복구센터 -즉시 복구. |
Hot Site | -주 센터와 동일한 수준의 자원을 대기 상태로 원격지에 보유하면서 동기, 비동기 방식의 미럴링을 통하여 데이터의 최신 상태를 유지하고 있는 재해복구 센터 - 4시간 이내 |
Warm Site | -Hot Site와 유사하나 재해복구센터에 중요성이 높은 자원만 부분적으로 보유하고 있는 센터 -데이터 백업 주기 : 수 시간 ~ 1일 -복구 : 수일~ 수주 |
Cold Site | 데이터만 원격지에 보관하고, 재해 시 데이터를 근간으로 필요 자원을 조달하여 복구할 수 있는 재해복구센터. -복구: 수주~ 수개 |
블록체인: 비즈니스 네트워크에서 거래를 기록하고 자산을 추적하는 프로세스를 용이하게 하는 변경 불가능한 공유 원장.
블록체인 합의 알고리즘 : 거래의 안정성을 보장해 주는 기술이자 모든 참여자가 데이터의 적합성을 판단하고 동의하는 과정.
블록체인 합의 알고리즘 | 설명 |
PoW(Proof of Work) | 확률적으로 해답이 어려운 문제를 가장 빨리 해결한 사람에게 블록을 만들 수 있도록 허가하는 합의 알고리즘. |
PoS(Proof of Stake) | 이더리움이 채택할 예정인 알고리즘으로 PoW와 기본 방식은 동일하나 화폐량을 더 많이 소유하고 있는 승인자가 우선하여 블록을 생성할 수 있는 알고리즘. |
PBFT(Practical Byzantine Fault Tolerance) | 참가자 중 1명이 Primary(리더)가 도어 자신을 포함한 모든 참가자에게 요청을 보내고, 그 요청에 대한 결과를 집계한 뒤 다수의 값을 사용해 블록을 확정하는 협의 알고리즘. -PoS와 PoW의 단점인 파이널리티 불확실성과 성능 문제를 해결한 알고리즘. |
CRUD분석 = CRUD 메트릭스 분석 : 프로세스와 데이터 사이에 관계 의존성을 CREATE, READ, UPDATE, DELETE 연산으로 프로세스와 테이블 간에 매트릭스를만들어서 트랜잭션을 분석한다.
REST | |
웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처 by.Roy Fielding. |
|
메서드 | 의미 |
POST | Create(생성) |
GET | Read(조회) |
PUT | Update(수정) |
DELETE | Delete(삭제) |
REST의 기본형태 : 리소스(자원) , 매서드, 메시지.
파일 처리 기술 종류.(색가순직)
종류 | 설명 |
Sequential File 순차파일 | 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록하는 방식
|
Indexed Sequential File 색인 순차 파일 | 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키 값 순으로 정렬시켜 기록하고 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식
|
VSAM; Virtual Storage Access Method 가상 기억 접근 방식 파일 | 동적 인덱스 방법을 이용한 색인 순차 파일
|
Direct File 직접 파일 | 파일을 구성하는 레코드를 특정 순서 없이 임의의 물리적 저장공간에 기록하는 것으로, 랜덤파일, DAM파일이라고 함
|
프린팅 기술
기술 | 설명 |
3D프린팅 | CAD 프로그램으로 설계한 파일, 산업용 스캐너, 의료용 스캐너, 비디오 게임 등의 3차원 설계 데이터를 기반으로 실물모형, 프로토타입, 툴 및 부품 등을 손으로 만질 수 있는 실제 물체로 만들어 내는 기술. |
4D프린 | 인간의 개입 없이 특정 시간이나 환경 조건이 갖춰지면 스스로 형태를 변화시키거나 제조되는 자가 조립 기술이 적용된 프린팅 기술로 다중적 3D 프린팅을 통해 복합물질을 형성하고, 자가 변환이라는 새로운 기능이 추가된 기술 |
일방향 암호
항목 | 특징 |
MAC (Message Authentication Code) | 키를 사용하는 메시지 인증 코드로 메시지의 무결성과 송신자의 인증을 보장 |
MDE (Modification Detection Code) | 키를 사용하지 않는 변경 감지 코드로 메시지의 무결성을 보장 |
무선 관련 기술
기술 | 설명 |
스몰 셀 | 기존의 높은 전송 파워와 넓은 커버리지를 갖는 매크로 셀 과 달리 낮은 전송 파워와 좁은 커버리지를 가지는 소형 기지국으로 안테나당 10W급 이하의 소출력 기지국 장비나 피코 셀, 펨토 셀 등을 통칭하는 용어. |
애드 혹 네트워크 | 고정된 기반 망의 도움 없이 이동 노드 간에 자율적으로 구성되는 망으로서, 네트워크에 자율성과 융통성을 부여한 네트워크로 PEER-TO-PEER 통신, 다중 홉, 이동 노드 간 동적 네트워크를 구성할 수 있는 네트워크. |
No SQL 은
"관계형데이터베이스(RDBMS)를 사용하지 않는다"
는 의미가 아닌, 여러 유형의 데이터베이스를 사용하는
비관계형 데이터베이스 프로그래밍언어이다.
NoSQL유형
유형 | 설명 |
Key-Value Store | -키 기반 Get/Put/Delete 제공, -메모리 기반에서 성능 우선 시스템 및 빅테이터 처리 가능 DB -Unique한 key에 하나의 Value를 가지고 있는 형태 |
Column Family Data Store | -Key 안에 (Column, Value) 조합으로 된 여러 개의 필드를 갖는 DB -테이블 기반, 조인 미지원, 컬럼 기반으로 구글의 Big table 기반으로 구현. |
Document Store | -Value 데이터타입이 Document라는 타입을 사용하는 DB -Document 타입은 XML/JSON/YAML과 같이 구조화된 데이터 타입으로, 복잡한 계층 구조를 표현할 수 있음. |
Graph Store | -시맨틱 웹과 온톨로지 분야에서 활용되는 그래프로 데이터를 표현하는 DB. |
시맨틱웹 : 인터넷과 같은 분산 환경에서 리소스에 대한 정보와 저원 사이의 관계-의미 정보를 기계(컴퓨터)가 처리할 수 있는온톨로지 형태로 표현하고, 이를 자동화한 컴퓨터가 처리하도록 하는 지능형 웹.
온톨로지 : 실세계에 존재하는 모든 개념과 개념들의 속성, 그리고 개념 간의 관계 정보를 컴퓨터가 이해할 수 있도록 서술해 놓은 개념화 명세서.
테스트 오라클의 종류(참샘휴일)
유형 | 설명 |
참 오라클 | 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생된 오류를 모두 검출할 수 있는 오라클 |
샘플링 오라클 | 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클 |
휴리스틱 오라클 | 샘플링 오라클 개선한 오라클, 특정 입력값에 대해 올바른 결과를 제공하고, <--샘플링오라클과 동일 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클 |
일관성 검사 오라클 | 애플리케이션 변경이 있어도 전과 후의 결과값이 동일한지 확인하는 오라클. |
서버 접근통제 유형 : (임강역)
유형 | 설명 |
임의적 접근통제 (DAC; Discretionary Access Control) |
-시스템에 대한 접근을 사용자/그룹의 신분(식별자) 기반으로 제한하는 방법 -DAC에서 사용자는 자원과 관련된 ACL(Access Control List)이 수정됨으로써 자원에 대한 권한을 부여. |
강제적 접근통제 (MAC; Mandatory Access Control) |
-시스템 정보의 허용등급을 기준으로 사용자가 갖는 접근 허가 권한에 근거하여 접근을 제한하는 방법. -MAC에서 사용자들은 자원에 대한 권한을 관리자로부터 부여 -관리자만이 시스템 자원에 대한 권한을 할당할 수 있음. |
역할기반 접근통제 (RBAC; Role Based Access Control) |
-중앙 관리자가 사용자와 시스템의 상호관계를 통제하여 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법. -RBAC에서 자원에 대한 접근은 사용자에게 할당된 역할에 기반 -관리자는 사용자에게 특정한 권리와 권한이 정의된 역할에 할당. |
접근 통제 용어(식인증) | 설명 |
식별 | 자신이 누구라고 시스템에 밝히는 행위. 객체에게 주체가 자신의 정보를 제공하는 활동 |
인증 | 주체의 신원을 검증하기 위한 활동. 주체의 신원을 객체가 인정해 주는 행위 |
인가 | 인증된 주체에게 접근을 허용하는 활동. 특정 업무 수행 권리를 부여하는 행위. |
자료구조
구조 | 설명 | 종류 |
선형구조 | 데이터를 연속적으로연결한 자료구 조 | 리스트, 스택,큐 |
비선형구조 | 데이터를 비연속적으로연결한 자료구 | 트리, 그래프 |
텐서플로 : 구글사에서 개발한 기계학습 인공지능의 한 분야로 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야. 머신러닝을위한 오픈소스 소프트웨어 라이브러리.
딥러닝 알고리즘 (심합순 씨.)
- 합성곱 신경망(CNN) : 필터에 의한 컨볼루션과 서브 샘플링 과정을 반복하는 비지도 학습. 데이터의 특징을 극대화하면서 차원 축소.
- 순환 신경망(RNN) : 연속된 데이터상에서 이전 순서의 은닉 노드의 값을 저장한 이후, 다음 순서의 입력 데이터로 학습할 때 이전의 값을 이용, 연속적인 정보의 흐름을 학습에 이용하는 딥러닝 알고리즘.
- 심층 신경망(DNN) : 입력 계층과 출력 계층 사이의 다단계의 은닉계층을 통해서 비선형 관계에 대한 모델링이 가능한 인공 신경망.
논리적 데이터 모델링 종류(관계네 2차원트리그래프)
종류 | 설명 |
관계 데이터 모델 | -논리적 구조가 2차원 테이블 형태로 구성된 모델. -기본 키(PK)와 이를 참조하는 외래 키(FK)로 관계 표현. -1:1, 1:N, N:M 관계를 자유롭게 표현. |
계층 데이터 모델 | -논리적 구조가 트리 형태로 구성된 모델. -상하 관계 존재(부모 개체-자식 개체). -1:N 관계만 허용. |
네트워크 데이터 모델 | -논리적 구조가 그래프 형태로 구성된 모델. -CODAYL DBTG 모델이라고 불림. -상위와 하위 레코드 사이에 다대다(N:M) 관계를 만족하는 구조. |
Secure SDLC 방법론
- Seven TouchPoints : SW 보안 모범사례를 SDLC(software development life cycle)에 통합한 소프트웨어 개발 보안 생명주기 방법론
- MS SDL : 마이크로소프트사가 자사의 소프트웨어 개발에 의무적으로 적용하도록 고안한 보안 강화 프로그램
- OWASP CLASP : 개념 괁점, 역할기반 관점, 활동평가 관점, 활동구현 관점, 취약성 관점 등의 활동 중싱, 역할기반의 프로세스로 구성된 보안 프레임워크로 이미 운영 중인 시스템에 적용하기 쉬운 보안 개발방법론.
- BSIMM(Building Security In Maturity Model) : 미 국토안보국 지원. 보안활동의 성숙도 수준 체크, 보안 능력 향상 목표 개발 프레임워크
- Open SAMM(Software Assurance Maturity Model) : OWAPSP 에서 개발한 개방형 보안 프레임워크. 소규모, 중구모, 대규모로 점진 확대. 융통성 프레임워크.
용어 | 설명 |
IAM (identity & Access Management) |
ID와 패스워드를 종합적으로 관리해 주는 역할 기반의 사용자 계정 관리 솔루션. 관리자에게는 사용자 역할에 따른 계정관리를, 사용자에겐 자신의 패스워드 자체관리기능 제공. |
ERM (Enterprise Risk Management) |
기업이 직면하는 주요 경영 위험들을 전사적인 차원에서 통합 관리하는 전사적 위험관리. |
스팸 차단 솔루션 : 메일 서버 앞단에 위치하여 프록시 메일 서버로 동작
데브옵스 : 소프트웨어의 개발(development)과 운영(operations)의 합성어
메타데이터 : 데이터의 의미 파악을 위한 데이터. 데이터의 데이터. 자료 그자체가 아닌자료의 속성 등을 설명하는 데이
마이 데이터 : 정보 주체가 기관으로부터 자기 정보를 직접 내려 받아 이용하거나 제3자 제공을 허용하는 방식으로 정보 주체 중심의 데이터 활용체계이자 개인이 정보 관리의 주체가 되어 능동적으로 본인의 정보를 관리하고, 본인의 의지에 따라신용 및 자산관리 등에 정보를 활용하는 일련의 과정.
메타데이터 레지스트리(MDR; 데이터의 의미 파악을 위한 데이) : 등록과 인증을 통하여 표준화된 메타데이터를 유지/관리하며/ 메타데이터의 명세와 의미를 공유를 목적으로 하는 데이터베이스
OLAP(ON-LINE ANALYTICAL PROCESSING) : 데이터 웨어하우스의 데이터를 전략적인 정보로 변환시켜서 의사결정을지원하는 역할을 하는 시스템.
데이터 웨어하우스 : 사용자의 의사결정에 도움을 주기 위하여, 기간 시스템의 데이터베이스에 축적된 데이터를 정제하여 추출한 공통 형식으로 변환해서 통합적으로 관리하는 데이터베이스
데이터 마트 : 재무, 생산, 운영 등과 같이 특정 조직의 특정 업무 분야에 초점을 맞추어 구축된 비교적 작은 규모의 데이터웨어하우스. 전체적인 데이터 웨어하우스에 있는 이부 데이터를 가지고 특정 사용자를 대상으로 함.
데이터 마이닝 : 빅데이터 분석 기술 중 대량의 데이터를 분석하여 데이터 속에 있는 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법.
데이터 다이어트 : 데이터 삭제 x, 압축, 겹친 정보 중복 배제, 새로운 기준에 나눠 저장하는 작업.
클리어링 하우스 : 디지털 저작권 관리를 위한 요소 중 소비자와 유통업자 사이에 발생하는 거래에 대해 디지털 저작권 라이선싱을 중개하고 라이선스 발급을 수행하는 정산소.
메시 네트워크 : 기존 무선 랜의 한계 극복을 위해 등장하였으며, 대규모 디바이스의 네트워크 생성에 최적화되어서 차세대 이동통신, 홈네트워킹, 공공 안전 등의 특수 목적을 위해 사용되는 새로운 방식의 네트워크 기술.
SDDC(Software Defiedn Data Center): 모든 하드웨어가 가상화되어 가상 자원의 풀을 구성하고, 데이터 센터 전체를 운영하는 소프트웨어가 필요한 기능 및규모에 따라 동적으로 자원을 할당, 관리하는 역할을 수행하는 데이터센터
SDDC 구성요소 | 설명 |
SDC (Computing) |
소프트웨어 정의 컴퓨팅 환경으로 서버의 CPU, 메모리에 대해서 소프트웨어 명령어 기반으로 제어할 수 있는 컴퓨터. |
SDN (Networking) |
개방형 API를 통해 네트워크의 트래픽 전달 동작을 소프트웨어 기반 컨트롤러에서 제어/관리하는 가상화 네트워크 기술. |
SDS (Storage) |
서버와 전통적인 스토리지 장치에 장착된 이질적이고 연결되어 있지 않은 물리적 디스크 드라이브를 하나의 논리적인 스토리지로 통합한 가상화 스토리지 기술. |
프로비저닝 | SDDC 자원에 대한 할당관리 기술 |
자바용어
종류 | 설명 |
JVM | 자바 바이트 코드를 실행할 수 있는 주체로 CPU나 운영체제 종류와 무관하게 동작하는 것을 보장하는 가상머신. |
JRE(java runtime environment) | 자바 코드를 실행하기 위한 소프트웨어 |
JDK(java development kit) | 자바 응용 소프트웨어 개발 키트. |
JUnit | 자를 이용한 xUnit 테스트 도 |
BSC(Balanced Score Card; 균형성과표) : 조직의 성과 목표 달성을 위하여 회사의 비전이나 전략에 따라 성과 목표를 재무,고객,내부프로세스, 학습성장 관점으로 균형 있게 목표를 정하고, 이를 조직 구성원의 개개인에게 네가지 관점으로 목표를 설정하여 관리하는 기법.
BSC 네가지 관점(재고내학) :
KPI(key performance Indicator) : 사업, 부서, 혹은 개인 차원의 목표가 달성되었는지 그 실적을 추적하기 위한 정량화된 측정 지표.
BIA: 재해 발생 시 기업의 비즈니스에 영향을 미치는 업무를 선정하고,
업무중단에 대한 정량적/정성적 분석을 통해 복구우선순위를 도출하는 BCP구축을 위한 비즈니스 영향 분석
BCP(Business Continuity Planning; 업무 영속성 계획 ): 재난 및 재해 상황을 대비하여 기업의 비즈니스 연속성을 유지하기 위한 업무 복구에 대한 계획. BIA토대로 BCP구축.
무선 보안 관련 용어
- SSID(Service Set IDentifier) : 무선 랜을 통해 전송되는 패킷에 붙여지는 32바이트 고유 식별자를 통해 무선랜을 구분
- WPA(Wifi Protected Access) : 물리 계층에서의 패킷 암호화 방식. TKIP(Temporal Key Integrity Protocol) 와 AES 두가지 표준 기술 중 하나를 사용하여 WEP( Wired Equivalent Privacy)보다 강력한 암호화 제공
마크업 언어: 사람과 다른 소프트웨어 프로그램 모두에 데이터를 설명하는 시스템입니다. 데이터의 구조, 유형, 속성, 부품 간의 관계, 표시 및 의미를 정의하는 읽기 쉬운 구문을 사용합니다.
마크업 언어로서 HTML과 XML은 몇 가지 유사점을 가지고 있습니다.
https://keynotion.tistory.com/32
WSDL(Web Services Description Language) : 웹 서비스명, 제공위치 , 메시지 포맷, 프로토콜 정보 등 웹서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어.
Ajax(Asynchronous JavaScript and XML)' : JavaScript와 XML 형식을 이용한 비동기적 정보 교환 기법이다.
XML (eXtensible Markup Language) : 데이터를 정의하는 규칙을 제공하는 마크업 언어입니다. 다른 프로그래밍 언어와 달리XML은 자체적으로 컴퓨팅 작업을 수행할 수 있다.(XML은 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어.) 확장 가능한 마크업 언어
SGML(Standard Generalized Markup Language): 문서용 마크업 언어를 정의하기 위한 메타 언어이다. IBM에서 1960년대에 개발한 GML(Generalized Markup Language)의 후속이며, ISO 표준
HTML (Hypertext Markup Language) :콘텐츠의 구조를 정의하는 마크업 언어
json : 키-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. , 넓게는 XML을 대체하는 주요 데이터 포맷
UML(Unified Modeling Languag)e : 객체지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 언어.'
UML 구성요소 (사관다)
- 사물 : 주제
- 관계 : 사물과 사물의 연결
- 집합관계 : 하나의객체에 여러 개의 독립적인 객체들이 구성되는 관계 (빈마름모)
- 포함관계(복합관계) : 영구적이고, 집합관계보다 더 강한 관계로 구성.
- 다이어그램 : 사물과 관계를 시각화, 그림.
스테레오 타입 : UML의 기본적인 요소 이외의 새로운 요소를 만들어내기 위한 확장 매커니즘.
API : 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스. // 특정 사이트에서 데이터를 공유할 경우, 데이터를 요청하고 제공받는 것에 대한 규격을 정해놓은 인터페이스.
APM (Application Performance management) : 애플리케이션 모니터링 툴. 인터페이스 동작이 잘 되는지 지속적으로 확인하는 데 사용되는 감시 도구.
인터페이스 : 인터페이스는 뭘까?? 결론부터 말하면, 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
인터페이스 감시 도구
도구 | 설명 |
스카우터 | 애플리케이션 모니터링, 오픈스택 DB 모니터링, 인터페이스 모니터링 기능 제공 |
제니퍼 | 애플리케이션 전 생애주기 단계 동안 성능을 분석, 모니터링해주는 APM 소프트웨어. |
인터페이스 구현 검증 도구(엑스피 엔셀웨)
도구 | 설명 |
xUnit | -자바, C++, .Net(Nunit) 등 다양한 언어를 지원하는 단위테스트 프레임워크. -소프트웨어의 함수나 클래스 같은 서로 다른 구성 원소를 테스트할 수 있게 해주는 도구 |
STAF | -서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크 -각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증 도구. |
FitNesse | -웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크 -사용자가 테스트 케이스 테이블을 작성하면 빠르고 편하게 자동으로 원하는 값에 대해 테스트를 할 수 있는 장점이 있음. |
NTAF | -FitNesse의 협업 기능 + STAF의 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크 |
Selenium | -다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크 -테스트 스크립트 언어를 합습할 필요 없이 기능 테스트를 만들기 위한 도구를 제공 |
watir | -루비(Ruby) 기반 웹 애플리케이션 테스트 프레임워크 -모든 언어 기반의 웹 애플리케이션테스트와 브라우저 호환성 테스팅 가능. |
보안 운영체제(Secure OS) : 컴퓨터 운영체제의 커널에 보안 기능을 추가한 운영체제.
보안 운영체제 추가 설명 > 기존의 운영체제에 ㅐ재된 보안 취약점을 해소하기위해 보안기능이 추가된 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제. 보안 운영체제에서 참조 모니터는 보호 대상의 객체에 대한 접근통제를 수행하는 추상머신이며, 이것을 실제로 구현한 것이 보안 커널이다.
리눅스 로그 파일 종류.
https://flightsim.tistory.com/235
로그 파일 | 설명 |
utmp | 현재 시스템에 로그인한 사용자 정보가 들어있는 로그 파일로who, w, users 명령으로 확인할 수 있음 |
lastlog | 사용자별 최근 로그인 시간 및 접근한 소스 호스트에 대한 정보를 확인할 수 있는 로그 파일 |
SOA(서비스 지향 아키텍처) : 분할된 애플리케이션 조각들을 Loosely-coupled 하게 연결해 하나의 완성된 어플리케이션을 구현하기 위한 아키텍처.
SOA 서비스의 4가지 특징(데이터베이스의 4가지 특징) 통저운공
-통합 데이터(integrated) : 자료 중복 배제
-저장 데이터(stored) : 저장 매체에 저장된 데이터
-공용 데이터(shared) : 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이트
-운영 데이터(operational) : 조직의 업무 수행에 필요한 데이터
용어 | 설명 |
디지털 아카이빙 | 지속적으로 보존할 가치를 가진 디지털 객체를 장기간 관리하여 이후의 이용을 보장할 수 있도록 변환, 압축 저장하여 DB 하는 작업 |
CEP (Complex Event Processing) |
실시간으로 발생하는 이벤트 처리에 대한 결괏값을 수집하고 처리하는 기술로 IoT 센싱데이터, 로그, 음성 데이터 등 실시간 데이터의 처리 기술 |
콘텐츠 유출방지 솔루션
- DLP(Data Loss Prevention) : 조직 내부의 중요 자료가 외부로 빠져나가는 것을 탑지하고 차단하는 시스템.(정보 유출 방지를 위해 정보의 흐름에 대한 모니터링과 실시간 차단 기능 제공)
- DRM(Digital Right Management) : 파일 자체에 암호를 걸어 권한 없는 사용자는 사용하지 못함.(디지털 콘텐츠에 대한 권리정보를 지정하고, 암호화 기술을 이용하여 허가된 사용자의 허가된 권한 범위 내에서 콘텐츠의 이용이 가능하도록 통제하는 기술 및 시스템)
- 보안 USB : 정보 유출방지 등의 보안 기능을 갖춘 USB 메모리
CMMI(Capability Maturity Model Integration) : 소프트웨어 개발 능력/성숙도 평가 품질 개선 모델
CMMI 단계적 표현 모델의 성숙도 레벨 (초관 정관최)
- 초기화 단계 : 정의된 프로세스 無, 작업자 능력에 따라 성과 좌우됨
- 관리 단계 : 프로젝트 관리 시스템 정착, 프로세스가 정의되고 수행됨, 프로젝트 결과의 반복성
- 정의단계 : 표준화 일관된 프로세스 존재. 엔지니어링 및 관리 프로세스의 통합.
- 정량적 관리 : 프로세스의 정량적 통제
- 최적화단계 : 프로세스 개선이 내재화된 조직.
요구사항 개발 프로세스 (도분명확)
프로세스 | 설명 |
요구사항 도출 페콘사유더롤워서 |
-소프트웨어가 해결해야 할 문제를 이해 -고객으로부터 제시되는 추상적 요구에 대해 관련 정보를 식별/수집 방법 결정 -수집된 요구사항을 구체적으로 표현하는 단계 |
요구사항 분석 | -도출된 요구사항에 대해 충돌, 중복, 누락 등의 분석 -> 완전성과 일관성을 확보하는 단계 |
요구사항 명세 비정 |
체계적으로 검토, 평가, 승인될 수 있는 문서를 작성하는 단계 |
요구사항 확인 및 검증 | 분석가가 요구사항을 이해했는지 확인하고, 요구사항 문서가 회가의 표준에 적합하고 이해 가능하며, 일관성이 있고, 완전한지 검증하는 단계. |
사용자 요구사항 도출 세부 활동(페콘사유)
활동 | 설명 |
페르소나 정의 | 잠재적 사용자의 다양한 목적과 관찰된 행동 패턴을 응집시킨 가상의 사용자 |
콘셉트 모델 정의 | 여러 가지 추상적인 콘셉트들 사이의 관계를 보여주는 다이어그램을 정의 |
사용자 요구사항 정의 | 리서치 및 페르소나 결과물을 토대로 요구사항 도출, 우선순위 정함. |
UI 컨셉션 | 정리된 요구사항을 구체화하는 단계. 화면 디자인 전에 대표 화면 설계를 진행하는 단계. |
요구사항 수집 주요 수집기법(더로워서 + ㄹ)
주요기법 | 설명 |
델파이 기법 | 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 방버 |
롤 플레잉 | 현실에 일어나는 장면을 설정하고 여러 사람이 각자가 맡은 역을 연기함으로써 요구사항을 분석하고 수집하는 방법. |
워크숍 | 단기간의 집중적인 노력을 통해 다양하고 전문적인 정보를 획득하고 공유하는 방법. |
설문조사 | 설문지 또는 여론조사 등을 이용해 간접적으로 정보를 수집하는 방법. |
요구사항 명세 단계 주요기법(비정)
주요기법 | 설명 |
비정형 명세 기법 | 사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 기법. 이해가 용이 |
정형 명세 기법 | 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 기법. 이해가 어려움. |
ui 품질 요구사항.(기신사효유이)
1. 신뢰성(reliability) -준결성회
소프트웨어를 믿고 사용할 수 있는가~ : 작동 시간 동안 의도하는 기능을 수행함을 보증하는 기준
- 성숙성 : 결함으로 발생하는 고장 회피 능력
- 결함수용성(고장허용성) : 결함이나 오류 시에도 특정 수준 이상의 성능을 유지할수 있는 능력
- 회복(복구)성 : 소프트웨어 고장 발생 시 영향을 받은 데이터를 복구하고 성능의 수준을 다시 회복할 수 있는 능력.
- 준수성
2. 이식성(portability) - 적설대
다른 운영체제에서도 작동한가?
이식성은 어떤 운영체제에서도 운영되는 일반적인 특성입니다.
소프트웨어마다 다르게 작동된다면 문제가 많을 것. 어떤 운영체제에서도 설치되어 적용할 수 있어야 할 것이며 다른 소프트웨어를 대체할 수 있어야할 것.
- 적용성
- 설치성
- 대체성
3. 사용성(usability) - 이학운친
편리한 기능의 제공 하는 정도로 사용자가 컵퓨터를 통해서 입력한 것이 바로 바로 결과값으로 나오는 것.
사용자가 컴퓨터를 학습하고 이해하고 친밀해져야 운용을 잘하겠지
- 이해성
- 학습성(학습용이성):
- 운용성
- 친밀성
- 준수성
4. 기능성(functionality) - 적정상보호
실제 사용시 정확하게 사용자의 요구를 만족하는 기능을 제공하는가. 기능을 잘 하는가.
기능을 잘하려면 소프트웨어 보안이 잘 되어야하고, 시스템과 호환성도 좋아야겠고 호환성이 좋아야 상호운용에 문제도 없겠고, 이를 통해 적절하고 정밀한 기능을 제공할 수 있겠지.
- 적절성
- 정밀성
- 상호운용성
- 보안성
- 호환성
5. 유지보수 용이성(maintainability) 분변안테
소프트웨어 요구 사항을 개선하고 확장하는데 얼마나 용이한가?
소프트웨어는 오류가 생기기 마련이다. 이 오류를 해결하여 유지보수 용이성을 제공하기 위해서는 분석을 통해 고장을 식별하고, 다양한 용이한 테스트를 통해 변경 또한 가능해야 한다. 그리고 오류를 최대한 방지하기 위해서는 소프트웨어의 안정성을 제공하는 환경을 준수해야 한다.
- 분석(용이)성
- 변경(가능성)
- 안정성
- 테스트용이성
- 준수성
6. 효율성(efficient) -자시
주어진 시간에 얼마나 한정된 자원을 빠르게 처리하는가?
효율성은 말그대로 시간과 자원을 최대한 효율적으로 사용하는가를 말합니다.
- 시간효율성
- 자원 효율성
UI 설계 원칙 (직유학유)
설계 원칙 | 설명 |
직관성 | 누구나 쉽게 이해하고 사용할 수 있어야 한다. |
유효성 | 정확하게 사용자의 목표가 달성될 수 있도록 제작. |
학습성 | 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작 |
유연성 | 사용자의 인터랙션을 최대한 포용하고, 실수를 방지할 수 있도록 제작 |
UI 화면 설계 산출물(와스프)
산출물 | 설명 |
와이어프레임 | 이해관걔자들과의 화면구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 화면 단위의 레이아웃을 설계하는 작업 |
스토리보드 | 정책, 프로세스, 콘텐츠 구성, 와이어프레임(UI,UX), 기능 정의, 데이터 베이스 연동 등 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물 |
프로토타입 | 정적인 화면으로 설계된 와이어 프레임 또는 스토리보드에 동적 효과를 적용하여 실제 구현된 것처럼 시뮬레이션을 할 수 있는 모형 |
UI 구성요소.
- input box : 사용자가 텍스트 데이터를 입력, 수정할 수 있는 상자.
- combo box : 이미 지정된 목록 상자에 내용을 표시하여 선택할 수 있고, 새로운 내용도 입력할 수 있는 상자.
- list box : combo box와 같지만 새로운 내용을 입력할 수 없는 상자.
- Check box : 여러 개의 선택 상황에서 1개 이상의 값을 선택할 수 있는 버튼
- Radio button : 여러 항목 중 하나만 선택할 수 있는 버튼.
UI 개발 주요 기법 (3CSwot - 시사숍)
- 3C 분석 : 고객(CUSTOMER), 경쟁사(COMPETITOR), 자사(COMPANY) 비교 분석
- SWOT 분석 : 강점, 약점, 기회, 위협요인 규정하고 전략수립.
- 시나리오 플래닝: 불확실성이 높은 상황을 예측하여 다양한 시나리오를 설계하여 불확실성을 제거해 나가는 방법.
- 사용성 테스트 :사용자가 직접 제품을 사용하고 시나리오에 맞추어 과제를 수행하고 질문에 답하는 테스트.
- 워크숍 : 지식, 기술, 아이디어, 방법들을 서로 교환하고 검토하는 연구회/세미나.
UI 시나리오 문서 작성 요건 (완일이가 추수)
작성요건 | 설명 |
완전성 | UI 시나리오는 누락이 없어야하고, 최대한 상세하게 기술. 시스템 기능보다 사용자의 태스크에 초점을 맞춰 기술 |
일관성 | 서비스에 대한 목표, 시스템 및 사용자의 요구사항이 일관성이 있어야하고, 모든 문서의 UI 스타일을 일관적으로 구성. |
이해성 | 처음 접하는 사람도 이해하기 쉽게 구성하고 설명해야 하고, 이해하지 못하는 추상적인 표현이나 이해하기 어려운 용어는 사용하지 않아야함 |
가독성 | 문서를 쉽게 읽을 수 있어야 하고 표준화된 템플릿을 작성하여 적용. 버전의 넘버링은 v1.0, v2.0 등과 같이 일관성 있게 한다. 시각적인 효과를 위한 하이라이팅은 일관성 있게 활용 |
추적 용이성 | 쉽게 추적이 가능해야 하고, 변경 사항들이 언제, 어디서, 어떤 부분이, 왜 발생했는지 추적이 쉬워야 한다. |
수정 용이성 | 쉽게 변경 가능행하고, 수정 또는 개선 사항을 시나리오에 반영하는 데 있어 쉽게 적용할 수 있어야 함. 동일한 수정 사항을 위해 여러 문서를 편집하지 않도록 한다. |
보안모델 (벨기비무)
- 벨라파듈라 - 기밀성 강조
- 비바 - 무결성보장.
벨-라파듈라 모델의 보안 규칙
속성 | 설명 |
No Read Up | -보안수준이 낮은 주체는 보안수준이 높은 객체를 읽어서는 안 됨. -주체는 객체와 동일한 등급이거나 객체가낮은 등급일 때 읽음. |
No Write Down | -보안수준이 높은 주체는 보안수준이 낮은 객체에 기록하면 안됨. -주체의 등급이 객체와 동일하거나 객체보다 낮아야 기록 가능. |
비바 무결성 모델의 보안 규칙
속성 | 설명 |
No Read Down | -주체는 자신보다 낮은 무결성 수준 객체를 읽을 수 없다. 낮은 무결성 레벨로 인한 데이터 손상 방지 |
No Write Up | -주체는 자신보다 높은 무결성 수준을 갖 객체에 기록할 수 없다. |
OSI 7계층 - (아ap파pr서sess 티Trans내net다date 피phy) : 국제 표준화 기구 ISO에서 개발한 개방형 시스템 상호 연결 모델
계층이름 | 설명 | 프로토콜 | 전송단위 | 장비 |
응용계층 | -사용자와 네트워크 간 응용서비스 연결, 데이터 생성 | -HTTP -FTP |
데이터 | 호스트 (PC 등) |
표현계층 | -데이터 형식 설정, 부호교환, 암/복호화 | -JPEG -MPEG |
||
세션계층 | -송수신 간의 논리적인 연결 -연결 접속, 동기제어 |
-RPC -NetBIOS |
||
전송계층 | -송수신 프로세스 간의 연결 -신뢰성 있는 통신보장. -데이터 분할, 재조립, 흐름제어, 오류제어, 혼잡제어 |
-TCP -UDP |
세그먼트 | L4 스위치 |
네트워크 계층 | -단말기 간 데이터 전송을 위한 최적화된 경로 제공 | -IP -ICMP |
패킷 | 라우터 |
데이터링크 계층 | -인접 시스템 간 데이터 전송, 전송 오류 제어 -동기화, 오류제어, 흐름제어, 회선 제어 |
-HDLC -PPP |
프레임 | 브리지 스위치 |
물리 계층 | -0과 1의 비트 정보를회선에 보내기 위한 전기적 신호 변환 | -RS-232C | 비트 | 허브 리피터 |
프로토콜 기본요소 (구타의 의미)
기본요소 | 설명 |
구문 | 시스템 간의 정보 전송을 위한 데이터 형식, 코딩, 신호 레벨 등의 규정 |
의미 | 시스템 간의 정보 전송을 위한 제어 정보로 조정과 에러 처리를 위한 규정 |
타이밍 | 시스템 간의 정보 전송을 위한 속도 조절과 순서 관리 규정 |
응용계층프로토콜
프로토콜 | 설명 |
HTTP | 80.텍스트 기반의 통신규약. 인터넷에서 데이터를 교환할 수 있게 해주는 프로토콜 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜 |
FTP | TCP/IP 프로토콜을 가지고 서버와 클라이언트 사이에서 파일을 전송하게 해주는 프로토콜 |
SMTP | 25. 이메일을보내기 위해 사용 |
POP3 | 110. 이메일을 가져오는데 사용. |
IMAP | 143. 이메일을 가져오고, 온라인 및 오프라인을모두 지원하는 프로토콜 |
Telnet | 23. 네트워크 연결에 사용되는 네트워크 프로토콜 |
통신 프로토콜 - NetBIOS, ICMP
NetBIOS -> 응용계층(7계층)의 애플리케이션 프로그램에 통신 도구(API)를 제공한다
NetBIOS는 애플리케이션 프로그램 간의 통신 다리 역할을 한다!"
TCP 핸드셰이킹 : 전송계층에서 신뢰성 있는 세그먼트 전송보장을 의해 , 송신 측과 수신 측 간 TCP Connection 수립 및 전달, 종료되도록 TCP Flags 기반 동작을 수행하는 접속 규약
icmp : 네트워크 계층(3계층) 에서 ip 패킷을 처리할 때 발생되는 문제를 알려주고, 수신지 또는 서비스에 도달할 수 없는 호스트를 통지하는 데 사용하는 프로토콜.
죽음의 핑(DoP) : ICMP를 정상적인 크기보다 아주 크게 만들어 전송하면 다수의 IP 단편화가 발생하고, 수신 측에서는 단편화된 패킷을 처리하는 과정에서 많은 부하가 발생하거나, 재조합 버퍼의 오버플로우가 발생하여 정상적인 서비스를 하지 못하도록 하는 공격 기법.
네트워크 계층(3계층) 프로토콜
-IP, ARP, RARP, ICMP, IGMP, 라우팅 프로토콜(RIP,OSPF 내부 라우팅 프로토콜콜 /BGP,EGP 외부 라우팅 프로토콜콜 )
-IP : 송,수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서정보를 주고받는 데 사용하는 통신규약.
라우팅 프로토콜 : 데이터 전송을 위해 목적지까지 갈 수 있는여러 경로 중 최적의 경로를 설정해주는라우터 간의 상호 통신 규약.
RIP-거리벡터라우팅, 벨만포드알고리즘, 홉수 16개 (내부 라우팅 프로토콜콜)
-AS(Autonomous System, 자치시스템, 자율시스템) 내에서 사용하는거리 벡터 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜.
-거리 벡터 라우팅 기반 메트릭 정보를 인접 라우터와 주기적으로 교환하여 라우팅 테이블을 갱신하고 라우팅 테이블을 구성/계산하는 데 Bellman-Ford알고리즘을 사용하는 내부 라우팅 프로토콜.
OSPF-링크상태알고리즘, 다익스트라알고리즘, 홉수제한없음( 내부 라우팅 프로토콜콜 )
BGP- AS(자치시스템) 상호간에 경로 정보를 교환하기 위한 라우팅 프로토콜.
-변경 발생 시 대상까지의 가장 짧은 경로를 경로 벡터 알고리즘을 통해 선정하고, TCP 연결을 통해 자치 시스템(AS)으로 라우팅 정보를 신뢰성 있게 전달하는 특징이 있다.( 외부 라우팅 프로토콜 )
데이터 링크 계층(2계층) 프로토콜
-HDLC( High-Level Data Link Control ) : ISO에서 표준화 "비트 중심 데이터 링크 프로토콜 "스타트 비트와 종료 비트로! / 점대점 방식이나 다중방식의 통신에 사용됨. HDLC는 High-level Data Link Control 프로토콜로 컴퓨터가 일대일 혹은 일대다로 연결된 환경에 데이터의 송수신 기능을 제공
-PPP : 두 통신 노드 간의 "직접적인 연결"
데이터링크 계층의 기법
기법 | 설명 |
회선 제어 | 두개의 스테이션이 동시에 신호를 전송하는 경우 신호 간 충돌이 발생하지 않도록 제어하는 기술로 ENQ/ACK 기법과 풀링(Pooling)기법이 있음 |
흐름 제어 | 전송 스테이션으로 하여금 전송 데이터 양을 제한하기 위해서 사용되는 기술. 정지-대기 기법, 슬라이딩 윈도 기법이 있음. |
오류 제어 | OSI7 Layer의 하위 두 계층 사이에서 데이터의 전송 오류를 검출하여 복구하는 기술로 해밍코드와 같은 전진 오류 수정(FEC)기법과 체크썸, CRC, ARQ와 같은 후진 오류 수정(BEC)기법이 있음. |
TCP 흐름제어 기법.
기법 | 설명 |
흐름 제어 | 전송 계층에서 데이터 패킷을 전송할 때 수신 한도를 넘는 과잉 패킷의입력으로 패킷 분실이 일어나지 않도록 패킷의 흐름을 조절하는 기법. |
정지-대기 | 프레임이 손실되었을 때, 손실된 프레임 1개를 전송하고 수신자의 응답을 기다리는 방식. 한번에 프레임 1개만 전송할 수 있음. |
슬라이딩 윈도우 | 슬라이딩 윈도우 기법을 활용하여 데이터 전송의 신뢰성을 확보합니다. TCP는 윈도우 크기를 동적으로 조절하며, 네트워크의 혼잡 상황에 따라 윈도우 크기를 조절하여 최적의 전송 성능을 달성 |
Go-Back-N ARQ는 sliding window 기반의 에러 제어 방식 중 하나로, 특정한 환경에서는 매우 효율적으로 동작할 수 있습니다. 그러나 그 특성상 순서에 민감하여 불필요한 재전송이 발생할 수 있다는 점을 고려하여 사용해야 합
분배 계층 :
- 네트워크 계층 구조 중 액세스 계층의 트래픽을 처리하기 위한 정책을 결정하는 계층.
- 코어 계층과 액세스 계층 사이의 통신을 담당하는 계층.
원거리 통신망 연결 기술(전용회선패킷)
- 전용회선방식 : 사전에 계약을 체결한 송신자와 수신자끼리만 데이터를 교환하는 방식//이용 프로토콜 : ppp, hdlc
- 회선교환방식 : 물리적 전용선 활용하여 데이터 전달 경로가 정해진 후 동일 경로로만 전달되는 방식. 동시 전송 양(대역폭) 고정. 안정적인 전송률// 이용 프로토콜 : ISDN
- 패킷교환방식 : 전체 메시지를 각 노드가 수용할 수 있는 크기(패킷)로 잘라서 보내는 방식// 이용 프로토콜 : X.25, 프레임릴레이
패킷교환방식 종류
- 가상회선 : 연결형
- 데이터그램 : 비연결
다중화기 종류: (시주코)
- 시간 분할 다중화(TDM) : 회선의 대역폭을 일정 시간으로 분할하여 전송하는 방식.
- 주파수 분할 다중화(FDM) : 하나의 주파수 대역폭을 다수의 작은 대역폭으로 분할하여 전송하는 방식.
- 코드 분할 다중화(CDM) : 정해진 주파수 대역에 다수의 사용자가 서로 다른 코드를 사용함으로써 동일한 주파수로 동시에 다수가 접속해서 전송하는 방식.
광전송 기술
- WDM(Wavelength Division Multiplexing) : 파장이 서로 다른 복수의 광신호를 동시에 이용하는 것. 광섬유를 다중화하는 방식. 빛의 파장 축과 파장이 다른 광선은 서로 간섭을 일으키지 않는 성질 이용
- DWDM(Dense Wavelength Division Multiplexing ) : 대용량 데이터 전송을 위하여 파장 대역 채널을 조밀하게 나누어 규격화한 광전송 기술.
데이터 암호화 전송 기술.
기술 | 설명 | 프로토콜 설명 |
IPSec | IP 계층에서 무결성과 인증을보장하는 인증해더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간 구간에 보안 서비스를 제공하는 터널링 프로토콜 | AH : 강력한 무결성 데이터 인증을 제공하는 프로토폴. ESP: 암호화 옵션을 사용하여 IP 페이로드를 암호화하는 프로토콜로 캡슐화 기반의 페이로드 기밀성 제공 |
SSL/TLS (보안소켓계층) |
전송계층과 응용계층(TCP/IP 계층 사) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜. | |
S-HTTP | 웹상에서 네트워크 트래픽을 암호화하는 주요 방법중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송하는 프로토콜. |
SSL/TLS 주요기능 :
- 기밀성 : TRIPLE DES, AES 같은 대칭 키 암호화 알고리즘 제공
- 상호 인증 : 연결 설정 과정에서 서버와 클라이언트 간에 신뢰할 수 있도록 인증 사용. RSA(비대칭키), DSS(전자서명) 알고리즘, X.509 공개키 인증서 사용.
- 메시지 무결성 : 안전한 해시 알고리즘을 사용하여 메시지 인증코드 생성
패키징 도구 구성 세부 기술.
기술 | 설명 |
PKI ; 공개키기반 구조 | 인증기관에서 공개키 암호 방식 기반의 전자 서명된 인증서를 발급받아 네트워크상에서 안전하게 비밀통신을 가능하도록 하는 기술. |
대칭 및 비대칭 암호화 | 대칭 암호화는 암호화와 복호화를 위해 동일한 키를 사용하는 암호화 방식 |
전자서명 | 서명자를 확인하고 서명자가 해당 전자문서에 서명했다는 사실을 나타내기 위해 특정 전자문서에 첨부되거나 논리적으로 결합된 전자적 행태의 정보. |
암호화 알고리즘(대비해)
대칭키 암호화 알고리즘(비밀키 알고리즘)-DSAAIL | |
암/복호화에 같은 키를 쓰는 알고리즘 | |
종류 | 설명 |
DES(1975, NIST) | -1975, NIST, 대칭 키 기반의 블록 암호화 알고리즘 -블록 크기는 64bit, 키 길이는 56bit인 페이스텔 구조. -DES를 3번 적용하여 보안을 더욱 강화한 3 DES도 활용됨. |
SEED(1999,국내KISA) | -1999, 국내 한국인터넷 진흥원 KISA가 개발한 블록 암호화 알고리즘 -128bit 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회 라운드를 거쳐 128bit의 평문 블록을 128비트 암호문 블록으로 암호화하여 출력하는 방식. -블록 크기는 128bit, 키 길이에 따라 128bit, 256bit 로 분류 |
AES(2001 NIST) | 2001, NIST 에서 발표한 블록 암호화 알고리즘. -DES 개인 키에 대한 전사적 공격 가능해지고, 3 DES 성능 문제를 극복하기 위해 개발. -블록 크기는 128bit , 키 길이에 따라 128,192,256비트로 분류. - AES의 라운드 수는 10,12,14회 라운드로 분류. -한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성 |
ARIA(2004) | -2004, 국가정보원과 산학연구협회가 개발한 블록 암호화 알고리즘. -ARIA는 한계, 연구기관, 정부의 영문 앞글자로 구성. -블록 크기는 128bit , 키 길이에 따라 128,192,256비트로 분류. -경량 환경 및 하드웨어에서의효율성 향상을 위해 개발되었으며, ARIA가 사용하는 대부분의 연산은 XOR과 같은 단순한 바이트 단위 연산으로 구성. |
IDEA() | -DES를 대체하기 위해 스위스 연방기술 기관에서 개발한 블록 암호화 알고리즘 -128bit의 키를 사용하여 64bit의 평문을 8라운드에 거쳐 64bit의 암호문을 만듦- |
LFSR (Linear Feedback Shift Register) |
-시프트 레지스터의 일종, 레지스터에 일종. -레지스터에 입력되는 값이 이전 상태 값들의 선형 함수로 계산되는 구조로 되어 있는 스트림 암호화 알고리즘. -이 때 사용되는 선형 함수는 주로 배타적 논리합(XOR)이고, LFSR의 초기 비트 값은 시드(Seed)라고 함 |
선형 피드백 시프트 레지스터(LFSR) : 시프트 레지스터의 일종으로, 레지스터에 입력되는 값이이전 상태 값들의선형 합수로 계산되는 ㅜ조로 되어 있는 스트림 암호화 알고리즘.
QKD(Quantum Key Distribution; 양자 암호 키 분배) : 양자 통신을 위해서 비밀키를분배하고 관리하는 기술로, 상호 통신을 하는 두 시스템이 암호 알고리즘을 위한 비밀키를 안전하게 공유하기 위해서 사용되는 시스템.
비대칭키 암호화 알고리즘(공개키 알고리즘)-REE | |
공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘. |
|
종류 | 설명 |
디피-헬만(1976) | 최초의 공개키 알고리즘. 유한 필드 내에서 이산대수의 계산이 어려운 문제를 기본원리로 함. 두 사용자 간에 공통의 암호화 키를 안전하게 공유할 방법으로 제시함. 최초의 비밀키 교환 프로토콜이 된 최초의 공개키 알고리즘. |
RSA(1977) | MIT교수 3인. 큰 인수의 곱을 소인수분해하는 수학적 알고리즘 이용하는 공개키 고리f. 비밀키의 복호화가 어려운 RSA 안전성은 소인수분해 문제의 어려움에 근거를 두고 있음.(n(공개)=p(비공개)*q(비공개)) |
ECC( Elliptic Curve Cryptography; 타원 곡선 암호, 1985) | 코블리치와 밀러가 RSA 암호 방식에 대한 대안으로 처음 제안. 타원 곡선 암호는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 알고리즘. PKI기반의 RSA의 문제점인 속도와 안전성 해결하기 위해 타원 기반 구조체의 안정성과 효율성을 기반으로 생성되었고, RSA보다 키의 비트 수를 적게 하면서 동일한 성능을 제공하는 것이 가장 큰 특징. |
ELGAMAL(1984) | T.ElGamal이 제안한 공개키 알고리즘. 이산대수의 계산이 어려운 문제를 기본 원리로 하고 있으며, RSA와 유사하게 전자서명과 데이터 암,복호화에 함께 사용 가능. |
해시 암호화 알고리즘-MSSH | |
임의 길이의 정보를 입력받아 고정된 길이의 암호문을 출력하는 암호 알고리즘 -일방향성의 특성( 해시값으로 입력값을 찾아낼 수 없음 ) -복호화 불가능 |
|
종류 | 설명 |
MD5 | 1991, .R.rivest, MD를 개선한 암호화 알고리즘으로 프로그램이나 파일의 무결성 검사에 사용 . -각각 512bit짜리 입력 메시지 블록에 대해 차례로 동작하여 128bit의 해시값을 생성하는 해시 알고리즘 |
SHA-1 | 1993, NSA에서 미 정부 표준으로 지정. DSA(Digital Signature Algorithm)에서 사용. 160bit의 해시값을 생성하는 해시 알고리즘 |
SHA-256/384/512 | SHA 알고리즘의 한 종류. 안전, 256bit의 해시값을 생성하는 해시함수. AES의 키 길이인 128,192,256에 대응하도록 출력 길이를 늘인 해시 알고리즘. 출력속도 빠르다는 장점, 단방향성의 성질을 띠고 있는 암호화 방법으로 복호화 불가능 |
HAS-160 | 국내표준서명 알고리즘 KCDSA를 위하여 개발된 해시함수. MD5와 SHA-1의 장점을 취하여 개발된 해시 알고리즘. |
양자 키 분배(QKD; Quantum Key Distribution) : 양자 통신을 위해 비밀키를 분배하여 관리하는 기술로 키 분배를 위해 얽힘 상태 광자 또는 단일 광자를 이용하는 기술.
배치프로그램(이온정): 사용자와의 상호작용 없이 일련의 작업들을 작업단위로 묶어 모아뒀다가 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄(batch) 처리하는 프로그램 (반복적인 작업의 자동화 ->인적 오류 줄어)
-이벤트(사전 조건 충족 시 자동) 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행
-온디맨드(요구사항) 배치 : 사용자의 명시적 요구가 있을 때마다 실행.
-정기(정해진 시점) 배치 : 정해진 시점에 정기적으로 실행.
CPS(CYBER-PHYSICAL SYSTEM) : 가상 물리 시스템. 인간의 개입 없이 대규모 센서, 액추에이터를 갖는 물리적인 요소들과 통신 기술, 응용 소프트웨어 기술을 활용하여 실시간으로 물리적 요소들을 제어하는 컴퓨팅 요소가 결합된 복합 시스템.
디지털 트윈 : 물리적인 사물과 컴퓨터에 동일하게 표현되는 가상 모델. 실제 물리적인 자산 대신 소프트웨어로 가상화함으로써 실제 자산의 특성에 대한 정확한 정보 얻을 수 있고, 자산에 관한 모든 과정에서 효율성 향상
VR, AR, MR 기
- VR(가상현실) : 인공적인 기술로 만든 실제는 아니지만 실제와 유사한 특정 환경, 상황, 그 기술 자체를 의미
- AR(증강현실) : 실제 존재하는 환경에 가상의 사물이나 정보를 합성하여 마치 원래의 환경에 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기술.
- MR(혼합 현실) : 실세계의 물리적 환경과 가상환경을 혼합한 경험을 제공하는 하이브리드 현실.
VTL( VTL: 가상의 테이프 라이브러리 )
가상의 테이프( 물리적 테이프는 필요 없다), 백업과 복구의 친구, 성능은 빠르고 관리도 간편하다
가상화 백업
가상화 백업은 하이퍼바이저가 관리하는 가상 서버의 상태를 '이미지 파일'로 백업하는 방식입니다
기술 | 설명 |
네트워크 슬라이싱 | -하나의 물리적 코어 네트워크를 독립된 다수 가상 네트워크로 분리한 뒤 고객 맞춤형 서비스를 제공하는 5G 핵심 기술. -SDN과 NFV 기술을 활용하여 하나의 물리적인 망에 여러 개의 논리적인 망을 만들어 비용 절감이 가능하다. |
NOMA(Non-Onthogonal Multiple Access) | -동일한 시간, 주파수, 공간 자원상에 두 대 이상의 단말에 대한 데이터를 동시에 전송하여 주파수 효율을 향상시키는 비직교 다중 접속 기술. |
기술 | 설명 |
도커 | 하이퍼바이저 없이 리눅스 컨테이너 기술을 바탕으로 애플리케이션을 격리된 상태에서 실행하는 가상화 솔루션. |
하이퍼바이저 | 하나의 호스트 컴퓨터상에서 동시에 다수의 운영체제를 구동시킬 수 있는 HW와 OS사이의 SW 가상화 플랫폼. |
cf) 쿠버네티스 :리눅스 재단에 의해 관리되는 컨테이너화 된 애플리케이션의 자동 배포, 스케일링 등을 제공하는 오픈 소스 기반의 관리 시스템.
네트워크 가상화 기술
네트워크 가상화 기술 | 설명 |
SDN(Software Defined Network) | 개방형 API(오픈플로우) 기반으로 네트워크 장비의 트래픽 경로를 지정하는 컨트롤 플레인(Control Plane)과 트래픽 전송을 수행하는 데이터 플레인(Data Plane)을 분리하여 네트워크 트래픽을 중앙 집중적으로 관리하는 기술. |
NFV(Network Function Virtualization) | 범용 하드웨어(서버/스토리지/스위치)에 가상화 기술을 적용하여 네트워크 기능을 가상 기능(Function)으로 모듈화하여 필요한 곳에 제공(스위치, 라우터 등)하는 기술. |
빅데이터 가공 기술
피그 - 대용량 데이터 집합을 분석하는 플랫폼. 하둡 이용하여 맵리듀스 사용-> 피그라틴 이라는 자체 언어를 제공.
하이브 - 하둡 기반의 DW 솔루션. SQL과 매우 유사한 HiveQl이라는 쿼리 제공
빅데이터 수집 기술(빅척와 비스정 : 빅 척와 비(정형)스(쿱)정(정형))
척와 - 비정형데이터 수집 기술, 컬렉터가, HDFS에 저장
스쿱- 정형데이터 수집 기술, 커넥터를 사용 RDBMS에서 HDFS로 데이터 수집
빅데이터 아키텍처
용어 | 설명 |
람다 아키텍처 | 데이터 분석 요청 시 모든 데이터를 대상으로 기능을 수행할 수 있도록 배치 레이어, 스피드 레이어, 서빙 레이어로 구성된 아키텍처 |
카파 아키텍처 | 중복 기능을 제공하는 배치 레이어를 제거하고 모든 계산을 스피드 레이어에서 스트림으로 처리하는 아키텍처 |
하둡 (Hadoop) :대량의 데이터를 저장하고 처리하기 위해 설계된 오픈소스 자바 소프트웨어 프레임워크입니다. 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼. 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크. 구글, 야후에 적용한 기술.
하둡 주요 구성 요소
- 하둡 분산 파일 시스템(HDFS; Hadoop Distributed File System) : 하둡이 실행되는 파일을 관리해주는 시스템. 데이터를 분산 저장할 수 있는 파일 시스템입니다. 데이터 파일을 여러 노드에 나누어 저장하여, 대용량의 데이터도 효과적으로 관리할 수 있습니다.
- 특징: 데이터의 복제와 자동 복구 기능을 제공하여, 데이터 손실을 방지합니다.
- 맵리듀스 (MapReduce) : 대량의 데이터를 병렬로 처리할 수 있는 프로그래밍 모델입니다. 데이터를 여러 작업으로 나누어 병렬로 처리하고, 그 결과를 결합하여 최종 결과를 도출합니다.
- 특징: 데이터 처리의 효율성을 높여주며, 대규모 데이터 분석을 지원합니다.
타조(Tajo) : 하둡 기반 데이터웨어하우스 시스템이다. 하둡 데이터 분석을 위해 일반적으로 사용되는 맵리듀스 기술 대신 관계형 데이터베이스에서 사용하는 SQL로 질의할 수 있다.
일정관리 모델 : 소프트웨어 프로젝트를 포함한 복잡한 프로젝트의 계획과 관리를 돕기 위한 방법론
종류 | 설명 |
CPM (주 공정법) | 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드와 노드 간의 연결을 통해 공정을 계산하기 위한 액티비티 표기법 (critical path 임계경로, 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로 ) |
PERT | 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정 방식을 통해 일정을 관리하는 기법 |
CCPM(주 연쇄 공정법) | 자원제약사항을 고려하여 일정을 작성 |
LOC(lines of code)는 소프트웨어의 코드 수(양)을 측정하는 방법입니다. 소스 코드의 총 행 수를 계산하여 소프트웨어의 크기와 복잡성을 추정하는 데 사용됩니다. 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정항 예측치 구하고 비용산정.
IT 업무 프로세스 관련 용어.
ITSM(IT Service Management) : 정보 시스템 사용자가 만족할 수 있는서비스를 제공하고지속적인 관리를통해 서비스의품질을 유지 및 증진시키기 위한 일련의 활동. 고객 중심의 it 서비스 관리 기법.
SLA(Service Level Agreement) : 고객과 서비스 제공자 간 계약인 서비스 수준 관리 <-SLO(Service Level Object) 포함되어있음.
소프트웨어 생명주기 모델 프로세스(요설구테유 분설구테유 )
- 요구사항 분석: 요구조건, 개발할 소프트웨어의 기능과 제약 조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의하는 단계
1_1. 요구사항 분석에 사용되는 기법(소자요):
▶소단위 명세서 : 데이터 흐름도에 나타나 있는 처리 항목을 1~2페이지 정도의 소규모 분량으로 요약하여 작성하는 논리적 명세서.
▶자료 사전 : 자료 요소, 자료 요소들의 집합, 자료의 흐름, 자료 저장소의 의미와 그들 간의 관계, 관계값, 범위, 단위들을 구체적으로 명시하는 사전.(목적: 조직에 속해있는 다른 사람들에게 특정한 자료 용어가 무엇을의미하는지 알려주기 위하여. )
▶요구사항 명세서 : 소프트웨어 개발 프로세스의 시작인 소프트웨어의 요구사항을 분석하 정의하는 단계에서 작성되는 최종 산물들. - 설계 : 시스템 명세 단계에서 정의한 기능을 실제 수행할 수 있도록 수행 방법을 논리적으로 결정하는 단계
- 구현 : 설계 단계에서 논리적으로 결정한 문제 해결 방법을 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계. 프로그래밍 언어 선택, 기법, 스타일, 순서 등을 결정하는 단계
- 테스트 : 시스템이 정해진 요구를 만족하는지, 예상과 실제 결과가 어떤 차이를 보이는지 검사하고 평가하는 단계
- ex) 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
- 유지보수 : 시스템이 인수되고 설치된 후 일어나는 모든 활동을 포함하는 단계.
테스트 레벨 종류 : 단통시인 알베회
단위모듈 구형 방법 (독닉추분)
종류 설명 단위테스트 사용자의 요구사항에 대한 단위모듈, 서브루틴 등을 테스트하는 단계 통합테스트 단위테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호 작용을 검증하는 테스트 단계 시스템테스트 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계 인수 테스트 계약상의 요구사항을 만족했는지 확인하는 테스트 단계 알파 테스트 개발자 환경/선택된 사용자가 개발자와 함께 수행하는 인수테스트 베타테스트 실제 환경/ 몇명에게 소프트웨어 사용하게 하고 피드백 받음. 회귀 테스트 오류 제거 수정으로 인한 오류가 없나 반복 테스트
원리 설명 정보 은닉 어렵거나 변경 가능성이 있는모듈을 타 모듈로부터 은폐 분할과 정복 복잡한 문제를 분해, 모듈 단위로 문제 해결 데이터 추상화 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료구조의 표현 내역을 은폐 모듈 독립성 낮은 결합도와 높은 응집도를 가짐
결합도는 낮을 수록 응집도는 높을 수록 이상적인 모듈화라는 것입니다.
자료사전 기호
데이터 흐름도 구성요소 설명 처리기(프로세스) 입력된 데이터를 원하는 형태로 변환하여출력하는 과정 . ㅇ 데이트 흐름 → 주고받는 데이터 흐름 데이터 저장소 〓 데이터가 저장된 장소 단말 데이터가 발생하는 시작과 종료. □
기호 설명 = 자료의 정의 '~로 구성되어 있다.'를 나타냄 + 자료의 연결(and, along with)나타냄. () 자료 생략 가능함을 나타냄 {} 자료의 반복 [] 자료의 선택 ** 주석(자료의 설명)
https://miki3079.tistory.com/144
소프트웨어 개발 방법론 완벽 가이드
소프트웨어 개발 방법론 완벽 가이드목차소프트웨어 개발 방법론이란?전통적인 개발 방법론폭포수 모델 (Waterfall Model)프로토타입 모델 (Prototype Model)애자일 개발 방법론스크럼 (Scrum)칸반 (Kanban)
miki3079.tistory.com
v 모델 과정.(하단 이미지)
ISO 12207 : 소프트웨어 생명주기 프로세스를 위한 국제표준
소프트웨어 생명주기 모델 종류(폭프나반)
종류 | 설명 |
폭포수(워터폴) | 선형적 단계별 진행, 각 단계 완료 후 다음 단계로 이동. :요구사항분석>설계>구현>테스트>유지보수 |
나선형(스파이럴)-계위개고 | 위험 기반, 반복적 개발, 점진적 개선. 나선형 모델 절차 : 계획 및 정의/위험분석/개발/고객평가 |
프로토타입 | 초기 프로토타입 개발 후 사용자 피드백을 통한 최종 시스템 개발. |
반복적 개발 | 구축대상을 나누어 병렬적으로 개발 후 통합하나, 반복적으로 개발하여 점증 완성시키는 모델. |
V- 모델 | 개발 단계와 테스트 단계를 대응시키는 확장된 폭포수 모델. 검증과 확인(인스펙션, 워크스루)에 중점을 둠. :요구사항분석>시스템 설계>아키텍처 설계>모듈 설계코딩>단위테스트>통합테스트>시스템테스트>인수테스트 |
소프트웨어 개발 방법론
- 소프트웨어 개발 방법론은 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법이다
- 소프트웨어를 하나의 생명체로 간주하고 소프트웨어 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론이다
소프트웨어 개발방법론 종류(구정 객컴 애제)
- 구조적 방법론(Structured Development)
- 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 프로세스 중심의 하향식 방법론
- 구조적 프로그래밍 표현을 위해 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
- 나씨-슈나이더만 : 논리의 기술에 중점을 둔 도형식 표현 방법, 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는 데 적합.
- 정보공학 방법론(Information Engineering Development)
- 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
- 개발주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
- 객체지향 방법론(Object-Oriented Development)-객체 클래스 메시지 사용.
- '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
- 객체, 클래스, 메시지를 사용
- 컴포넌트 기반 방법론(CBD; Component Based Development)
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 소프트웨어 확장성, 재사용.
- 애자일 방법론(Agile Development)
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론.
- 제품 계열 방법론(Product Line Development)
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
- 임베디드 소프트웨어를 작성하는 데 유용한 방법론
- 영역 공학과 응용 공학으로 구분
- 영역 공학: 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
- 응용 공학: 제품 요구분석, 제품 설계, 제품을 구현하는 영역
애자일(Agile) : 빠른 피드백과 빠른 결정.
- 애자일 방법론의 유형
- XP(eXtreme Programming): 의사소통 개선과 즉각적 피드백으로 고품질 소프트웨어 개발을 위한 방법론
- 1~3주의 반복(Iteration) 개발주기
- XP의 5가지 가치(피존의 용기단) : 용기(Courage),단순성(Simplicity),의사소통(Communication),피드백(Feedback),존중(Respect)
- XP의 12가지 기본원리
- 짝 프로그래밍(Pair Programming): 개발자 둘이서 짝으로 코딩하는 원리
- 공동 코드 소유(Collective Ownership): 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
- 지속적인 통합(CI; Continuous Integration): 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
- 계획 세우기(Planning Process): 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리
- 작은 릴리즈(Small Release): 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
- 메타포어(Metaphor): 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
- 간단한 디자인(Simple Desing): 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
- 테스트 기반 개발(TDD; Test Driven Develop): 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리(선테 후코)
- 리팩토링(Refactoring): 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성한다는 원리(소프트웨어 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화하여 소프트웨어의 유지보수성을 향상시키는 기법. 목적: 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질향상.)
- 40시간 작업(40-Hour Work): 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상을 일하지 말아야 한다는 원리
- 고객 상주(On Site Customer): 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리
- 코드 표준(Coding Standard): 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리
- 스크럼(Scrum): backlog를 바탕으로 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론(백스미마회번)
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Sprint) : 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상
- 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획수립
- 스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
- 스프린트 회고(Sprint Retrospective) : 해당 스프린트가 끝난 시점이나 일정 주기로 시행
- 번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
- 린(LEAN) :도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT(Just In Time),
- 칸반(Kanban: 시각적 도구 사용 작업흐름 최적화. 백로그>진행 중>완료) 보드 사용
- 7가지 원칙: 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
- XP(eXtreme Programming): 의사소통 개선과 즉각적 피드백으로 고품질 소프트웨어 개발을 위한 방법론
소프트웨어 개발 보안 용어(자위취위)
- 자산 : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
- 위협 : 조직이나 기업의 자산에 악영향을 줄 수 있는 행위나 사건.
- 취약점 : 위협이 발생하기 위한 사전 조건, 시스템의 정보 보증을 낮추는 데 사용되는 약점.
- 위험 : 위협이 취약점을 이용하여 조직의 자산 손실 피해를 가져올 가능성.
소프트웨어 개발 보안의 3대 요소 (기무가)
- 기밀성 : 인가되지 않은 개인 혹은 시스템 접근 차단하는 특성
- 무결성 : 정당한 방법 없이는 데이터 변경/파괴/훼손 할 수 없음.
- 가용성 : 권한을 가진 사용자나 애플리케이션이 원하는서비스를 지속해서 사용할 수 있도록 보장.
UML
- 구조적 다이어그램(클객컴배복패) : 시스템의 정적 구조를 표현, 클래스, 객체, 컴포넌트 등 구조적인 요소와 이들 간의 관계를 시각화
- 클래스 다이어그램 :
- 구성요소 :
- 클래스 : 공통의 속성, 연산, 관계, 의미를 공유하는 객체들의 집합.
- 속성 : 클래스의 구조적 특성에 이름을 붙인 것. 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위 기술.
- 연산(매서드) : 요구되는 제약사항을 명시하는 클래스의 행위적 특징
- 접근제어자 : 클래스에 접근할 수 있는 정도를 표현. (- :private,+:public,#:protected,~:default)
- 구성요소 :
- 객체 다이어그램 : 클래스의 인스턴스를 특정 시점에서 나타냄.
- 컴포넌트 다이어그램 :시스템을 구성하는 물리적인 컴포넌트 구조 사이의 (의존)관계를 표현
- 배치 다이어그램 : 컴포넌트 사이의 종속성을 표현. 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현하는 다이어드램.
- 복합 구조 다이어그램 : 복합 구조를 갖는 클래스와 컴포넌트 내부구조를 표현한다.
- 패키지 다이어그램 : 클래스나 유스케이스 등을 포함한 여러 모델 요소들을 그룹화해 패키지를 구성하고 패키지들 사이의 관계를 표현한다.
- 클래스 다이어그램 :
- 행위적 다이어그램(유시활타상): 시스템의 동적 동작을 표현하며, 객체나 컴포넌트 간의 상호작용과 시스템의 행위를 시각화
- 유스케이스 다이어그램: 사용자와 시스템 간의 상호작용을 나타냄. 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램.
- 유스케이스 : 시스템이 제공해야하는 서비스, 기능, 액터가 시스템을 통해 수행하는 일련의 행위.
- 액터 : 사용자가 시스템에 대해 수행하는 역할.
- 시스템 : 전체 시스템의 영역을 표현
- 유스케이스 다이어그램 구성요소 간 관계 :
- 확장관계 : 특정조건에서 한 유스케이스로만 확장되는 관계.
- 포함관계 : 유스케이스를 수행할 때 다른 유스케이스가 반드시 수행되는 관계.
- 일반화관계 : 추상적인 액터와 좀 더 구체적인 액터 사이에 맺어주는 관계.
- 유스케이스 다이어그램 구성요소 간 관계 :
- 시퀀스 다이어그램: 객체 간의 메시지 전달을 시간 순서에 따라 나타냄. 4가지 구성요소.(메실생각)
- 객체 : 위쪽에 표시(사각형 안에 밑줄) 바로 아래로 생명선 가짐.
- 생명선 : 객체로부터 뻗어나가는 점선.
- 실행 : 직사각형은 오퍼레이션이 실행되는 시간을 의미.
- 메시지 : 객체 간의 상호작용은 메시지 교환으로 이루어진다. ->
- 활동 다이어그램: 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램 (프로세스나 워크플로우의 흐름을 표현)
- 시작점 : 활동의 시작을 의미/ 검은색 동그라미로표현
- 전이 : 실행의 흐름을 나타냄 / 화살표로 표현
- 액션/액티비티 :액션-더 이상 분해할 수 없는 단일 작업/액티비티-몇개의 액션으로 분리될 수 있는 작업. /모서리가둥근 사각형으로 표현
- 종료점 : 처리의 종료를 의미. /검은색 동그라미를 포함한 원
- 조건(판단)노드 : 조건에 따른 제어 흐름의 분리를 표현/ 마름모로 표현, 나가는 제어흐름은 여러개
- 병합노드 : 여러 경로의 흐름이 하나로 합쳐진 것 표현 / 마름모로 표현, 들어오는 제어흐름은 여러개, 나가는 제어 흐름은 1 개로 표현.
- 포크 노드: 평행적으로 수행되는 흐름을 나누는 노드./굵은 사로선으로 표현하고 들어오는 액티비티 흐름은 1 개이고, 나가는 액티비티 흐름은 여러 개
- 조인 노드 : Fork Node로 나눠진 흐름을 다시 하나로 합치는 노드 /굵은 사로선으로 표현하고 들어오는 액티비티 흐름은 여러개이고, 나가는 액티비티 흐름은 1 개
- 구획면 : 액티비티 수행을 담당하는 주체를 구분하는 면, /가로 또는 세로 실선을 그어 구분
- 타이밍 다이어그램 : 시간에 따른 객체의 상태 변화를 표현
- 상태 다이어그램: 객체의 상태 변화와 전이를 나타냄.
- 유스케이스 다이어그램: 사용자와 시스템 간의 상호작용을 나타냄. 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램.
클래스 : 변수와 매서드(함수)로 구성되어 있다.
객체 지향 분석 방법론
객체 지향 분석의 개념
- 객체 지향 분석(OOA; Object Oriented Analysis)은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법이다
객체 지향 분석 방법론 종류
- OOSE(Object Oriented Software Engineering)-야콥슨(Jacobson)
- 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용되는 방법론
- 분석, 설계, 구현 단계로 구성
- 기능적 요구사항 중심의 시스템
- OMT(Object Modeling Technology)-럼바우(Rumbaugh)
- 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
- 객체지향 분석 절차(객동기) : 객체 모델링->동적 모델링->기능 모델링 순서로 진행
- 객체 모델링(Object Modeling) = 정보 모델링
- 시스템의 정적 구조 표현
- 객체 다이어그램을 활용하여 표현
- 동적 모델링(Dynamic Modeling)
- 객체의제어 흐름/상호 반응 표현
- 상태 다이어그램을 활용하여 표현
- 기능 모델링(Functional Modeling)
- 데이터값의 변환 과정 표현
- 자료 흐름도(DFD)를 활용하여 표현
- OOD(Object Oriented Design)-부치(Booch)
- 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
- 분석하는 데 이용된 객체 모델의 설계 시 적용
여기서부터.
디자인 패턴
1.생성 패턴(AB /FP /S)
: 클래스 정의와 객체 생성 방식을 구조화, 캡슐화한 방법을 제시한다. 객체의 생성과 참조 과정을 추상화함으로써 시스템을 개발할 때 부담을 덜어준다.
구분 | 패턴 | 설명 |
생성패턴 | Abstract factory | 여러개의 연관된 서브 클래스를 특정 그룹으로 묶어 한번에 수정할 수 있도록 만든 패턴 (추상 팩토리 패턴은 팩토리 메소드 패턴을 확장한 캡슐화 방식) 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다. |
Factory method | 상위 클래스에서 객체를 생성하는 인터페이스를 정의(인터페이스 만드는 법 결정), 하위 클래스에서 인터페이스를 생성하도록 하는 방식(데이터 생성 책임짐), -하위 클래스는 데이터의 생성을 책임지고 조작하는 함수들을 오버라이딩하여 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는 디자인 패턴 -생성할 객체의 클래스를 국한하지 않고 객체를 생성 |
|
Builder | -복잡한 인스턴스를 조립하여 만드는 구조, 복합 객체를 생성할 때 객체를 생성하는 방법과 객체를 구현하는 방법은 분리하여 동일한 생산 절차여도 서로 다른 표현 결과를 만들 수 있는 디자인. -생성과 표기를 분리해서 복잡한 객체를 생성. |
|
Prototype | -원본(기존) 객체를 복제하여 중복 객체를 생성하는 패턴 (비용 절감 효과) -처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만수정하여 사용하는 패턴. |
|
Singleton | -한 클래스에 한 객체만 존재하도록 제한하는 패턴 (Static으로 선언) -전역변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴 |
|
|
2.구조 패턴(ABCD/FFP) 구 브데 퍼플 프록컴어
: 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이다. 복잡한 형태의 구조를 갖는 시스템을 개발하기 쉽게 만들어주는 패턴이다.
- Adaptor: 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴, 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 디자인 패턴.
ex) 국내 가전제품을 외국에서 사용할 때, 동일한 전압을 사용하지 않아서 변환코드가 필요한 경우에 Adaptor 구조 패턴을 사용함 - Bridge: 기능 클래스 계층과 구현 클래스 계층을 연결하고, 구현 클래스에서 추상 계층을 분리하여 결합도를 낮추고 독립적으로 변형할 수 있도록 해주는 패턴(구현 뿐 아니라 추상화된 부분까지 변경해야 하는 경우 활용)
- Composite: 객체들ㄹ의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴, 사용자가 단일 객체와 복합 객체가 클라이언트에서 동일하게 다루도록록 해주는 패턴
- Decorator: 기존 구현되어 있는 클래스에 새로운 독립적인 기능을 추가해서 확장하도록 하는 패턴(기존 객체의 결합을 통해 기능을 동적으로 유연하게 확장.)
- Facade: 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게 하는 패턴, 오류에 대해 단위별로 확인할 수 있게 하며, 사용자의 측면에서 단순한 인터페이스 제공을 통해 접근성을 높일 수 있는 디자인패턴. (클래스 간의 의존관계 줄어들고 복잡성도 낮아짐)
- Flyweight: 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스화하여 공유함으로써 메모리를 절약하고, '클래스의 경량화'를 목적으로 하는 디자인 패턴 여러개의 '가상 인스턴스'를 제공하여 메모리를 절감.
- Proxy: 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실체 객체를 드러나지 않게 하여 정보은닉의 역할도 수행하는 디자인 패턴.(특정 객체로의 접근을 제어하기 위한 용도로 사용.)
3.행위 패턴(CCIIMMOSSTTV) 행(미디에이터/인터프리) 미인이 텝옵 스테비커 스트메체
: 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 패턴이다.
- Chain of Responsibility: 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴.
- Command: 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 매서드를 만들어 각 명력이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 디자인 패턴. 요구사항을 객체로 캡슐화.
- Iterator(반복자): 컬렉션 구현 방법을 노출시키지 않고(내부 구조를 노출하지 않고), 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인패턴(복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴).
- Memento: 객체의 상태를 저장해두었다가 복원해야 할 경우 사용하는 패턴이다. (캡슐화 사용)
- Observer: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법. 일대 다의 의존성을 갖는다. 상호작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인 패턴.(일대 다 연)
- State: 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시 코드의 수정을 최소화할 수 있고, 유지보수의 편의성도 갖는 디자인 패턴. 객체의 내부 상태에 따라 행위를 변경할 수 있게 한다. (특정 메소드가 객체의 상태에 따라 다른 기능을 수행함)
- Strategy: 알고리즘 군을 정의하고(추상클래스) 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴으로, 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해 주는 디자인 패턴. 클래스별로 캡슐화되어 있는 객체들을 교체할 수 있도록 함으로써 같은 작업을 다른 알고리즘으로 사용할 수 있도록 하는 패턴이다.
- Template method: 작업의 일부분을 서브 클래스로 캡슐화해서 전체 일을 수행하는 구조는 그대로 유지하면서 특정 부분을 바꾸는 패턴이다. (알고리즘의 각 단계 처리를 서브 클래스에서 재정의할 수 있게 함)
- Visitor: 기존 객체의 구조를 수정하지 않고 새로운 기능을 추가할 수 있는 패턴이다.'
- 하단 두ㅜ개는 비주류.
- Interpreter: 언어에 따라서 문법에 대한 표현을 정의한다.
- Mediator(중재자): 객체간의 상호작용을 캡슐화하여 복잡성을 줄이기 위해 사용하는 패턴이다.
2. 비용산정, 일정관리 모형
(1) 비용산정 모형
- 비용산정 모형은 소프트웨어 규모파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식이다
비용산정 모형 분류
하향식 선정방법 | 경험이 많은 전문가에게 비용 산정을 의뢰하거나 여러 전문가와 조정자를 통해 산정하는 방식 | 전문가 판단, 델파이 기법 |
상향식 산정방법 | 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식 | 코드 라인 수(Loc), Man Month, COCOMO , 푸트남 , 기능점수(FP) |
비용산정 모형 종류-하향식산정방법
- 델파이 기법 : 전문가의 경험적 지식을 통한 문제해결 및 미래예측을 위한 기법으로 전문가 합의법이라고도 한다.
비용산정 모형 종류-상향식산정방법(Lines Man Co 푸기) 락하는 남자 코 푸 ㄹ 기
- LoC(Lines of Code) 모형
- LoC 모형은 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방식이다
- Man Month 모형
- Man Month 모형은 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식이다
- Man Month 계산 = (LoC)/(프로그래머 월간 생산성) = 20,000/100 = 200
- (프로젝트 기간) 계산 = (Man Month)/(인력 수) = 200/10 = 20
- COCOMO(COnstructive COst MOdel) 모형(조반임)
- COCOMO 모형은 보헴(Bohem)이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식이다
- 규모에 따라 유형이 조직형(=기본형, 단순형), 반 분리형, 임베디드형으로 나뉜다
- 조직형(Organic Mode)
- 기관 내부에서 개발된 중소규모의 소프트웨어로 일괄 자료 처리나 과학 기술 계산용, 비즈니스 자료 처리 개발에 적용
- 5만(50KDSI)라인 이하의 소프트웨어를 개발하는 유형
- 반분리형(Semi-Detached Mode)
- 단순형과 임베디드형의 중간형
- 트랜잭션 처리 시스템이나, 데이터베이스 관리 시스템, 컴파일러, 인터프리터와 같은 유틸 개발에 적용
- 30만(300KDSI) 라인 이하의 소프트웨어를 개발하는 유형
- 임베디드형(Embedded Mode)
- 초대형 규모의 트랜잭션 처리 시스템이나 운영체제, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적용
- 30만(300KDSI) 라인 이상의 소프트웨어를 개발하는 유형
- 푸트남(Putnam) 모형
- 푸트남 모형은 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식이다
- 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다
- 기능점수(FP; Function Point) 모형
- 기능점수 모형은 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식이다
- 경험을 바탕으로 단순, 보통, 복잡한 정도에 따라 가중치를 부여한다
일정관리 모델
- 일정관리 모델은 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델이다
일정관리 모델 종류
- 주 공정법(CPM; Critical Path Method)
- 모든 자원 제약사항을 배제한 상태로 프로젝트의 시작과 끝을 나타내는 노드(Node)와 노드 간을 연결을 통해 공정을 계산하기 위한 액티비티(Activity) 표기법
- PERT(Program Evaluation and Review Technique)
- 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법
- 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)
- 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
XSS : 검증되지 않은 외부 입력 데이터가 포함된 웹 페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹 페이지에 포함된 부적적한 스크립트가 실행되는 공격.
사이트 간 요청 위조 : 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격.
SQL삽입 공격:
-Blind Sql injection: 쿼리 결과의 참과 거짓을 통해 의도하지 않은 sql문 실행
-Error-Based-Sql-injection: 쿼리에 대한 오류 메시지 반환 없이는 공격 불가.
시스템 보안 공격
- 포멧 스트링 공격 : 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용해서 발생하는 취약점 공격 기법.
- 레이스컨디션 공격 : 프로세스 실행중 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 하는 공격.
- 키로거 공격 : 키보드 움직임 탐지
- 루트킷(공격용 도구) : 시스템 침입 후 침입 사실을 숨긴 채 침입을 위한 백도어,트로이목마설치, 원격접근 등 불법 해킹 기능을 제공하는 프로그램 모음집.
- 크라임웨어(공격용 도구):온라인상에서범죄와 같은 불법적인행위를 수행하기 위해 제작된 컴퓨터 프로그램. 공격용 툴킷 ! 악성코드로 구성된 프로그램이 사용자를 속여 PC에 설치되면 불법적으로 정보를 수집하거나 PC의 자원을 사용하여 원하는 대상을 공격하는 용도로 사용. 키로거, 스파이웨어, 브라우저 하이잭커.
- 랜섬웨어 : 컴퓨터 시스템을 감염시켜 접근을 제한하고 일종의 몸값을 요구하는 악성 소프트웨어.
랜섬웨어 감염 공격 기법 | 설명 |
드라이브 바이 다운로드 | 악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이 실행되어 의도된 서버(멀웨어 서버)로 연결하여 감염시키는 공격 기법. |
워터링 홀 | 특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성 코드를 심거나 악성 코드를 배포하는 url로 자동으로 유인하여 감염시키는 공격 기법 |
버퍼 오버플로우 공격 : 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 프로세스의 흐름을 변경시키셔 악성코드를 실행시키는 공격 기법.
유형 | 설명 |
스택 버퍼 오버플로우 | 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터(실행 가능 코드)를 입력하여 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행하는 공격기법. |
힙 버퍼 오버플로우 |
프로그램 실행 시 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터(실행 가능 코드)를 입력하여 메모리의 데이터와 함수 주소 등을 변경, 공격자가 원하는 임의의 코드를 실행하는 공격 기법. |
버퍼 오버플로우 공격 대응방안(가쉴)
대응방안 | 설명 |
스택가드 활용 | 카나리라고 불리는 무결성 체크용 값을 복귀 주소와 변수 사이에 삽입해두고, 버퍼 오버플로우 발생 시 카나리 값을 체크, 변할 경우 복귀 주소를 호출하지 않않는 방식으로 대응하는 기법.(가카) |
스택쉴드 활용 | 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두고, 함수 종료 시 저장된 값과 스택의 RET 값을 비교해 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단하는 기법.(쉴렛) |
ASLR(Address Space Layout Randomization)활용 | 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정 주소 호출을 차단 |
안전한 함수 활용 | -버퍼 오버플로우에 취약한 함수 -버퍼 오버플로우에 안전한 함수 |
실행 제한 | -스택에서의 쓰기 권한 제한 -스택에서의 프로그램 실행금지 -가능성이 있는 SUID 프로그램 제한. |
피싱 관련 용어
- 파밍 : 사용자가 자신의 웹 브라우저를 입력해도 가짜 웹 페이지로 접속하게 하여 개인 정보를 훔치는 공격. ex) 컴퓨터에 악성 코드 설치하게 한 뒤 은행 사이트 접속 시 자신들이 개설해 놓은 사이트로 강제로 접속하게 한 뒤 보안카드 번호를 입력 받아 돈을 빼간다.
- 스미싱 : 문자 메시지를 이용하여 신뢰할 수 있는 사람으로 가장하여 개인 비밀정보를 요구하거나 소액결제 유도.
- 큐싱 : 인증이 필요한 듯 속여 QR 코드를 통해 악성 앱을 내려 받도록 유도하여 금융 정보를 빼내는 공격.
- 스피어 피싱 : 사회공학의 기법, 특정 대상 선정 -> 일반적인 이메일로 위장한 메일 지속적으로 발송. -> 발송 메일의 본문 링크나 첨부된 파일 클릭 유도 -> 개인정보 탈취.
보안 관련 용어
용어 | 설명 |
사회공학 | 컴퓨터 보안에 있어서, 인간 상호작용의 깊은 신뢰를 바탕으로 사람들을 속여서 정상 보안 절차를 깨트리기 위한 비기술적 시스템 침입 수단. 사례로는 상대방의 자만심이나 권한을 이용하는 공격 및 도청 등이 있음 |
그레이웨어 | -바이러스나 명백한 악성 코드를 포함하지 않는 합법적 프로그램이면서도 사용자를 귀찮게 하거나 위험한 상황에 빠뜨릴 수 있는 프로그램. -평범한 소프트웨어인지, 바이러스인지 구분하기 어려운 중간영역에 존재하는 프로그램으로 스파이웨어, 애드웨어, 장난 프로그램, 원격 액세스 도구 등 사용자가 원하지 않는 프로그램을 총칭하는 이름. |
봇넷 | 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터가 네트워크로 연결된 형태. |
APT 공격 | 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격 기법 |
타이포스쿼팅(=URL하이재킹) | 사용자들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 도메인을 미리 등록하여 정보를 탈취하는 행위 |
이블 트윈 | 무선 Wifi 피싱 기법. 공격자는 합법적인 Wifi 제공자처럼 행세하며 노트북이나 휴대전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격 기법. |
난독화 | 코드의 가독성을 낮춰 역공학에 대비하기위해서 프로그램 코드의 일부 또는 전체를 변경하는 기법. 적용 범위에 따라. 소스 코드 난독화, 바이너리 난독화로 나뉨. |
사이버 킬체인 | 록히드 마틴. 공격형 방위시스템 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모. |
세션 하이재킹 : 세션 관리 취약점을 이용한 공격
애플리케이션 디도스 공격 기법
공격기법 | 설명 |
HTTP GET 플러딩 | HTTP 캐시 옵션 조작(과도한 get메시지 이용) -> 캐싱 서버가 아닌 웹 서버가 직접 처리하도록 유도(서버 과부하) -> 자원소진. |
Slowloris (Slow HTTP Header DOS) | HTTP GET매서드를 이용하여 헤더의 최종 끝을 알리는 개행문자열 전송 x -> 장시간 서버 연결 지속 -> 자원소진. |
Rudy (Slow HTTP POST DOS) | Content-Length 는 크게 , 바디 부분은 매우 소량으로 보내어 계속 연결 상태 유지 |
Slow Read Attack | Zero Wndow Packet 상태에서 다수의 HTTP 패킷 지속 전송 -> 자원소진 |
Hulk Dos (http get flooding과의 차이 명확히) | 공격자가 공격 대상 웹사이트 주소(url)를 지속적으로 변경하면서 다량의 GET요청을 발생시킨다. |
Hash Dos | 조작된 많은 파라미터를 POST 방식으로 전달하여 해시 충돌 발생 |
DoS | DDoS | DRDoS | |
공통점 | 정상적인 서비스 불가 | ||
정의 |
시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격이다.
특정 서버에게 수 많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 할 수 없게 만드는 서버 공격방법
|
여러 대의 좀비PC에서 한 웹 서버에 비정상적인 트래픽을 흘려보내 웹 서버가 과도한 트래픽 소모 및 프로세스 진행, 과도한 입출력등을 통해 서버가 정상적으로 서비스 이용을 할 수 없게 만드는 서버 공격방법 | DRDOS의 공격 방식은 IP 헤더에 들어가는 송신자 IP 주소를 피해자의 IP로 조작하여, 정상적인 서비스를 하는 서버들에게 어떤 요청을 보낸다 그렇게 하면 일반적으로 서버들은 패킷의 송신자 IP를 보고 그 IP로 응답을 하므로 엉뚱하게 피해자에게 모든 응답이 되돌아가게 된다. 이를 고속으로 반복하여 피해자에게 대량의 트래픽을 유발시켜 정상적으로 서비스 이용을 할 수 없게 만드는 서버 공격방법 DDOS에 비해 공격 근원지 파악이 어렵다. |
작동원리 | 공격자 -> 공격대상 | 공격자 -> 좀비PC -> 공격대상 | 공격자 -> 취약서버 -> 공격대상 |
에이전트 여부 | x | o | x |
DOS: 서비스 거부(Denial of Service) 공격. 다량의 패킷을 목표 시스템에 보내 시스템의 자원을 고갈시키고, 정상적인 사용자가 서비스에 접근하지 못하도록 방해하는 사이버 공격.
DDOS(Distributed Denial of Service attack): 분산 서비스 거부 공격. 공격자가 여러 대의 컴퓨터를 감염시키고, 분산된 좀비 PC들을 이용해 타킷 시스템을 집중적을 공격해서 서비스를 마비시킨다.
DRDOS (Distributed Reflection Denial of Service Attack, 분산 반사 서비스 거부 공격) :근간은 ip spoofing. 공격자는 출발지(송신자) IP를 공격 대상(피해자) IP로 위조하여 다수의 반사 서버로 요청 정보를 전송, 엉뚱한 피해자에게 모든 응답이 돌아가고, 공격 대상자는 반사 서버로부터 다량의 응답을 받아서 서비스 거부(DOS)가 되는 공격기법. DDOS에 비해 공격 근원지 파악이 어렵다.() 여기서 IP가 위조된 패킷을 받아 피해자에게 의도치 않게 공격을 가하게 되는 서버들을 반사체(Reflector), 또는 반사 서버(Reflection Server) 라고 하며, 인터넷 상에 연결 되어 외부의 요청에 대한 응답을 하는 어떠한 컴퓨터라도 반사체로 악용 될 가능성이 있다. 물론 여러분의 PC와 스마트폰도 반사체가 될 수 있습니다.)
랜드어택 : DoS 공격 유형. 출발지 IP와 목적지 IP를 같은 패킷 주소로 만들어 보냄으로써 수신자가 자기 자신에게 응답을 보내게 하여 시스템의 가용성을 침해하는 공격.
ICMP Flood : 스머프 공격 이라고도 부름. 네트워크 장치 설정이 잘못된 경우, 어떤 특정 전산망의 발송 주소로 전달된 패킷이 망 상의 어떤 특정 컴퓨터가 아니라 망의 모든 컴퓨터에 전달될 수 있다는 점을 이용한다. 전산망은 이 경우 스머프 증폭기 역할을 한다. 가해자는 대량의 IP 패킷을 보내면서 그 발신 주소를 표적 주소로 한다. 전산망의 대역폭이 신속히 소진되어 정상 패킷이 목적지에 도달하지 못하게 된다.
Ping Flood : 표적에 압도적인 수의 핑 패킷을 보낸다.
SYN 플러딩 : DoS의 한 유형. TCP 프로토콜의 구조적인 문제를 이용한 공격, 서버의 동시 가용 사용자 수를 SYN 패킷만 보내 점유함으로써 다른 사용자가서버를 사용 불가능하게 하는 공격. 공격자는 ACK를 발속하지 않고 계속 새로운 연결 요청을 하게 되어 서버는 자원할당을 해지하지 않고 자원만 소비하여 고갈된다.
Tear Drop : 패킷이 겹치거나, 패킷의 크기가 과대한 망가진 IP 조각을 보낸다.
Hash DOS (Denial of Service) 공격은 해시 테이블과 같은 데이터 구조를 겨냥한 서비스 거부 공격입니다. 이 공격은 해시 충돌을 유도하여 해시 테이블의 성능을 저하시킵니다.
Hash
Attack on
Structure(구조)
Handling
Hulk DOS
Hulk DOS (Denial of Service) 공격은 웹 서버를 대상으로 하는 서비스 거부 공격입니다. 이 공격은 대량의 HTTP GET 요청을 생성하여 웹 서버를 과부하 상태로 만들어 서비스가 정상적으로 작동하지 않도록 합니다.
Hulk
Under
Large
Kluster of
네트워크 공격 기법
공격기법 | 설명 |
ip 스푸핑 | 타깃 시스템의 정보를 빼내기 위해 침입자가 속여 자신의 패킷 헤더를 인증된 호스트의 ip 주소로 위조하여 타깃에 전송하는 공격기법 |
arp 스푸핑 | -arp 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법(MTM) -arp 프로토콜의 허점을 이용하여 자신의 mac(media access control) 주소를 다른 컴퓨터의 mac인 것 처럼 속임 |
icmp redirect 공격 |
icmp redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격기법 |
트로이 목마 | 악성 루틴이 숨어 있는 프로그램으로 겉보기엔 정상, 실행하면 악성코드 실행. |
스니핑, 스푸핑, 스누핑 차이
개념 | 설명 |
스니핑 | 네트워크 상에서 자신이 아닌 다른 상대방들의 패킷 교환을 엿듣는 행위, 공격 대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격 기법. |
스푸핑 | 승인받은 사용자인 것처럼 시스템에 접근하거나 네트워크상에서 허가된 주소로 가장하여 접근 제어를 우회하는 공격기법 (속이고 위조하고) |
스누핑 | 스니핑과 유사한 단어로, 네트워크상의 정보를 염탐하여 불법적으로 얻는 행위 |
패스워드 크래킹 기법
기법 | 설명 |
사전 크래킹 | ID와 패스워드가 될 가능성이 있는 단어들을 파일로 만들어 놓고 이 파일의 단어를 대입하여 크랙하는 공격 기법 |
무차별 크래킹 | 영문자, 숫자, 특수문자 등을 무작위로 패스워드 자리에 대입하여 패스워드를 알아내는 기법. |
보안 관련 용어
- 공급망 공격 - 소프트웨어 개발사 네트워크 침입 -> 소스코드 수정하여 악의적 코드 삽입 -> 소프트웨어 설치/업데이트 시에 자동적으로 감염.
- 제로데이 공격 - 보안 취약점이 널리 공표되기 전에 공격
- 웜 - 스스로 복제 전파
- 악성 봇 - 스스로 실행 x , 명령에 의해 원격에서!
멀웨어 : 악의적 목적을 위해 작성된 실행 가능한 코드 = 악성코드 or 악성프로그램, 실행 가능한 코드에는 프로그램 매크로, 스크립트가 아니라 취약점을 이용한 데이터 형태로 표현된다.
APT공격: 특정 타깃 목표, 지속적, 지능적 맞춤형 공격.
보안 분석 도구
- Tripwire : 크래커가 침임하여 시스템에 백도어를 만들어 놓거나 설정 파일을 변경해 놓았을 때 이러한 사실을 알 수 있게 분석하는 도구.
- Tcpdump : 네트워크 인터페이스를 거치는 패킷의 내용을 출력해주는 도구. 자신의 컴퓨터로 들어오는 모든 패킷의 내용을 도청할 수 있음.
모듈 연계 방식
모듈 연계 방식 | |
EAI (Enterprise Application Integration) 기업 어플리케이션 통합. | 표준화 되어 있지 않은 이종(다른) 시스템들 사이에 위치하여 각 시스템간의 필요한 정보를 서로 소통하여 관리의 효율성을 증대 시킨다. |
ESB(Enterprise Service Bus) | ESB는 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간을 하나의 시스템으로 관리 운영할 수 있도록 하는 SOA (서비스기반 아키텍처)를 지원하는 미들웨어 플랫폼 |
EAI 구성요소(플어브메비)
구성요소 | 설명 |
EAI 플랫폼 | -이기종 시스템 간 애플리케이션 상호 운영 -데이터의 신뢰성 있는 전송을 위한 메시지 큐와 트랜잭션 미들웨어 기능 수행 -대규모 사용자 환경 지원을 위한 유연성과 확장성 보장 |
어댑터 | -다양한 패키지 애플리케이션 및 기업에서 자체적으로 개발한 애플리케이션을 연결하는 EAI의 핵심 장치로 데이터 입출력 도구 |
브로커 | -시스템 상호 간 데이터가 전송될 때, 데이터 포맷과 코드를 변환하는 솔루션 |
메시지 큐 | 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터를 송수신하는 기술 |
비즈니스 워크플로우 | 미리 정의된 기업의 비즈니스 WORKFLOW에 따라 업무를 처리하는 기능 |
EAI 구축 유형(포허메하) :
- 포인트투포인트(1:1) : 가장 기초적인 애플리케이션 통합 방식
- 허브앤스포크 : 단일한 접점의 허브 시스템을 통해 데이터 전송. 중앙 집중식 방식.
- 메시지 버스(미들웨어) : 애플리케잇ㄴ 사이 미들웨어(버스)를 두어 연계하는 통합 방식.
- 하이브리드. : 그룹 내부 - 허브앤스포크 방식 사용/ 그룹 간 - 메시지 버스 방식 사용
트랜잭션의 상태(활부철취(실)완) :
- 활동 : 초기상태. 트랜잭션이 실행 중인 상태
- 부분완료 : 마지막 명령문이 실행된 후에 가지는 상태.
- 철회 : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태
- 취소(실패): 정상적인 실행이 더 이상 진행될 수 없을때 가지는 상태
- 완료: 트랜잭션이 성공적으로 완료된 상태
네트워크 계층화 모델(접분코)
네트워크 설계에서 분배 계층은 일반적으로 다음과 같은 계층화 모델에서 사용됩니다:
- 접속 계층 (Access Layer) : 최종 사용자 장치와 네트워크 간의 연결을 제공하고, 장치들 간의 통신을 관리합니다. 스위치와 액세스 포인트가 이 계층에 위치합니다. 연결!!
- 분배 계층 (Distribution Layer) :데이터와 트래픽을 집계하고, 정책 기반의 라우팅, VLAN 간의 라우팅, 보안 정책 적용 등을 수행합니다. 이 계층은 네트워크의 중추 역할을 하며, 여러 액세스 계층 장치에서 수집된 트래픽을 처리하고, 코어 계층으로 전달합니다. 트래픽 처리! 중간관리자!
- 코어 계층 (Core Layer) : 네트워크의 주요 데이터 전송을 담당하며, 높은 속도와 신뢰성을 제공하는 대규모 네트워크 인프라를 구성합니다. 이 계층은 데이터의 빠르고 효율적인 전송을 보장합니다. 빠르게 전송!!
메모리 분산 할당 기법(페세메가슬)
- 페이징 (Paging): "고정 크기 블록으로 메모리를 나누어 할당" – 페이지와 페이지 테이블.
- 세그멘테이션 (Segmentation) 기: "가변적인 크기의 논리적 단위로 메모리를 나누어 할당, 가변적 크기" – 세그먼트와 세그먼트 테이블.
- 메모리 풀 (Memory Pool): "미리 할당된 블록을 재사용하여 메모리 할당" – 메모리 블록. "메모리 모임 장소인 메모리 풀에 메모리 기본 단위인 블록을 모아두고, 필요할때! 재사용하고 싶을때 쓴다!"
- 가상 메모리 (Virtual Memory): "물리적 메모리를 확장하여 가상 주소 공간 제공" – 페이지 파일, 주소 변환.
- 슬래싱 (Slashing): "메모리를 여러 조각으로 나누어 할당" 슬래시조각조각 _메모리 조각화.
메모리 단편화 : 분할된 주기억장치에 프로세스를 할당하고 반납하는 과정에서 사용되지 못하고 낭비되는 기억장치 발생
메모리 단편화 종류 (내부단편화, 외부단편화)
- 내부단편화: 메모리 블록이 고정된 크기로 할당될 때, 요청된 메모리보다 큰 블록이 할당되어 발생하는 남는 공간. 분할된 공간에 프로세스를 적재한 후 남은 공간. 고정 분할 할당 방식 또는 페이징 기법 사용 시 발생하는 현상.
- 예시:만약 프로그램이 28KB를 요청했지만, 할당 단위가 32KB라면, 4KB가 낭비되게 됩니다. 이 4KB가 내부 단편화입니다.
- 외부단편화: 메모리 할당과 해제가 반복되면서, 사용할 수 있는 메모리 공간들이 여러 개의 작은 조각들로 나뉘어져 할당 요청을 처리하지 못하는 현상.
- 예시:메모리 공간 중간중간에 작은 빈 공간들이 많이 생기지만, 요청된 큰 메모리를 할당할 수 없는 상황입니다.
내부 단편화 해결:
- 더 작은 메모리 블록 사용: 할당 단위를 줄이면 내부 단편화가 줄어듭니다.
- 동적 메모리 할당: 필요한 만큼의 메모리만 할당하는 방법입니다.
외부 단편화 해결:(페세메버압통)
- 압축 (Compaction): 메모리의 모든 단편화 영역을 하나로 압축하는 기법.
- 페이징 (Paging): 메모리를 고정 크기의 페이지로 나누고, 가상 메모리를 사용하는 방법입니다.
- 세그멘테이션 (Segmentation): 메모리를 논리적인 크기로 나누는 방법으로, 각 세그먼트는 연속적이지만 세그먼트 사이에는 연속성이 필요 없습니다.
- 메모리 풀 (Memory Pool): 동일한 크기의 객체를 자주 할당하는 경우, 미리 메모리 블록을 할당해 두는 방법입니다.
- 버디 메모리 할당 : 요청한 프로세스 크기에 가장 알맞은 크기를 할당하기 위해 메모리를 2의 n승의 크기로 분할하여 메모리를 할당하는 기법.
- 통합 : 인접한 단편화 영역을 찾아 하나로 통합하는 기법.
요약
- 내부 단편화: 고정 크기 블록 할당으로 인한 작은 낭비. 큰 박스에 작은 물건을 넣고 남는 공간을 낭비하는 것.
- 외부 단편화: 메모리 할당/해제로 인한 사용 불가능한 작은 조각. 여러 작은 상자에 물건을 넣고 큰 물건을 넣을 상자가 없는 상황.
페이징 기법의 문제점과 해결방안
-스레싱(Thrashing) : 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 실제 처리 시간보다 페이지 교체 시간이 더 많아지는 현상.
-워킹세트(Working Set) : 각 프로세스가 많이 참조하는 페이지들의 집합을 주기억장치 공간에 계속 상주하게 하여 빈번한 페이지 교체 현상을 줄이고자 하는 기법.
-페이지 부재 빈도(PFF; Page Fault Frequency) : 페이지 부재율의 상한과 하한을 정해서 직접적으로 페이지 부재율을 예측하고 조절하는 기법.
메모리 배치 기법(Best, Worst, First Fit)
초소형 전자 기계 시스템
MEMS는 전자와 기계적 기능을 통합하여 초소형 기계를 만들어, 자동차, 의료, 전자 기기 등에서 광범위하게 사용된다.
"나노미(M)터 밀리미(M)터 전자(E) 장치(System)"
매시업(Mashup) : "다양한 요소의 조합" "혼합하여 새로운 것을 만드는"
"매시업은 여러 데이터나 서비스를 융합하여 새로운 기능을 만드는 것"
- 다양한 요소: 여러 데이터나 서비스를 "혼합"하여 "새로운 서비스"를 만들어냅니다.
- "매시업"을 "믹스업(Mix-up)"이라고 생각하세요. "혼합"라는 뜻을 기억하면 됩니다.
- 레시피 믹서: 여러 재료를 섞어서 새로운 요리를 만드는 이미지를 상상하세요. 매시업도 비슷하게 여러 데이터를 섞어서 새로운 서비스를 만드는 것입니다.
매시 네트워크 :기존 무선 랜의 한계 극복을 위하여 등장, 대규모 디바이스의 네트워크 생성에 최적화되어서 차세대 이동통신, 홈 네트워킹, 공공 안전 등의 특수목적을 위해 사용되는 새로운방식의 네트워크 기술
SET(Secure Electronic Transaction): 온라인상의 안전한 거래를 위해 Visa와 Master Card에서 개발한 프로토콜.
해시함수 : 임의의 길이를 갖는 값을 입력받으면 고정된 길이의 값을 출력하는 함수. 직접 접근할 수 있는 짧은 길이의 값이나 키가 존재하여 해당 주소에빠른 접근이 가능하며, 메시지의 오류나 변조를 탐지하는 데 활용된다.
해싱(Hashing)이란 해시함수(Hash Function)를 이용하여 해시 테이블(Hash Table)에 데이터를 저장하는 방법
해시함수 유형
함수 | 설명 |
제산법 | % -> 테이블 주소 계산 |
제곱법 | 레코드 키값을 제곱한 후 결괏값의 중간 부분에 있는 몇 비트를 선택하여 해시 테이블의 홈 주소로 사용하는방식 |
숫자 분석법 | 레코드 키를 구성하는 수들이 모든 키들 내에서 자리별로 어떤 분포인지를 조사하여 비교적 고른 분포를 나타내는 자릿수를 필요한 만큼 선택하여, 레코드의 홈 주소로 사용하는방법. |
폴딩법 | 레코드 키를 여러 부분으로 나누고, 나눈 부분의 각 숫자를 더하거나 XOR 한 값을 홈 주소로 사용하는 방법 |
기수변환법 | 어떤 진법으로 표현된 주어진 레코드 키를 다른 진법으로 간주하고 키를 변환하여 홈 주소를 얻는 방식 |
무작위법 | 난수를 발생시켜 홈 주소 결정. |
함수형 언어 :(순수, 익명, 고)
- 순수함수 : 어느 순간에 호출해도 동일한 값을 반환.
- 익명함수 : 이름 없는 함수 , 람다식 이라고도 불림.
- 고계함수 : 함수를 또 하나의 값으로 간주하여 함수의 인자 혹은 반환값으로 사용할 수 있는 함수.
백업유형(백 전차증)
- 전체백업: 전체 백업
- 차등백업 : 마지막 전체 백업 이후 변경된 모든 데이터
- 증분백업 : 차등 백업과 유사하나 전체 백업 이후 변경분이 누적되어 백업
결합도는 낮을 수록 응집도는 높을 수록 이상적인 모듈화라는 것입니다.
응집도 (우논시절통순기) | |
응집도는 모듈의 동립 정도를 나타냄. 모듈 내부 구성요소 간 연관 정도. | |
우연적(Coin) 응집도 낮음 (Bad) |
모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도 |
논리적(Lo) | 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도 |
시간적(Tem) | 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도. |
절차적(Pro) | 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도 |
통신적(Com) | 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도. |
★순차적(Seq) | 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도. 실행 순서가 밀접한 관계를 갖는 기능을 모아 모듈 |
기능적(Fun) | 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도. |
결합도는 낮을 수록 응집도는 높을 수록 이상적인 모듈화라는 것입니다.
결합도(내공외제스자) : 외부의 모듈과의 연관도.
- 내용 (결합도 높음/낮은품질 ): 다른 모듈 내의 변수나 기능을 다른 모듈에서 사용하는 경우
- 공통 : 모듈 밖에 선언되어 있는 전역 변수를 참조하고 갱신하는 방식으로 상호작용하는 결합도.
- 외부 : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우.
- 제어 : 값(처리할 대상) + 제어요소(어떻게 처리를 해야한다)도 전달될 경우 결합도
- 스탬프 : 배열이나 객체, 구조 등이 전달되는 경우의 결합도.
- 자료(결합도 낮음) : 파라미터를 통해서만 모듈간의 상호작용이 일어나는 경우.
프로세스 : 실행 중인 프로그램. = 작업, 테스
스레드 : 프로세스보다 가벼운, 독립적으로 수행되는 순차적인 제어의 흐름, 실행 단위.
프로세스 용어
용어 | 설명 |
TCP(Transaction Per Second) | 초당 몇 개의 트랜잭션을 처리할 수 있는지 나타내는 서비스 성능 지표 |
반환시간 (Turnaround Time) | 프로세스들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간. |
용어 | 설명 |
디스패치 | 프로세스 전이 시, 여러 프로세스 중 실행될 프로세스를 선정하여 cpu를 할당하는 동작 |
문맥교환 | CPU가 현재 실행중인 프로세스를 프로세스 제어블록(PCB)에 저장하고, 다음 프로세스의 문맥을 PCB로부터 복원하는 작업 |
프로세스 상태(생준 실대완)
프로세스 상태 | 설명 |
생성 | 사용자에 의해 프로세스가 생성된 상태. |
준비 | CPU를 할당받을 수 있는 상태 |
실행 | 프로세스가 CPU를 할당 받아 동작 중 |
대기 | 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 입출력 처리 완료까지 대기 리스트에서 기다림 |
완료 | 수행 종료. |
CPU 스케줄러 ? https://hyunah030.tistory.com/4
- 다중 프로그램 OS의 기본으로, 여러 프로세스들이 CPU를 교환하며 보다 생산적으로 동작한다.
- CPU를 선점한 프로세스가 대기하는 시간을 보다 효율적으로 사용하기 위하여 사용한다.
- 기본적으로 다음에 실행될 프로세스를 정하고, 프로세스들을 실행가능한 상태로 만든다.
프로세스 스케줄링 유형(선비)
-선점형 (SRF: 남은 처리 시간) : 낮은 우선순위를 가진 프로세스보다 높은 우선순위를 가진 프로세스가 CPU를 선점하는 방식. OS가 스케줄링의 알고리즘에 따라 적당한 프로세스에게 CPU를 할당하고, 필요시에 회수하는 방식.
-RR(라운드로빈) : time slice를 기반으로 스케줄링한다.(시간 내 처리 못하면 큐 제일 끝으로 감.)
-SRT(남은 처리 시간) : 가장 짧은 시간 소요되는 프로세스 먼저 수행 -> 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 스케줄링 알고리즘.
-다단계 큐
-다단계 피드백 큐(MLFQ; Multilevel Feedback Q) : 다단계 피드백 큐는 FCFS와 라운드 로빈 스케줄링 기법을 혼합한 것.
-비선점형 : 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케줄링 방식. "비선점 했으면 기다려" 즉, 운영체제가 임의로 페이지 교체를 강제로 발생시키지 않아요.
-우선순위 스케줄링 : 우선순위가 같을 경우, FCFS와 다를 바 없으므로 비선점 선점 둘 다 사용된다.
-기한부 스케줄링:
-FCFS(First Come First Served) :먼저 CPU를 요청하는 프로세스를 먼저 처리하는 방식
-HRN(High Response Ratio Next)
-SJF(Shortest Job First) :프로세스가 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료시까지 자원을 점유하는 스케줄링 알고리즘. 기아현상 발생가능성 있음.
cf) FCFS = FIFO의 개념은 같지만, FCFS는 주로 프로세스 스케줄링에서 사용되고, FIFO는 데이터 처리나 페이지 교체에서 더 많이 사용
페이지교체 기법 | 설명 |
LRU | 가장 오랫동안 사용되지 않은페이지를교체하는 기법. |
LFU | 참조 횟수가 가장 적은페이지를 교체하는 기법. |
FIFO | 가장 먼저 들어와 가장 오래 있던 페이지를 교체하는 기법. |
OPT(Optimal Replacement) | 앞으로 가장 오랫동안 사용하지 않을 페이지 교체. 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘 |
NUR(Not Used Recentrly)클럭알고리즘. | LRU와 비슷. 최근에 사용하지 않은 페이지를 교체. 최근 여부 확인을 위해 페이지마다 참조 비트와 변형비트 사용 |
SCR(Second Chance Replacement) | 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법으로 FIFO 기법의 단점을 보완하는 기법. |
인터럽트 : CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우, CPU가 처리하던 프로그램을 중단하고, 문제를 해결하도록 보내지는 제어 신호.
교착상태-deadlock(환비상점) : 다중 프로세싱 환경에서 두개 이상의 프로세스가 특정 자원 할당을 무한정 대기하는 상태.
-상호배제 : 프로세스가 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용할 수 없는 상태.
-비선점 : 프로세스가 점유한 자원은 해당 프로세스가 자발적으로 해제할 때까지 강제로 뺏을 수 없음.
-점유와 대기 : 한 프로세스가 자원을 점유하고 있으면서 또 다른 자원을 요청하고 대기하는 상태.
-환형대기: 프로세스들이 자원을 기다리는 상태가 원형으로 연결되어 있습니다.
교착상태 해결 방법
- 예방 (Prevention): 교착상태 조건을 미리 제거하여 발생을 막습니다.
- 회피 (Avoidance): 자원 할당 전에 시스템의 안전 상태를 확인하여 교착상태를 피합니다.
- 은행가 알고리즘 : 사용자 프로세스 사전에 자기 작업에 필요한 자원의 수를 제시하고 운영체제가 자원의 상태를 감시, 안정상태일 때만 자원을 할당하는 기법.
- Wound-Wait :
- Wait-Die :
- 탐지 (Detection): 주기적으로 교착상태를 확인하고, 발생 시 이를 탐지합니다.
- 복구 (Recovery): 교착상태가 발생한 후, 프로세스 종료나 자원 선점으로 이를 해결합니다.
애플리케이션 성능 측정 지표(처응경자)
- 처리량(트랜잭션 처리 수),
- 응답시간(응답 출력 개시 시간),
- 경과 시간(요구 입력 ~ 결과 출력까지의 시간),
- 자원사용률(CPU사용량)
성능 테스트 유형(부내스강)
- 부하 테스트 : 임계점을 찾는 테스트
- 강도 테스트 : 임계점 이상의 부하를 가하여 비정상 상황에서의 동작 확인
- 스파이크 테스트: 짧은 시간 몰릴때 시스템 반응 측정
- 내구성 테스트: 오랜시간 높은 부하 가하여 테스트.
리틀의 법칙(수치=도착률*시간) : 시스템에 오랜 시간 동안 머물러 있는 고객의 평균 수치 = 오랜 시간 동안에 걸친 평균 실제 도착률 * 시스템에서 고객이 머문 평균 시간 <--- 성능 테스트에서 반드시 알아야하는 법칙.
리틀의 법칙은 성능 테스트에서 사용되는 목표 처리량에 요구되는 동시 사용자 수를 산정할 때 사용한다.
규칙없는비용있나옵티마이저-통
규칙기반옵티마이저(통계가 없는 상태에서) 통계가 없으니 사전등록된 규칙에 따라서라도 질의 실행 계획을 선택해야겠지. 사용자가 원하는 처리경로로 유도하기 쉬움.
비용기반옵티마이저(통계가 있는 상태에서) 통계 정보로부터 모든 접근 경로를 고려한 질의실행 계획 선택. 옵티마이저의 이해도가 낮아도 성능 보장 가능.
모듈화 : 소프트웨어 성능 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 단계(SW 성능 향상이나, 관리의 편의를 위해, 기능단위의 모듈로 분해하고 설계하고 구현하는 단)
모듈화 주요 기법 (서루메) "모듈화 루틴을 메인루틴과 서브루틴으로 관리!"
- 루틴 : 소프트웨어에서 특정 동작을 수행하는 일련의 코드.
- 메인루틴 : 전체의 개략적인 동작 절차. 서브루틴 호출.
- 서브루틴 : 메인루틴에 의해 호출.
소프트웨어 재사용 방법의 유형
구분 | 설명 |
합성 중심 | 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법 |
생성 중심 | 추상화 형태로 쓰인 명세를 구체화하여 프로그램을 만드는 방법으로, 패턴 구성 방법. |
재사용 종류(공개역)
구분 | 설명 |
재공학 | 기존 소프트웨어를 버리지 않고 기능을 개선시키거나 기능을 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 기법. |
역공학 | sw에 대한 디버깅, 디컴파일 등의 분석을 통해 기존 제품이 구현된 구조, 원리, 기술, 알고리즘 등을 역으로 분석하여 재구성하는 기법. |
재개발 | 기존 시스템 내용을 참조하여 완전히 새로운 시스템을 개발, 기존 시스템에 새로운 기능을 추가, 기존 시스템의 기능을 변경하는 기법. |
관계대수-절차적 / 관계해석-비절차적(대절해비)
관계대수(순수관계연산자-셀프조디, 일반관계연산자)
관계 대수 | |||
관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어 | |||
종류 | 연산자 | 기호 | 설명 |
일반 집합 연산자 |
합집합 | ||
교집합 | |||
차집합 | - | ||
카티션 프로덕트 | 곱하기 | ||
순수 관계 연산자 |
셀렉트 | ㅇ | 조건 |
프로덕트 | ㅠ | 속성 | |
조인 | 리본 | ||
디비전 | 나누기 |
데이터 모델 구성요소(구연제)
구성요소 | 설명 |
연산 | 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세. select, project,join |
구조 | 논리적으로 표현된 개체 타입 간의 관계, 이차원 테이블로 표현 |
제약조건 | 논리적 제약조건. |
스키마 : 데이터베이스의 구조와 제약조건에 관한 전반적인 명세. 데이터베이스를 구성하는데이터 개체, 속성, 관계 및 데이터 조작 시 데이터값들이 갖는 제약조건 등에 관해 전반적으로 정의한다.
스키마의 유형 | 설명 |
외부 스키마 | -사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 스키마. -전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마라고도 함. -하나의 데이터베이스 관리시스템에서는 여러 개가 존재할 수 없음. |
개념스키마 | -개체 간의 관계와 제약조건을 나타내고 데이터베이스의 접근 권한, 보안 정책 및 무결성 규정에 관한 명세를 정의한 스키마 -데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터베이스 명세로서 하나만 존재. |
내부 스키마 | -데이터베이스의 물리적 구조를 정의한 스키마로 물리적 저장장치의 관점에서 본 전체 데이터베이스의 명세로서 하나만 존재. -물리적 저장 구조에 대한 정의를 기술하고, 시스템프로그래머나 시스템 설계자가 보는 관점의 스키마. |
모델링 절차(요개논물)
절차 | 설명 |
요구사항 분석 | 현행 데이터의 문제점과 개선해야 할 점을 확인하고 향후 개선점을 도출화는활동 |
개념 모델링 | 업무 중심의 포괄적인 모델링으로 추상화하는 활동으로 주제 영역과 핵심데이터 간 관계 정의/ ERD |
논리 모델링 | 관계, 속성, 키 등을 도출하는 활동/트랜잭션인터페이스 |
물리 모델링 | 사용 DBMS 특성에 맞게 물리적 스키마를 만드는 활동 |
이력데이터 유형 (변발진 이력)
-변경 - 거래에 대한 변경
-발생 - 정기적으로
-진행
소프트웨어 결함의 종류 : 에러(오류) - >결함(결점/버그) -> 실패(문제)
- 에러 : 결함의 원인이 되는 것. 사람에 의해 발생
-결함 : 에러 또는 오류가 원인이 되어 소프트웨어 제품에 포함되어 있는 결함
-문제 : 소프트웨어 제품에 포함된 결함이 실행될 때 발생되는 현상.
결함 생명주기별 결함상태(등검할수확종재보)
- 결함 등록 : 테스터가 테스트 절차를 실행하여 발견한 결함을 분석 후 구체화, 고립화, 일반화한 결함으로서 보고된 상태.
- 결함 검토 : open된 결함의 처리 방안을 검토하는 상태
- 결함 할당 : 결함을 수정할 개발자 결정.
- 결함 수정 : 결함을 처리한 상태
- 결함 확인 : 결함처리의 합당성의 검증이 완료된 상태
- 결함 종료 : 수정이 정확하다고 판단하여 종료.
- 결함 재등록 : 다시 수정을 요구한 상태
- 결함 조치 보류 : open된 결함을 곧바로 수정하지 않고 다음 릴리스에서 해결하기로 연기된 상태.
런타임(Run-time) : 런타임은 프로그램이 사용자에 의해 실행되어 동작하는 시점입니다.
즉, 프로그램이 작동하고 있는 동안의 시간입니다. 프로그램이 실행되는 것을 "영화 상영"에 비유할 수 있습니다.
- 파일 작성: 영화 촬영 및 편집 (프로그램 작성 및 컴파일)
- 런타임: 영화 상영 (프로그램 실행)
라이브러리: 소프트웨어 개발 시 공통으로 사용될 수 있는 특정 기능을 모듈화한 것입니다. 즉, 여러 프로그램에서 재사용할 수 있는 코드의 집합입니다. 라이브러리를 "레고 블록"에 비유할 수 있습니다.
- 개발자: 레고 블록을 가지고 다양한 구조물을 만들 수 있습니다.
- 라이브러리: 레고 블록처럼 미리 만들어진 기능을 제공하여, 개발자가 그 블록들을 조립하여 프로그램을 만듭니다.
라이브러리 유형 | 설명 |
런타임 라이브러리 | |
표준 라이브러리 |
회복기법 종류 : 회로체그
- -로그기반 회복기법(지연 갱신 회복 기법/ 즉각 갱신 회복 기법) :
- 지연갱신 - 트랜잭션 완료 후 데이터베이스에 기록.
- 즉시 갱신 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영(Redo undo 모두 완료)
- -체크 포인트 회복 기법 : 장애 발생 검사점 이후에 처리된 트랜잭션만 장애 발생 이전의 상태로 복원
- -그림자 페이징 회복 기법 : 복제본을 생성하여 데이터베이스 장애시 이를 이용해 복구.
데이터베이스 회복 기법 용어
용어 | 설명 |
REDO | 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작과 완료에 대한 기록이 있는 트랜잭션들의 작업을 재작업하는 기법. |
UNDO | 데이터베이스가 비정상적으로 종료되었을 때 디스크에 저장된 로그를 분석하여 트랜잭션의 시작은 있지만, 완료 기록이 없는 트랜잭션들이 작업한 변경 내용들을 모두 취소하는 기법. |
데이터베이스 장애 유형 (실트시미)
유형 | 설명 |
실행 장애 | 데이터를 발견하지 못하거나 연산실패 |
트랜잭션 장애 | 트랜잭션 내의 오류 or 내부조건 |
시스템 장애 | 하드웨어 오작동으로, 메인 메모리 손실, 교착(메모리). |
미디어 장애 | 디스크 헤드 붕괴 or 저장장치의 데이터베이스 손상(저장장치). |
병행제어( 로낙타다 ) | |||
다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법. | |||
기법 종류 | 설명 | ||
로킹 | -트랜잭션이 사용하는 데이터 항목에 대하여 Lock을 설정한 트랜잭션이 해제할 때까지 독점적으로 사용할 수 있게 상호배제 기능 제공 기법(같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성, 무결성 유지 위해 순차적 진행을 보장). -하나의 트랜잭션을 수행하는 동안 특정 데이터 항목에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 상호배제 기능 제공 -로킹의 특징은 다음과 같음
|
||
낙관적 검증 | 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법 | ||
타임스탬프 순서 | 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법. | ||
다중버전 동시성 제어(MVCC) | 트랜잭션의 타임 스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 (직렬가능성)이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법. |
병행제어의 목적
- 데이터베이스의 공유 최대화
- 시스템의 활용도 최대화
- 데이터베이스의 일관성 유지
- 사용자에 대한 응답시간 최소화.
병행 제어 미보장 시 문제점 : 갱현모연
문제점 | 설명 |
갱신손실 | 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류 |
현황 파악의 오류 | 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류. |
모순성. | 두 트랜잭션이 동시에 실행되어 데이터베이스의 (관성)이 결여되는 오류 |
연쇄복귀 | 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류 |
키 종류
- 기본키 : 고유 식별 컬럼
- 대체키 : 후보 키 중에서 기본 키로 선택되지 않은 키
- 후보키 : 기본키 + 대체키. 테이블에서 각 튜플을 구별하는데 기준이 되는 컬럼
- 슈퍼키 : 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만 최소성은 만족하지 못하는 키
- 외래키 : 테이블 간의 참조 데이터 무결성을 위한 제약조건(한 릴레이션의 컬럼이 다른 릴레이션의 기본키로 이용됨)
정규화 : 데이터의 중복성을 제거하여 이상 현상 방지, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정
데이터 중복 최소화, 데이터 무결성 유지, 각 테이블의 관계 정의
이상 현상 : 데이터의 중복성으로 인해 릴레이션 조작할 때 발생하는 비합리적 현상
- 삽입 이상 : 새로운 데이터를 삽입할 때 불완전한 데이터가 발생하거나 삽입이 불가능해지는 문제.
- 삭제 이상 : 데이터를 삭제할 때 다른 중요한 정보도 함께 삭제되는 문제.
- 갱신 이상 : 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일이키는 경우.
데이터베이스 정규화 단계 : 원부이 결다조
- 1정규형 : 원자값으로 구성
- 2정규형 : 부분함수 종속 제거(완전 함수적 종속 관계)
- 3정규형 : 이행함수 종속 제거
- BCNF(보이스-코드 정규형): 결정자 함수이면서 후보키가 아닌 것 제거 https://1000hg.tistory.com/36
- 4정규형 : 다치(다중 값) 종속성 제거
- 함수 종속과 달리 어떠한 조건을 만족하는 튜플이 릴레이션 안에 있을 것 을 요구하는 것.
- 5정규형 : 조인 종속성 제거
반정규화(=비정규화, 역정규화) : 정규화된 엔터티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법.
반정규화 기법 : 정규화된 데이터베이스를 의도적으로 일부 반대로 설계하는 것입니다. 데이터베이스 성능을 향상시키기 위해 중복 데이터를 허용하거나 정규화된 테이블을 합치는 등의 작업을 수행
반정규화 기법 | 설명 |
테이블 병합 | 1:1관계 1:M 관계를 통합하여 조인 횟수를 줄여 성능을 향상 |
테이블 분할 | 테이블을 수직 또는 수평으로 분할하는 것으로 파티셔닝이라고 함 |
중복 테이블 추가 | 대량의 데이터들에 대한 집계함수(GROUP BY, SUM 등)를 사용하여 실시간 통계정보를 계산하는 경우에 효과적인 수행을 위해 별도의 통계 테이블을 두거나 중복 테이블을 추가 |
컬럼 중복화 | 조인 성능 향상을 위한 중복 허용 |
중복 관계 추가 | 데이터를 처리하기 위한 조인 과정에서 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺는 것. |
1.중복 테이블 추가(집테 진테 특테 3형제):
- 집계 테이블 추가 : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거 설정하여 사용.
- 진행 테이블 추가 : 이력 관리 등의 목적으로 추가하는 테이블, 적절한 데이터 향의 유지와 활용도를 높이기 위해 기본 키를 적절히 사용.
- 특정 부분만 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성.
파티셔닝 : 논리적으로는 하나의 테이블이지만, 여러 개의 데이터 파일에 분산되어 저장된다
파티션 종류(목 범해조)
- Range(범위 분할) : 분할 키값이 범위 내에 있는지 여부를 구분하는 분할 기법.
- List(목록 분할) : 값 목록에 파티션을 할당하고, 분할 키값을 그 목록에 맞게 분할하는 기법
- Hash(해시 분할) : 해시 함수의 값에 따라 파티션에 포함하지 여부를 결정하는 기법
- Composite(조합 분할) : 위 세개 중 두개 이상의 분할 기법 결정
인증 기술의 유형 : 지소생특 (지식/소지/생체/특징 기반)
유형 | 설명 | 예시 |
지식 기반 인증 | 사용자가 기억하고 있는 지식 | ID/패스워드 |
소지 기반 인증 | 소지하고 있는 사용자 물품 | 공인인증서, OPT |
생체 기반 인증 | 고유한 사용자의 생체 정보 | 홍채, 정맥, 얼굴, 지문 |
특징 기반 인증 | 사용자의 특징을 활용 | 서명, 발걸음, 몸짓. |
트랜잭션의 특성 : ACID(원자성/ 지속성/ 격리성/영구성)
특성 | 설명 |
원자성 | 하나라도 실패할 경우 전체가 취소되어야 하는특성 |
일관성 | 트랜잭션이 실행 성공 후항상 일관된 데이터베이스 상태를 보존해야하는 특성 |
격리성 | 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이접근 불가한 특성 |
영속성 | 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장하는 특성. |
네트워크 보안 솔루션 :
- 방화벽 : 내 외부 트래픽 모니터링. 시스템의 접근 허용 /차단
- 웹 방화벽 : SQL 인젝션, XSS 같은 웹 공격 탐지, 차단.
- NAC(Network Access Control; 네트워크 접근 제어): 단말기가 내부 네트워크에 접속을 시도할 때 이를 제어하고 통제하는 기능을 제공하는 솔루션. 바이러스나 웜 등의 보안 위협으로부터 네트워크 제어 및 통제기능을 수행.
- IDS : 이벤트 모니터링, 비인가 사용자에 의한 접근 행위 실시간 탐지.
- IPS : 네트워크에 대한 공격이나 침입 실시간 차단, 유해 트래픽에 대한 조치를 능동적으로 처리.
- WPS(wireless intrusion prevention system; 무선 침입 방지 시스템) : 인가되지 않은 무선 단말기의 접속을 자동으로 탐지 및 차단하고 보안에 취약한 무선 공유기를 탐지.
- 통합보안시스템(UTM; unified threat management) : 방화벽, IDS, IPS VPN 등 안 장비 기능을 하나로 통합하여 제공하는 시스템.
- 가상사설망(VPN; virtual private network) : 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션.
- SIEM(Security Information and Event Management; 보안 관제 솔루션) : 다양한 보안장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협 상황을 인지하고, 침해사고에 신속하게 대응하는 보안 관제 솔루션. 기업에서 생성되는 테라바이트급의 정형/비정형 데이터와 방화벽, 안티바이러스 시스템, 서버, 네트워크 장비 등으로부터 수집한 다양한 데이터 등을 빅데이터 기반의 로그 분석을통하여 보안의 위협 징후를 빠르게 판단, 대응할 수 있도록 해주는 보안관제 솔루션 .
- ESM(Enterprise Security Management) : 방화벽, 침입 탐지 시스템(IDS), UTM, 가상 사설망등의 여러 보안 시스템으로붙 ㅓ발생한 각종 이벤트 및 로그를 통합해서 관리, 분석, 대응하는 전사적 통합 보안 관리 시스템. EMS는 서로 다른 기종의 보안 장비들을 통합 관리하는 기능과 네트워크 자원 현황의 보안 모니터링 기능이 있고, 주로 이벤트 위주의 단시간 위협 분석 및 DBMS 기반의 보안 관리 솔루션.
cf)DLP(Data Loss Prevention) : 조직 내부의 중요 자료가 외부로 빠져나가는 것을 탐지하고 차단하는 시스템. 정보유출 방지를 위해 정보의 흐름에 대한 모니터링과 실시간 차단 기능을 제공.
MQTT(Message Queing Telemetry Transport) : IoT 장치, 텔레메트리 등에서 최적화되어 사용할 수 있도록 개발된 프로토콜, 브로커를 사용한 라이트 메시징을 전송하는 프로토콜.
지역성 유형 : 공시순(공간/시간/순차)
유형 | 설명 | 사례 |
시간지역성 | 최근 사용되었던 기억장소들이 집중적으로 액세스하는 현상 -참조했던 메모리는 빠른 시간에 다시 참조될 확률이높다. |
Loop, Stack, 부프로그램, Counting, 집계에 사용되는 변수 |
공간지역성 | 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상 -참조된 메모리 근처의 메모리를 참조하는 특성. |
배열 순회, 프로그래머들이 관련된 변수(데이터 저장 기억장소)들을 서로 근처에 선언하여할당되는 기억장소, 같은 영역에 있는 변수 참조. |
순차 지역성 | 데이터가 순차적으로 액세스 되는 현상 -공간 지역성에 편입되어 설명되기도 함. |
순차적 코드 실행 |
객체 지향 설계 원칙(SOLID)
원칙 | 설명 |
단일 책임의 원칙(Single) | -하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 한다는 원칙 |
개방 폐쇄 원칙(open clos) | 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀 있어야 한다는 원칙 |
리스코프 치환의 원칙(liscov) | 서브 타입(상속받은 하위 클래스)은 어디서나 자신의 기반 타입(상위 클래스)으로 교체할 수 있어야 한다는 원칙 |
인터페이스 분리의 원칙(interface) | 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙 |
의존성 역전의 원칙(dependency) | 실제 사용 관계는 바뀌지 않으며 추상을 매개로 메시지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙. |
절차형 sql : 프사트
-프로시저 : 일련의 쿼리들을 마치 하나의 함수처럼 실해하기 위한 쿼리의 집합
-사용자 정의 함수 : 일련의 SQL 처리 수행, 수행 결과를 단일 값으로 반환할 수 있는 절차형 SQL
-트리거 : 데이터베이스 시스템에서 삽입,갱신,삭제 등의 이벤트가 발생할 때마다 관련 작업이 자동으로 수행되는 절차형SQL
프로시저 구성요소(디비컨 SET)
구성요소 | 설명 |
선언부 (DECLARE) |
프로시저의 명칭, 변수와 인수 그리고 그에 대한 데이터 타입을 정의하는 부분 |
시작/종료부 (BDGIN/END) |
-프로시저의 시작과 종료를 표현하며, BEGIN/END가 쌍을 이룸. -다수 실행을 제어하는 기본적 단위가 되며 논리적 프로세스를 구성 |
제어부 (CONTROL) |
-기본적으로 순차적으로 처리 -조건문과 반복문을 이용하여 문장을 처리 |
SQL | -기본적으로 순차적으로 처리. -조건문과 반복문을 이용하여 문장을 처리 |
예외부 (EXCEPTION) |
-BEGIN~END절에서 실행되는 SQL 문이 실행될 때 예외 발생 시 예외 처리 방법을 정의하는 처리부 |
실행부 (TRANSACTION) |
-프로시저에서 수행된 DML 수행 내역의 DBMS의 적용 또는 취소 여부를 결정 하는 처리부. |
자바 코드
프린트 포맷 : %d(10진수) / %x(16진)
소스코드의 품질 분석 도구 유형 (정적동적)
-정적 분석 도구 : 작성된 코드 실행x, 코드 자체만으로 결함 발견하려는 코드 분석 도구(pmd, cppcheck, SonarQube, checkstyle, ccm, cobeertura)
-동적 분석 도구 : 애플리케이션 실행 -> 메모리 누수 발견 , 발생한 스레드의 결함 분석 (Avalanche, Valgrind)
개발 도구 분류(빙구태형)
구분 | 설명 | 종류 |
빌드도구 | -작성한 코드의 빌드 및 배포를 수행하는 도구 -각각의 구성요소와 모듈에 대한 의존성 관리를 지원 |
-Ant -Maven -Gradle |
구현도구 | -개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구 -프로그램을 개발할 때 가장 많이 사용되는 도구 |
-Eclipse -IntelliJ -Sprint Tool Suite -NetBeans -Visual Studio |
테스트 도구 | -코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 -코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 기능 |
-xUnit -PMD -Findbugs -Cppcheck -Sonar |
형상 관리 도구 | -개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구 -프로젝트 진행 시 필수로 포함되는 도구 |
-CVS(가장오래됨. 중앙집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행한다. 파일 단위 변경 사항 관리 가능) -Subversion(SVN) 중앙 집중형 클라이언트 - 서버 방식. 서버에서 소르를 쉽고, 유용하게 관리할 수 있게 도와주는 ㅗ구. 저장소를 만들어 그곳에 소스를 저장해서 소스 중복이나 여러 문제를 해결하기 위한 도구. -Git : 로클 저장소와 원격 저장소로 분리되어 분산 저장하는 도구, 분산형 버전 관리 시스템, 대형프로젝트에서 효과적. |
형상 관리 도구의 기능(CCC)
기능 | 설명 |
체크인 (업로드) | 개발자가 수정한 소스를 형상 관리 저장소로 업로드하는 기능 |
체크아웃 (다운로드) | 형상 관리 저장소로부터 최신 버전을 개발자 PC에 다운로드 받는 것. |
커밋 | 형상 저장 관리소에 업로드 후 최종적으로 업데이트 되었을 때 서버에 반영하도록 하는 기능. |
형상 관리 절차(식통감기)
절차 | 설명 |
형상 식별 | -형상 관리 대상을 정의 및 식별하는 활동. -추적성 부여를 위해 id와 관리번호를 부여 |
형상 통제 | -형상 항목의 버전 관리를 위한 형상통제위원회 운영 -변경요구 관리, 변경제어, 형상 관리 등 통제 지원 -베이스라인에 대한 관리 및 형상 통제 수행 가능 |
형상 감사 | -소프트웨어 베이스라인의 무결성 평가 -베이스라인 변경 시 요구사항과 일치 여부 검토 |
형상 기록 | -소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록. -형상 결과 보고서작성. |
검증과 확인
구분 | 설명 |
검증 | 소프트웨어 개발 과정을 테스트, 개발자 혹은 시험자의 시각으로 소프트웨어가명세화도니 기능을 올바로 수행하는지 알아보는과정 |
확인 | 소프트웨어 결과 테스트 사용자 시각으로 올바른 소프트웨어가 개발되었는지 입증하는 과정. |
테스트 목적에 따른 분류(안성구 회회병비)
분류 | 설명 |
회복 테스트 | 시스템에 고의로 실패를 유도하고, 시스템의 정상적인 복귀 여부를 테스트 |
안전 테스트 | 불법적인 소프트웨어가 시스템을 파괴하는 것을 막기 위해 소스 코드 내의 보안적인 결함을 미리 점검하는 테스트 기법 |
성능 테스트 | 시스템이 사용자의 이벤트에 응답하는 시간, 특정 시간 내에 처리하는 업무량, 사용자의 요구에 시스템이 반응하는 속도 등을 측정하는 테스트 기법. |
구조 테스트 | 시스템의 내부 논리 경로, 소스 코드의 복잡도를 평가하는 테스트 기법. |
회귀 테스트 | 시스템에 오류를 제거하거나 수정함에 있어서 새로 생긴 오류가 없는지 테스트하는 반복 테스트 기법. |
병행 테스트 | 변경된 시스템과 기존의 시스템에 동일한 데이터를 입력하여 결과를 비교하는 테스트 기법. |
소프트웨어 테스트의 원리 (결완초집 살정오)
원리 | 설명 |
결함 존재 증명 | -테스트는 결함이 존재함을 밝히는 활동 -결함이 없다는 것을 증명할 수 없음 |
완벽 테스팅은 불가능 | -무한 경로(한 프로그램 내의 내부 조건은 무수히 많을 수 있음) -무한 입력 값(입력이 가질 수 있는 모든 값의 조합이 무수히 많음)으로 인한 완벽한 테스트가 어렵다는 원리. |
초기 집중 | -개발 초기에 체계적인 분석 및 설계가 수행되면 테스팅 기간 단축, 재작업을 줄여 개발 기간을 단축 및 결함을 예방할 수 있는 원리. -SW 개발 초기 체계적인 분석 및 설계가 수행되지 못하면 그 결과가 프로젝트 후반에 영향을 미치게 되어 비용이 커진다는 요르돈 법칙 적용(눈덩이 법칙) |
결함 집중 | -적은 수의 모듈에서 대다수 결함이 발견된다는 원리 -파레토 법칙의 내용인 80대 20 법칙 적용 |
살충제 페러독스 | 동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다는 원리 |
정황 의존성 | 소프트웨어의 성격에 맞게 테스트를 수행해야 한다는 원리 |
오류-부재의 궤변 | 요구사항을 충족시켜주지 못한다면, 결함이 없다고 해도 품질이 높다고 볼 수 없다는 원리. 요구사항 충족 (O) → 결함 (X) → 품질 ↑(O) 결함 (X) → 요구사항 충족 (X) → 품질 ↑(X) |
소프트웨어 공학의 원칙과 관련한 법칙 | 설명 |
브룩스의 법칙 | 지체되는 소프트웨어 개발에 인력 투하는 부질없다. 더 늦출뿐. |
파레토의 법칙 | 80대 20의 법칙. 결함의 80프로는 20프로에 집중된다. |
롱테일 법칙 | 사소해보이는 80%의 다수가 20프로의 소수 핵심보다도 뛰어난 가치를 창출한다. |
분석자동화 도구
도구 | 설명 |
상위 CASE | -계획수립, 요구 분석, 기본설계 단계를 '다이어그램'으로 표현. -모델들 사이의 모순 검사 및 모델의 오류 검증, 일관성 검증 지원. -자료 흐름도 프로토타이핑 작성 지원 및 UI 설계 지원. |
하위 CASE | -구문 중심 편집 및 정적,동적 테스트 지원 -시스템 명세서 생성 및 소스 코드 생성 지원 |
정적테스트 vs 동적테스트
정적 테스트(소프트웨어 실행하지 않고 테스트 ) :
- 리뷰 (동인워관기),
- 정적 분석
정적 테스트 기법 유형 | 설명 |
리뷰(동인워관기) | 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 상황을 점검하기 위한 활동으로, 전문가가 수행 |
정적 분석 | 도구의 지원을 받아 정적 테스트를 수행하는 방법을로 자동화된 도구를 이용하여 산출물의 결함을 검출하거나 복잡도를 측정. |
리뷰 유형 | 설명 |
동료검토 | 2~3인, 요구사항 명세서 설명 듣고 결함 발견. |
워크스루 | 검토 자료 회의 전 배포 사전검토-> 회의 -> 오류 발견, 문서화 기법. |
인스펙션 | 저작자 외의 다른 전무가 또는 팀이 검사 -> 오류 발견, 공식적 이고 형식적인검토 방법 |
관리 리뷰 | 프로젝트 진행 상황에 대한 전반적인 검토를 바탕으로 범위, 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰. |
기술리뷰 | 정의된 계획 및 명세를 준수하고 있는지에 대한 검토를 수행하는 리뷰 변경 사항이 적절하게 구현되어 있는지를 평가하고, 여러 대안을 추천하거나 대안을 검토. |
동적 테스트(소프트웨어 실행하여 테스트 ) :
- 명세기반(블랙박스테스트)
- 구조기반(화이트박스테스트)
- 경험기반.
경험 기반 테스트 유형
유형 | 설명 |
탐색적 테스트 | -테스트 스크립트 또는 테스트케이스를 문서로 작성하지 않고 경험에 바탕을 두고 탐색적으로 기능을 수행해 보면서 테스트하는 기법. -사전에 구체적으로 테스트 케이스를 설계하고 이를 바탕으로 테스트를 수행하는 방식이 아니라, 테스트 대상에 대한 이해, 테스트 케이스 설계, 테스트 실행을 병행하는 방식. -무작위 테스팅이 아닌 중대한 테스트 위주, 테스트 엔지니어의 휴리스틱한 능력 필요, 제품을 익히면서 테스트를 설계하고 테스트 수행. |
오류 추정 | 개발자가범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법. |
체크리스트 | 테스트하고 평가해야 할 내용과 경험을 분류하여 나열한 이후 하나씩 확인하는 테스트 기법. |
특성테스트 | 국제표준인 ISO/IEC 9126 등의 품질모델에 있는 품질 특성을 염두에 두고 이를 근간으로 경험적으로 테스트 케이스를 설계하고 테스트하는 기법. |
소프트웨어 테스트(블랙기능-화이트구조)
기능적 테스트 | 블랙박스 테스트(= 명세기반테스트; 동경결상 유분페원비오) |
프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 기능 테스트 , 소프트웨어의 특징, 요구사항, 설계 명세서 등에 초점을 맞춰 이뤄지는 테스트 |
|
유형 | 내용 |
동등 분할(=동치분할)테스트 | 입력 데이터의 영역을 유사한 도메인별로 유효 값/무효 값을 그루핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법. ex) 점수가 1~100점까진데, 테스트 케이스엔 -10, 110 등 무효값 껴놓고 테스트 |
경계값 분석 테스트 | 등가분할 후 경계값 부분에서 오류가 발생할 확률이 높기 때문에 경계값을 포함하여 테스트 설계하는 기법. -최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트. |
결정 테이블 테스트 | 요구사항의 논리와 발생조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법. |
상태 전이 테스트 | 테스트 대상, 시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법. |
유스케이스 테스트 | 시스템이 실제 사용되는 유스케이스로 모델링 되어있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법. |
분류 트리 테스트 | SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법. |
페어와이즈 테스트 | 테스트 데이터값 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법. |
원인-결과 그래프 테스트 | 그래프를 활용하여 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트하는 기법. |
비교 테스트 | 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 보는 테스트 기법. |
오류 추정 테스트 | 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법. |
구조적 테스트 | 화이트박스 테스트(구결조 조변다 기제데루 ) | |
응용 프로그램의 내부구조와 동작을 검사하는 소프트웨어 테스트 방식. 소스 코드를 보면서 테스트 케이스를 다양하게 만들어 테스트를 수행하는 기법. |
||
유형 | 내용 | 조건 |
구문 커버리지 = 문장 커버리지 |
-프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지 -조건문 결과와 관계없이 구문 실행 개수로 계산 |
문장 1회 |
결정 커버리지 = 선택 커버리지 = 분기 커버리지 | -(각 분기의) 결정 포인트 내의 전체 조건식이 적어도 한 번은 참(T)과 거짓(F)의 결과를 수행하는 테스트 커버리지 -구문 커버리지를 포함 |
T/F |
조건 커버리지 | -(각 분기의) 결정 포인트 내의 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 커러리지 | TF/FT |
조건/결정 커버리지 | -전체 조건식뿐만 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행하는 테스트 커버리지 | TT/FF |
변경 조건/결정 커버리지 | -개별 조건식이 다른 개 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지 | |
다중 조건 커버리지 | -결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100%보장하는 커버리지 | |
(기본) 경로 커버리지 | -수행 가능한 모든 경로를 테스트하는 기법 | |
제어 흐름 테스트 | -프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트하는 기법 | |
데이터 흐름 테스트 | -제어 흐름 그래프에 데이터 사용현황을 추가한 그래프를 통해 테스트하는 기법 | |
루프 테스트 | 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 기법 |
백엔드
DTO/VO 구현 -> SQL문 구현 -> DAO구현 -> Service 구현 -> Controller 구현.
객체의 유형?:
DAO(data abstract object) : 특정 타입의 데이터베이스에 추상(abstract) 인터페이스를 제공하는 객체로 세부내용 노출 없이 데이터를 조작하는 객체
VO(고정) : 간단한 엔티티를 의미하는 작은 객체 가변(variable) 클래스인 DTO와는 달리 고정 클래스를 가지는 객체
DTO(가변 data transport object) : 프로세스 사이에서 데이터를 전송(transport)하는 객체로 데이터 저장, 회수 외에 다른 기능이 없는 객체.
목 객체 유형
- 더미 객체 : 테스트할 때 객체만 필요하고 해당 객체의 기능까지는 필요하지 않은 경우에 사용
- 테스트 스텁(상하 스텁) : 상위 모듈은 있지만, 하위 모듈은 없는 경우 사용하는 기법. 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 더미 객체의 단순 기능에 특정 상태를 가정해서 특정정한 값을 리턴하거나 특정 메시지 출력.
- 테스트 드라이버 (하상 드라이버): 하위 모듈은 있지만, 상위 모듈은 없는 경우 사용하는 기법. 테스트 대상 하위 모듈을 호출하고, 파라미터를 전달 및 모듈 테스트 수행 수의 결과를 도출. 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 상향식 통합 테스트 수행 시 사용되는 더미 모듈.
- 테스트 스파이 : 주로 테스트 대상 클래스와 협력하는 클래스로 가는 출력을 검증하는 데 사용.
HIPO(Hierarchy Input Process Output)
차트 종류(가계총기세상 가총세)
- 가시적 도표 : 시스템의 전체적인 기능과 흐름을 보여주는 계층(트리) 구조도
- 총체적 도표 : 프로그램을 구성하는 기능을 기술한 것으로 입력, 처리, 출력에 대한 전반적인 정보를 제공하는 도표.
- 세부적 도표 : 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술하는 도표.
CoAP(constraint) : (M2M 노드들 사이)에서 이벤트에 대한 송수신을 (비동기적)으로 전송하는 (REST 기반)의 프로토콜. 멀티캐스트 지원과 같은 특수한 요건을 충족하면서도 부하가낮고, 단순한 특징이 있다.
ITIL(Information Technology Infrastructure Library) : it 서비스 운영 및 관리를 돕기 위한 문서들의 집합. 영국 정부가 만듦.
커널유형(마모)
-마이크로 커널: 하드웨어 추상화를 최소화한 커널. 목적이 분명한 임베디드 시스템이나 성능 최적화가 필요한 영역에서 활용
-모놀리식 커널: 하드웨어 위에 높은 수준의 가상 계층을 제공하는 커널. 다수의 복잡한 어플리케이션을 동적으로 수행할 경우에 사용하기 좋음.
데이터베이스 암호화 기법(APTH)
-API 방식 : 애플리케이션 레벨에서 암호 모듈을 적용하는 애플리케이션 수정 방식. 애플리케이션 서버에 부하 발생
-Plug-in 방식 : 암 복호화 모듈이 DB 서버에 설치된 방식
-TDE(Transparent date encryption) 방식 : DB서버의 DBMS 커널이 자체적으로 암/복호화 기능을 수행하는 방식 내장되어 있는 암호화 기능을 이용
-Hybrid 방식 : API 방식 + Plug-in 방식. DB서버와 애플리케이션 서버로 부하 분산.
연계 매커니즘
개념 : 응용 소프트웨어와 연계 대상 모듈 간의 데이터 연계 시 요구사항을 고려한 연계방법과 주기를 설계하기 위한 매커니즘
기능 : 송신시스템과 수신 시스템으로 구성
송신시스템 : 연계테이블 또는 파일로 생성하여 송신
수신시스템 : 송신시스템으로부터 전송된 데이터를 변환 처리 후 데이터베이스에 반영
연계방식
분류 : 직접연계, 간접연계
내/외부 송/수신 시스템 연계 기술
직접 연계 기술 | |
연계기술 | 설명 |
DB 링크 | 데이터베이스에서 제공하는 DB링크 객체를 이용 -수신 시스템에서 DB 링크를 생성, -송신 시스템에서 해당 DB 링크를 직접 참조. ex) 테이블명@DBlink명 |
DB 연결 (CONNECTION) |
수신 시스템의 WAS 에서 송신 시스템 DB로 연결하는 DB 커넥션 풀을 생성하고 연계 프로그램에서 해당 DB 커넥션풀 명을 이용하여 연결. ex)송신 시스템의 Data Source =DB Connecton Pool 이름 was ? |
API/OPEN API | 송신 시스템의 DB에서 데이터를 읽어서 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램. |
JDBC | 수신 시스템의 프로그램에서 JDBC 드라이버를 이용하여 송신 시스템 DB와 연결. |
하이퍼링크 | 현재 페이지에서 다른 부분으로 가거나 전혀 다른 페이지로 이동하게 해 주는 속성 ex) <a=href='url'>Link대상</a> |
간접연계
장점 : 서로 상이한 네트워크, 프로토콜 연계 및 통합 가능, 인터페이스 변경 시에도 장애나 오류없이 서비스 가능, 보안이나 업무 로직 처리를 자유롭게 반영가능
단점 : 연계 아키텍처 및 매커니즘 복잡, 성능저하, 장기간 소요
기술 : 연계솔루션(EAI), Web Service/ESB,.소켓(Socket)
WEP: 무선랜(WLAN)보안 프로토콜 802.11.b
WAS: 무선랜(WLAN) 인증 암호화 관련 표준 802.11.i
WAS(웹 어플리케이션 서버) : 사용자 요청 스레드를 처리하고, 데이터베이스에 접속하여 SQL 쿼리 문에 대한 결과값을 반환하는 역할을 수행하는 서버.
서버 하드웨어 개발환경(웩웩웩데파) 웹 서버 -HTTP를 이용한 요청/응답을 처리.
-웹상의 정적콘텐츠(CSS, Javascript, Image)를 처리.
-WEB-WAS-DB의 3계층 구조를 실무에서 활용
-주요 제품 : Apache 웹 서버, IIS 웹서버, Google Web Server, Nginx 등 존재웹 어플리케이션 서버(WAS) -사용자 요청 스레드를 처리하고, 데이터베이스에 접속하여 SQL 쿼리 문에 대한 결괏값을 반환.
-주요 제품 : Tomcat, Weblogic, Jeus, Resin 등 존재데이터베이스 서버 -데이터 수집, 저장을 위한 용도로 사용
-연계되는 주요 DBMS : MySql, Oracle, MS-SQL, DB2 등 존재파일 서버 -파일 저장 하드웨어로 물리 저장장치를 활용한 서버
-대용량 HDD, SSD 등의 장치가 존재.
다차원 데이터베이스 관련 용어(모랩,호랩,로랩)
- OLAP(ON-LINE ANALYTICAL PROCESSING)
- 정보 위주의 분석 처리, 기업의 고객 데이터 및 판매 데이터를 축적한 데이터베이스를 다차원적으로 분석하고 시각화하는 시스템으로 이를 통해 의삭결정에 활용할 수 있는 정보를 얻을 수 있다.
- 데이터 웨어하우스의 데이터를 전략적인 정보로 변환시켜서 의사결정을지원하는 역할을 하는 시스템.
- MOLAP(MULTI-DIMENSIONAL ON-LINE ANALYTICAL PROCESSING)
- 다차원 데이터베이스를 중심으로 다차원적인 분석을 하도록 만들어진 OLAP 구현 방식의 시스템.
- 사용자가 각각의 차원 축들에 대한 값을 지정하여 필요한 데이터를 검색할 수 있음
- ROLAP(RELATIONAL ON-LINE ANALYTICAL PROCESSING)
- 서버 측의 관계형 데이터베이스에 저장된 데이터를 직접 검색/집계하고, 그 결과를 클라이언트에서 다차원 데이터로 구성하고 시각화하는 시스템.
- HOLAP(HYBRID ON-LINE ANALYTICAL PROCESSING)
- ROLAP의 대용량 데이터 저장능력 + OLAP의 뛰어난 처리능력.
- 관계형 데이터베이스와 다차원 데이터베이스 모두에 데이터 저장하고 요구하는 것에 따라 가장 잘 맞는 것 사용
OLAP 연산(롤하다 드립다 쪼개지고 피보고 디지고 ) : 온라인 분석 처리.
- ROLL-UP : 분석할 항목에 대해 구체 -> 요약 으로 접근
- DRILL-DOWN : 분석할 항목에 대해 요약 -> 구체 로 접근
- SLICING : 온라인 분석처리를 위해 데이터 큐브의 한조각을 볼 수 있게 해주는 연산
- DICING : 고정된 다차원 값에 대한 연산
- PIVOTING : 크로스 테이블에서 차원 변경을 위해 사용되는 연산
OLTP(Online Transaction Processing) : 호스트 컴퓨터가 데이터베이스에 액세스하고, 바로 처리 결과를 돌려보내는 기술.
메모리 반입 기법 (이예요)
-예상반입기법 : 시스템의 요구를 예측하여 미리 메모리에적재하는 방법.
-요구반입기법 : 다음에 실행될 플세스가 참조 요구가 있을 경우 적재하는 기법.
기계학습 유형(강지비)
-강화합습
-지도학습
-비지도학습
오픈스택 : IaaS 형태의 클라우드 컴퓨팅 오픈 소스 프로젝트이다. 아파치 라이선스하에 배포된다.
오픈플로우 : 네트워크 장치의 컨트롤 플레인과 데이터 플레인 간의 연계 및 제어를 담당하는 개방형 표준 인터페이스.
cf) SDN : 개방형 API(오픈플로우) 기반으로 네트워크 장비의 트래픽 경로를 지정하는 컨트롤 플레인(Control Plane)과
트래픽 전송을 수행하는 데이터 플레인(Data Plane)을 분리하여
네트워크 트래픽을 중앙 집중적으로 관리하는 기술.
데이터 스토리지 기술 : 데이터 스토리지란 말 그대로 데이터(정보)를 저장하는 공간
스토리지 기술(다사나스) | 설명 |
DAS (Direct Attached Storage) | 스토리지 시스템을 가진 보조 기억장치 |
SAN( Storage Area Network) | 연결방식 : SAN 스위치 저장단위 : 블록 광섬유 채널을 이용하여 연결.-> DAS 방식의 한계 극복 -> n:m의 연결이 가능. |
NAS( Network-attached Storage ) | 연결방식 : 이더넷 저장단위: 파일 |
개발환경 인프라 구성 방식
방식 | 설명 |
온프레미스 ex)마사 | 외부 인터넷망이 차단된 상태에서 인트라넷 망만을 활용하여개발환경을 구축하는 방식 |
클라우드 방식 | 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발환경을 구축하는 방식 |
하이브리드 방식 | 온프레미스 + 클라우드. |
클라우드 관련 기술(인메멀)
기술 | 설명 |
인터클라우드 | 타 클라우드 서비스에서 필요한 자원을 가져다 서비스하는 클라우드 내의 중첩 클라우드 서비스 |
메타클라우드 | 클라우드 서비스를 위한 환경, 설정 등을 개발자의 요구조건에 맞게 자유롭게 구성하게 해주는 통합 클라우드 시스템 모델 |
멀티클라우드 | 2곳 이상의 클라우드 벤더가 제공하는 Public 클라우드를 조합하여 구성하는 클라우드 서비스 제공 모델 |
클라우드 컴퓨팅 : 사용자의 직접적 관리 없이 컴퓨터 시스템 자원을 필요 시 바로 제공하는 기술. 정보 처리 할 때, 내 컴퓨터가 아니라 연결된 남의 컴퓨터로 처리하는 기술.
클라우드 컴퓨팅 유형(인플소 데바)
- 인프라형 서비스(IaaS) : 서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스. +서버, 스토리지, 네트워크를 가상화 환경으로 만들어 필요에 따라 인프라 자원을 사용할 수 있게 제공하는 서비스 입니다.ex)AWS의 EC2, S3
- 플랫폼형 서비스(PaaS) : 인프라를 생성, 관리하는 복잡함 없이 애플리케이션 개발 플랫폼을 제공하는 서비스. +Nginx(웹서버), MariaDB(데이터베이스), Django(웹프레임워크)
- 소프트웨어형 서비스(SaaS) :소프트웨어 및 관련 데이터는 중앙에 호스팅. 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스
- DaaS(Desktop as a Service) :클라우드 인프라를 이용해 일반 사용자가 개인용 컴퓨터가 없어도 컴퓨터나 서비스를 이용할 수 있도록 하는 서비스를 말합니다. 대표적으로 Public 클라우드에 운영체제를 설치하여 컴퓨터 없이도 OS를 이용 할 수 있습니다.
- BaaS(Backend as a Service) : 모바일 환경에서 구현하기 복잡하고 힘든 서버 사이드 서비스를 API 서버스로 제공해서 모바일 앱이나 웹을 개발할 때 UX/UI에 집중할 수 있도록 하는 서비스 입니다.
클라우드 컴퓨팅 분류(사공하)
- 사설 클라우드(private cloud) : 조직 내부에서 보유하고 있는 컴퓨팅 자원 사용, 내부에 구축되어 운영되는 클라우드.
- 공용 클라우드(public cloud) : 클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원/서비스를 제공하는 클라우드
- 하이브리드 클라우드(hybrid cloud) : 기업 또는 조직 내부 자원을 이용한 사설 클라우드와 공용 클라우드를 모두 사용하는 클라우드.
MEC(Mobile Edge Cloud/Computing) : 무선 기지국에 분산 클라우드 컴퓨팅 기술을 적용하여 서비스와 캐싱 콘텐츠를 이용자 단말에가까이 전개함으로써 모바일 코어 망의 혼잡을 완화하는 기술.
SECaaS, CASB
기술 | 설명 |
서비스형 보안 (SECaaS; Security as a Service) |
기업의 비용과 시간, 인력에 대한 리소스 투자를 최소화하기 위해 클라우드 인프라를 통해 전문화된 보안 기능을 클라우드 형태로 제공하는 서비스 |
중개 서비스 (CASB; Cloud Access Securiiy Broker) |
클라우드 서비스 이용 시 접근통제, 암호화, 로깅 등 사용자와 클라우드 사이에서 보안 기능을 수행하는 중개시스템(Broker) |
소프트웨어 아키텍처 : 시스템 구조. 관계를 표현하는. 여러 가지 소프트웨어 구성요소와 구성요소 중에서도 외부에 드러나는 특성과 구성요소 간의 관계를(소프트웨어 구성요소 간의 관계를 표현하는 시스템 구조.).
소프트웨어 아키텍처 4+1 뷰 :(논배구프유)
-유스케이스 뷰 : 유스케이스 또는 아키텍처를 도출, 설계 -> 다른 뷰 검증에 사용하는뷰
-논리 뷰 : 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
-프로세스 뷰 : 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 이벤트 처리 등을 표현한 뷰.
-구현 뷰 : 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰.
-배포 뷰 : 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰.
소프트웨어 아키텍처 프레임워크 구성요소(관관아이뷰 근시환경목표)
- 이해관계자 : 시스템 개발에 관련된 모든 사람과 조직.
- 목표 : 환경 안에서 한 명 이상의 이해관계자들이 의도하는 시스템의 목적
- 관점 : 이해관계자들이 서로 다른 역할이나 책임으로 시스템이나 산출물들에 대해 보고 싶은 시점.
- 아키텍처 명세서 : 이해관걔자들의 시스템에 대한 관심을 관점에 맞추어 작성한 뷰.
- 관심사 : 시스템에 대해 이해관계자들의 서로 다른 의견과 목표.
- 뷰 : 서로 관련 있는 관심사들의 집합.= 전체 시스템
- 근거: 아키텍처 결정 근거. 회의 결과. 보고 결과
- 환경 : 시스템에 영향을 주는 요인
- 시스템 : 각 애플리케이션 구현체
뷰(view) : 논리 테이블. 사용자(생성 관점x)에게 테이블과 동일
소프트웨어 아키텍처 패턴 유형 (계클파브모) : 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식.
유형 | 설명 | 개념도 | ||||||||
계층화 패턴 | -시스템을 계층으로 구분하여 구성하는 패턴 -각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공 -서로 마주 보는 두개의 계층 사이에서만 상호작용이 이루어짐. |
|||||||||
클라이언트-서버 패턴 | -하나의 서버와 다수의 클라이언트로 구성된 패턴. -사용자가 클라이언트를 통해서 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스를 제공. -서버는 계속 클라이언트로부터 요청을 대기. |
|||||||||
파이프-필터 패턴 | -데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴 -서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음서브 시스템으로 넘겨주는 과정을 반복 -필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장이 용이 |
|||||||||
모델-뷰-컨트롤러 패턴(MVC) | -MVC 패턴이라고도 하는 이 패턴은 대화형 애플리케이션을 모델,뷰,컨트롤러 3개의 서브 시스템으로 구조화하는 패턴 -사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 이면에서 실행되는 비즈니스 로직을 서로 영향없이 쉽게 고칠 수 있는 패턴.
-각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향을 받지 않고도 개발 작업 수행 가능. -컴포넌트를 분리하여 코드의 효율적인 재사용을 가능하게 한다. |
|||||||||
브로커 패턴 | -브로커 컴포넌트는 컴포넌트 간의 통신을 조정하는 역할 수행. 서버는 자신의 기능들을 브로커에 넘겨주며, 클라이언트가 브로커에 서비스를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션함. |
소프트웨어 아키텍처 비용 평가 모델 종류
종류 | 설명 |
SAAM (Software Architecture Analysis Method) |
변경 용이성과 기능성에 집중, 평가가 용이하여 경험이 없는 조직에서도 활용가능한 비용 평가 모델 |
ATAM (Architecture Trade-off Analysis Method) |
아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가하는 모델 |
CBAM (Cost Benefit Analysisi Method) |
ATAM 바탕의 시스템 아키텍처 분석 중식으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델. |
ADR (Active Design Review) |
소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델. |
ARD (Active Revies for Intermediate Designs) |
전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델. |
보안 관련 용어
해시함수 : 임의의 길이를 갖는 값을 입력받으면 고정된 길이의 값을 출력하는 함수
SET(secue electronic transaction): 온라인 상의 안전한 거래를 위해 Visa와 Master Card에서 개발한 프로토콜
데이터베이스 고립화 수준(RRRS) :
다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도.
고립화 수준 | 설명 |
Read UnCommited (커밋이 안된 것 읽는다) |
-한 트랜잭션이 '연산중'인 데이터를 다른 트랜잭션이 읽는 것 '허용'. -연산 중인 대이터에 대한 연산은 불허 |
Read Commited (커밋 된 것을 읽는다) |
-연산이 완료될 때까지 데이터에 대한 읽기 제한, -연산이 '완료된' 데이터는 다른 트랜잭션이 읽는 것을 '허용'. |
Repeatable Read | 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한 |
Serializable Read | 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근을 제한. |
데이터베이스 용어
도메인: 속성이 가질 수 있는 범위이다.
엔터티: 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야하는 데이터이다.
데이터베이스 무결성 종류(참개속사키 "참개 속 삭히")
종류 | 설명 | 요소 |
참조 무결성 | 외래 키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본 키값이나 NULL이어야함 | 외래 키 |
개체 무결성 | 한 엔터티에서 같은 기본 키(PK)를 가질 수 없거나, 기본 키(PK)의 속성이 NULL을 허용할 수 없음 | 기본키 유니크 인덱스 |
속성 무결성 | 속성의 값은 기본값, NULL 여부, 도메인(데이터 타입, 길이)이 지정된 규칙을 준수해야 함. | 체크(CHECK) NULL/NOT NULL 기본값(DEFAULT) |
사용자 무결성 | 사용자의 의미적 요구사항을 준수해야 함 | 트리거 사용자 정의 데이터 타입 |
키 무결성 | 한 릴레이션에 같은 키값을 가진 튜플들을 허용할 수 없음 | 유니크 |
데이터베이스 특징 (무일회보효)
-데이터 무결성 : 부적절한자료로 동일한 내용에 대해 서로 다른 데이터가 저장되는 것 허용 X.
- 데이터 일관성 : 삽삭갱생 후에도 저장된 데이터가 일정함.
- 데이터 회복성 : 장애 발생 시 특정 상태로 복구되는 성질
- 데이터 보안성 : 불법적 노출, 변경, 손실로부터 보호.
- 데이터 효율성 : 응답시간 저장공간 활용 등이 최적화 되어 요구 조건을 만족시켜야 하는 성질.
데이터베이스 특성(실계동내)
특성 | 설명 |
실시간 접근성 | 쿼리에 대하여 실시간 응답이 가능해야 함. |
계속적인 변화 | 새로운 데이터의 삽입, 갱신, 삭제로 항상 최신의 데이터를 유지함 |
동시 공용 | 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함. |
내용 참조 | 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾음. |
트러스트 존 : 칩 설계회사인 ARM에서 개발한 기술. 하나의 프로세서 내에 일반 애플리케이션을 처리하는 일반 구역과 보안이 필요한 애플리케이션을 처리하는 보안 구역으로 분할하여 관리하는 하드웨어 기반의 보안기술.
스턱스넷 : 독일 지멘스사의 원격 감시 제어 시스템의 소프트웨어에 침투하여 시스테을 마비하게 하는 악성코드.
ITSM(IT Service Management) : 고객 중심의 IT 서비스 관리 기법
SLA(Service Level Agreement) :서비스 수준 관리, 세부 서비스 요소(SLO; Service Level Object)들이 포함됨.
고가용성 : 두 개 이상의 시스템을 클러스터로 구성하여 하나의 시스템이 장애 시 최소한의 서비스 중단을 위해 다른 시스템으로 신속하게 시스템 대체 작동(Fail Over)하는 기술.
고가용성 유형(상상동)
- HOT STANDBY(상시대기) : 가동시스템과 백업시스템으로 구성.
- 평상시에는 대기상태 -> 장애 시 전환하는 방식
- MUTUAL TAKE-OVER(상호 인수) : 2개 시스템 각각의 고유 가동 업무 수행.
- 한 서버 장애 발생 시 -> 상대 시스템의 자원을 페일 오버하여 동시에 2개의 업무 수행
- CONCURRENT ACCESS(동시적 접근 ): 여러 개의 시스템이 동시에 업무를 나누어 병렬 처리.
- HA에 참여하는 시스템 전체가 액티브한 상태로 업무 수행 -> 장애 시 다른 시스템으로 페일오버X, 가용성 보장.
배드 코드의 사례
- 외계인 코드
- 스파게티 코드
- 로직 중복
- 알 수 없는 변수명
맥케이브의 순환 복잡도 : 제어 흐름과 복잡한 정보를 정량적으로 표시하는 기법.
(소프트웨어의 제어 흐름을 그래프로 표현하고 소스코드의 복잡도를 노드 수와 간선 수의 계산을 통해 정량적으로 나타내는 지표)
측정 방법 : V(G)(복잡도) = 간선수(E) - 노드수(N) +2
방향그래프 최대 간선의 수 ( n = 노드의 개수, m = 간선의 개수)
m=n(n-1)
iT업무 프로세스 관련 용어.
5 force : 마이클 포터. 사업경쟁요인 분석을 통하여 경쟁의 강도를 알아내고 수익성 창출에 유용하게 사용.
6시그마 : 마이클 해리 .모든 프로세스에 적용할 수 있는 전방위 경영혁신 운동.
BEMS : 건물에 IT기술 활용, 건물 에너지 절감, 인건비 절약, 건물 수명 연장 가능하게 하는 시스템
SQL
TCL 명령어 세가지(커롤체):
- COMMIT,
- ROLLBACK,
- CHECKPOINT : 롤백을 위한 시점을 지정.
차수 : 속성 개수
카디널리티 : 튜플 개수 (튜카튜카튜카)
Order By 컬럼 ASC/DESC;
#두개의 컬럼으로 정렬.
SELECT *
FROM 테이블명
ORDER BY 컬럼1 ASC, 컬럼2 DESC;
- 컬럼1은 오름차순으로 정렬되고,
- 컬럼2는 내림차순으로 정렬됩니다.
#생략 시 기본 값 => ASC(오름차순)
SELECT *
FROM 테이블명
ORDER BY 컬럼1, 컬럼2 DESC;
- 여기서는 컬럼1은 기본 오름차순으로 정렬되고,
- 컬럼2는 내림차순으로 정렬됩니다.
SQL 명령어 종류
●DDL(CREATE, DROP, ALTER, TRUNCATE)
1.DROP
- 테이블 삭제
DROP TABLE 테이블명 [CASCADE\RESTRICT];
//RESTRICT : 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션
- 뷰 삭제
DROP VIEW 뷰이름;
2. ALTER : ALTER TABLE - 테이블 수정 명령
- 컬럼 수정
ALTER TABLE 테이블명
MODIFY 컬럼명 데이터타입 [제약조건];
- 컬럼 추가
//컬럼 추가
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입[제약조건]
- 컬럼 삭제
ALTER TABLE 테이블명 DROP 컬럼명;
3.CREATE
- 인덱스 생성(크인온)
//컬럼명1, 컬럼명2.. 순으로 테이블명에 인덱스명으로 인덱스 생성
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1,컬럼명2,...);
CREATE INDEX 학번인덱스 ON 학생(학번); -> 학생 테이블의 학번 컬럼에 대해 학번인덱스라는 인덱스 생성.
CREATE INDEX 학번인덱스 ON 학생( 성명, 성별 ); -> 학생 테이블의 학번 컬럼에 성명, 성별 순으로 복합인덱스 생성.
- 뷰 생성(크뷰아)
CREATE VIEW 테이블명 AS 조회쿼리;
//조회쿼리는 SELECT ~ FROM~ WHERE ~ 형식 사용
//EX) CREATE VIEW 학생뷰 AS SELECT 이름, 학점 FROM 학생
//학생이라는 테이블을 이용해 학생뷰 만들기
4.TRUNCATE
//TRUNCATE TABLE :테이블 내의 데이터들을 삭제
TRUNCATE TABLE 테이블명;
CF)DELETE FROM: 데이터의 내용을 삭제
DELETE FROM 테이블명
WHERE 조건;
● DML(SELECT, INSERT, DELETE, UPDATE)
1.INSERT : 데이터의 내용 삽입
//INSERT INTO : 데이터의 내용 삽입
INSERT INTO 테이블명(속성명1, ...)
VALUES (데이터1, ...);
속성명은 생략 가능.
EX)INSERT INTO 급여(부서명, 직책, 급여) VALUES ('마케팅부', '부장', '100');
급여 테이블에서 부서명이 '마케팅부' 이고, 직책은 '부장', 급여는 '100'인 데이터 입력하라.
2.DELETE : 데이터의 내용 삭제
//DELETE FROM : 데이터의 내용 삭제
DELETE FROM 테이블명
WHERE 조건;
ex) where 부서명 in('보안부','dt부') = where 부서명 = '보안부'or 부서명 ='dt부')
//모든 레코드 삭제할 때는 WHERE 없이 DELETE 사용.
3. UPDATE(up set where조건) : 데이터의 내용 갱신/변경
//UPDATE 명령문은 WHERE을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 자주 사용됨
//UPDATE ~ SET : 데이터 내용 갱신,변경
UPDATE 테이블명
SET 속성명 = 데이터, ...
WHERE 조건;
ex)UPDATE 수강 SET 수강과목 = '자료구조' WHERER 학번=2000;
[수강] 테이블에서 학번이 2000인 사용자의 수강과목명을 '알고리즘'에서 '자료구조'로 변경하는 쿼리.
4.SELECT
- DISTINCT : 중복제거
//R1테이블에서 학년이 중복되지 않는 학년값만 추출
SELECT DISTINCT 학년 FROM R1;
● DCL(REVOKE, GRANT)
1.GRANT[그온투]
GRANT 권한 ON 테이블
TO 사용자 [WITH GRANT OPTION];
[WITH GRANT OPTION]은 사용자가 권한을 받고 난 후 다른 사람들과 권한을 나누어 가질 수 있는 옵션.
2. REVOKE[리온프] 데이터베이스 관리자가 사용자에게 부여했던 권한을 회수하기 위한 명령어.
//관리자가 사용자에게 부여했던 테이블에 대한 권한 회수
REVOKE 권한 ON 테이블 FROM
사용자 CASCADE CONSTRAINTS
// CASECADE CONSTRAINTS는 연쇄적인 권한을 해제할 때 입력(WITH GRANT OPTION으로 부여된 사용자들의 권한까지 취소)
조인
#교차조인
SELECT 컬럼1, 컬럼2, ...
FROM 테이블1 CROSS JOIN 테이블2
#물리적 조인 종류(정중해)
- 중첩 반복 조인 : 선행 테이블의 처리 범위를 하나씩 액세스하면서 추출된 값으로 연결할 테이블을 조인하는 방식.
- 정렬 합병 조인 : 양쪽 테이블의 정렬한 결과를 차례로 검색하면서 연결고리 형태로 합병하는 방식 . 조인의 대상 범위가 넓은 경우 발생하는 임의적 접근을 줄이기 위한 경우나 연결고리가 마땅한 인덱스가 존재하지 않은 경우 해결하기 위한 조인 방식.
- 해시 조인
#외부조인
- 완전 외부 조인(FULL OUTER JOIN) : 양쪽 모든 데이터 출력 cf)집합연산자 UNION과 차이 알기.
SELECT A.컬럼1, A.컬럼2, ..., B.컬럼1, B.컬럼2, ...
FROM 테이블1 A FULL [OUTER] JOIN 테이블2 B
ON 조인조건
WHERE [조인조건]
FULL OUTER JOIN : 일치하는 데이터를 결합하고, 일치하지 않는 데이터는 NULL로 처리하여 결합. 일치하는 데이터는 결합되며, 중복 데이터가 없도록 처리됩니다. NULL(O)
UNION ALL : 테이블 데이터를 결합하지 않고 각 테이블의 데이터를 그대로 이어서 출력. 두 테이블의 중복된 데이터도 모두 결과에 포함됩니다.NULL(X)
- 왼쪽 외부 조인(LEFT OUTER JOIN)
- 오른쪽 외부 조인(RIGHTOUTER JOIN)
집합연산자 : 두개 이상의 질의 결과를 연결하여 하나로 결하하는 방식.
UNION - 중복 행이 제거된 쿼리 결과 반환(교집합 있는 합집합)
UNION ALL - 중복 행이 제거되지 않은 쿼리 결과 반환. (교집합 없는 합집밥)
INTERSECT - 두 쿼리 결과에 공통적으로 존재하는 결과 반환 (교집합)
MINUS - 첫 쿼리에 있고 두번째 쿼리에 없는 결과를 반환. (차집합)
SELECT 학번 FROM 학생 WHERE 학년 >= '3'
MINUS SELECT 학번 FROM 학생 WHERE 학년 >= '4';
그룹함수 : 데이터베이스에서 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수.
- CUBE : 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수.모든 차원의 모든 부분집합에 대한 집계를 생성
SELECT 지역, 제품, SUM(판매량)
FROM 판매
GROUP BY CUBE(지역, 제품);
결과: 지역과 제품에 대해 모든 조합의 집계 결과를 생성하고, 전체 합계도 포함됩니다.
EX)SELECT 학년, 반, AVG(점수) AS 점수 FROM 점수 GROUP BY CUBE(학년, 반);
학년과 반의 모든 조합에 대해 평균 점수를 계산한 결과와, 각 차원의 부분 집합 및 전체 합계가 포함된 집계 결과
CUBE는 지정된 컬럼(학년, 반)의 모든 조합에 대해 그룹화 및 집계를 수행합니다. 이는 다음과 같은 그룹화 조합을 만들어냅니다:
- 학년과 반 모두 존재하는 경우 (개별 학년, 반별로 그룹화)
- 학년만 존재하고 반은 존재하지 않는 경우 (학년별 그룹화)
- 반만 존재하고 학년은 존재하지 않는 경우 (반별 그룹화)
- 학년과 반 모두 존재하지 않는 경우 (전체 데이터에 대해 집계)
- ROLLUP : 지정된 컬럼은 소계(소그룹 합계) 등 중간 집계 값을 산출하기 위한 그룹. 주어진 차원의 계층적 집계를 생성. 소계, 중간 집계 나타내줌.
SELECT 지역, 제품, SUM(판매량)
FROM 판매
GROUP BY ROLLUP(지역, 제품);
// 지역별 전체 합계에 제품별 전체 합계까지 계산되니
//지정된 컬럼의 수보다 하나 더 큰 레벨만큼의 중간 집계가 생성된다.
결과: 지역 기준으로 집계하고, 제품별로 다시 집계한 후 전체 합계를 포함
- GROUPING SETS: 원하는 그룹화 집합만 명시하여 선택적으로 집계. ROLLUP 계층 구조와 달리 평등 관계라 컬럼간 순서와 무관한 결과.
SELECT 지역, 제품, SUM(판매량)
FROM 판매
GROUP BY GROUPING SETS((지역, 제품), (지역), ());
결과: 지역과 제품, 지역, 그리고 전체 합계에 대해 집계 결과를 생성.
EX) SELECT 학년, 반, AVG(점수) AS 점수 FROM 점수 GROUP BY GROUPING SETS (학년, 반);
점수 테이블에서 학년별 점수의 평균, 반별 점수의 평균을 구하는 쿼리.
랭크함수( ROW_NUMBER, RANK, DENSE_RANK )
- RANK() OVER 순위
SELECT RANK() OVER(PARTITION BY 컬럼 ORDER BY 컬럼)
FROM 테이블
ex) SELECT 부서, 이름, 연봉, RANK() OVER (PARTITION BY 부서, ORDER BY 연봉 DESC) AS 순위 FROM 급여 ORDER BY 부서 DESC, 연봉 DESC (급여 테이블에서 부서별로 부서 내의 직원 간 연봉의 순위를 매기는 쿼리를 작성하시오. 단, 부서, 연봉 순으로 내림차순을 수행한다)
- PARTITION BY 컬럼 : 컬럼을 기준으로 그룹핑(랭크함수가 적용될 파티션을나눈다. 무시할 경우 모든 행을 한 파티션 취급 )
- ORDER BY 컬럼 : 함수가 적용될 각 파티션에 있는 행의 논리적 순위를 결정한다.
- RANK() : 행마다 순위를 매김
- OVER : 지시어, SELECT구 또는 ORDER BY 구에서 사용 가능
cf)
ROW_NUMBER() OVER(PARTITION BY 컬럼 ORDER BY 컬럼) : 1등이 2명이어도 1등,2등으로 나눔.
ROW_NUMBER만 순위의 중복이 허용되지 않기 때문!
RANK()는 1등이 2명이면 그 다음 순위는 3등으로 매김.
WHERE 조건절 종류(비교/범위/집합/패턴/NULL/복합조건)
- 비교 연산자
연산자 | 설명 |
= | 같을 때 |
<> , != | 같지 않을 |
<, <=, >=, > |
- NULL(IS NULL / IS NOT NULL)
컬럼 IS NULL
컬럼 IS NOT NULL
cf) null 연산은 무엇과 연산해도 null !! null + 10000 = null
- 집합(IN/NOT IN)
//컬럼이 IN 안에 포함된 경우의 데이터 조회
컬럼 IN (값1, 값2, ...)
//컬럼이 IN 안에 포함되어 있지 않은 경우의 데이터 조회
컬럼 NOT IN (값1, 값2, ...)
- 범위(BETWEEN)
- LIKE
--A로 시작하는 문자를 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A%'
--A로 끝나는 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A'
--A를 포함하는 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '%A%'
--A로 시작하는 두글자 문자 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE 'A_'
--첫번째 문자가 'A''가 아닌 모든 문자열 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE'[^A]'
--첫번째 문자가 'A'또는'B'또는'C'인 문자열 찾기--
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '[ABC]'
SELECT 컬럼명 FROM 테이블 WHERE 컬럼명 LIKE '[A-C]'
제약조건
제약조건 | 설명 |
PRIMARY KEY | |
FOREIGN KEY | |
UNIQUE | |
NOT NULL | |
CHECK | -개발자가 정의하는 제약조건 -참이어야 하는 조건을 지정 EX) CHECK(성별 IN('M', 'F') (= CHECK(성별 = 'M' OR 성별 = 'F'); ) 성별 컬럼에 'M' / 'F'값만 들어오도록 |
DEFAULT | default 1 ; (없을경우 디폴트값으로 1이 들어가도록 하라 . 괄호 없다. 주의.) |
윈도우 함수 - OLAP 함수라고도 함. SQL에 추가됨.
기본 문법
SELECT 함수명(파라미터)
OVER
([PARTITION BY 컬럼1, ...][ORDER BY 컬럼A, ...])
FROM 테이블명
//PARTITION BY는 선택 항목이며, 순위를 정할 대상 범위의 컬럼을 설정.
//PARTITION BY 구에는 GROUP BY절이 가진 집약 기능이 없으며, 이로 인해 레코드가 줄지 않음
//PARTITION BY 통해 구분된 레코드 집합을 윈도라고 함.
//윈도 함수에는 OVER 문구가 필수적으로 필요함.
//ORDER BY 뒤에는 SORT 컬럼을 입력(어떤 열을 어떤 순서로 순위를 정할지를 지정)
EX)ORDER BY 수학 DESC;
- 집계 함수:
- SUM(): 구간 내의 합계를 계산합니다.
- AVG(): 구간 내의 평균 값을 계산합니다.
- COUNT(): 구간 내의 행 개수를 계산합니다.
- 순위 함수:
- ROW_NUMBER(): 결과 집합의 각 행에 고유한 순위 번호를 부여합니다.(동일 순위 값이 존재해도 이와 무관하게 연속번호 부여 EX. 2위 세명이어도 , 2위, 3위, 4위, 5위)
- 상품테이블에서 매출가격 순으로 등수를 DENSE_PARK() 함수 형식으로 부여하시오
-
SELECT PROD_ID AS 상품코드, PROD_NAME AS 상품명, PROD_PRICE AS 판매가, RANK() OVER(ORDER BY PROD_PRICE DESC)AS 순위1, DENSE_RANK() OVER(ORDER BY PROD_PRICE DESC) AS 순위2, ROW_NUMBER() OVER(ORDER BY PROD_PRICE DESC) AS 순위3 FROM PROD;
- RANK(): 순위를 매기되, 동일한 값에 대해 동일한 순위를 부여합니다. 순위가 중복될 수 있습니다. (동일 순위의 레코드 존재 시 후순위는 넘어감. EX. 2위가 세명일 때, 2위, 2위, 2위, 5위, 6위)
-
SELECT PROD_ID AS 상품코드, PROD_NAME AS 상품명, PROD_LGU AS 분류코드, PROD_PRICE AS 가격, RANK() OVER(PARTITION BY PROD_LGU ORDER BY PROD_PRICE DESC) 순위 FROM PROD;
- (사용형식)
RANK() OVER(PARTITION BY 컬렴명1[,컬렴명2,...]
ORDER BY 컬럼명11[,컬럼명12,...][ASC|DESC])
-'컬럼명1[,컬럼명2,...]' : 그룹화된 기준 컬럼명
-'컬럼명11[,컬럼명12,...]': 정렬의 기준 컬럼명
-
- DENSE_RANK(): 순위를 매기되, 동일한 값에 대해 중복되지 않는 순위를 부여합니다.(동일 순위의 레코드 존재 시에도 후순위를 넘어가지 않음. EX. 2위가 3명일 때 2위, 2위, 2위, 3위, 4위)
-
SELECT 이름, 수학, DENSE_RANK() OVER (ORDER BY 수학 DESC) AS 등수 //수학점수 내림차순해서 그 순서로 순위 구하니까 FROM 점수 ORDER BY 수학 DESC; //수학은 내림차순으로 정렬하면 되는게 맞네.
- SELECT DENSE_RANK(파라미터) OVER ([PARTITIONED BY 컬럼1, ...] [ORDER BY 컬럼A, ...] ) FROM 테이블;
-
- ROW_NUMBER(): 결과 집합의 각 행에 고유한 순위 번호를 부여합니다.(동일 순위 값이 존재해도 이와 무관하게 연속번호 부여 EX. 2위 세명이어도 , 2위, 3위, 4위, 5위)
- 누적 함수:
- CUME_DIST(): 특정 값까지의 누적 분포를 계산합니다.
- PERCENT_RANK(): 특정 값의 상대적 순위를 백분율로 계산합니다.
SELECT
column1, column2, AGGREGATE_FUNCTION(column3) OVER
(PARTITION BY column4 ORDER BY column5) AS new_column FROM table_name;
SELECT employee_id,
salary,
sum(salary) OVER (ORDER BY salary) AS sum_salary
FROM employees;
급여를 기준으로 정렬하여 각 직원의 누적 월급을 계산함.
SELECT employee_id,
salary,
RANK() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;
급여를 기준으로 내림차순 하여 각 직원의 급여 순위를 계산함.
----
파이썬
pop() -> 제일 뒤에 것이 나온다.
a.remove(값)
list.insert(idx, 원소) <--list[idx] 위치에 원소를 넣겠다.
list.index(값) <--- list[num] 값. ex) list.index(5) 면 ,.. 5가 위치한 인덱스 값을 찾는 것.
num = [1,2,5,4,6] 에서 num.index(5) = 2가 된다.
def soojebi(num) : # 이진수로 변환하는 함수
if num < 2 :
print(num, end='')
else : # elif 대신 else를 사용합니다.
soojebi(num//2)
print(num%2, end='')
soojebi(20)
//---> 왜 처음 출력이 0인데, 0이 맨 처음 위치하지 않고 맨끝으로가?
c언어
break vs continue
https://hymndev.tistory.com/20
자바
extends vs implements vs abstracts
https://velog.io/@hkoo9329/%EC%9E%90%EB%B0%94-extends-implements-%EC%B0%A8%EC%9D%B4
interface를 상속받을 때 implements 키워드를 사용한다.
추상클래스 VS 인터페이스.
https://myjamong.tistory.com/150
추상클래스는 extends를 이용하여 상속받아 메서드를 구한다.
interface는 implements
---
IPv4 CLASS
class | 설명 | 범위 |
A class | 0.0.0.0 ~ 127.255.255.255 | |
B class | 128.0.0.0 ~ 191.255.255.255 | |
C class | 192.0.0.0 ~ 223.255.255.255 | |
D class | 멀티캐스트 용도로 예약 | 224.0.0.0 ~ 239.255.255.255 |
E class | 연구를 위해 예약 | 240.0.0.0 ~ 240.255.255.255 |
IPv6 : IPv4가 가지고 있는 주소고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128bit 주소체계를 갖는 차세대 인터넷 프로토콜
IPv4에서 IPv6로 전환하는 기술
전환기술 | 설명 |
듀얼 스택 | ip계층에 두 가지( IPv4,IPv6)의 프로토콜이 모두 탑재되어 있고 통신 상대방에 따라 해당 IP 스택을 선택하는 방법 |
터널링 | IPv6 망에서 인접한 IPv4 망을 거쳐 다른 IPv6 망으로 통신할 때 IPv4 에서 사용하는 프로토콜로 캡슐화하여 전송하는 방법 |
주소변환 | IPv4 망과 IPv6 망 사이에 주소변환기를 사용하여 서로 다른 네트워크 상의 패킷을 변환시키는 방법. |
쿼츠 크론 표현식
0 0/10 15,20 * * ?
매일 15시에 시작하여 15시 50분까지, 20시 정각부터 20시 50분까지 10분마다 실행한다.
카파스헝
식별자 표기법 | 설명 |
카멜 표기법 | 식별자 표기시 여러 단어가 이어지면, 첫 알파벳만 소문자로 작성, 나머지 단어의 시작은 대문자로 작성 ex) inputFuntion |
파스칼 표기법 | 각 단어의 첫글자를 대문자로 작성 ex) InputFuntion |
스네이크표기법 | 식별자 표기 시에 여러 단어가 이어지면 단어 사이에 언더바 넣는다. ex)input_Funtion |
헝가리안 표기법 | 식별자 표기시 접두어에 자료형을 붙이는 표기법 int : n/ char : c/ 문자열 : sz ex) nScore->정수형 |
'자격증 > 정보처리기사' 카테고리의 다른 글
시험전 확인 (2) | 2024.10.18 |
---|---|
[C언어]scanf , 생성자 (0) | 2024.10.16 |
[서브넷마스크 계산] FLSM vs VLSM 차이 (0) | 2024.10.15 |
[서브넷 마스크] IPv4 범위 클래스 계산 이유 (0) | 2024.10.15 |
where ... group by 와 group by .. having 차이 차이점 (0) | 2024.10.14 |