보안이나 특정 상황에 의해서 외부망에 연결하지 않는 내부 서버들이 있습니다. 이럴 경우 시간 동기화에 문제가 발생할 수 있는데 윈도우 NTP 서버 / 클라이언트 기능을 이용하여 위 문제를 해결할 수 있습니다. 하지만 이 해결 방법은 하나의 인터넷에 연결된 서버가 같은 망에 적어도 1개는 존재해야 가능합니다.
구성은 아래와 같습니다. 외부망과 연결된 서버는 time.windows.com 같은 Time Server와 시간을 동기화 해주고 그 동기화 된 시간을 내부서버가 Windows NTP 기능을 이용해 다시 동기화 합니다.
먼저 외부와 연결된 서버에 설정을 해줍니다.
[Windows 방화벽] > [고급 설정] > [인바인드 규칙] > [새 규칙] 으로 들어가 규칙을 추가합니다.
[Win] + [R] 으로 실행을 실행해서 gpedit.msc를 입력해 로컬 그룹 정책 편집기를 실행합니다.
[Windows 시간 서비스] > [글로벌 구성 설정] 에서 AnnounceFlags를 5로 설정합니다.
실행에서 services.msc을 입력해 서비스를 실행합니다.
Windows Time을 클릭 후 시작 유형을 자동으로 바꾼 후 시작을 눌러줍니다.
다음으로 내부 서버 설정입니다.
실행에서 regedit.exe를 입력해 레지스트리 편집기를 실행 후 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 값을 원하시는 동기화 주기로 입력합니다. (초 단위)
실행에서 services.msc를 입력해 서비스를 실행 후 Windows Time의 시작 유형을 자동(지연된 시작)으로 설정 후 시작합니다.
마지막으로 Windows 시간에서 [날짜 및 시간 설정 변경] > [날짜 및 시간] > [인터넷 시간] > [설정 변경]을 클릭합니다.
이제 설정한 서버의 IP를 입력 후 지금 업데이트를 통해 테스트 후 확인을 눌러 설정을 마무리 합니다.
이전 포스팅에서 테스트 시에 vncsever에 localhost no 옵션을 주고 실행하여 테스트 했었습니다.
localhost 옵션은 외부에서도 접속이 가능하게 해주는 옵션인데 no 값을 주어 다른 호스트에서도 접근이 가능하도록 해줘야 합니다.
텍스트 에디터를 통해 /etc/vnc.conf 파일에 $localhost = "no"; 항목을 추가해줍니다.
위 설정을 추가하면 vncserver 실행 시 localhost 옵션을 설정하지 않아도 외부에서 vnc 접속이 가능해집니다. 우리는 여기서 ec2의 사용자 데이터를 사용하려고 합니다. 사용자 데이터를 사용하면 인스턴스가 다시 시작될 때마다 스크립트를 실행할 수 있습니다.
먼저 cloud-init의 최신 버전이 설치되어 있는지 확인합니다.
설치가 되어있지 않다면 cloud-init을 설치해 줍니다.
apt-get install -y cloud-init
ec2 인스턴스의 사용자 데이터에 스크립트를 넣어줍니다. 사용자 데이터를 편집하기 위해서는 인스턴스를 중지시킨 후 우클릭 > 인스턴스 설정 > 사용자 데이터 편집으로 들어갑니다.
위 화면에서 새 사용자 데이터 > 사용자 데이터를 텍스트로 수정을 체크 후 아래 코드를 입력 후 저장합니다.
기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용 무결성 : 시스템 내의 정보는 인가된 사용자만 수정할 수 있음 가용성 : 인가받은 사용자는 언제라도 정보와 자원을 사용할 수 있음
SQL 삽입
웹 응용 프로그램에 SQL을 삽입하여 데이터를 유출 및 변조, 관리지 우회하는 보안 약점
크로스 사이트 스크립팅
웹 페이지에 스크립트를 삽입해 보안을 탈취하거나 비정상적인 기능을 유발하는 보안 약점
메모리 버퍼 오버플로
할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 떄 발생하는 보안 약점
스택 가드
주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술
접근 제어자
외부로부터 접근을 제한하기 위해 사용되는 예약어 public / protected / default(java) / private
개인키 암호화
암호화, 복호화 하는 키가 같은 암호화 기법
공개키 암호화
암호화 할 때 사용되는 공개키는 사용자에게 공개, 복호화 할 때 상요되는 비밀키는 비밀리에 관리하는 암호화 기법
DES
개인키 암호화 알고리즘, NBS, 블록 64, 키 길이 56
AES
개인키 암호화 알고리즘, NIST, 블록 크기 128
RSA
공개 키 암호화 알고리즘, MIT
해시
입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
MD5
MD4를 대체하기 위 고안한 암호화 해시 함수, 블록 512, 키 길이 128
TKIP
무선 랜 프로토콜인 WEP의 취약성을 보완한 데이터 보안 프로토콜
스머핑
IP나 ICMP의 특성을 악용하여 많은 양의 데이털르 한 사이트에 집중적으로 보내 네트워크를 불능 상태로 만드는 공격 방법
SYN Flooding
3-way-handshake 과정을 의도적으로 중단시켜 정상적인 서비스를 방해하는 공격 방법
LAND Attack
송신 IP 주소와 수신 IP 주소를 모두 공격 대상 IP로 지정하여 무한 응답을 하게 하는 방법
DDos
여러 곳에 반산된 공격 지점에서 한 곳의 서비스에 대해 서비스 거부 공격을 수행
세션 하이재킹
상호 인증과정을 거친 후 접속해 있는 서버와 클라이언트 사이의 세션 정보를 가로채는 공격 방법
ARP 스푸핑
자신의 MAC 주소를 공격대상의 것으로 변조하여 패킷을 가로채거나 방해하는 방법
스니핑
네트워크의 중간에서 남의 패킷 정보를 도청하는 방법
워터링 홀
웹 사이트를 사전에 감염시켜 사이트에 방문했을 때 악성 코드에 감염시키는 방법
키로거 공격
사용자의 키보드 움직임을 탐지해 정보를 빼가는 방법
랜섬웨어
잠입해 내부 문서나 파일 등을 암호화하는 프로그램
백도어
시스템 설계자가 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀 통로
11장. 응용 SW 기초 기술 활용
운영체제
컴퓨터 시스템 자원을 효율적으로 관리하며 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임
UNIX
AT&T 벨 연구소, MIT 등이 공동 개발한 운영체제, C언어로 작성되고 트리구조의 파일 시스템
커널
UNIX의 핵심적인 부분으로 프로그램과 하드웨어 간의 인터페이스 역할 담당
쉘
사용자의 명령어를 인식하여 수행하는 명령어 해석기
반입 전략
프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
배치 전략
프로그램이나 데이터를 어디에 주기억장치 어디에 위치시킬 것인지를 결정하는 전략 최초 적합 : 빈 영역 중에서 첫 번째 영역에 배치 최적 적합 : 단편화를 가장 적게 남기는 영역에 배치 최악 적합 : 단편화를 가장 많이 남기는 영역에 배치
가상기억장치
보조기억장치의 일부를 주 기억처럼 사용하는 것
페이징 기법
프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행하는 기법
세그먼테이션 기법
프로그램을 다양한 크기의 논리적인 단위로 주기억장치에 적재시켜 실행시키는 기법 세그먼트 : 프로그램을 논리적인 크기로 나눈 단위
페이지 교체 알고리즘
페이지 부재가 발생하면 어떤 페이지 프레임을 교체할 것인지를 결정하는 기법 FIFO : 가장 먼저들어와 오래 있었던 페이지 교체 LRU : 최근에 가장 오랫동안 사용하지 않은 페이지 교체
Locality
프로세스가 실행되면서 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질 시간 구역성 : 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상 공간 구역성 : 일정 위치의 페이지를 집중적으로 액세스하는 현상
워킹셋
프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
스래싱
프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
PCB
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
프로세스 상태 전이
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세스를 할당받아 실행 상태로 전이되는 과정
HRN
대기 시간과 서비스 실행 시간을 이용하는 기법
환경 변수
시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
chmod
파일의 보호 모드를 설정하여 파일의 사용 허가를 지정하는 UNIX 명령어
IP 주소
인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소 IPv4 : 8비트씩 4부분 총 32비트로 구성된 주소 IPv6 : 16비트씩 8부분 총 128비트로 구성된 주소
프로토콜
데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약
OSI 참조 모델
물리 계층 : 기계적, 전기적 특성에 대한 규칙 정의 데이터 링크 계층 : 시스템 간 연결 설정과 유지 및 종료 담당 네트워크 계층 : 네트워크 연결을 관리하는 기능과 데이터의 교환, 중계 기능 담당 전송 계층 : 종단 시스템 간에 투명한 데이터 전송 세션 계층 : 송수신 측 간의 관련셩을 유지하고 대화 제어를 담당 표현 계층 : 시스템 간의 상호 접속을 위해 필요한 계층 응용 계층 : 사용자가 OSI 환경에 접속할 수 있도록 서비스 제공
패킷 교환 방식
메시지를 일정한 길이의 패킷으로 잘라서 전송하는 방식
가상 회선 방식
가상 통신 회선을 미리 설정하여 경로에 따라 패킷을 순차적으로 운반하는 방식
데이터그램 방식
연결 경로를 설정하지 않고 각각의 패킷들을 순서에 상관없이 독립적으로 운반하는 방식
TCP/IP
인터넷에 연결된 컴퓨터들 사이에 데이터를 주고받을 수 있게 하는 표준 프로토콜
ICMP
IP와 조합하여 토신중에 발생하는 제어 메시지를 관리하는 역할
ARP
IP 주소를 물리적 주소로 변환하는 기능을 수행하는 프로토콜
메시 네트워크
특수 목적을 위한 새로운 방식의 대규모 네트워크 기술
피코넷
블루투스 기술이나 UWB을 이용하여 통신망을 형성하는 무선 네트워크 기술
애드혹네트워크
모바일 호스트만을 이용하여 구성한 네트워크
NAT
한 개의 정식 IP 주소에 대량의 가상 사설 IP 주소를 할당 및 연결하는 기술
IGP
하나의 자율 시스템 내의 라우팅에 사용되는 프로토콜
RIP
거리 벡터 라우팅 프로토콜로 소규모 동종의 네트워크 내에서 효율적인 방법
OSPF
다익스트라 알고리즘을 사용한 대규모 네트워크에서 사용되는 인터넷 프로토콜
흐름제어
송수신 사이에서 전송되는 패킷의 양이나 속도를 규제하는 기능
블록체인
P2P 네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자의 디지털 장비에 분산 저장하는 기술
매시업
웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스를 만드는 기술
RAID
2개 이상의 하드디스크로 디스크 배열을 구성하여 분산 저장하거나 다중화하는 저장 기술
Secure OS
보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제
하둡
일반 pc급 컴퓨터들로 가상화된 대형 스토리지를 형성하여 병렬로 처리하는 프레임워크
데이터 마이닝
대량의 데이터를 분서갛여 데이터에 내재된 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾아내는 기법
타조
오픈 소스 기반 분산 컴퓨팅 플랫폼인 아파치 하둡 기반의 데이터 웨어하우스 프로젝트
로킹
트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 잠금을 요청해서 허락되어야만 로킹 단위를 액세스할 수 있도록 하는 기법
교착상태
서로 다른 프로세스가 점유하고 있는 자원을 요규하여 무한정 기다리는 현상
12장. 제품 소프트웨어 패키징
릴리즈 노트
소프트웨어 개발 과정에서 정리된 릴리즈 정보를 사용자와 공유하기 위한 문서
디지털 저작권 관리
저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도된 용도로만 사용되도록 디지털 콘텐츠의 관리 및 보호 기술
모든 소프트웨어의 구성 요소를 그래픽 표기법을 이용하여 모델링 객체 모델링 > 동적 모델링 > 기능 모델링
모듈
모듈화를 통해 분리된 시스템의 각 기능
결합도
모듈 간의 상호 의존하는 정도 내용 > 공통 > 외부 > 제어 > 스탬프 > 자료
응집도
모듈 내부 요소들이 서로 관련되어 있는 정도 기능 > 순차 > 교환 > 절차 > 시간 > 논리 > 우연
팬 인/아웃
인 : 제어 받는 모듈 수 / 아웃 : 제어 하는 모듈 수
IPC
모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합 공유 메모리, 소켓, 세마포어, 파이프, 메시지 큐잉
테스트 케이스
소프트웨어가 사용자의 요규사항을 정확하게 준수했는지 확인하기 위한 항목에 대한 명세서
코드
자료의 분류, 추출 등을 용이하게 하기 위해 사용되는 기호 순차, 블록, 10진, 그룹 분류, 연상, 표의 숫자, 합성 코드
디자인 패턴
모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 예제. 생성, 구조, 행위
생성 패턴
클래스나 객체 생성과 참조 과정을 정의 추상 팩토리 : 인터페이스를 통해 객체들의 그룹으로 생성하여 추상적으로 표현 빌더 : 건축하듯이 조합하여 객체 생성 팩토리 메소드 : 객체 생성을 서브 클래스에서 처리하도록 분리 프로토타입 : 원본 객체를 복제 싱글톤 : 하나의 객체를 생성하면 어디서든 참조 가능하지만 여러 프로세스 참조는 안됨
구조 패턴
클래스나 객체를 조합하여 더 큰 구조로 만드는 패턴 어댑터 : 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환 브리지 : 독립적 확장 가능 컴포지트 : 복합 객체와 단일 객체를 구분 없이 다룸 데코레이터 : 결합을 통해 능동적으로 기능 확장 퍼싸드 : 상위에 인터페이스 구성하여 서브 클래스들의 기능을 간편하게 사용 플라이웨이트 : 인스턴스 공유하여 메모리 절약 프록시 : 객체 사이에서 인터페이스 역할 수행
행위 패턴
클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴 책임 연쇄 : 객체가 요청을 처리 못하면 다른 객체에 넘어감 커맨드 : 요청을 객체의 형태로 캡슐화 인터프리터 : 언어에 문법 표현을 정의 반복자 : 객체에 대해 동일한 인터페이스를 사용 중재자 : 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의 메멘토 : 특정 시점의 객체 내부 상태 객체화 옵서버 : 객체의 상태가 변화하면 상속되어 있는 다른 객체들에게 상태 전달 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리 전략 : 동일한 계열의 알고리즘들을 별개로 캡슐화하여 상호 교환 템플릿 메소드 : 상위 클래스에서 골격 정의 후 하위에서 구체화 방문자 : 클래스의 데이터 구조에서 처리 기능을 분리하여 따로 구성
배치 프로그램
여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
5장. 인터페이스 구현
요구사항 검토
요구사항 명세서의 오류 확인 및 결함 여부를 담당자들이 수작업으로 분석 워크스루 : 명세서를 미리 배포하여 사전 검토 후 짧은 회의를 통해 결함 발견
미들웨어
운영체제와 응용 프로그램 사이에서 다양한 서비스를 제공하는 소프트웨어 RPC : 원격 프로시저 호출 TP-Monitor : 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시
EAI
기업 내 각 종 애플리케이션 및 플랫폼 간의 상호 연동이 가능하게 해주는 솔루션 Point-to-Point, Hub & Spoke, Message Bus(ESB 방식), Bus Hybrid
JSON
웹과 프로그램 사이에서 데이터를 교환하기 위해 객체를 속성, 값의 쌍 형태로 표현한 포맷
AJAX
자바스크립트를 사용하여 클라이언트와 서버간에 XML 데이터를 주고받는 비동기 통신 기술
IPsec
네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
SSL
TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
S-HTTP
클라이언트와 서버 간에 전송되는 모든 메시지를 암호화 하는 프로토콜
xUnit
같은 테스트 코드를 여러 번 작성하지 않게 도와주며 테스트마다 예상 결과를 기억할 필요가 없게 하는 자동화된 해법을 제공하는 단위 테스트 프레임워크
STAF
서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 제공하는 테스트 프레임워크
FitNess
웹 기반 테스트 케이스 설계 등을 지원하는 테스트 프레임워크
NTAF
FitNess + STAF, NHN의 테스트 자동화 프레임워크
Watir
인터프리터 방식의 Ruby를 사용하는 테스트 프레임워크
APM
애플리케이션 성능 관리를 위해 다양한 모니터링 기능을 제공하는 도구
6장. 화면 설계
UI
사용자와 시스템 간의 상호작용이 원활하게 이뤄지도록 도와주는 장치나 소프트웨어
UX
사용자가 시스템을 이용하면서 느끼고 생각하게 되는 총제적인 경험
CLI
명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
GUI
아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
NUI
별도의 장치 없이 사용자의 자연스러운 움직임으로 기기를 조작하는 인터페이스
UI의 기본 원칙
직관성, 유효성, 학습성, 유연성
ISO/IEC 9126
소프트웨어의 품질 특성과 평가를 위한 국제 표준 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
7장. 애플리케이션 테스트 관리
파레토 법칙
애플리케이션의 20%에서 전체 결함의 80%가 발견된다는 법칙
살충제 패러독스
동일한 테스트 케이스를 반복하면 더 이상 결함이 발견 안되는 현상
정적 테스트
프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
동적 테스트
프로그램을 실행하여 오류를 찾는 테스트
검증 테스트
개발자의 시각에서 생산 과정을 테스트 하는 것
확인 테스트
사용자의 시각에서 생산된 제품의 결과를 테스트 하는 것
화이트 박스 테스트
원시 코드를 오픈한 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
검증 기준
문장 검증 기준 : 소스코드의 모든 구문이 한번 이상 수행되도록 분기 검증 기준 : 모든 조건문에 대해 결과가 true와 false 한번 이상 수행되도록 조건 검증 기준 : 조건문에 포함된 개별 조건식의 결과가 ture와 false 한번 이상 수행되도록
블랙박스 테스트
각 기능이 완전히 작동되는 것을 입증하는 테스트
동치 분할 검사
입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 테스트 케이스를 만들어 입력 자료에 맞는 결과가 출력되는지 확인
경계값 분석
입력 조건의 경계값에서 오류가 발생될 확률이 높다는 점을 이용해 경계값을 테스트 케이스로 선정하여 검사
원인-효과 그래프 검사
입력 데이터 간의 결과와 출력에 영향을 미치는 상황을 분석하여 다음 효용성이 높은 테스트 케이스를 선정하여 검사
V-모델
소프트웨어 개발 단계와 케이션 테스트를 연결하여 표현한 것
단위 테스트
모듈이나 컴포넌트에 초점을 맞춰 테스트
통합 테스트
단위 테스트가 완료된 모듈을 합쳐 하나의 시스템으로 완성시키는 테스트
인수 테스트
요구사항을 충족시키는지에 중점을 두고 테스트, 알파/베타 테스트
하향식 통합 테스트
상위 모듈에서 하위 모듈 방향으로 통합하여 테스트 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
상향식 통합 테스트
하위 모듈에서 상위 모듈 방향으로 통합하여 테스트 테스트 드라이버 : 테스트 대상의 하위 모듈을 호출, 전달, 수행 후 결과를 도출하는 도구
시험 전에 보면 좋을것을 간단하게 정리했습니다. 기출이랑 같이 보면 좋을거 같아서 공유합니다.
프로그래밍과 SQL 부분도 많이 출제가 되니 따로 꼭 보셔야 합니다.
1장. 요구사항
폭포수 모형
각 단계를 확실히 매듭짓고 그 결과를 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법론
애자일 모형
요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
소프트웨어 공학
소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문
XP
요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복 의사소통, 단순성, 용기, 존중, 피드백
XP 주요 실천 방법
짝 프로그래밍, 공동 코드 소유, 전체 팀, 계속적인 통합, 리팩토링 리팩토링 : 프로그램을 쉽게 이해하고 수정하여 빠르게 개발할 수 있도록 프로그램의 기능 변경 없이 시스템을 재구성
요구사항
기능 요구사항 : 기능이나 수행과 관련된 요구사항 비기능 요구사항 : 품질이나 제약사항과 관련된 요구사항
자료 흐름도
자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술 프로세스, 자료 흐름, 자료 저장소, 단말
SADT
시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구
HIPO
시스템 실행 과정인 입력, 처리, 출력의 기능을 표현한 것
UML
객체지향 모델링 언어. 사물, 관계, 다이어그램
집합 관계
하나의 사물이 다른 사물에 포함되어 있는 관계
일반화 관계
하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
의존 관계
서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
다이어그램
사물과 관계를 도형으로 표현한 것 구조적 다이어그램 : 클래스, 객체, 컴포넌트, 배치, 복합체 구조, 패키지
유스케이스 다이어그램
포함 관계 : 원래의 유스케이스와 새롭게 분리된 유스케이스와의 관계 <<include>> 확장 관계 : 특정 조건에 부합되어 유스케이스의 기능이 확장 <<extend>>
구조적 방법론
사용자의 요구사항을 파악하여 문서화하는 처리 중심의 방법론
소프트웨어 재사용
이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용 합성 중심 : 소프트웨어를 부품(블록)으로 만들어 끼워 맞춰 완성시키는 방법 생성 중심 : 추상화 형태로 명세를 구체화하여 프로그램을 만드는 방법
CASE
소프트웨어 개발 과정에서 사용되는 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것
LOC 기법
각 기능의 원시 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
COCOMO
조직형 : 5만 라인 이하의 사무처리, 업무용 반분리형 : 30만 라인 이하의 컴파일러, 인터프리터 같은 유틸리티 개발용 내장형 : 30만 라인 이상의 미사일 유도 시스템, 실시간 시스템 등의 시스템 프로그램
Putnam 모형
소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
ISO/IEC 12207
표준 소프트웨어 생명 주기 프로세스
SPICE
소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가하는 표준 불완전 > 수행 > 관리 > 확립 > 예측 > 최적화
소프트웨어 개발 프레임워크
소프트웨어 개발에 공통적으로 사용되는 구성 요소와 아키텍처를 일반화하여 제공해주는 반제품 형태의 소프트웨어 시스템 모듈화, 재사용성, 확장성, 제어의 역 흐름
2장. 데이터 입출력 구현
스키마
데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것
데이터베이스 설계 순서
요구 조건 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현 개념적 설계 -개념 스키마, 트랜잭션 모델링, E-R 모델 -현실 세계에 대한 인식을 추상적 개념으로 표현 논리적 설계 -논리 스키마, 트랜잭션 인터페이스 -현실 세계에서 발생하는 자료를 논리적 자료 구조로 변환 물리적 설계 -DDL로 데이터 베이스 생성, 트랜잭션 작성 -논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환
데이터 모델
현실 세계의 정보들을 체계적으로 표현한 개념적 모형 표시될 요소 : 구조, 연산, 제약조건
릴레이션
데이터들을 표의 형태로 표현 개체 타입=릴레이션 스키마 개체 인스턴스=릴레이션 인스턴스=튜플
튜플
릴레이션을 구성하는 각각의 행
속성
데이터베이스를 구성하는 가장 작은 논리적인 단위
후보키
속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 구성으로 구성되어야 함
기본키
후보키 중에서 특별히 선정된 주키
대체키
후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
슈퍼키
속성들의 집합으로 구성된 키
외래키
다른 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합
무결성
데이터베이스에 저장된 데이터 값과 현실 세계의 값이 일치하는 정확성 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없음 참조 무결성 : 릴레이션은 참조할 수 없는 외래키의 값을 가질 수 없음
관계대수
데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 어떻게 유도하는가를 기술하는 절차적인 언어
순수관계연산자
Select : 튜플 중에서 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산, 수평연산, 시그마 Project : 속성 리스트에 제시된 속성 값들만 추출하여 새로운 릴레이션을 맏느는 연산, 수직연산, 파이 Join : 두 개의 릴레이션을 하나로 합쳐 새로운 릴레이션을 만드는 연산, 나비넥타이 기호 Division : 다른 하나의 속성 값을 모두 가진 튜플에서 속성을 제외한 속성만을 구하는 연산, 나눗셈 기호
교차곱
두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산. 디그리(속성 수)는 더한 것과 같고 카디널리티(튜플 수)는 곱한 것과 같음
이상
데이터베이스 내의 데이터들이 불필요하게 중복되어 조작 시에 예기치 않게 발생하는 곤란한 현상 삽입 이상 : 삽입 시 원하지 않는 값들로 인해 삽입할 수 없는 현상 삭제 이상 : 삭제할 때 의도와는 상관없는 값들도 같이 삭제되는 현상 갱신 이상 : 속성 값 갱신 시 일부 튜플의 정보만 갱신되어 정보 불일치성이 생기는 현상
정규화
테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
반정규화
시스템 성능 향상을 위해 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
시스템 카탈로그
다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스, 데이터 사전
트랜잭션
논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 모두 수행되어야 할 일련의 연산 원자성 : 연산은 모두 반영되도록 완료되거나 반영되지 않도록 복구되어야 함 일관성 : 연산이 성공하면 언제나 일관성 있는 데이터 상태로 변환 독립성 : 둘 이상의 트랜잭션이 실행되는 경우 하나가 실행중에 다른게 끼어들 수 없음 지속성 : 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
인덱스
데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조
뷰
접근이 허용된 자료만을 보여주기 위해 하나 이상의 테이블로부터 유도된 가상 테이블
파티션
테이블이나 인덱스를 파티션으로 나누는 것 범위 분할 : 지정한 열의 값으로 분할 해시 분할 : 해시 함수를 적용한 결과 값에 따라 분할 조합 분할 : 범위 분할 후 해시 분할
분산 데이터 베이스의 목표
위치 투명성 : 데이터베이스 명칭만으로 접근 중복 투명성 : 여러 곳에 중복되어 있어도 하나의 데이터만 존재하는 것처럼 사용 병행 투명성 : 다수 트랜잭션이 실행되도 결과는 영향이 없음 장애 투명성 : 장애에도 불구하고 정확한 트랜잭션 처리
RTO
복구되어 가동될 떄까지의 시간
RPO
중단 시점으로부터 데이터를 복구할 수 있는 기준점
암호화
데이터를 보낼 때 송신자가 지정한 수신자 이외에는 알 수 없도록 평문을 암호문으로 변환 개인키 암호 방식, 공개키 암호 방식
임의 접근통제
사용자의 신원에 따라 접근 권한 부여
강제 접근통제
등급을 비교하여 접근 권한 부여
DAS
서버와 저장장치를 전용 케이블로 직접 연결
NAS
서버와 저장장치를 네트워크 통해 연결
SAN
DAS + NAS, 광채널 스위치 이용
3장. 통합 구현
XML
특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
SOAP
네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약