PART 01 : 요구사항 확인
- 시스템이란 목적을 달성하기 위해 구성요소들이 상호유기적으로 구성된 집합체
- 워터폴 모형 === 폭포수 모형
현행 시스템 파악
- 시스템 구성/기능/인터페이스 현황 파악
- 아키텍처/소프트웨어 구성 현황 파악
- 하드웨어/네트워크 현황 파악
나선형 모형
- 계획수립 > 위험분석 > 개발 > 고객 평가 의 반복
애자일 프로세스
- 프로젝트의 생명주기 동안 반복적인 개발을 촉진한다.
익스트림 프로그래밍
RAD 모형
- 매우 짧은 개발주기를 강조하는 점진적 소프트웨어 개발 방식
프로토타이핑 모형
- 빠른 시제품을 완성하기 위해 효율성과 무관한 알고리즘 사용
- 내부적 구조는 크게 상관하지 않음
- 요구사항 분석
- 신속한 설계
- 프로토타입 작성
- 사용자 평가
- 프로토타입 정제
- 공학적 제품화
개발비용 산정
- 시스템 정의 및 개발 전략 수립 단계에서 개괄적으로 이루어짐
WBS
- 프로젝트 진행에서 일어나는 모든 작업을 찾기위해 프로젝트 목표를 작은 중간 목표로 세분화
PUTNAM 모형
- Putnam 생명주기 예측 모형 > Reyleigh-Norden 곡선에 기초해 개발비용을 산정한다.
스크럼
- 30일마다 동작 가능한 제품을 제공하는 스프린트 중심
- 매일 정해진 시간, 정해진 장소에서 짧은 시간의 개발을 함
하향식 개발비용 산정
COCOMO 모형
- 과거 프로젝트들을 분석한 공식으로 현재 프로젝트의 특성을 고려하는 개발비용 산정 방식
- Basic COCOMO
- Intermediate COCOMO
- Basic 의 확장, 14개의 비용요소를 가미해 가중치로 구한다.
- Detailed COCOMO
- 시스템을 모듈 서브시스템으로 세분화 한 후 Intermediate로 구한다.
COCOMO Line
- 5만줄 이하 : Organic
- 5만 ~ 30만 : Semi-detached
- 30만 이상 : Embedded
요구사항
도출
분석
- 요구사항을 명확히 규정, 시스템의 특성을 반영. 사용자의 뜻을 이해하고 업무를 분석
명세
검증
유지보수
기능요구
- 사용자가 필요로 하는 정보처리 능력에 대한것.
- 입출력에 대한 요구
DFD - Data Flow Diagram - 자료 흐름도
- 보편적으로 사용되는 시스템 모델링 도구, 기능 중심의 시스템을 모델링한다.

DD - Data Dictionary - 자료사전
- 개발과 연관된 자료요소들의 집합
- 저장내용/중간계산 등에 관련된 용어를 이해할수 있는 정의의
Mini-Spec
- 프로세스 명세서를 DeMacro가 부르던 명칭
개념 모델
- 문제 도메인의 엔티티와 그들의 관계 및 종속성 반영
UML
- 객체지향 소프트웨어를 모델링하는 표준
- 심벌,그림 이용해 객체지향 개념을 나타낸다.
클래스 다이어그램
- 객체, 클래스 속성, 오퍼레이션 및 연관관계로 시스템을 나타냄
요구사항의 어려움
대화/의사소통 어려움
복잡한 시스템
요구의 변화
요구명세 어려움
럼바우의 OMT
- 객체 모델링 - 클래스 다이어그램
- 동적 모델링 - 상태 다이어그램
- 기능 모델링 - DFD
Booch OOAD
- 분석보다는 설계에 많은 중점을 두고 구성되는 방법
구조적 다이어그램
- Class Diagram
- Component Diagram
행위 다이어그램
- Use case Diagram
- Sequence Diagram
- State Diagram
유스케이스 다이어그램
INCLUDE - 포함
- 하나의 유스케이스가 실행되기 위해 다른 유스케이스가 반드시 실행되어야 한다.
- <<include>>
EXTEND - 확장
- 예외사항을 나타내는 관계
- 유스케이스가 특정 조건을 만족할 경우 실행되는 부가적인 기능
집합 - 복합
집합 - Aggregation
- 구성 요소가 없어도 전체 개념이 존재할수 있다.
복합 - Composition
- 부분은 하나의 전체에만 포함된다.
- 전체가 없으면 구성은 재사용이 불가능하다.
eXetreme Programming
XP 5대 원칙
Coad/Yourdon 방법
- ER Diagram 을 사용해 객체의 행위 모델링
PART 2 데이터베이스
세그먼트
- 테이블 스페이스 내 특정 유형의 논리적 저장 구조
- 테이블, 인덱스 등의 오브젝트가 포함됨
ER 모델
- 개체타입과 관계타입을 기본 개념으로 현실세계를 개념적으로 표현한다.
튜플의 유일성
- 릴레이션의 튜플들은 중복되지 않고 모두 상이하다.
데이터 모델링
요구조건 분석
- 사용자가 원하는 데이터베이스의 용도를 찾는다.
복합 속성
- 독립적인 의미를 가지는 여러 기본 속성으로 구성된 속성
약한 개체 타입
논리적 데이터 모델
- 관계 데이터 모델
- 네트워크 데이터 모델
- 계층 데이터 모델
물리적 데이터 모델링
- 논리 데이터 모델을 사용하기 위해 데이터 베이스 저장구조로 변환하는 과정
- 내부 저장장치 구조와 접근 경로를 설계한다.
스키마
- 데이터베이스의 구조(개체, 속성, 관계) 에 대한 정의와 이에 대한 제약조건을 기술한것
데이터 모델의 구성요소
구조 ( Structure )
연산 ( Operation )
제약조건 ( Constraint )
엔티티/개체
- 유형/무형의 대상으로 존재하며 서로 구별이 됨
- 하나이상의 속성으로 구성된다.
설명 속성
SQL
Stored Function / 저장된 함수
- 특정 작업을 수행하는 PL/SQL 블록
- 구성이 프로시저와 유사하고 IN 패러미터만 사용 가능
정규화
- 이상현상의 해결을 위해 속성간 종속관계를 분석하고 여러개의 릴레이션으로 분해한다.
SQL 소스코드 인스펙션 순서
- Planning - 계획
- Overview - 교육
- Preparation - 사전 검토
- Meeting - 인스펙션 회의
- Rework - 수정
- Following - 후속 조치
Disjoint
- 개체를 여러 개념으로 분리할때 사용한다.
- Ex. 학생 > 학부생, 대학원생
ORM
- 객체와 관계형 데이터베이스와 데이터를 자동의 매핑한다.
PART 3 통합구현
통합구현
- 요구사항에 맞게 중계,송신,수신 시스템간의 관계를 적절히 구현하는것
- 통합구현을 위해 연계 시스템 아키텍쳐 설계
- 연계 데이터를 정의하기 위해 사용자 요구사항을 분석한다.
공통모듈
- 전체 시스템 설계시 각각 서브시스템에 공통으로 사용되는 모듈을 하나로 묶어놓은 소프트웨어 라이브러리
연계 데이터
- 의미를 갖는 속성, 길이, 타입을 포함해 송수신 되는 데이터
- 형식 : DB 테이블, DB 파일 ( txt, xml )
연계 데이터 식별/표준화 절차
- 연계 범위 및 항목 정의
- 연계 코드 매핑 및 정의
- 변경된 데이터 구분 방식 정의
- 데이터 연계 방식 정의
식별자
- 송신된 정보가 수신 시스템의 어떤 데이터에 해당하는지 추출 위해
수신 시스템의 연계 정보에 송신 시스템의 식별키를 추가 밎 관리
연계 정의서
- 연계 항목, 연계 데이터 타입, 길이 구성 및 형식 정의 결과물
응집도, 결합도
응집도 - 한 모듈 내부의 기능의 유사도 - 높을수록 좋다
결합도 - 여러 모듈간 기능의 결합도 - 낮을수록 좋다.
연계 메커니즘
- 데이터를 생성해 전송하는 송신 시스템과 수신해 운영 DB에 반영하는 수신 시스템으로 구성된다.
직접 연계 방식
- 중간 매개체 없이 직접 연계
- DB Link
- JDBC
- API
간접 연계 방식
ESB - Enterprise Service Bus
- 중앙집중식 아키텍쳐
- 애플리케이션보다 서비스 중심의 통합을 지향하는 아키텍처
- 고객의 서비스 요청에 따라 원하는 서비스를 제공한다.
형상관리
- 소프트웨어에 대한 변경을 철저히 관리하기 위해 개발된 일련의 활동
- 분석서
- 설계서
베이스라인
- 정식으로 검토되고 합의된 명세서나 제품
- 정식 변경 통제 절차를 통해서만 변경 가능하다.
형상 감사
- 변경이 적절하게 시행되었는지에 대한 객관적인 검증과 확인
디자인 패턴
- 객체지향 소프트웨어 디자인 과정에서 자주 접하는 디자인 문제의 해법
Facade Pattern
- 일련의 클래스에 대한 간단한 인터페이스를 제공한다.
객체 생성 패턴
- Factory, Builder, Singleton
구조 개선 패턴
역공학
처리 역공학
서버 프로그램 구현
개발 언어 선정 기준
- 범용성 : 과거의 실적, 이력이 존재하고 광범위하게 이용중이다.
- 적정성 : 대상 업무 성격, 목적에 적합해야 한다.
- 이식성 : 일반적인 PC 및 OS에 개발환경이 설치 가능해야 한다.
형상관리 도구
- 개발자들이 작성한 소스 및 리소스등의 산출물에 대한 버전 관리 도구
개발환경 구축
- 목적과 구축 설계에 대한 명확한 이해 필요
- 용도에 맞는 하드웨어/소프트웨어 선정
웹서버
- HTML, CSS, 이미지 등의 정적 파일을 웹브라우저에 제공한다.
빌드 도구
- 개발자가 작성한 소스에 대한 빌드 및 배포를 지원한다.
- 사용되는 구성요소와 라이브러리들에 대한 의존성 관리를 지원한다.
환경
- 개발 하드웨어 환경과 운영환경은 유사하게 구성한다.
JVM
- 자바 응용 프로그램을 기동하기 위한 인터프리터 환경
요구사항 관리도구
- 목표 시스템의 기능과 제약조건 등의 요구사항을 분석, 수집, 추적하는 소프트웨어
테스트 케이스
테스트 프로세스
- 계획 및 제어 : 필요한 활동을 계획, 및 이행을 확인
- 분석 및 설계 : 추상적인 테스트 목적을 구체화
- 구현 및 실행 : 테스트 케이스를 조합하고 필요한 정보를 포함
- 평가 : 테스트가 목표에 맞게 수행되었는지 확인
- 완료 : 테스트 수행시 명시한 조건들을 수집, 발생한 사항과 경험을 축적한다.
테스트 프로세스
- 테스트 수행과 관련 된 활동들이 의도된 목적과 조건을 달성할수 있게 돕는다.
통신 응집도
- 동일한 입력과 출력을 사용해 다른 기능을 수행하는 활동이 모여있다.
HIPO
• 기능적인 측면을 우선시하여 시스템을 분석하고 설계한다.
• 계층적 구조를 통해 기능 간의 관계를 명확하게 표현한다.
• 입력, 처리, 출력을 정의하여 기능의 흐름을 쉽게 파악한다.
가시적 도표
총체적 도표
세부적 도표
- 총체적 도표를 모듈별 입력, 처리, 출력 도표로 표현
프로세스
- 개인이나 조직이 한개 이상의 정보자원 입력을 통해 가치 있는 산출물을 제공하는 활동의 집합.
DAO
- 특정 타입의 데이터베이스 혹은 메커니즘에 추상적인 인터페이스를 제공한다.
NS Chart
- Box Diagram
- 논리 기술에 중점을 둔 도형식 표현
살충제 패러독스
- 동일한 테스트 케이스로 반복 실행시 더이상 새로운 결함을 발견할수 없기에 주기적으로 테스트 케이스를 점검하고 개선해야 한다.
배치 프로그램
- 사용자와의 상호작용 없이 일련의 작업을 작업 단위로 묶어 반복 수행 / 일괄 처리
배치 프로그램 안정성
- 어떤 문제가 어디에서 발생되었는ㄴ지 추적 할수 있어야 한다는 특성
배치 스케쥴러
- 일괄처리를 위해 주기적으로 발생하는 작업을 지원하는 도구
프레임워크
- 모듈화
- 재사용성
- 확장성 : 다형성을 통해 인터페이스를 확장할수 있다.
- 제어의 역흐름
스탬프 결합도
- 모듈간 인터페이스로 배열, 객체, 구조체가 전달된다.
인터페이스 구현
인터페이스
- 내부나 외부의 모듈간 연계 기능
- 송신, 수신, 중계 시스템이 필요하다.
인터페이스 설계서
- 시스템 간 주고받는 데이터 내역, 송수신 주체, 인터페이스 유형을 작성
데이터 표준
- 데이터 저장, 처리 및 인터페이스 전달시 전달되는 데이터 형식과 명칭
도메인
- 용어 속성의 특징 및 유형을 분류한 번호 코드 등의 데이터 유형
EAI
- 수많은 애플리케이션을 통합하기 위한 정보교환 통합 시스템
EAI 통합 절차
- 데이터 > 애플리케이션 > 비즈니스 로직 > 사용자 인터페이스
- 데이터 전송을 보장하는 메시지 큐와 트랜잭션 미들웨어
APP 접근 기능
- EAI 주요 기능, 패키지 APP 또는 메인프레임과 같은 이기종 시스템과의 접속을 위한 기능
Business Workflow
- 미리 정의된 기업의 워크플로우에 따라 업무를 처리한다.
Message Bus
- 버스를 사용해 병목현상 발생가능
- 애플리케이션 사이에 미들웨어 두어 처리
Hub & Spoke
- 모든 데이터가 허브를 통해 전송된다.
- 데이터 전송 보장 및 유지보수 비용 절감
FEP
- 금융권 시스템과 대외 기간관 인터페이스를 통합, 관리하는 솔루션
SOAP
- XML 기반의 메시지를 네트워크에서 신뢰성 있게 전송한다.
XML
- SGML 의 복잡한 단점을 개선한 마크업 언어
VPN
- 인터넷 망 상에서 암호화된 통신 환경의 구성이 가능하다.
STAF
- 서비스 호출, 컴포넌트 재사용 등을 지원하는 테스트 프레임워크
APM
- 구현된 인터페이스가 외부 시스템과 연결 모듈간에 정상 작동 하는지 감시하는 도구
xUnit
- 미리 서비스를 구독 요청한 클라이언트에게 정기적으로 메시지를 제공하는 기술
테스트 시나리오
- 실제 업무 또는 시스템 내 프로그램 처리절차에 따라 작성, 각 절차의 작업은 테스트 케이스로 작성된다.
비대칭키 암호화 알고리즘
MCI - Multi Channel Interface
- 다양한 고객 접점 채널과 기업 내부 시스템 간 인터페이스를 관리하는 솔루션
화면 설계
소프트웨어 아키텍처
- 개발하고자 하는 소프트웨어의 사전 작업 통해 소프트웨어 개발을 쉽게 하기 위한 기본 틀
UI 설계 원칙
- 직관성 : 누구나 쉽게 이해 및 사용
- 학습성 : 초보와 숙련자 모드가 쉽게 배우고 사용
- 유연성 : 사용자의 인터랙션 최대한 포용 및 실수 방지하도록 제작
- 유효성 : 정확하고 완벽하게 사용자의 목표가 달성될수 있도록 제작
기능성
- 실제 수향 결과와 품질 요구사항과의 차이를 분석한다.
디지털 프로토타입
- 컴퓨터를 사용해 작성하는 프로토타입의 종류
- Adobe XD, HTML, 비지오 등을 사용
HCI - Human Computer Interaction
- 설계 모형, 사용자 모형, 시스템 인식, 시스템 이미지 로 구성.
감성공학
- 인간의 감성을 과학적 측정, 공학적 기술력을 결합해 새로운 제품을 만든다.
UI 설계 지침
가시성
- 주요 기능을 메인에 노출해 화면 내용을 쉽게 파악
단순성
- 조작법이 단순해 간단하게 작동할수 있어야 한다.
일관성
- 버튼이나 조작 방법을 모든 화면에서 동일하게 한다.
유용성
- 사용자가 원하는 목표를 얼마나 효과적으로 달성할수 있는지에 대한 척도
UI 상세 설계
공통 단위 태스크 흐름
- 공통으로 나타나는 삭제, 검색 등의 인터랙션을 설명한것
UI 설계 도구
스토리보드
- 정책, 프로세스, 와이어프레임, 디스크립션 등 서비스 구축 위한 모든 정보가 담겨이다.
파워 목업, 발사믹 목업
기본 인터랙션 규칙
- 터치 제스처 등의 공통적으로 사용되는 조작 방법 등에 대해 기술
UI 시나리오
완전성
추적 용이성
와이어프레임
- 화면단위 레이아웃 설계
- 레이아웃의 협의 또는 서비스의 간략한 흐름을 공유하기 위해 사용한다
- 설명, 기획의도, 요구사항이 있으면 이건 스토리보드이지 와이어 프레임이 아니다!
J Foley 인터페이스 4단계 모형
- 개념 단계 - 대화형 시스템에 대한 심리적 모형
- 의미 단계 - 입력 명령과 출력 결과가 사용자에게 주는 의미
- 문구 단계 - 명령문을 이루는 단어들의 정의
- 어휘 단계 - 특정 명령 문구를 형성하는 절차
NUI / OUI
NUI - 사용자의 말과 행동
OUI - 존재하는 모든 사물을 입출력 장치로
UI 프로토타입 장점
- 오류를 사전에 발견
- 사용자 설득과 이해가 쉽다
- 개발시간이 감소한다.
테스트
화이트박스 테스트
- 프로그램의 모든 논리적 구조 파악 및 경로들의 복잡도를 계산해 테스트 사례를 만든다.
기초 경로 테스트
- 대표적인 화이트박스 기법, 논리흐름도를 작성해 논리복잡도를 계산한다.
- Edge - Node + 2 로 복잡도를 계산할수 있다.
사전테스트 조건
STUB
테스트 케이스 작성 절차
- 참조문서 수집
- 테스트 케이스 작성
- 내부 검토
- 요구사항 대비 커버리지 분석
- 승인
결함관리
- 테스트 수행 후 재발생을 방지하기 위해 결함을 추적하고 관리한다.
테스트 자동화 도구
- 테스트에 포함되는 여러 과정을 자동으로 지원
- 생산성 및 일관성을 향상시킨다.
통합 테스트
- 모듈을 어떤 순서로 결합해 테스트 하냐에 따라 하향, 상향, 빅뱅, 연쇄식이 있다.
회귀 테스트
- 컴포넌트에 초점, 새로운 결함 발견에 대비해 이미 실시한 실험의 일부 혹은 전부를 재실시한다.
상향식 테스트 순서
- 하위 모듈을 클러스터로 조합
- 각 클러스터 테스트를 위한 드라이버 개발
- 각 클러스터 테스으
- 드라이버 제거하고 클러스터를 위로 이동
- 최종 드라이버 대신 주 프로그램 대체하고 소프트웨어 구조 완성
드라이버
- 상향식 통합 테스트에서 검사 제어 소프트웨어로 사용
성능 측정
- 처리량
- 응답시간
- 경과시간/반환시간
- 자원 사용률
오류부재의 궤변
- 요구사항을 만족하지 못하는 오류를 발견하고 제거해도 품질이 높다고는 말할수 없다.
정적 테스트
SQL
RESTRICTED
- DROP 시 참조되는 요소가 있으면 삭제하지 않는다.
- 맨 뒤에 붙힘
동적 SQL
- PREPARE, EXECUTE 가 가장 중요하다.
트랜잭션 장애
- 내부 오류, 입력데이터 불량, 자원 과다 사용 등으로 정상적인 실행을 할수 없는 상태
트리거 구성 요소
인덱스
- 데이터베이스에서 신속한 탐색을 위해 만든 데이터 구조
기본 인덱스
클러스터링 인덱스
- 범위 질의에 유용
- 범위의 시작값에 해당하는 인덱스 엔트리를 먼저 찾음
다단계 인덱스
- 최상위 단계 인덱스를 마스터 인덱스로 부름
- 한 블록으로 구성되어 주기억 장치에 상주할수 있다.
연관규칙
- 지지도와 신뢰도가 같이 수반되어야 연관성 법칙의 의미가 있다.
데이터 마이닝
뷰의 장점
- 논리적 독립성 제공
- 데이터 접근 제어로 보안성 제공
커서
ROLLBACK
- 데이터의 변경 사항을 이전 상태로 되돌린다.
- 커밋 이후 변경사항이 되돌려진다.
소프트웨어 개발보안
자산
위협
- 자산의 손실을 초래할수 있는 잠재적 원인/행위자
위험
- 원하지 않는 사건이 발생해 손실 또는 부정적 영향을 미칠 가능성
취약점
개체 인증
DAC - 임의적 접근 통제
- 주체나 주체가 속한 그룹의 식별자에 근거해 객체의 접근을 제한
MAC - 강제적 접근 통제
- 주체가 객체 접근시 규정된 규칙과 비교해 접근권한 부여
RBAC - 역할 기반 접근 통제
- 주체와 객체 사이에 역할 부여한다.
- 주체의 인사이동이 잦을때 적합하다.
벨-라파듈라 모델
- 군사용 모안 구조의 요구사항 충족을 위해 설계, 기밀성에 초점
전송계층
- 수신측에 전달되는 데이터에 오류가 없고 순서가 보장되게 한다.
IPSEC
Land 공격
- 패킷 전송시 출발지 IP와 목적지 IP를 같게 만들어 보낸다.
Ping of Death 공격
- Ping을 최대한 길게 보내 수백개로 쪼개지는것을 이용한다.
Teardrop 공격
- 패킷을 보낼때 Offset을 겹치게 시퀀스 넘버를 속인다.
Syn Flooding
- 대상 시스템에 연속적인 SYN 패킷을 보낸다.
Smurf 공격
- ICMP 이용, 다이렉트 브로드캐스트를 막아 방어한다.
참조 모니터
- 보안 커널 데이터베이스를 참조해 객체에 대한 접근 허가 여부 결정
SUID
- 일반 사용자가 소유자의 권한으로 실행 가능하도록 한다.
세션 하이재킹
- TCP 통신 중간에 RST 패킷 전송 및 시퀀스 넘버를 조작해 연결을 가로챈다.
IPS
- 패킷을 버리거나 트래픽 감지해 방어하는 기능을 갖췄다.
- 모든 포트를 모니터하고 라우터나 방화벽에 적합한 명령어를 보낸다.
차단
- 정보의 송수신을 원할하게 하지 못하도록 막는 행위
BCP
- 재난 발생시 비즈니스의 연속성을 유지하기 위한 계획
- 정해진 절차에 따라 이전의 임무로 복귀하기 위함
생체 인식 기술 특징
- 보편성 : 누구에게나 있다.
- 유일성 : 개인을 구별할수 있는 고유한 것
- 영속성 : 시간과 환경에도 변하지 않는다.
- 정량성 : 획득이 용이하고 정량화 될수 있어야 한다.
사회공학적 공격
- 사람의 심리적 취약성을 이용해 비밀 정보 취득 및 컴퓨터 접근 권한을 획득한다.
DES
IDS
- 대상 시스템의 인가되지 않은/비정상적인 행위를 탐지
- 불법 행위를 구별하여 침입을 차단한다.
프로그래밍 언어론
구조적 프로그래밍
다형성
- 같은 메시지에 대해 각 클래스가 가진 고유한 방법으로 응답하는것이다.
- 오버라이딩과 오버로딩이 해당된다.
추상화
- 속성의 일부분을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사한다.
Escape sequence
변수
JAVA switch 문
- case에 break 가 없으면 다음 case도 실행된다.
JSP
PHP
- HTML 생성 스크립팅 언어
- 웹서버에서 해석해서 전달
프로그래밍 언어
- 컴퓨터 시스템을 동작시키는 프로그램 작성을 위한 언어.
인공지능 프로그래밍 언어
선행/후행
- a++ + ++a
- a가 2일때
- a++ 에서 a가 2로 쓰이고 a에 1증가 ( 3 )
- ++a 에서 a가 1 증가 ( 4 ) 해 연산에 사용된다.
char c[] = "abc", *cp;
char c[] = "abc";
char* cp;
strcmp(a, b)
- a가 사전순으로 더 뒤에 있으면 1
- b가 사전순으로 더 뒤에 있으면 -1
자바 String.substring(a, b)
String test = "abcde";
System.out.println(test.substring(2, 4));
// 2~3 index > cd


자바 기본값
- 변수를 선언하고 초기화 하지 않았을 경우
- boolean : false
- int : 0
- float : 0
- char : 공란
- 객체 : null
응용 SW 기초 기술
제어 프로그램
- 컴퓨터 전체의 동작 상태를 감시 및 제어한다.
SCAN
- SSTF 의 탐색 시간 편차를 해소 하기 위한 기법, 대부분이 사용
- 한쪽 방향으로 쭉 가면서 처리, 또 반대방향으로 쭉 가면서 처리
다중 프로그래밍 시스템
- 독립된 두개의 프로그램이 동시에 수행되도록 자원을 적절한 시간동안 쓰게 한다.
SGID
- 일반 사용자가 소유 그룹 권한으로 실행 가능케 한다.
실시간 처리 시스템
- 운영체제 종류중 지정된 시간 내에 요구된 작업을 처리하는것

교착상태 조건
선점 스케쥴링
비선점 스케쥴링
데이터베이스
개념 스키마
제어어
- 데이터 보안, 무결성 회복, 제어어 에 사용한다.
데이터 사전
- 시스템이 필요로 하는 스키마와 여러 객체를 포함하는 시스템 데이터베이스
관계 데이터 모델
데이터 모델
- 현실 세계 데이터 구조를 컴퓨터 세계의 데이터 구조로 기술한다.
관계
데이터베이스 설계
개념적 설계
데이터 웨어하우스
- 의사결정 지원을 위한 주제지향, 통합 영속적이고 시간에 따라 변하는 값이 유지된다.
OLAP
- 대규모 다차원 데이터를 동적으로 온라인에서 분석, 통합, 보고서 생성
데이터베이스의 특징
- 실시간 접근성
- 계속적 변화
- 동시 공유
- 내용에 따른 참조
데이터 독립성
- 데이터 구조가 변경되어도 항목을 쓰는 프로그램만 변경하면 된다.
네트워크 데이터 모델
- 논리적 데이터 모델 중 하나, 그래프로 표기된다.


데이터
패킷 교환망
- 전송로가 전용으로 할당되지 않아 데이터를 패킷 조각으로 나누어 전송한다.
버스형 네트워크
- 한개의 통신회선에 여러대의 터미널이 연결된다.
해밍코드
- 1비트의 에러를 찾아 고칠수 있다.
- 전진 오류 수정 방식
도메인이름
URL
- 인터넷에 있는 정보의 위치를 표기하기 위한 방법
스타 네트워크 / 성형 네트워크
- 중앙의 서버가 모든 클라이언트를 관리한다.
- 중앙 컴퓨터의 변경 및 확장이 어렵다.
Presentation Layer
IP Class
- 0.0.0.0 ~ 127.255.255.255 : A Class
- 128.0.0.0 ~ 191.255.255.255 : B Class
- 192.0.0.0 ~ 223.255.255.255 : C Class
시분할 시스템
라운드 로빈
- 모든 프로세스에 동일한 시간 할당량을 부과해 실행한다.
C-SCAN
- 단방향으로만 스캔한다.
- 끝에 도달하면 다시 반대편 끝으로 이동한다.
DBA 역할
스키마
모델링
릴레이션 특징
- 중복된 튜플이 없다
- 속성의 순서가 없다
- 튜플의 순서가 없다
- 속성은 원자값을 가진다.
데이터마이닝
프로토콜
- 구문 : 데이터 형식, 부호화
- 의미 : 전송의 조작이나 오류제어 위한 제어정보
- 타이밍 : 통신 속도나 메시지의 순서 제어
후진 오류 수정 방식
- 송신시 오류 검출 부가정보를 전송
- 수신측에서 오류 검출시 송신측에 재전송 요청
데이터 단위
- 트랜스포트 : 세그먼트
- 네트워크 : 패킷
- 데이터링크 : 프레임
배포
소프트웨어 패키징
헤더
애플리케이션 모니터링 도구
릴리즈노트
애플리케이션 성능 관리
DRM 컴틀돌러
Tamper Resistance
무결성
- 허가되지 않은 사람의 소프트웨어나 데이터에 접근을 통제한다.
Check in
Check out
- 저장소의 선택된 파일 혹은 디렉토리를 현재 작업 환경으로 복사
Maven
애플리케이션 변경 영향 관리
- 변경시 변경의 영향도 파악
- 애플리케이션 종속관계 모니터링
패키저
- 콘텐츠를 메타데이터와 함께 배포 가능한 데이터로 묶는 기능
시스템 문서
제품 소프트웨어 관리
공유 폴더 방식
- 개발 완료시 공유 폴더에 복사
- 담당자 한명이 자기 PC로 복사해 동작 여부 확인
- 이후 각 개발자들이 정상작동 또 확인.
오답노트
FLSM 방식 서브넷 분할
- 192.168.1.0/24 를 세개의 서브넷으로 분할
- 192.168.1.0 ~ 192.168.0.63 - 00
- 192.168.1.63 ~ 192.168.0.127 - 01
- 192.168.1.128 ~ 192.168.1.191 - 10
- 192.168.1.192 ~ 192.168.1.255 - 11
- 브로드캐스트는 분할에 사용된 비트를 제외한 나머지를 1로 채우면 된다.

- 셀렉트 > 시그마
- 프로젝트 > 파이
- 조인 > 나비넥타이
- 디비전 > 나누기
- 합집합, 교집합, 차집합, 교차곱은 이산수학 그대로
Bridge 패턴
- 기능과 구현을 분리, 독립적으로 변형과 확장이 가능하다.
DISTINCT 와 COUNT
- COUNT(DISTINCT 속성)
- DISTINCT COUNT(속성)
트러스트존
타이포스쿼팅
- 유명 도메인과 유사한 도메인을 미리 선점하는것
SIEN
- 가트너, 보안정보 관리와 보안이벤트 관리 통합
사회공학
- 개인적 인간관계, 업무적 인간관계로 정보를 수집
다크 데이터
- 정보 수집후 사용하지 않고 방치되어 보안 위협을 차지
SRT 스케쥴링
- SJF의 선점형 방식
- 실행시간 추정치가 가장 짧은 것을 먼저 실행한다.
UML 구성요소
클래스 다이어그램
- 사용되는 객체를 정의하고 이들의 정적인 관계를 다양하게 표현
인터페이스
- UML 모델링에서 컴포넌트가 구현해야 하는 오퍼레이션 세트
IDEA
SKIPJACK
- Clipper칩에 내장되는 블록알고리즘, NSA 개발
COUNT
ISP - Interface Segregation Principle
- 여러개의 특화 인터페이스가 하나의 범용 인터페이스보다 낫다
EGP
- 시스템 사이 경로 설정 정보를 교환하기 위해 사용
- AS간 라우팅 정보 교환
Hypertext
RAID 0
RAID 1
UNDO
REDO
TKIP
JUnit
Black Box Testing
- Equivalence Partitioning
- Boundary Value Analysis
- Cause-Effect Graph
ISDS
워터링 홀
- 합법적 사이트에 잠복하다 취약점 찾아 아이피 접속시 공격
유일성
테스트 순서
- 단위 테스트 > 통합 테스트 > 시스템 테스트 > 인수 테스트
Aggregation
- 하나의 사물이 다른 사물에 포함
- 전체와 부분으로 구분 및 독립적
인덱스 파일 구조
- 값-주소 쌍으로 구성되는 보조기억장치의 데이터 구조
애드혹 통신
- AP 없이 무선으로 통신이 가능한 노드 간 통신
패킷 교환 방식
- 가상 회선 방식 : 목적지 호스트와 미리 연결 후 통신
- 데이터그램 방식 : 출발지에서 목적지까지 경로를 위한 정보를 헤더에 붙혀 비연결적으로 보냄
행위 패턴
로킹
개념적 설계
논리적 설계
WSDL
- 웹 관련 서식이나 프로토콜을 표준적인 방법으로 기술 및 개제
- XML로 구성
파이썬 클래스 변수
동등분할 테스트
- 입력 데이터의 영역을 유사한 도메인 별로 유효/무효 클래스로 그룹화 해 나누어 검사
테스트 단위
단위 테스트
통합 테스트
- 다양한 코드 유닛간 통합 및 인터페이스 테스트
시스템 테스트
- 모든 컴포넌트와 모듈이 통합되어 동작하는지 테스트
인수 테스트
IPC
- 모듈간 통신 구현위한 인터페이스 집합
- 소켓, 메시지큐 등
데이터 모델 구성요소
패키지 다이어그램
샘플링 오라클
- 특정한 몇개의 입력 값에 대해서만 기대하는 결과를 제공하는 오라클
형상 통제
DB 스키마
Point-to-Point
- EAI 에서 1:1 방식으로 애플리케이션 통합
RTO
- 서비스가 중단되어 업무가 중단된 시점으로 부터 업무가 다시 시작할때까지의 시간
Python set Update
인덱스 생성
CREATE INDEX _인덱스이름_ ON _테이블이름_(속성명)
UI 유효성
Linked Open Data
- 데이터 공유 및 재사용 가능한 데이터로 새로운 가치를 창출
데이터마이닝
- 많은 데이터간 숨겨진 유용한 상관관계를 밝혀내 의사결정에 활용
릴리즈 노트의 헤더
- 문서이름, 제품이름, 버전번호, 릴리즈 날짜, 노트 버전
- 기본적인 정보를 포함한다.
릴리즈 노트
- 최종 사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서
UDDI
- 비즈니스 목록에 자신을 등재하기 위한 XML 기반 레지스트리
kill 명령어
- UNIX/LINUX 에서 프로세스를 강제종료하기 위해 사용한다.
트랜잭션 모니터
- 분산 트랜잭션 구현 위해 필요한 미들웨어
- 클라이언트와 서버 사이에서 통신 부하를 효과적으로 분배한다.
부모의 기본 생성자
- 자식 생성시 부모의 기본 생성자는 자동으로 실행된다.
SELECT REVOKE
REVOKE SELECT on 테이블명 FROM 유저명
XP
XSS
- 검증되지 않은 외부 입력에 의해 브라우저에서 악의적인 코드가 실행
프로토타이핑
- 요구사항 분석
- 신속한 설계
- 프로토타입 작성
- 사용자 평가
- 프로토타입 정제
- 공학적 제품화
약한 개체
Private API
오류부재의 궤변
- 사용자 요구사항을 만족 못할시 오류가 없어도 품질이 높은것이 아니다.
스푸핑
- IP, MAC, DNS 등의 자신의 식별정보를 속여 다른 시스템을 공격하는 기법
Incremental Backup
- 백업 대상 영역중 변경되거나 증가된 데이터만들 백업한다.
Check out / in
- out : 최신 버전 소스코드를 가져온다.
- in : 소스코드의 변경을 반영한다.
RIP
- 최소 Hop Count 를 파악하여 라우팅
- Distance Vector를 사용
- 최대 15hop 으로 제한되어 내부망에 주로 사용
OSPF
- 최소시간 경로를 최적 라우팅 경로로 결정
- 최단거리 우선 알고리즘 ( Dijikstra ) 사용
- 내부 게이트웨이 프로토콜로 사용
BGP
- 외부 라우팅 프로토콜
- AS와 AS간 사용되는 라우팅 프로토콜
오버라이딩
- 오버라이딩이 되어 있지 않으면 부모의 함수를 그대로 사용한다.
- 오버라이딩 시 반드시 받는 패러미터와 반환값이 같아야 한다.
테스트 커버리지
- 기능 기반 커버리지 : 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정
- 라인 커버리지 : 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수를 측정
- 코드 커버리지 : 소프트웨어 테스트 충분성 지표 중 하나. 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정하는 방법
코드 커버리지
- 구문 커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
- 결정 커버리지 : 프로그램 내의 모든 결정의 분기가 한번씩 실행된다.
- 조건 커버리지 : 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 커버리지
- 조건/결정 커버리지 : 전체 조건식뿐만 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행하는 커버리지
- 변경 조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지
- 다중 조건 커버리지 : 결정 조건 내 모든 개발 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
루트킷
- 일반적으로 펌웨어, 가상화 계층 등의 다양한 시스템 영역에서 작동하며, 운영체제의 시스템콜을 해킹하여 악성코드의 실행여부를 숨겨 안티바이러스 탐지를 우회
- 인터넷 공격자의 존재를 숨기면서 이 공격자에게 시스템에 대한 무제한 접근 권한을 부여하는 악성 프로그램
- 백도어와 달리 시스템의 여러계층에 침투해 자신의 존재를 감춤
APT 공격 기법
- 특정 목표를 노려 제로데이등을 이용해 지속적으로 공격을 시도
- 은밀하게
재정의
public class main{
public static void main(String[] args) {
A b = new B();
b.paint();
b.draw();
}
}
class A {
public void paint() {
System.out.print("A");
draw();
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw();
System.out.print("C");
this.draw();
}
public void draw() {
System.out.print("D");
}
}
- B 클래스에 draw가 재정의 되어 있기에 A 클래스에서 draw를 호출해도 B의 draw가 실행된다.
- this 가 없으면 정의된 타입을 따라간다.
완전수
- 자기자신을 제외한 모든 약수의 합과 자기 자신이 같은 숫자
- 1 ~ 100 사이엔 6과 28이 있다.
ATM
- 자료를 일정한 크기로 정해 순서대로 전송하는 자료 전송 방식
- 셀 ( 53바이트 패킷 )을 사용한다.
static 메소드
- 반드시 static 변수만을 사용해야 한다!!
패키지 다이어그램

패키지 다이어그램
- 목적: 시스템을 논리적인 그룹(패키지)으로 나누고, 패키지 간의 의존성을 나타냄.
- 구성 요소: 패키지, 의존 관계(Dependency).
- 사용 수준: 고수준(system-level) 설계.
클래스 다이어그램
- 목적: 시스템의 객체 지향 설계를 시각화하고, 클래스 간의 관계, 속성, 메서드를 나타냄.
- 구성 요소: 클래스, 인터페이스, 속성, 메서드, 관계(상속, 연관, 집합 등).
- 사용 수준: 상세 수준(detail-level) 설계.
참조 무결성
- 관계 DB에서 관계 테이블간의 무결성
- 외래키는 반드시 NULL이거나 다른 테이블의 기본 키 여야 한다.
탬퍼 프루핑
- 소프트웨어가 불법으로 변경시 정상 수행되지 않게 한다.
Visitor 패턴
- 호스트 객체의 내부 상태에 접근하여 객체에 연산을 추가한다.
FEC
- 송신측이 전송할 프레임에 부가적 정보를 첨가, 수신측에서 이를 이용해 에러 검출 및 정정
BED
- 공격자가 전자메일로 금전 갈취 혹은 비밀 누설
CRC
- 네트워크 등으로 데이터 전송시 데이터에 오류 확인 위한 체크값을 결정하는 방식
자바 String vs string
- String 은 레퍼런스 객체
- string 은 primitive 타입
L2TP
- 데이터링크에서 구현되는 터널링
- L2F와 PPTP가 결합된 프로토콜, VPN 과 ISP가 사용한다.
트로이 목마
- 정상적 프로그램으로 가장해 직접 설치 유도
- 백도어를 만들어 침입 경로를 만들거나 시스템을 파괴
프록시 패턴
- 실제 객체 호출시 중간에 가로채 다른 동작을 수행하는 객체로 변경
HAVING 절
변수는 오버라이딩 되지 않는다.
class Parent {
int x = 100;
Parent() {
this(500);
}
Parent(int x) {
this.x = x;
}
int getX() {
return x;
}
}
class Child extends Parent {
int x = 4000;
Child() {
this(5000);
}
Child(int x) {
this.x = x;
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
System.out.println(obj.getX());
}
}
- Parent의 기본 생성자가 실행되어 Parent 의 x가 500이 되고
- Parent의 getX() 가 실행되어 500이 리턴된다.

조인
세미조인
- 두 테이블을 조인해 한 테이블의 결과만 반환
- 주로 서브쿼리
동등조인
- 동등 조인은 두 테이블 간의 열 값이 같은 경우에만 데이터를 반환합니다. 비교 연산자로 = 만 사용합니다.
세타조인
- 세타 조인은 두 테이블 간의 열 값을 임의의 비교 연산자로 비교하여 데이터를 반환합니다. 동등 조인도 세타 조인의 한 종류입니다.
자연조인
- 자연 조인은 두 테이블 간에 같은 이름을 가진 모든 열을 기반으로 조인을 수행하며, 중복된 열을 제거하여 결과를 반환합니다.