2단원 데이터 입출력 구현
- 데이터베이스 : 공통으로 사용될 데이터를 중복을 배제하여 통합하고, 쉽게 접근하여 처리할 수 있도록 저장장치에 저장하여 항상 사용할 수 있도록 운영하는 운영 데이터
- 데이터베이스 정의 4가지 : 통합된 데이터, 저장된 데이터, 운영데이터, 공용데이터
- 통합된 데이터 : 자료의 중복을 배제한 데이터의 모임
- 저장된 데이터 : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료
- 운영 데이터 : 조직의 고유한 업무를 수행하는데 반드시 필요한 자료
- 공용 데이터 : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
- DBMS : 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어, 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성을 해결하기 위해 제안된 소프트웨어
- DBMS 필수 3가지 기능 : 정의기능, 조작기능, 제어기능
- 논리적 독립성 : 응용프로그램과 데이터베이스를 독립함으로써, 데이터의 논리적 구조를 변경시키더라도 응용 프로그램은 영향을 받지 않음을 의미하는 것
- 물리적 독립성 : 응용프로그램과 보조기억장치 같은 물리적 장치를 독립시킴으로써, 디스크를 추가/변경 하더라도 응용프로그램은 영향으 받지 않는 것
- 스키마 : 데이터베이스의 구조와 전반적인 명세를 기술한 것
- 스키마의 종류 : 외부스키마, 개념스키마, 내부스키마
- 외부스키마 : 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것
- 개념스키마 : 데이터베이스의 전체적인 논리적 구조, 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스
- 내부스키마 : 물리적 저장장치의 입장에서 본 데이터구조, 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현방법 등을 나타냄
- 데이터베이스 설계시 고려사항 6가지 : 무결성, 일관성, 회복성, 보안, 효율성, 데이터베이스 확장
- 무결성 : 삽입,삭제,갱신등의 연산후에도 데이터베이스의 저장된 데이터가 정해진 제약조건을 항상 만족해야함
- 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의의 대한 응답이 처음부터 끝까지 변함없이 일정해야함
- 회복 : 시스템에 장애가 발생했을 때 장애 발생 직전의 상태로 복구할 수 있어야 함
- 보안 : 불법적인 데이터의 노출 또는 변경이나 손실로부터 보호할 수 있어야 함
- 효율성 : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 함
- 데이터베이스 확장 : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함
- 데이터베이스 설계 순서 : 요구조건 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 구현
- 요구조건분석 : 데이터베이스를 사용할 사람들로부터 필요한 용도를 파악하는 것
- 개념적 설계 : 현실세계의 무한성과 계속성을 이해하고, 다른 사람과 통신하기 위하여 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정(개념스키마, 트랜잭션 모델링, E-R모델)
- 논리적 설계 : 현실세계에 발생하는 자료를 특정 DBMS가 지원하는 논리적 자료구조로 변환시키는 과정(논리스키마, 트랜잭션 인터페이스 설계)
- 물리적 설계 : 논리적 구조로 표현된 데이터를 물리적 저장장치에 저장할 수 있는 물리적 구조의 데이터로 변환하는 과정
- 데이터베이스 구현 : 논리적 설계와 물리적 설계에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정
- 데이터 모델 : 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터모델의 구성요소 3가지 : 개체,속성,관계
- 개체 : 데이터베이스에 표현하려는 것, 개념이나 정보단위 같은 현실 세계의 대상체
- 속성 : 데이터베이스를 구성하는 가장 작은 논리적 단위
- 관계 : 개체와 개체사이의 논리적인 연결
- 데이터 모델에 표시할 요소 3가지 : 연산, 구조, 제약조건(연구제)
- 연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 구조 : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
- 제약조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건
- 개념적 데이터 모델 : 현실 세계의 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 변환하는 과정
- 논리적 데이터 모델 : 개념적 구조를 컴퓨터가 이해하고 처리할 수 있도록 컴퓨터 세계의 환경에 맞도록 변환하는 과정
- 디그리, 차수 : 속성의 수
- 기본속성 : 업무 분석을 통해 정의한 속성, 속성 중 가장 많고 일반적임
- 설계속성 : 원래 업무상 존재하지 않고 설계 과정에서 도출해내는 속성
- 파생속성 : 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성
- 종속 관계 :두 개체 사이의 주 종 관계를 표현한 것
- 중복 관계 : 두 개체 사이의 2번이상의 종속 관계가 발생한 관계
- 재귀 관계 : 개체가 자기 자신과 관계를 갖는 것
- 배타 관계 : 개채의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계
- 개체 : E-R다이어그램의 기호중 사각형
- 관계 : E-R다이어그램의 기호중 마름모
- 속성 : E-R다이어그램의 기호중 타원
- 다중값속성 : E-R다이어그램의 기호 중 이중타원
- 기본키속성 : E-R아이어그램의 기호 중 밑줄타원
- 복합 속성 : E-R다이어그램의 기호 중 복수타원
- 관계형데이터베이스 : 2차원적인 표를 이용해서 데이터 상호관계를 정의하는 데이터베이스
- 튜플 : 릴레이션을 구성하는 각각의 행
- 카디널리티 : 튜플의 수
- 도메인 : 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값의 집합
- 릴레이션의 특징 3가지 : 릴레이션에 포함된 튜플은 모두 상이, 튜플사이에는 순서가 없다, 삽입 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다
- 관계형 데이터 모델 : 2차원적인 표를 이용해서 데이터 상호관계를 정의하는 DB구조
- 후보키 : 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 후보키의 속성 2가지 : 유일성, 최소성
- 유일성 : 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
- 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함
- 기본키 : 후보키 중에서 특별히 선정된 주키이다. 중복된 값을 가질 수 없고 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.
- 대체키 : 후보키가 둘 이상일때 기본키를 제외한 나머지
- 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키, 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족X
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 무결성 : 데이터베이스에 저장된 값과 현실 세계의 실제값이 일치하는 속성
- 개체 무결성 : 기본 테이블의 기본키를 구성하는 어떤 속성도 NULL값이나 중복값을 가질 수 없다는 규정
- 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
- 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정
- NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
- 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성들값이 서로 달라야 한다는 규정
- 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
- 관계 무결성 : 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관게에 대한 적절성 여부를 지정한 규정
- 관계 대수 : 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 순수관계연산자의 종류 4가지 : Select, Project, Join, Division
- Select : 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산의 종류와 기호 σ
- Project : 주어진 릴레이션에서 속성리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산, 중복이 발생하면 중복이 제거되는 종류와 그 기호 π
- Join : 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산의 종류와 그 기호▷◁
- Division : R의 속성이 S의 속성값을 모두 가진 튜플에서 s가 가진 속성을 제외한 속성만을 구하는 연산 ÷
- 일반집합연산자의 종류 4가지 : 합집합, 교집합, 차집합, 교차곱
- 합집합(UNION) : 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플들을 제거되는 연산 ∪
- 교집합(INTERSECTION) : 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산 ∩
- 차집합(DIFFERENCE) : 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산 -
- 교차곱(CARTESIAN PRODUCT) : 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산 ×
- 관계해석 : 관계 데이터의 연산을 표현하는 방법, 원하는정보가 무엇이라는 것만 정의하는 비절차적특성
- 이상 : 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
- 삽입 이상 : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상 : 테이블에 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄삭제가 발생하는 현상
- 갱신 이상 : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
- 함수적 종속 : 속성 x의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때를 의미하는 것,X->Y Y는 X에 함수적 종속 또는 x가 y를 함수적으로 결정한다(학번을 알면 이름,나이 알수있음, 학번->이름, 학번->나이)
- 완전 함수적 종속(full) : 어떤 테이블 R에서 속성 Y가 다른 속성 집합 x전체에 대해 함수적 종속이면서 속성 집합X의 어떠한 진부분집합Z에도 함수적 종속이 아닐때 속성 Y는 속성 집합x에 완전함수적종속이라고 한다.
- 부분 함수적 종속(patial) : 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X전체에 대해 함수적 종속이면서 속성 집합X의 임으이의 진부분집합에 대해 함수적 종속일때, 속성 Y는 속성 집합x에 부분함수적 종속이라고 한다.(속성 1개만 가지고도 속성1개결정)
- 이행적 함수 종속(transitive) : A->B 이고B->C일때 A->C 만족하는 관계
- 정규화 : 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해 하는 과정
- 제 1 정규화 : 모든 도메인이 원자값
- 제 2 정규화 : 부분적 함수 종속 제거
- 제 3 정규화 : 이행적 함수 종속 제거
- BCNF : 결정자이면서 후보카가 아닌것 제거
- 제 4 정규화 : 다치종속제거
- 제 5 정규화 : 조인 종속성 이용
- 반정규화 : 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위
- 반정규화의 방법 4가지 : 테이블 통합, 테이블 분리, 중복 테이블추가, 중복 속성 추가
- 테이블통합 : 2개의 테이블이 조인되어 사용되는 경우가 많은 경우 성능 향상을 위해 아예 하나의 테이블로 만들어 사용하는 것
- 수평 분할 : 레코드를 기준으로 테이블을 분할하는 것, 레코드 별로 사용빈도의 차이가 큰 경우 사용빈도에 따라 테이블을 분할
- 수직 분할 : 하나의 테이블에 속성이 너무 많은 경우 속성을 기준으로 테이블을 분할하는 것
- 중복 테이블 추가 : 여러 테이블에서 데이터를 추출해서 사용해야 할 경우, 다른 서버에 저장된 테이블을 이용해야 하는 경우
- 집계 테이블 추가 : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거를 설정하여 사용하는 것
- 진행테이블추가 : 이력 관리 등의 목적으로추가하는 테이블
- 특정부분만을 포함하는 테이블 추가 : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성
- 중복 속성 추가 : 조인이 자주 발생하는 경우, 접근 경로가 복잡한 속성인 경우, 액세스의 조건으로 자주 사용되는 속성인 경우
- 시스템 카탈로그(데이터사전) : 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 메타 데이터 : 시스템 카탈로그에 저장된 정보
- 데이터 디렉터리 : 데이터 사전에 수록된 데이터에 접근하는 데 필요한 정보를 관리 유지하는 시스템(시스템만접근)
- 트랜잭션 : 데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들
- 트랜잭션의 특징 4가지 : 원자성, 일관성, 독립성, 영속성(독일영국일본원자폭탄)
- 원자성 : 트랜잭션의 연산은 데이터베이스의 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(rollback)되어야 하는 트랜잭션의 특성
- 일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이스 상태로 변환하는 것
- 독립성 : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없음을 의미하는 것
- 영속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함
- CRUD분석 : 프로세스와 테이블 간에 CRUD 매트릭스를 만들어서 트랜잭션을 분석하는 것(C>D>U>R)
- 트랜잭션 분석 : CRUD매트릭스를 기반으로 테이블에 발생하는 트랜잭션 양을 분석하여 테이블에 저장되는 데이터의 양을 유추하고 이를 근거로 DB를 최적화 하는 것
- 인덱스 : 데이터 레코드를 빠르게 접근하기 위해 <키값, 포인터> 쌍으로 구성되는 데이터 구조
- 인덱스의 종류 5가지 : 트리기반, 비트맵, 함수기반, 비트맵 조인, 도메인
- 트리기반인덱스 : 인덱스를 저장하는 블록들이 트리구조를 이루고 있는 것
- 비트맵인덱스 : 인덱스 컬럼의 데이터를 비트 값인 0또는1로 변환하여 인덱스 키로 사용하는 방법
- 함수 기반 인덱스 : 컬럼의 값 대신 컬럼에 특정 함수나 수식을 적용하여 산출된 값을 사용하는 것
- 비트맵 조인 인덱스 : 다수의 조인된 객체로 구성된 인덱스
- 도메인 인덱스 : 개발자가 필요한 인덱스를 직접 만들어 사용하는 것
- 클러스터드 인덱스 : 인덱스 키의 순서에 따라 데이터가 정렬되어 저장되는 방식, 실제 데이터가 순서대로 저장되어 있어 원하는 데이터를 빠르게 찾을 수 있음
- 논클러스터드 인덱스 : 인덱스의 키값만 정렬되어 있고 실제 데이터는 정렬되어 있지 않은 방식. 삽입,삭제, 발생 시 순서를 유지하기 위해 데이터를 재정렬해야 함
- 뷰 : 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본테이블로부터 유도된 가상 테이블
- 클러스터 : 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
- 파티션 : 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것
- 파티션의 종류 3가지 : 범위분할, 해쉬분할, 조합분할
- 범위분할 : 지정한 열의 값을 기준으로 분할 하는 것(일별, 월별, 분기별)
- 해시분할 : 해시함수를 적용한 결과 값에 따라 데이터를 분할하고, 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것
- 조합분할 : 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
- 분산 데이터베이스 : 논리적으로는 하나의 시스템에 속하지만 물리적으로는 네트워크를 통해 연결된 여러개의 사이트에 분산된 데이터베이스
- 분산 데이터베이스의 목표 4가지 : 위치 투명성, 중복 투명성, 병행 투명성, 장애 투명성
- 위치 투명성 : 액세스 하려는 데이터베이스의 설계 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 액세스 할 수 있음을 의미
- 중복 투명성 : 동일데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하는 것을 의미
- 병행 투명성 : 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않는 것을 의미
- 장애 투명성 : 트랜잭션,DBMS,네트워크,컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리하는 것
- 데이터베이스 이중화 : 시스템 오류로 인한 데이터베이스 서비스 중단이나 물리적 손상 발생 시 이를 복구하기 위해 동일한 데이터베이스를 복제하여 관리하는 것 (분류:eager,lazy , 구성방법 : 활동-대기, 활동-활동)
- Eager : 트랜잭션 수행 중 데이터 변경이 발생하면 이중화된 모든 데이터베이스에 즉시 전달하여 변경 내용이 즉시 적용되도록 하는 기법
- lazy : 트랜잭션의 수행이 종료되면 변경 사실을 새로운 트랜젝션에 작성하여 각 데이터베이스에 전달되는 기법
- 활동-대기 방법 : 한 db가 활성 상태로 서비스하고 있으면 다른 db는 대기하고 있다가 활성db에 장애가 발생하면 대기 상태에 있던 db가 서비스를 대신 수행하는 것 (쉬워서 많은 기업에서 이용)
- 활동-활동 방법 : 두개의 db가 서로다른 서비스를 제공하다가 둘 중 한쪽 db에 문제가 발생하면 나머지 다른 db가 서비스를 제공하는 것 (구성방법및설정복잡)
- 서버 클러스터링 : 두 대 이상의 서버를 하나의 서버처럼 운영하는 기술(종류:고가용성, 병렬처리)
- 고가용성 클러스터링 : 하나의 서버에 장애가 발생하면 다른 서버가 받아 처리하여 서비스 중단을 방지하는 방식
- 병렬처리 클러스터링 : 전체 처리율을 높이기 위해 하나의 작업을 여러개의 서버에서 분산하여 처리하는 방식
- RTO : 비상사태 또는 업무 중단시점으로부터 복구되어 가동될때까지의 소요시간
- RPO : 비상사태 또는 업무 중단시점으로부터 데이터를 복구할 수 있는 기준점
- 암호화 : 데이터를 보낼 때 송신자가 지정한 수신자 이외에는 그 내용을 알수 없도록 평문을 암호화하는 것
- 접근통제 : 데이터가 저장된 객체와 이를 사용하려는 주체 사이의 정보의 흐름을 제한하는 것
- 임의 접근 통제(DAC) : 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식, 데이터 소유자가 접근통제권한을 지정하고 제어함
- 강제 접근 통제(MAC) : 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식, 시스템이 접근통제 권한을 지정
- 역할기반 접근 통제(RBAC) : 사용자의 역할에 따라 접근 권한을 부여하는 방식, 중앙관리자가 접근통제 권한을 지정
- 접근통제 3 요소 : 접근통제 정책, 접근통제 매커니즘, 접근 통제 보안모델
- 접근 통제 정책 : 어떤 주체가(WHO)가 언제(WHEN) 어디서(WHERE) 어떤객체(WHAT)에게 ..
- IBP : 최소 권한 정책으로, 단일 주체에게 하나의 객체에 대한 허가를 부여함(신분기반정책)
- GBP : 복수 주체에 하나의 객체에 대한 허가를 부여함(신분기반정책)
- MLP : 사용자나 객체별로 지정된 기밀 분류에 따른 정책(규칙기반정책->주체권한에 근거)
- CBP : 집단별로 지정된 기밀 허가에 따른 정책 (규칙기반정책)
- 역할기반정책 : GBP의 변형된 정책, 주체가 맡은 역할에 근거
- 접근 통제 정책 : 어떤 주체가(WHO)가 언제(WHEN) 어디서(WHERE) 어떤객체(WHAT)에게 ..
- 접근통제 매커니즘 : 정의된 접근통제를 구현하는 기술적인 방법
- 접근통제목록, 능력리스트, 보안등급, 패스워드, 암호화
- 접근통제 보안모델 : 보안 정책을 구현하기 위해 정형화된 모델
- 기밀성 모델 : 군사목적으로 개발된 최초의 수학적 모델
- 무결성 모델 : 기밀성모델에서 정보변경을 방지하기 위한 모델
- 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨것(접근통제행렬)
- 접근 통제 조건 : 접근통제 매커니즘의 취약점을 보안하기 위해 적용할 수 있는 조건
- 값종속통제, 다중사용자통제, 컨텍스트 기반 통제
- 로그 : 데이터베이스의 처리 내용이나 이용상황등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
- 스토리지 : 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
- DAS : 서버와 저장장치를 전용 케이블로 직접 연결하는 방식, 저장장치를 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬운 것
- NAS : 서버와 저장장치를 네트워크를 통해 연결하는 방식, 장소에 구애받지 않고 저장장치에 쉽게 접근할 수 있음
- SAN : DAS의 빠른 처리와 NAS의 파일 공유 장점을 혼합한 방식으로, ,서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성하는 방식
- 물리 데이터 모델 품질 기준 6가지 : 정확성,완전성, 준거성, 최신성, 일관성, 활용성
- 정확성 : 데이터 모델이 요구사항이나 업무, 규칙, 표기법에 따라 정확하게 표현된 것
- 완전성 : 데이터 모델이 데이터 모델의 구성요소를 누락없이 정의하고 요구사항이나 업무 영역을 누락없이 반영한 것
- 준거성 : 데이터 모델이 데이터 표준, 표준화 규칙, 법적 요건등을 정확하게 준수한 것
- 최신성 : 데이터 모델이 최근의 이슈나 현행 시스템을 반영하고 있는 것
- 일관성 : 데이터 모델이 표현상의 일관성을 유지하고 있는 것
- 활용성 : 작성된 모델과 설명을 사용자가 충분히 이해할 수 있고, 업무 변화에 따른 데이터 구조의 변경이 최소화 될 수 있는 것
- 자료구조 : 자료를 기억장치의 공간 내에 저장하는 방법과 자료 간의 관계, 처리방법 등을 연구 분석하는 것
- 배열 : 크기와 형이 동일한 자료를 순서대로 나열된 자료의 집합
- 연속리스트 : 연속되는 기억장소에 저장되는 자료구조, 삽입 삭제시 자료의 이동 필요
- 연결리스트 : 자료들을 임의의 기억공간에 기억시키되, 노드의 포인터 부분을 이용하여 서로 연결시킨 자료구조, 접근속도가 느리고 기억공간의 효율이 좋지 않다.
- 스택 : 한쪽끝으로만 자료의 삽입 삭제 이루어짐, 후입선출
- 큐 : 리스트의 한쪽 끝에선 삽입, 다른쪽에서는 삭제가 이루어지는
- 그래프 : 정점과 간선의 두 집합으로 이루어진 자료구조
- 방향 그래프의 최대 간선 수 공식 : n(n-1)
- 무방향그래프의 최대 간선 수 공식 : n(n-1)/2
- 트리 : 정점과 선분을 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태
- 깊이 : Tree에서 노드가 가질 수 있는 최대의 레벨
- 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수
- 이진 트리 : 차수가 2 이하인 노드들로 구성된 트리
- 트리 운행법 3가지 : preorder(가왼오), inorder(왼가오), postorder(왼오가)
- 삽입정렬 : 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 방식(인덱스 1부터시작 앞으로검사 <-)
- 선택정렬 : n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식(0부터시작 뒤로검사 ->)
- 버블정렬 : 인접한 2개의 레코드 비교
- 쉘 정렬 : 매개변수의 값으로 서브파일을 구성하고, 각 서브파일을 삽입정렬 방식으로 순서배열하는 정렬방식
- 기수 정렬 : 큐를 이용하여 자릿수 별로 정렬하는 방식
- 퀵 정렬 : 키를 기준으로 작은 값은 왼쪽, 큰값은 오른쪽
- 합병 정렬 : 두개의파일을 하나의 파일로 합병
9단원 소프트웨어 보안 구축
- Secure SDLC : SDLC(소프트웨어 개발 수명 주기)에 보안강화를 위한 프로세스를 포함한 것
- Secrue SDLC의 대표적인 방법론 3가지 : CLASP, SDL, Seven Tocuh Points
- CLASP : SDLC의 초기단계에서 보안을 강화하기 위해 개발된 방법론
- SDL : 마이크로소프트사에서 안전한 소프트웨어 개발을 위해 기존의 SDLC를 개선한 방법론
- Seven Touchpoints : 소프트웨어 보안의 모범사례를 SDLC에 통합한 방법론
- 소프트웨어 개발 보안 요소 4가지 : 기밀성, 무결성, 가용성, 인증(보안3대요소:기밀,무결,가용)
- 기밀성 : 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용되는 것
- 무결성 : 시스탬 내의 정보는 오직 인가된 사용자만 수정할 수 있음을 의미
- 가용성 : 인가 받은 사용자는 시스템내의 정보와 자원을 언제라도 사용할 수 있는 것
- 인증 : 시스탬 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지를 확인하는 모든 행위
- Secrue Coding : 구현 단계에서 발생할 수 있는 보안 취약점들을 최소화 하기 위해 보안 요소들을 고려하며 코딩하는 것
- 세션통제 : 세션의 연결과 연결로 인해 발생하는 정보를 관리
- SQL 삽입 : 웹 응용프로그램에 sql을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고, 관리자 인증을 우회하는 보안 약점
- 경로조작 및 자원삽입 : 데이터 입출력 경로를 조작하여 서버 자원을 수정 삭제할 수 있는 보안 약점
- 크로스사이트스크립팅(XXS) : 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취하거나, 비정상적인 기능 수행을 유발하는 보안약점
- 운영체제 명령어 삽입 : 외부 입력값을 통해 시스템 명령어의 실행을 유도함으로써 권한을 탈취하거나 시스템 장애를 유발하는 보안 약점
- 메모리 버퍼 오버플로우 : 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생하는 보안 약점
- 부적절한 인가 : 접근제어 기능이 없는 실행경로를 통해 정보 또는 권한을 탈취할 수 있는 것
- 취약한 암호 알고리즘 사용 : 암호화된 환경설정 파일을 해독하여 비밀번호 등의 중요 정보를 탈취할 수 있는 것
- 하드코드 된 암호화 키 : 암호화된 키도 하드코드된 경우 유출 시 역계산 또는 무차별 대입 공격에 의해 탈취 될 수 있음
- 널 포인터 역참조 : 널 포인터가 가르키는 메모리의 위치에 값을 저장할때 발생하는 보안 약점
- 스택가드 : 주소가 저장되는 스택에서 발생하는 보안 약점을 막는 기술
- 접근 제어자 : 외부로부터 접근을 제어하기 위해 사용되는 예약어
- 암호화 : 중요정보를 보호하기 위해 평문을 암호화된 문장으로 만드는 절차 또는 방법
- 개인키 암호화 기법 : 동일한 키로 데이터를 암호화하고 복호화하는 암호화 기법
- 공개키 암호화 기법 : 암호화할때 사용하는 공개키는 공개하고, 비밀키는 관리자가 비밀리에 관리하는 암호화 기법
- 양방향 알고리즘 종류(개인키, 공개키)
- SEED : 1999년 한국인터넷진흥원에서 개발한 블록 알고리즘
- ARIA : 2004년 국가정보원과 산학연협회가 개발한 블록 알고리즘
- DES : 1975년 미국 NBS에서 발표한 개인키 암호화 알고리즘, 블록크기는 64비트, 키길이는 56비트 16회의 라운드 수행
- AES : 2001년 미국 표준 기술 연구소에서 발표한 개인키 암호화 알고리즘 DES의 한계를 느낀 NIST에서 공모한 후 발표
- RSA : 1978년 MIT의 라이베스트, 샤미르, 애들먼에 의해 제안된 공개키 암호화 알고리즘
- IDEA : 대칭키 암호화 알고리즘, Xuejia Lai와 James Messey가 초기에 제시한 블록암호화 알고리즘 64bit암호문(스위스 DES대체)
- Skipjack : 미국가안보국(NSA)에서 개발한 Clipper 칩에 내장된 블록알고리즘, 전화기와 같은 음성을 암호화하는데 주로 사용
- 해시 : 임의의 길이나 입력데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
- SHA시리즈 : 1993년 미국국가안보국(NSA)이 설계, 미국 NIST에 의해 발표(SHA-0이후 ~SHA-512)
- MD5 : 1991년 R.Rivest가 MD4를 대체하기 위해 고안한 암호화 해시 함수
- N-NASH:1989년 일본의 전신전화주식회사(NTT)에서 발표한 암호화 해시 함수
- SNEFRU : 1990년 R.C.Merkle가 발표한 해시 함수
- DOS(서비스 거부 공격) : 대량의 데이터를 한곳의 서버에 집중적으로 전송함으로써, 서버의 정상적인 기능을 방해하는 것
- Ping of Death : 패킷의 크기를 인터넷 프로토콜 허용범위 이상으로 전송하여 공격대상의 네트워크를 마비시키는 서비스 거부 공격 방법
- 스머핑 : ip나 icmp의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크를 불능 상태로 만드는 공격 방법
- SYN Flooding : 3-way-handshake 과정을 의도적으로 중단시킴으로써 서버가 대기 상태에 놓여 정상적인 서비스를 수행하지 못하게 하는 공격 방법
- Tear Drop : Offset 값을 변경시켜 수신 측에서 패킷을 제조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격방법
- Land Attack : 패킷을 전송할 때 송신 ip주소와 수신 ip주소를 모두 공격 대상의 ip주소로 하여 자신에 대해 무한히 응답하게 하는 공격
- DDOS(분산 서비스 거부공격) : 여러곳에 분산된 공격지점에서 한곳의 서버에 대해 분산 서비스 공격을 수행하는 것
- TFN : UDP Flooding 뿐만 아니라 TCP SYN Flood 공격, icmp 응답 요청, 스머핑 공격을 수행하는 공격용 툴
- 세션 하이재킹 : 상호 인증을 거친 후 접속해 있는 서버와 서로 접속되어 클라이언트 사이에서 세션 정보를 가로채는 공격 기법
- ARP 스푸핑 : ARP(IP->물리적주소로 바꾸는 프로토콜)의 취약점을 이용한 공격기법으로 자신의 물리적 주소를 공격대상의 것으로 변조하여 공격 대상에게 도달해야 하는 데이터 패킷을 가로채는 것
- 스미싱 : 문자 메시지를 이용해 사용자의 개인신용정보를 빼내는 수법
- 스피어 피싱 : 특정 대상을 선정한 후 이메일로 위장한 메일을 지속적으로 발송하여 개인정보를 탈취하는 것
- 큐싱 : QR코드를 통해 악성앱의 다운로드를 유도하거나 악성 프로그램을 설치하도록 하는 금융사기 기법
- 스니핑 : 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형
- 좀비 PC : 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종하도록 만들어진 컴퓨터
- C&C 서버 : 해커가 원격자에게 감염된 좀비 PC에 명령을 내리고 악성코드를 제어하기 위한 용도로 사용하는 서버
- 봇넷 : 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터들이 네트워크로 연결된 형태
- 웜 : 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임으로써 결국 시스템을 다운시키는 바이러스
- 제로데이공격 : 공격의 신속성
- 키로거공격 : 사용자의 키보드 움직임 탐지
- 랜섬웨어 : 문서나 파일등을 암호화 하고 금전 요구
- 백도어 : 시스템 설계자가 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀통로
- 트로이 목마 : 정상으로 위장하여 숨어 있다가 해당 프로그램이 동작할때 활성화 되어 부작용 일으킴
- 워터링홀 : 특정인에 대해 표적공격을 목적으로 특정인이 자주 방문하는 웹사이트에 악성코드를 심거나 악성코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격기법
- 인증 : 로그인 요청한 사용자의 정보를 확인하고 접근 권한을 검증하는 보안 절차
- 보안 아키텍쳐 : 정보시스템의 무결성, 가용성, 기밀성을 확보하기 위해 보안요소 및 보안 체계를 식별하고 이들간의 관계를 정의한 구조
- 보안 프레임워크 : 안전한 정보시스템 환경을 유지하고 보안 수준을 향상시키기 위한 체계
- 로그 : 시스템 사용에 대한 모든 내역을 기록해 놓은 것
- 방화벽 : 기업이나 조직 내부의 네트워크와 인터넷 간의 전송되는 정보를 선별하여 수용,거부,수정하는 기능을 가진 침입차단시스템
- 칩입탐지시스템(IDS) : 컴퓨터 시스템의 비정상적인 사용,오용,남용 등을 실시간으로 탐지하는 시스템
- 침입방지시스템(IPS) : 비정상적인 트래픽을 능동적으로 차단하고 격리하는 등의 방어조치를 취하는 보안 솔루션
- 데이터유출방지(DLP, Data Loss Prevention) : 내부 정보의 외부 유출을 방지하는 보안 솔루션 사내 직원이 사용하는 PC와 네트워크 상의 모든 정보를 통제하여 외부로의 유출을 사전에 막는 것
- 웹 방화벽(WAF) : 웹 서버에 특화된 방화벽
- VPN : 공중 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용회선을 사용하는 것처럼 해주는 보안 솔루션
- NAC : 네트워크에 접속하는 내부 PC의 MAC주소를 IP관리 시스템에 등록한 후 일괄된 보안 관리 기능을 제공하는 보안 솔루션
- 임시 키 무결성 프로토콜(TKIP, Temporal Key Integrity Protocol)
- 무선 네트워크에서 사용되는 암호화 프로토콜
- WEP의 보안 취약점 보완
- 패킷마다 임시키를 생성
- 현재는 보안성이 취약하다는 이유로 더 이상 권장되지 않으며, AES암호화프로토콜 사용
- 정보보호관리체계(ISMS, Information Security Management System)
- 정보보호를 위한 체계적이고 지속적인 접근 방법을 제공하는 경영 체제
- 정보 자산의 기밀성 무결성 가용성을 보호하고 위협으로부터 예방하는 프레임워크
- 국제 표준인 ISO/IEC 27001을 기반으로 구축
- 정보보호를 위한 정책,절차,기술,인력 등을 포함
- 사회공학 : 사람들의 심리와 행동양식을 교모하게 이용해서 원하는 정보를 얻는 공격기법
- 다크데이터 : 정보를 수집한 후 저장만 하고 분석에 활용하고 있지 않은 다량의 데이터
- SIEM (Security Information and Event Management) : 다양한 보안 장비와 서버, 네트워크 장비 등으로부터 보안 로그와 이벤트 정보를 수집한 후 정보 간의 연관성을 분석하여 위협상황을 인지하고, 침해사고에 신속하게 대응하는 보안 솔루션이다. 특히, 기업에서 생성되는 테라바이트급의 정형 비정형 데이터와 빅데이터 기반의 로그분석을 통하여 보안의 위협징후를 빠르게 판단대응할 수 있도록 해준다.(기업정보에 대한 종합 관제 솔루션)
- SEM(Security Event Management) : 보안 이벤트를 수집,분석하고, 관련된 정보를 통합하여 보안 위협을 탐지하고 대응하는 솔루션(관제종합관리시스템)
- ESM(Enterprise Security Management) : 기업의 전체적인 보안 상태를 관리하고, 위협을 탐지하고 대응하기 위한 종합적인 보안 관리 솔루션으로 SEM과 SIEM을 포함
- SSO(Single Sign-On) : 커버로스에서 사용되는 기술로 한 번의 인증과정으로 여러 컴퓨터상의 자원을 이용할 수 있도록 해주는 인증기술이다.
- 3A : 인증, 권한부여, 계졍관리
- 인증(Authentication) : 접근을 시도하는 가입자 또는 단말에 대한 식별 및 검증
- 권한부여(Authorization) : 검증된 가입자나 단말에게 어떤 수준의 권한과 서비스를 이용
- 계정관리(Accounting) : 리소스 사용에 대한 정보를 수집하고 관리하는 서비스
11단원 응용 SW 기초 기술 활용
- 운영체제 : 컴퓨터시스템들의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러프로그램의 모임
- 처리능력 : 일정시간내에 시스템이 처리하는 일의 양
- 반환시간 : 시스템에 작업을 의뢰한 시간부터 처리가 완료될때까지 걸린 시간
- 사용가능도 : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도 : 시스템이 주어진 문제를 정확하게 해결하는 정도
- 운영체제의 종류
- Windows의 주요특징
- GUI : 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
- 선점형 멀티태스킹 : 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용시간을 제어하는 것
- PNP : 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 것
- OLE : 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능
- UNIX : 벨 연구소, MIT 등이 공동개발한 운영체제이고 시분할 시스템을 위해 설계된 대화식 운영체제
- 커널 : 하드웨어를 보호, 프로그램과 하드웨어 사이의 인터페이스의 역할을 담당
- 쉘 : 시스템과 사용자 간의 인터페이스를 담당
- 유틸리티 프로그램 : 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용
- LINUX : 리누스 토발즈가 UNIX를 기반으로 개발 한 운영체제
- MAC OS : 애플사가 UNIX를 기반으로 개발한 운영체제
- 안드로이드 : 구글사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
- IOS : 애플사에서 개발한 유닉스 기반의 모바일 운영체제
- Windows의 주요특징
- 기억장치의 관리전력 3가지 : 반입, 배치, 교체
- 반입 : 보조 기억장치에 보관중인 프로그램이나 미디어를 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 요구반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의참조를 요구할 때 적재하는 방법
- 예상반입 : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
- 배치 : 새로반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 방법
- 최초적합(First fit) : 빈 영역 중에서 첫번째 분할영역에 배치시키는 방법
- 최적적합(Best fit) : 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치시키는 방법
- 최악적합(Worst fit) : 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
- 교체 : 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
- OPT(사용하지 않을 페이지), FIFO(오랫동안), LRU(가장오랫동안참조되지않은), LFU(참조횟수가장작은)
- 반입 : 보조 기억장치에 보관중인 프로그램이나 미디어를 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 주기억장치 할당 : 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용
- 연속할당기법 : 프로그램을 주기억장치에 연속으로 할당하는 기법(단일분할할당기법,다중분할할당기법)
- 단일 분할 할당기법 : 한 순간에는 오직 한명의 사용자 만이 주기억장치의 사용자 영역을 사용하는 기법
- 오버레이 기법 : 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
- 스와핑 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
- 단일 분할 할당기법 : 한 순간에는 오직 한명의 사용자 만이 주기억장치의 사용자 영역을 사용하는 기법
- 분산할당기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는기법(페이징, 세그먼테이션)
- 연속할당기법 : 프로그램을 주기억장치에 연속으로 할당하는 기법(단일분할할당기법,다중분할할당기법)
- 가상기억장치 : 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 페이징기법 : 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 동일하게 주기억장치의 영역에 적재시켜 실행하는 기법
- 세그멘테이션기법 : 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
- 페이지교체알고리즘 : 페이징기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시(페이지 부재) 어떤 페이지 프레임을 선택하여 교체할것인지를 결정하는 기법
- 페이지 : 가상 메모리를 일정한 크기로 나눈 블록
- 프레임 : 물리 메모리를 일정한 크기로 나눈 블록
- OPT : 가장 오랫동안 사용되지 않을 페이지 교체
- FIFO : 가장먼저들어와서 오랫동안 있었던 페이지 교체
- LRU(Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지 교체
- LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지를 교체하는 기법
- SCR : 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법 즉, FIFO의 단점을 보완
- Locality : 프로세스가 실행되는 동안 주기억장치를 참조할때 일부 페이지만 집중적으로 참조하는 성질
- 시간 구역성 : 하나의 페이지를 일정시간동안 집중적으로 액세스하는 현상
- 공간 구역성 : 일정 위치의 페이지를 집중적으로 액세스하려는 현상
- 워킹 셋(working set) : 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- 스래싱 : 프로세스의 처리시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 프로세스 : 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 실행중인 프로그램
- pcb : 운영체제가 프로세스의 정보를 저장해 놓는 곳
- 프로세스 상태 전이 : 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것
- 제출 : 작업을 시스템에 제줄한 상태
- 접수 : 디스크의 할당 위치에 저장된 상태
- 준비 : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행 : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
- 대기 : 입출력 처리가 완료될때까지 대기하고 있는 상태
- 종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해체된 상태
- Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행상태로 전이되는 과정
- Wake up : 입 출력 작업이 완료되어 프로세스가 대기상태에서 준비상태로 전이되는 과정
- Spooling : 입출력장치의 처리속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력 장치에 보내지 않고, 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
- 프로세스 상태 전이 : 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것
- 스레드 : 시스템의 여러 자원을 할당 받아 실행되는 프로그램의 단위, 프로세스 내에서의 작업 단위
- 스케줄링 : 시스템의 여러자원을 해당 프로세스에게 할당하는 작업
- 비선점 스케줄링 : 이미 할당된 cpu를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 선점 스케줄링 : 이미 할당된 cpu를 다른 프로세스가 강제로 빼앗아 사용할 수 있는 스케줄링 기법
- 스케줄링 알고리즘
- FCFS : 준비상태 큐에 도착한 순서에 따라 차례로 CPU할당(비선점)
- SJF : 준비상태 큐에 실행시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법(비선점)
- HRN : 대기시간과 서비스 시간을 이용하는 기법(SJF의 약점인 긴작업과 짧은 작업 사이의 불평등을 보완)(비선점)
- 우선순위 계산식 : (대기시간+서비스시간)/서비스시간 = 시스템응답시간
- SRT : 최단잔여시간을 우선으로하는스케줄링(Shortest Remaining Time), 진행중인 프로세스가 있어도, 최단 잔여시간인 프로세스를 위해 sleep 시키고 짧은 프로세스 먼저 실행 선점형 SJF스케줄링이라고 불린다.(선점형)
- RR(Round Robin) : 한 프로세스가 할당받은 시간(time slice) 동안작업을 하다가 작업을 완료하지 못하면 ready queue의 맨 뒤로 가서 자기 차례를 기다리는 방식(선점형)
- 환경변수 : 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
- set,env,printenv,setenv : WINDOWS에서 모든 환경변수와 값을 출력하는 명렁어
- $HOME: 유(리)눅스에서 사용자의 홈 디렉터리를 보는 명령어
- $PATH : 유(리)눅스에서 실행파일을 찾는 경로
- $PWD : 유(리)눅스에서 현재 작업하는 디렉터리를 보는 명령어
- $USER : 유(리)눅스에서 현재 사용자 이름
- FIND : WINDOWS에서 파일에서 문자열을 찾는 명령어
- cat : 유(리)눅스에서 파일 내용을 화면에 표시하는 명령어
- chmod : 유(리)눅스에서 파일의 보호모드를 설정하여 파일의 사용허가를 지정하는 명령어
- 소유자, 그룹, 기타사용자
- r(읽기) : 4, w(쓰기) : 2, x(실행) : 1
- fork : 유(리)눅스에서 새로운 프로세스를 생성
- ls : 유(리)눅스에서 현재 디렉터리의 파일 목록을 표시
- mkdir : 디렉터리를 생성하는 명령어
- 인터넷 : 전세계 수많은 컴퓨터와 네트워크들이 연결된 광범위한 컴퓨터 통신망
- ip주소 : 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
- 서브네팅 : 할당된 네트워크 주소를 다시 여러개의 작은 네트워크로 나누어 사용하는 것
- ipv6 : 16비트씩 8부분, 총128비트
- ipv4 : 8비트씩 4부분, 총 32비트
- ipv6의 3가지 주소체계 : 유니캐스트, 멀티캐스트, 애니캐스트
- 유니캐스트 : 단일 송신자 단일 수신자
- 멀티캐스트 : 단일송신자 다중 수신자
- 애니캐스트 : 단일송신자와 가장 가까이 있는 단일 수신자 간 통신
- 도메인 네임 : 숫자로된 ip주소를 사람이 이해하기 쉬운 문자 형태로 표현
- dns : 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 ip주소로 변환하는 역할을 하는 시스템
- osi 참조모델 : 다른 시스템 간의 원활한 통신을 위해 iso에서 제안한 통신 규약
- 물리 계층 : 실제 접속과 절단 등 기계적,전기적,기능적,절차적 특성에 대한 규칙, 발신할 데이터를 디지털 신호에서 전기 신호로 바꾸고, 수신한 데이터를 전기 신호에서 디지털 신호로 바꾸는 계층
- 장비 : 케이블, 리피터(증폭), 허브(여러대 컴퓨터 연결)
- 데이터 링크 계층(오류, 인접한) : 시스템간 연결설정과 유지 및 종료를 담당하는 계층, 노드 대 노드 간 안전하게 데이터가 전송되도록하고, 물리계층에서 담당하지 않는 흐름제어 및 오류수정 기능을 담당하는 계층(전송단위:프레임)
- 주요프로토콜 : CSMA/CD, LLC, Token Ring, HDLC(점대점,다중점통신에사용 프로토콜), PPP(통신 노드간 연결을 위한 프로토콜), Frame Relay(프레임 간 중계기능), ATM(고정크기단위전송 비동기식전송기술)
- 데이터 전송단위: 프레임
- 장비 : 브리지(lan과lan연결),스위치,L2스위치(목적지 MAC주소를 기반으로 빠르게 데이터를 전송하는 장비)
- L2스위치 : Store and Forwarding(데이터를 전부받은후 처리), Cut Through(목적지 주소만 확인 후 바로전송), Fragment Frame(앞 64비트만 읽어 에러처리후 전송)
- 네트워크 계층 : 개방 시스템들 간의 신뢰성있고 효율적인 전송을 위한 시스템 간 연결설정과 유지 및 종료를 담당, 다중 네트워크 링크에서 패킷을 발신지로부터 목적지까지 효과적으로전달
- 주요프로토콜 : IP, ICMP, IGMP, ARP 등
- 데이터 전송단위 : 패킷
- 장비 : 라우터(최적경로) ,L3(3계층에서 동작하는 스위치 L2스위치기능+L3라우터기능)
- 전송 계층 : 종단시스템(END-TO-END)간에 투명한 데이터 전송을 가능하게 하는 계층
- 주요프로토콜 :TCP,UDP
- 데이터 전송단위 : 세그먼트, 데이터그램
- 장비 : 게이트웨이,L4스위치(네트워크 단위를 연결하는 장비)
- 세션 계층 : 송수신측간의 관련성을 유지하고 대화제어를 담당하는 계층
- 주요프로토콜 : SSL/TLS, SSH,RPC(원격프로시저호출)
- 표현 계층 : 응용계층으로 받은 데이터를 세션계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션계층에서 받은 데이터는 응용계층에 맞게 변환하는 계층
- 주요프로토콜 : JPEG(이미지를 위한 프로토콜), MPEG(멀티미디어를 위한 표준규격), ASCII
- 응용 계층 : 사용자가 OSI환경에 접근할 수 있도록 서비스를 제공하는 기술
- 주요프로토콜 : DHCP, DNS, FTP(파일전송), HTTP
- 물리 계층 : 실제 접속과 절단 등 기계적,전기적,기능적,절차적 특성에 대한 규칙, 발신할 데이터를 디지털 신호에서 전기 신호로 바꾸고, 수신한 데이터를 전기 신호에서 디지털 신호로 바꾸는 계층
- 네트워크 인터페이스 카드(NIC) : 컴퓨터와 컴퓨터 또는 컴퓨터와 네트워크를 연결하는 장치
- 허브 : 한 사무실이나 가까운 거리의 컴퓨터들을 연결하는 장치, 회선을 통합하여 관리(리피터역할포함)
- 리피터 : 출력 전압을 높여 전송하는 장치
- 브리지 : LAN과 LAN을 연결하거나 LAN안에서 컴퓨터 그룹을 연결하는 장치
- 스위치 : LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
- 라우터 : 브리지기능 + 최적 경로를 선택
- 게이트웨이 : 프로토콜 구조가 다른 네트워크를 연결하는 장치, LAN에서 다른 네트워크에 데이터를 보내거나 다른 네트워크로부터 데이터를 받아 들이는 출입구
- 프로토콜 : 서로 다른 기기들 간의 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약
- 프로토콜 기본 요소 3가지 : 구문, 의미, 시간
- 구문 : 전송하고자 하는 데이터 형식, 부호화, 신호 레벨 등을 규정
- 의미 : 정확한 정보 전송을 위한 협조 사항과 오류관리를 위한 제어 정보를 규정
- 시간 : 두기기간의 통신속도, 메시지의 순서제어 등을 규정
- TCP/IP : 서로다른기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 네트워크
- TCP : 가상회선방식을 기반으로 하는 연결형 서비스 제공 -> 전송계층
- 가상회선방식 : 연결형통신에서 주로 사용되는 방식
- IP : 데이터그램방식을 기반으로하는 비연결형 서비스 제공 -> 네트워크계층
- 데이터그램방식 : 비연결형통신에서 주로 사용되는 방식
- TCP : 가상회선방식을 기반으로 하는 연결형 서비스 제공 -> 전송계층
- 응용계층의 주요 프로토콜
- FTP(File Transfer Protocol) : 컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고받을 수 있도록 하는 원격 파일 전송 프로토콜
- SMTP(Simple Mail Transfer Protocol) : 전자 우편을 교환하는 서비스
- TELNET : 멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스
- SNMP(Simple Network Management Protocol) : TCP/IP 네트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용되는 표준 통신 규약
- DNS(Domain Name System) : 도메인 네임을 IP주소로 매핑(Mapping)하는 시스템
- HTTP(HyperText Transfer Protocol) : 월드 와이드 웹(WWW)에서 HTML 문서를 송수신 하기 위한 표준 프로토콜
- HyperText : 문자,그래픽,음성 및 영상을 하나의 연상 거미집과 같이 서로 연결시켜 이용자들이 정보제공할 수 있는 방법, 한 페이지에서 링크된 순서에 상관없이 사용자들이 원하는 정보를 클릭함으로써 원하는 정보에 쉽게 접근하는 방식
- HTML : 웹 페이지 표시를 위해 개발된 지배적인 마크업 언어
- 전송계층의 주요 프로토콜
- TCP(Transmission Control Protocol) : 양방향 연결형 서비스를 제공, 가상회선연결형태 서비스 제공
- 신뢰성 보장, 연결지향적, 흐름제어, 혼잡제어
- UDP(User Datagram Protocol) : 비연결형 서비스 제공, TCP에 비해 전송 속도 빠름
- 비신뢰성, 비순서화
- RTCP(Real-Time Control Protocol) : RTP(Real-Time Transport Protocol) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
- TCP(Transmission Control Protocol) : 양방향 연결형 서비스를 제공, 가상회선연결형태 서비스 제공
- 인터넷계층의 주요 프로토콜
- IP(Internet Protocol) : 전송할 데이터에 주소를 지정하고, 경로를 설정하는 기능을 함
- ICMP(Internet Control Message Protocol) : IP와 조합하여 통신중에 발생하는 오류의 처리와 전송경로 변경 등을 위한 제어 메시지를 관리하는 역할
- IGMP(Internet Group Management Protocol) : 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버쉽을 구성하는데 사용, 화상회의, IPTV에서 활용
- ARP(Address Resolution Protocol) : 호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적주소로 바꿈
- RARP : ARP의 반대로 물리적 주소를 IP주소로 변환
- 네트워크 액세스 계층의 주요 프로토콜
- Ethernet(IEEE 802.3) : CSMA/CD 방식의 LAN
- IEEE 802 : LAN을 위한 표준 프로토콜
- HDLC : 비트 위주의 데이터 링크 제어 프로토콜
- X.25 : 패킷 교환망을 통한 DTE와 DCE간의 인터페이스를 제공하는 프로토콜
- RS-232C : 공중 전화 교환망(PSTN)을 통한 DTE와 DCE간의 인터페이스를 제공하는 프로토콜
- vpn프로토콜
- 종류
- SSL/SSH : Application(L4~7)
- SSH : 포트번호22, 원격접속프로토콜
- SSL : 전송계층과 응용계층사이에서 클라이언트와 서버 간의 보안 프로토콜
- IPSec : Network(L4)
- IPSEC(IP Security) : 무결성과 인증을 보장하는 AH와 기밀성을 보장하는 암호화(ESP)를 이용해 양 종단 보안서비스를 제공하는 프로토콜, 네트워크계층 보안 프로토콜
- L2TP, PPTP : Datalink(L2)
- L2TP : L2F프로토콜과 PPTP 프로토콜 결합한 형태
- PPTP : MS사의 RAS(원격접근서비스)에기반
- SSL/SSH : Application(L4~7)
- 종류
- 네트워크 관련 신기술
- IOT : 다양한 사물들을 인터넷으로 서로 연결
- M2M(Machine to Machine) : 무선통신을 이용한 기계와 기계사이의 통신, 변압기 원격감시, 전기, 가스 등을 무선으로 통합하여 상호작용하는 통신
- 모바일 컴퓨팅 : 휴대용기기로 이동하면서 자유로이 네트워크에 접속하여 업무를 처리할 수 있는 환경
- 클라우딩 컴퓨터 : 각종 컴퓨터 자원을 중앙 컴퓨터에 두고 인터넷 기능을 갖는 단말기로 언제 어디서나 인터넷을 통해 컴퓨터 작업을 수행
- 그리드 컴퓨팅: 지리적으로 분산된 컴퓨터를 초고속 인터넷망으로 연결하여 공유함으로써 하나의 고성능 컴퓨터처럼 활용하는 기술
- 모바일 클라우드 컴퓨팅 : 모바일 기기로 클라우드 컴퓨팅 인프라를 구성하여 여러가지 정보와 자원을 공유하는 기술
- 인터클라우드 컴퓨팅 : 여러 클라우드 서비스 제공자들이 제공하는 클라우드 서비스나 자원을 연결하는 기술
- 메시 네트워크 : 차세대 이동통신, 홈네트워킹, 공공안전 등 특수목적을 위한 새로운 방식의 네트워크 기술, 대규모 디바이스의 네트워크 생성에 최적화
- 와이션 : 스마트 그리드와 같은 장거리 무선 통신을 필요로 하는 사물 인터넷 서비스를 위한 저전력 장거리 통신 기술
- SDN(Software Defined Network) : 네트워크를 컴퓨터처럼 모델링하여 여러 사용자가 각각의 소프트웨어로 네트워킹을 가상화하여 제어하고 관리하는 네트워크
- NFC : 고주파를 이용한 근거리 무선 통신 기술
- UWB : 짧은 거리에서 많은 양의 디지털 데이터를 낮은 전력으로 전송하기 위한 무선 기술로 무선 디지털 펄스라고도함
- 피코넷 : 여러개의 독립된 통신장치가 블루투스 기술이나 UWB 통신기술을 사용하여 통신망을 형성하는 무선 네트워크 기술
- 애드 혹 네트워크 : 재난현장과 같이 별도의 고정된 유선망을 구축할 수 없는 장소에서 모바일 호스트만을 이용하여 구성하는 네트워크
- 네트워크 슬라이싱 : 하나의 물리적인 코어 네트워크 인프라를 독립된 다수의 가상 네트워크로 분리
- 저전력 블루투스 기술 : 연결되지 않은 대기 상태에서는 절전모드를 유지하는 기술
- 지능형 초연결망 : 새로운 변화에 따라 급격하게 증가하는 데이터 트래픽을 효과적으로 수용하기 위한 사업
- 파중분할다중화 : 광섬유를 이용한 통신기술
- 소프트웨어 정의 데이터 센터(SDDC) : 데이터 센서의 모든 자원을 가상화하여 인력의 개입없이 소프트웨어 조작만으로 관리 및 제어되는 데이터 센터
- 개방형 링크드 데이터(LOD; Linked Open Data) : 누구나 사용할 수 있도록 웹상에 공개된 연계 데이터
- 네트워크 : 두대이상의 컴퓨터를 전화선이나 케이블 등으로 연결하여 자원을 공유
- 성형 : 중앙에 중앙 컴퓨터가 있고, 이를 중심으로 단말장치들이 연결되는 중앙 집중식의 네트워크 구성 형태
- 링형 : 컴퓨터와 단말 장치들을 서로 이웃하는 것끼리 연결시킨 포인트 투 포인트방식의 구성형태
- 버스형 : 1개의 통신회선에 여러대의 단말장치가 연결되어 있는 형태
- 계층형 : 중앙컴퓨터와 일정 지역의 단말장치까지는 하나의 통신회선으로 연결시키고, 이웃하는 단말 장치는 일정 지역 내에 설치된 중간 단말 장치로부터 다시 연결시키는 형태
- 망형 : 모든 지점의 컴퓨터와 단말 장치를 서로 연결한 형태
- LAN : Local Area Network, 근거리 통신망. 비교젹 가까운 거리에 있는 컴퓨터,프린터,저장 장치 등과 같은 자원을 연결하여 구성(회사,학교,연구소)
- WAN : Wide Area Network, 광대역 통신망, 멀리떨어진 사이트들을 연결하여 구성함.
- LAN의 표준안
- IEEE 802의 주요 표준 규격
- 802.1 : 전체의 구성, OSI참조모델과의 관계, 통신망관리 등에 관한 규약
- 802.2 : 논리링크제어(LLC)계층에 관한 규약
- 802.3 : CSMA/CD 방식의 매체 접근 제어 계층에 관한규약
- 802.4 : 토큰버스방식의 매체 접근 제어 계층에 관한규약
- 802.5 : 토큰 링 방식의 매체 접근 제어 계층에 관한 규약
- 802.6 : 도시형 통신망(MAN)에 관한 규약
- 802.9 : 종합 음성/데이터 네트워크에 관한 규약
- 802.11 : 무선 ALN에 관한 규약
- 802.11(초기버전): 2.4GHZ 대역전파와 CSMA/CA기술을 사용 최고 2Mbps전송속도
- 802.11a : 5GHz 대역전파를 사용, OFDM 기술 사용 최고 5Mbps
- 802.11b : 802.11 초기버전의 개선안, 최고 11Mbps
- 802.11e : Qos기능이 지원
- 802.11g : 2.4GHz 대역의 전파를 사용, 최고 54Mbps
- 802.11n : 2.4GHz 대역과 5GHz대역 사용, 최고 600Mbps
- IEEE 802의 주요 표준 규격
- NAT(Network Address Translation) : 1개의 정식 IP주소에 대량의 가상 사설 IP주소를 할당 및 연결하는 기능
- 경로제어(Routing) : 송수신측 간의 전송 경로 중에서 최적 패킷 교환 경로를 결정하는 기능
- 경로제어 프로토콜(Routing Protocol)
- IGP(Interior Gateway Protocol, 내부게이트웨이프로토콜) : 하나의 자율 시스템(AS)내의 라우팅에 사용되는 포로토콜(자율시스템(AS) : 하나의 도메인에 속하는 라우터들의 집합)
- RIP(Routing Information Protocol) : 현재 가장널리사용되는 라우팅 프로토콜, 거리 벡터 라우팅 프로토콜이라고도 불리며, 최단 경로 탐색에 Bellman-Ford 알고리즘이 사용, 거리벡터알고리즘
- IGRP : 다익스트라 , 거리벡터알고리즘
- OSPF(Open Shortest Path First Protocol) : Rip의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜로, 대규모 네트워크에서 많이 사용됨, Dikstra(다익스트라)알고리즘사용, 링크상태알고리즘
- EGP(Exterior Gateway Protocol, 외부게이트웨이프로토콜) : 자율 시스템(AS)간의 라우팅, 즉 게이트웨이 간의 라우팅에 사용되는 포로토콜
- BGP(Border Gateway Protocol) : 자율 시스템(AS)간의 라우팅 프로토콜로, EGP의 단점을 보완하기 위해 만들어졌음, 경로 벡터 알고리즘
- IGP(Interior Gateway Protocol, 내부게이트웨이프로토콜) : 하나의 자율 시스템(AS)내의 라우팅에 사용되는 포로토콜(자율시스템(AS) : 하나의 도메인에 속하는 라우터들의 집합)
- 트래픽제어 : 전송되는 패킷의 흐름 또는 그 양을 조절하는 기능
- 흐름제어 : 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능
- 정지대기(Stop-and-Wait) : 수신측의 확인신호(ACK)를 받은 후에 다음 패킷을 전송하는 방식, 한번에 하나의 패킷만을 전송
- 슬라이딩 윈도우(Sliding Window) : 확인신호, 즉 수신통지를 이용하여 송신데이터의 양을 조절하는 방식, 한번에 여러개의 패킷 전송 가능
- 윈도우크기(Window Size) : 패킷의 최대치, 상황에 따라 변함
- 폭주제어 : 네트워크 내의 페킷수를 조절하여 네트워크의 오버플로를 방지하는 기능
- 흐름제어 : 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능
- SW 관련 신기술
- 인공지능 : 인간의 두뇌와 같이 컴퓨터 스스로 추론, 학습, 판단 등 인간지능적인 작업을 수행하는 시스템
- 뉴럴링크 : 일론머스크가 사람이 뇌와 컴퓨터를 결합하는 기술을 개발하기 위한 설립한 회사
- 딥러닝 : 인간의 두뇌를 모델로 만들어진 인공신경망을 기반으로 하는 기계 학습 기술
- 블록체인 : P2P네트워크를 이용하여 온라인 금융 거래 정보를 온라인 네트워크 참여자(Peer)의 디지털 장비에 분산 저장하는 기술
- 그레이웨어 : 사용자입장에서는 유용할 수도 있고 악의적일 수도 있는 애드웨어, 트랙웨어, 기타 악성코드나 악성 공유웨어를 말함
- 매시업 : 웹에서 제공하는 정보 및 서비스를 이용하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술
- 리치 인터넷 에플리케이션 : 기존보다 역동적이고 인터랙티브한 웹페이지를 제공하는 제작 기술
- 시멘틱 웹 : 차세대 지능형 웹
- 서비스 지향 아키텍처(SOA) : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보기술 아키텍처
- 서비스형소프트웨어(SaaS) : 소프트웨어의 여러 기능 중에서 사용자가 필요로 하는 서비스만 이용할 수 있도록 한 소프트웨어
- 소프트웨어개발보안 : 소프트웨어 개발 과정에서 발생할 수 있는 보안 취약점을 최소화하여 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동
- 기밀성, 무결성, 가용성을 유지하는 것을 목표
- HW관련 기술
- 고가용성(HA) : 긴 시간동안 안정적인 서비스 운영을 위해 장애 발생 시 즉시 다른 시스템으로 대체 가능한 환경을 구축하는 메커니즘
- RAID : 여러개의 하드디스크로 디스크배열을 구성하여 파일을 구성하고 있는 데이터블록들을 서로 다른 디스크에 분산 저장하는 것
- RAID 0 : 중복없는 스트라이핑 세트
- RAID 1 : 미러링된 세트로 구성
- RAID 2: ECC를 기록하는 디스크 이용
- RAID 3 :삼바. 삼단계는 바이트 단위로 쪼개져서 세트 구성
- RAID 4 : 불사조. 사단계는 블록(불)단위로 쪼개져서 구성
- RAID 5 : 오모. 오단계는 모든 디스크에 저장. 패리티도 모든 디스크 저장
- RAID 6 : 육사. 육단계는 모든 RAID단계 중 유일하게 최소4개(사)이상의 디스크가 필요
- 앤스크린 : N개의 서로 다른 단말기에서 동일한 콘텐츠를 자유롭게 이용할 수 있는 서비스
- 신 클라이언트 PC : 하드디스크나 주변장치 없이 기본적인 메모리만 갖추고 서버와 네트워크로 운영되는 개인용 컴퓨터
- MEMS : 초정밀반도체 제조 기술을 바탕으로 센서 등 기계구조를 다양한 기술로 미세가공
- 트러스터존 기술 : 일반구역 보안구역으로 분할하여 관리하는 하드웨어 기반의 보안기술
- 엠디스크 : 한번의 기록만으로 자료를 영구 보관할 수 있는 광 저장 장치
- 멤리스터 : 메모리와 레지스터의 합성어
- Secure OS : 보안 기능을 갖춘 커널을 이식하여 외부의 침입으로부터 시스템 자원을 보호하는 운영체제
- DB관련 신기술
- 빅데이터: 기존의 관리 방법이나 분석 체계로는 처리하기 어려운 막대한 양의 정형 또는 비정형 데이터 집합
- 브로드 데이터 : 기업 마케팅에 있어 효율적이고 다양한 데이터
- 메타 데이터 : 일련의 데이터를 정의하고 설명해주는 데이터
- 디지털 아카이빙 : 디지털 정보자원을 장기적으로 보존하기 위한 작업
- 하둡 : 오픈소스를 기반으로 한 분산 컴퓨팅 플랫폼
- 맵리듀스 : 대용량 데이터를 분산 처리하기 위한 목적
- 타조 : 하둡 기반의 데이터 웨어하우스 프로젝트
- 데이터 다이어트 : 삭제X 압축O 중복된 정보는 중복을 배제하고, 새로운 기준에 따라 나누어 작업
- 데이터 마이닝 : 대량의 데이터를 분석하여 데이터에 내제된 변수 사이의 상호관계를 규명하여 일정한 패턴을 찾는 기법
- OLAP(Online Analytical Processing) : 다차원으로 이루어진 데이터로부터 통계젹인 요약정보를 분석하여 의사결정에 활용하는 방식
- 회복 : 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
- 연기갱신기법 : 트랜잭션이 성공적으로 완료될때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법, redo
- redo : 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행, 장애발생전의 db로 복구
- 즉각갱신기법 : 트랜잭션이 부분완료되기전이라도 즉시 실제 데이터베이스에 반영하는 방법, redo undo
- undo : 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소
- 그림자 페이지 대체 기법 : 갱신 하다가 장애가 발생하여 트랜잭션 작업을 롤백시킬때는 갱신 이후의 실제 페이지 부분을 그림자 페이지(갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자페이지를 별도보관)로 대체하여 회복시키는 기법
- 검사점 기법(Check Point) : 검사점부터 회복 작업을 수행하여 회복시간을 절약하는 기법
- 연기갱신기법 : 트랜잭션이 성공적으로 완료될때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법, redo
- 재시도(redo) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후, 트랜잭션을 재실행 시키는 것
- 덤프(Dump) : 주기적으로 데이터베이스 전체를 복사해 두는 것
- 로그(Log) : 갱신되기 전후의 내용을 기록하는 별도의 파일로, 저널(Journal)이라고도 함.
- 병행제어(Concurrency Control) : 다중 프로그램의 이점을 활용하여 동시에 여러개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것
- 병행제어 기법의 종류
- 로킹(Locking) : 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스 할 수 있도록 하는 기법
- 로킹 단위 : 병행 제어에서 한꺼번에 로킹할 수 있는 객체의 크기(데이터베이스, 파일, 레코드, 필드 등이 로킹단위) 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준 낮아짐,
- 병행제어 기법의 종류
- 교착상태(Dead Lock) : 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
- 교착상태발생의 필요 충분 조건
- 상호배제 : 한번에 한개의 프로세스 만이 공유자원을 사용
- 점유와 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
- 비선점 : 다른프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
- 환형대기 : 공유자원과 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함
- 교착상태의 해결 방법
- 예방기법 : 교착 상태 발생하지 않도록 사전에 시스템을 제어
- 회피기법 : 발생하면 적절히 피해나가는 방법(은행원알고리즘)
- 발견기법 : 점검하고 교착상태에 있는 프로세스와 자원을 발견하는 것
- 회복기법 : 교착상태 일으킨 프로세스 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것
- 교착상태발생의 필요 충분 조건
- 트러스터존 : 칩 설계회사인 ARM에서 개발한 기술로, 하나의 프로세서 내에 일반 에플리케이션을 처리하는 일반구역과 보안이 필요한 애플리케이션을 처리하는 보안구역으로 분할하여 관리하는 하드웨어 기반의 보안 기술
- typosquatting : 네티즌들이 사이트에 접속할때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일로, URL 하이재킹이라고도 부른다.
7단원. 애플리케이션 테스트 관리
- 애플리케이션 테스트 : 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
- Validation(확인) : 사용자의 입장에서 개발한 소프트웨어가 고객의 요구사항에 맞게 구현되었는지 확인하는 것
- Verification(검증) : 개발자의 입장에서 개발한 소프트웨어가 명세서에 맞게 만들어졌는지 점검하는 것
- 애플리케이션 테스트의 기본원리
- 완벽한 테스팅 불가능 : 소프트웨어의 잠재적인 결함은 줄일 수 있지만, 소프트웨어에 결함이 없다고 증명할 수는 없음.
- 파레토 법칙 : 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다는 법칙
- 살충제 패러독스 : 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
- 테스팅은 정황의존 : 소프트웨어의 특징, 테스트환경, 테스트의 역량 등 정황(Context)에 따라 테스트 결과가 달라질 수 있으므로, 정황에따라 테스트를 다르게 수행해야 함
- 오류-부재의 궤변 : 소프트웨어의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높다고 말할 수 없는 것
- 테스트와 위험은 반비례 : 테스트를 많이 하면 할수록 미래에 발생할 위험을 줄일 수 있음
- 테스트의 점직적 확대 : 테스트는 작은 부분에서 시작하여 점점 확대하며 진행해야 함
- 테스트의 별도 팀 수행 : 테스트는 개발자와 관계없는 별도의 팀에서 수행해야 함
- 정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스 코드를 대상으로 분석하는 테스트
- 워크스루 : 검토 회의 전에 요구사항 명세서를 미리 배포하여 사전검토한 후에 짧은 결함을 발견(조기검출)
- 인스펙션 : 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함 발견
- 동적 테스트 : 프로그램을 실행하여 오류를 찾는 테스트
- 블랙박스 테스트 : 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능테스트라고도 함
- 화이트박스 테스트 : 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 테스트 기반에 따른 테스트
- 명세기반 테스트 : 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 만들어 구현하고 있는지 확인하는 테스트 (동등분할, 경계값 분석 등)
- 구조기반 테스트 : 소프트웨어 내부의 논리 흐름에 따라 테스트 케이스를 작성하고 확인하는 테스트(구문기반, 결정기반, 조건기반 등)
- 경험기반 테스트 : 유사 소프트웨어나 기술 등에 대한 테스터의 경험을 기반으로 수행하는 테스트(에러 추정, 체크리스트, 탐색적 테스팅)
- 시각에 따른 테스트
- 검증테스트 : 개발자의 시각에서 제품의 생산 과정을 테스트하는 것(제품이 명세서대로 완성됐는지)
- 확인테스트 : 사용자의 시각에서 생산된 제품의 결과를 테스트 하는 것(사용자의 요구사항대로 제품이 완성됐는지)
- 목적에 따른 테스트
- 회복테스트 : 시스템에 여러가지 결함을 주어 실패하도록 한 후 올바르게 복구하는지를 확인하는 테스트
- 안전테스트 : 시스템에 설치된 시스템보호도구가 불법적인 침입으로부터 시스템을 보호할 수 있는지를 확인하는 테스트
- 강도테스트 : 시스템에 과도한 정보량이나 빈도 등을 부과하여 과부하 시에도 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트
- 성능테스트 : 소프트웨어의 실시간 성능이나 전체적인 효율성을 진단하는 테스트
- 구조테스트 : 소프트웨어 내부의 논리적인 경로, 소스 코드의 복잡도 등을 평가하는 테스트
- 회귀테스트(Regression Test) : 소프트웨어의 변경 또는 수정된 코드에 새로운 결함이 없음을 확인하는 테스트
- 병행테스트 : 변경된 소프트웨어와 기존 소프트웨어에 동일한 데이터를 입력하여 결과를 비교하는 테스트
- 테스트 기법에 따른 애플리케이션 테스트
- 화이트박스테스트 : 모듈의 원시코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법, 모듈안의 작동을 직접관찰, 원시코드(모듈)의 모든 문장을 한 번 이상 실행함으로써수행
- 기초경로검사 : 테스트 케이스 설계자가 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법
- 제어구조검사
- 조건검사 : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트하는 테스트케이스 설계기법
- 루프검사 : 프로그램의 반복구조에 초점을 맞춰 실시하는 테스트케이스 설계기법
- 데이터흐름검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
- 화이트박스 테스트의 검증 기준(=커버리지)
- 문장검증기준(Statement Coverage) : 소스코드의 모든구문이 한번 이상 수행되도록 테스트 케이스를 설계
- 분기검증기준(Branch Coverage) : 소스코드의 모든조건문이 한번이상 수행되도록 테스트 케이스를 설계
- 조건검증기준(Condition Coverage) : 소스코드의 모든 조건문에 대해 조건이 True인경우와 False인 경우가 한번이상 수행되도록 테스트 케이스 설계
- 분기/조건 검증기준 : 소스코드의 모든 조건문과 각 조건문에 포함된 개별 조건식의 결과가 True인 경우와 False인 경우가 한번이상 수행되도록 테스트 케이스를 설계
- 블랙박스테스트 : 소프트웨어가 수행할 특정기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능테스트라고도 한다.
- 동치분할검사(Equivalence Partitioning Testing) : 프로그램의 입력조건에 타당한 입력자료와 타당하지 않은 입력자료의 개수를 균등하게 하여 테스트케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법(동등분할기법)
- 경계값분석(Boundary Value Analysis) : 입력조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
- 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음, 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류예측검사(Error Guessing) : 과거의 경험이나 감각으로 테스트하는 기법
- 비교검사(Comparison Testing) : 여러 비전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
- 화이트박스테스트 : 모듈의 원시코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법, 모듈안의 작동을 직접관찰, 원시코드(모듈)의 모든 문장을 한 번 이상 실행함으로써수행
- 개발 단계에 따른 애플리케이션 테스트
- 소프트웨어 개발 단계에 따라 단위,통합,시스템,인수 테스트로 분류된다.
- 애플리케이션 테스트와 소프트웨어 개발단계를 연결하여 표현한 것을 V-모델이라고 한다.
- 단위 테스트 : 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것
- 통합 테스트 : 단위테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는과정에서의 테스트
- 시스템 테스트 : 개발된 소프트웨어가 완벽하게 수행되는가를 점검하는 테스트
- 인수 테스트 : 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 것
- 사용자 인수 테스트 : 사용자가 시스템사용의 적절성 여부를 확인하는 테스트
- 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트
- 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트
- 통합테스트 : 단위테스트가 끝난 모듈을 통합하는 과정에서 발생하는 오류 및 결함을 찾는 테스트기법
- 비점진적 통합 방식 : 단계적으로 통합하는 절차 없이 모든 모듈이 미리 결합되어 있는 프로그램 전체를 테스트하는 기법(빅뱅통합테스트)
- 점진적 통합 방식 : 모듈 단위로 단계적으로 통합하면서 테스트하는 방법
- 하향식통합테스트 : 프로그램의 상위모듈에서 하위모듈방향으로 통합하면서 테스트하는 기법
- 깊이우선통합법 : 주요제어모듈(작성된 프로그램)을 중심으로 해당 모듈에 종속된 모든 모듈(스텁)을 통합하는것
- 넓이우선통합법 : 구조의 수평을 중심으로 해당하는 모듈을 통합하는 것
- 스텁 : 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 시험용 모듈
- 상향식 통합 테스트 : 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트하는 기법
- 1. 하위모듈들을 클러스터(Cluster)로 결합
- 2. 상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈인 드라이버(Driver)를 작성
- 테스트 드라이버 : 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈테스트 수행후의 결과를 도출하는 도구
- 3. 통합된 클러스터 단위로 테스트
- 4. 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고, 드라이버는 실제모듈로교체
- 하향식통합테스트 : 프로그램의 상위모듈에서 하위모듈방향으로 통합하면서 테스트하는 기법
- 혼합식통합테스트 : 하위수준에서는 상향식통합, 상위수준에서는 하향식통합을 사용하여 최적의 테스트를 지원
- 회귀테스트: 통합테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는지 확인하는 테스트
- 애플리케이션 테스트 프로세스의 순서 : 테스트계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행-> 테스트 결과 평과 및 리포팅 -> 결함 추적 및 관리
- 결함관리프로세스의 순서 : 에러발견 -> 에러등록 -> 에러분석 -> 결함확정-> 결함할당 -> 결함조치 -> 결함조치검토 및 승인
- 테스트케이스 : 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력값, 실행조건, 기대결과 등으로 구성된 테스트 항목에 대한 명세서
- 구성요소
- 테스트(입력)데이터 : 테스트 실행 시 입력할 입력값, 선택 버튼, 체크리스트 값 등
- 예상(기대) 결과 : 테스트 실행 후 데이터, 결과 화면, 기대 동작 등
- 테스트(전제) 조건 : 테스트간의 종속성, 테스트 수행 전 실행되어야 할 고려사항 등
- 구성요소
- 테스트시나리오 : 테스트케이스를 적용하는 순서에 따라 여러개의 테스트 케이스를 묶은 집합
- 테스트 오라클 : 테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법
- 특징
- 제한된검증 : 테스트오라클은 모든 테스트케이스에 적용할 수 있음
- 수학적기법 : 테스트 오라클의 값을 수학적 기법을 이용하여 구할 수 있음
- 자동화기능 : 테스트 대상 프로그램의 실행, 결과비교, 커버리지 측정 등을 자동화 할 수 있음
- 종류
- 참 오라클 : 모든 테스트케이스의 입력값에 기대하는 결과를 제공하는 오라클
- 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클로, 전수 테스트가 불가능한 경우 사용
- 추정오라클 : 특정테스트케이스 입력값에 대해 기대하는 결과를 제공하고, 나머지 입력값들에 대해서는 추정으로 처리하는 오라클
- 일관성검사오라클 : 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클
- 특징
- 테스트 자동화 : 사람이 반복적으로 수행하던 테스트 절차를 스크립트 형태로 구현하는 자동화 도구를 적용함으로써 쉽고 효율적으로 테스트를 수행할 수 있도록 한 것
- 종류
- 정적분석도구 : 프로그램을 실행하지 않고 분석하는 도구
- 테스트실행도구 : 스크립트 언어를 사용하여 테스트를 실행하는 도구
- 성능테스트도구 : 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달성 여부를 확인하는 도구
- 테스트통제도구 : 테스트계획 및 관리, 테스트 수행, 결함 관리 등을 수행하는 도구
- 테스트하네스도구 : 테스트가 실행될 환경을 시뮬레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 하는 도구
- 테스트하네스 : 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미
- 테스트드라이버, 테스트스텁, 테스트슈트, 테스트케이스, 테스트스크립트(명세서), 목오브젝트( 예정된행위를 수행하는 객체)
- 테스트하네스 : 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분, 테스트를 지원하기 위해 생성된 코드와 데이터를 의미
- 종류
- 결함 : 소프트웨어가 개발자가 설계한 것과 다르게 동작하거나 다른 결과가 발생되는 것
- 결함관리 측정지표
- 결함 분포 : 모듈 또는 컴포넌트의 특정속성에 해당하는 결함 수 측정
- 결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석
- 결함 에이징 : 특정 결함 상태로 지속되는 시간 측정
- 결함관리 측정지표
- 애플리케이션 성능 : 최소한의 자원을 사용하여 최대한 많은 기능을 신속하게 처리하는 정도
- 애플리케이션 성능 측정 지표
- 처리량 : 일정 시간 내에 애플리케이션이 처리하는 일의 양
- 응답시간 : 애플리케이션에 요청을 전달한 시간부터 응답이 도착할 때까지 걸린 시간
- 경과시간 : 애플리케이션에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 자원사용률 : 애플리케이션이 의뢰한 작업을 처리하는 동안의 cpu사용량, 메모리 사용량, 네트워크 사용량 등 자원 사용률
- 애플리케이션 성능 측정 지표
- 성능 테스트 도구 : 애플리케이션의 성능을 테스트하기 위해 애플리케이션에 부하나 스트레스를 가하면서 애플리케이션의 성능 측정 지표를 점검하는 도구
- 부하(Load)테스트 : 애플리케이션에 일정 시간 동안 부하를 가하면서 반응을 측정하는 테스트
- 스트레스(Stress)테스트 : 부하 테스트를 확장한 테스트로, 애플리케이션이 과부하 상태에서 어떻게 작동하는지 테스트
- 종류
- JMeter : HTTP, FTP등 다양한 프로토콜을 지원하는 부하 테스트 도구
- LoadUI : 서버모니터링, Drag & Drop 등 사용자의 편리성이 강하된 부하 테스트 도구
- OpenSTA : HTTP, HTTPS 프로토콜에 대한 부하 테스트 및 생산품 모니터링 도구
- 종류
- 시스템 모니터링도구 : 애플리케이션이 실행되었을 때 시스템 자원의 사용량을 확인하고 분석하는 도구
- Scouter : 단일 뷰 통합/실시간 모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구, 애플리케이션의 성능을 모니터링/통제하는 도구
- Zabbix : 웹기반 서버, 서비스, 애플리케이션 등의 모니터링 도구
- 복잡도 : 시스템이나 시스템 구성 요소 또는 소프트웨어의 복잡한 정도를 나타내는말
- 시간복잡도 : 알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화한 것 , 명령어의 실행횟수릂 ㅛ기(점근표기법)
- 빅오표기법 : 최악
- 세타표기법: 평균
- 오메가표기법: 최상
- 시간복잡도 : 알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화한 것 , 명령어의 실행횟수릂 ㅛ기(점근표기법)
- O(1) : 스택의 삽입,삭제
- O(log 2 n) : 이진트리, 이진검색
- O(n) : for문
- O(nlog 2 n) : 힙정렬, 2-Way 합병정렬
- O(n^2) : 삽입정렬, 쉘정렬, 선택정렬, 버블정렬, 퀵정렬
- O(2^n) : 피보나치 수열
- 순확복잡도 : 한 프로그램의 논리적인 복잡도를 측정하기 위한 소프트웨어의 척도(맥케이브순환도)
- 제어흐름도 G에서 순환 복잡도 V(G)
- 영억수와 일치하므로 영역 수를 계산
- V(G) = E-N+2(E:화살표 수, N:노드수)
- 제어흐름도 G에서 순환 복잡도 V(G)
- 소스코드 최적화 : 나쁜코드를 배제하고, 클린코드로 작성
- 클린코드 : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드
- 나쁜코드 : 프로그램의 로직이 복잡하고 이해하기 어려운 코드
- 스파게티 코드 : 코드의 로직이 서로 복잡하게 얽혀 있는 코드
- 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
- 클린코드 작성원칙 : 가독성, 단순성, 의존성배제, 중복성 최소화, 추상화
- 소스코드최적화 유형 : 클래스 분할배치(클래스 응집도를 높이고 크기작게작성), 느슨한결합(인터페이스 클래스이용)
- 소스코드 품질 분석 도구
- 정적분석도구 : 작성한 소스코드를 실행하지 않고 코딩표준이나 코딩 스타일, 결함 등을 발견하는 코드 분석 도구
- pmd : 소스코드에 대한 미사용변수, 최적화되지 않은 코드 등 결함을 유발할 수 있는 코드를 검사
- cppcheck : C/C++ 코드에 대한 메모리 누수, 오버플로우 등 분석
- SonarQube : 중복코드, 복잡도, 코딩설계등을 분석하는 소스 분석 통합 플랫폼
- checkstyle : 자바코드에 대해 소스코드표준을 따르고 있는지 검사
- ccm : 다양한 언어의 코드 복잡도를 분석
- cobertura: 자바 언어의 소스 코드 복잡도 분석 및 테스트 커비리지를 측정
- Avalanche : Valgrind 프레임워크 및 STP기반으로 구현
- Valgrind : 프로그램 내에 존재하는 메모리 및 쓰레드 결함 등을 분석
- 정적분석도구 : 작성한 소스코드를 실행하지 않고 코딩표준이나 코딩 스타일, 결함 등을 발견하는 코드 분석 도구
- 빌드 자동화 도구
- Jenkins : Java 기반 오픈소스, 서블릿 컨테이너, 여러대의 컴퓨터를 이용하여 분산 빌드 가능
- Gradle : Grooby 기반 오픈소스, 안드로이드 앱 개발환경, 이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능 지원
- 테스트 자동화 도구
- xUnit : Java(Junit), C++(Cppunit), .Net(Nunit)등 다양한 언어를 지원하는 단위 테스트 프레임워크
- STAF : 서비스호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크로 각 테스트 대상 분산환경에 데몬을 사용해 테스트 대상 프로그램을 통해 테스트를 수행하고 통합해 자동화 하는 검증 도구
- FitNess : 웹기반 테스트케이스 설계, 실행,결과 확인 등을 지원하는 테스트 프레임워크
- NTAF : FitNess의 장점인 협업 기능 + STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임 워크
- Selenium : 다양한 브라우저 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
- Watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
4단원. 서버프로그램 구현
- 서버의종류
- 웹서버 : 클라이언트로부터 직접 요청을 받아 처리함, 저용량의 정적 파일들을 제공함
- 웹 애플리케이션 서버(WAS) : 동적 서비스를 제공하거나, 웹 서버와 데이터베이스 서버 또는 웹 서버와 파일서버 사이에서 인터페이스 역할을 수행함
- 데이터베이스 서버 : 데이터베이스와 이를 관리하는 DBMS를 운영함
- 파일서버 : 데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장함.
- 개발언어의 선정기준
- 적정성 : 개발하려는 소프트웨어의 목적에 적합해야 함
- 효율성 : 코드의 작성 및 구현이 효율적이어야 함
- 이식성 : 다양한 시스템 및 환경에 적용이 가능해야 함
- 친밀성 : 개발언어에 대한 개발자들의 이해도와 활용도가 높아야 함
- 범용성 : 다른개발사례가 존재하고 여러 분야에서 활용되고 있어야 함
- 소프트웨어 아키텍처 : 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
- 소프트웨어 아키텍처 설계의 기본원리 : 모듈화, 추상화, 단계적 분해, 정보은닉
- 모듈화 : 소프트웨어의 성능향상, 시스템의 수정 및 재사용 유지관리 등이 용이하도록 시스템의 기능들을 모듈단위로 나누는 것
- 추상화 : 문제의 전체적이고 포괄적인 개념을 설계한 후, 차례로 세분화하여 구체화시켜 나가는 것
- 과정추상화 : 자세한 수행과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계
- 데이터추상화 : 데이터의 세부적인 속성이나 용도를 정의하지 않고, 데이터 구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어추상화 : 이벤트 발생의 정확한 절차나 방법을 정의하지 않고, 대표할 수 있는 표현으로 대체하는방법
- 단계적분해 : 문제를 상위 중요개념으로부터 하위의 개념으로 구체화시키는 분할 기법(Niklaus Wirth에 의해 제안된 하향식 설계전략)
- 정보은닉 : 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
- 소프트웨어 아키텍처 품질 속성 : 소프트웨어 아키텍처가 이해 관계자들이 요구하는 수준의 품질을 유지 및 보장할 수 있게 설계되었는지 확인하기 위해 품질 평가 요소들을 구체화 시켜 놓은 것
- 시스템 측면 : 성능,보안,가용성,기능성,사용성,변경 용이성, 확장성 등
- 비지니스 측면 : 시장 적시성, 비용과 혜택, 예상 시스템 수명, 목표 시장, 공개 일정 등
- 아키텍처 측면 : 개념적 무결성, 정확성, 완결성, 구축가능성, 변경성, 시험성 등
- 소프트웨어 아키텍처 설계의 기본원리 : 모듈화, 추상화, 단계적 분해, 정보은닉
- 협약에 의한 설계 : 컴포넌트를 설계할 때 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
- 아키텍처 패턴 : 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- 레이어 패턴 : 시스템을 계층으로 구분하여 구성하는 고전적인 방법의 패턴
- 클라이언트-서버 패턴 : 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
- 파이프-필터 패 턴 : 데이터스트림절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴
- 모델-뷰-컨트롤러(MVC) : 서브 시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴(컨트롤러가 사용자의 요청을 받으면 핵심기능과 데이터를 보관하는 모델을 이용하여 뷰에 정보를 출력하는 구조)
- 마스터-슬레이브 패턴 : 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴(병럴컴퓨팅시스템)
- 브로커 패턴 : 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 연결지를 연결해주는 패턴(분산환경시스템)
- 피어-투-피어 패턴 : 피어(Peer)라 불리는 하나의 컴포넌트가 클라이언트가 될 수도, 서버가 될 수도 있는 패턴(파일 공유 네트워크)
- 이벤트-버스 패턴 : 소스가 특정채널에 이벤트 메시지를 발행하면, 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 패턴(알림서비스)
- 블랙보드 패턴 : 모든 컴포넌트들이 공유데이터저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴(음성인식, 차량식별)
- 인터프리터 패턴 : 프로그램 코드의 각라인을 수행하는 방법을 지정하고, 기호마다 클래스를 갖도록 구성된 패턴
- 객체 지향 : 소프트웨어의 각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
- 객체지향구성요소 3가지 : 객체,클래스,메시지
- 객체 : 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
- 클래스 : 공통된 속성과 연산을 갖는 객체의 집합
- 메시지 : 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작이나 연산을 일으키는 외부의 요구사항
- 객체지향의 특징 : 캡슐화, 상속, 다형성, 연관성
- 캡슐화 : 외부에서 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것
- 상속 : 상위클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 다형성 : 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 연관성 : 두 개 이상의 객체들이 상호참조하는 관계
- is member of(연관화) : 2개이상의 객체가 상호 관련되어 있음을 의미
- is instance of(분류화) : 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것
- is part of(집단화) : 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것
- is a
- 일반화 : 공통적인 성질들로 추상화한 상위 객체를 구성하는 것
- 특수화/상세화 : 상위 객체를 구체화하여 하위 객체를 구성화하는 것
- 객체지향 분석(OOA; Object Oriented Analysis) : 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업
- 객체지향 분석 방법론
- Rumbaugh(럼바우)방법 : 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
- Booch(부치)방법 : 미시적(Micro) 개발프로세스와 거시적(Macro)개발 프로세스를 모두 사용
- Jacobson방법 : 유스케이스(Use Case)를 강조하여 사용
- Coad와 Yourdon방법 : E-R다이어그램을 사용하여 객체의 행위를 모델링
- Wirfs-Brock 방법 : 분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
- 객체지향 분석 방법론
- 럼바우(Rumbaugh)의 분석 기법 : 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법
- 객체모델링기법(OMT, Object-Modeling Technique)이라고도 한다.
- 분석활동은 객체모델링 -> 동적모델링 -> 기능모델링 (객동기)
- 객체모델링(Object Modeling) : 정보모델링이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램 으로 표시하는 것
- 동적모델링(Dynamic Modeling) : 상태 다이어그램을 이용하여 시간의 흐름에 따라 객체들 간의 제어흐름, 상호작용, 동작순서 등의 동적인 행위를 표현하는 모델링
- 기능모델링(Functional Modeling) : 자료흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료흐름을 중심으로 처리과정을 표현한 모델링
- 객체지향구성요소 3가지 : 객체,클래스,메시지
- 객체지향설계원칙 : 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 원칙(SOLID원칙)
- 종류
- 단일책임원칙(SRP): 객체는 단 하나의 책임만 가져야 한다는 원칙
- 개방-폐쇄원칙(OCP) : 기존의 코드를 변경하지 않고, 기능을 추가할 수 있도록 설계해야 한다는 원칙
- 리스코프 치환원칙(LSP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙
- 인터페이스 분리 법칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 않아야 한다는 원칙
- 의존 역전 원칙(DIP) : 의존관계성립시, 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
- 종류
- 모듈 : 모듈화를 통해 분리된 시스템의 각 기능으로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업단위 등을 의미
- 모듈의 독립성은 결합도, 응집도에 의해 측정
- 모듈의 독립성 : 모듈이 다른 모듈과의 과도한 상호작용을 배제하고, 하나의 기능만을 수행함으로써 이루어진다
- 결합도(Coupling) : 모듈간에 상호 의존하는 정도 또는 두 모듈사이의 연관 관계(결합도가 약할수록 품질이 높고, 강할수록 품질이 낮다) 내공외제스자
- 내용결합도(Content Coupling) : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도
- 공통결합도(Common) : 공유되는 공통데이터 영역을 여러 모듈이 사용할 때의 결합도
- 외부결합도(External) : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른모듈에서 참조할 때의 결합도
- 제어결합도(Control Coupling) : 어떤 모듈이 다른 모듈내부의 논리적인 흐름을 제어하기 위해 제어신호나 제어 요소를 전달하는 결합도
- 스탬프(검인)결합도(Stamp) : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도
- 자료결합도(Data) : 모듈 간의 인터페이스가 자료요소로만 구성될 때의 결합도
- 응집도(Cohesion) : 모듈의 내부 요소들이 서로 연관되어 있는 정도(응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다) 우논시절교순기
- 기능적응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
- 순차적응집도 : 모듈 내 하나의 활동으로부터 나온 출력데이터를 그 다음 활동의 입력데이터로 사용할 경우의 응집도
- 교환(통신)적응집도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모여있을 경우의 응집도
- 절차적응집도 : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
- 시간적응집도 : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
- 논리적응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
- 우연적응집도 : 모듈 내부의 각 구성요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
- 모듈의 독립성은 결합도, 응집도에 의해 측정
- 팬인 : 어떤 모듈을 제어하는 모듈의 수(팬인이 높다는 것은 재사용측면에서 설계 우수)
- 팬인이 높으면 단일장애점(SPOF; Single Point Of Failure, 하나가 작동하지 않으면 전체가 중단)발생가능
- 팬아웃 : 어떤 모듈에 의해 제어되는 모듈의 수
- 모듈에 들어오면(IN) 팬인, 모듈에서 나가면(Out)팬아웃
- N-S차트(Nassi-Schneiderman Chart) : 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
- 단위모듈 : 소프트웨어 구현에 필요한 여러 동작 중, 한가지 동작을 수행하는 기능을 모듈로 구현한 것
- IPC(Inter-Process Communication) : 모듈간통신방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- IPC의 대표 메소드 5가지
- Shared Memory : 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식
- Socket : 네트워크소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식
- Semaphores : 공유 자원에 대한 접근 제어를 통해 통신하는 방식
- Pipes & Named Pipes : Pipe라고 불리는 선입선출형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는방식
- Message Queueing : 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식
- IPC의 대표 메소드 5가지
- 테스트케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
- 공통 모듈 : 여러 프로그램에서 공통으로 사용할 수 있는 모듈
- 재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
- 재사용 규모에 따른 분류
- 함수와 객체 : 클래스나 메소드 단위의 소스코드를 재사용
- 컴포넌트 : 컴포넌트 자체에 대한 수정없이 인터페이스를 통해 통신하는 방식으로 재사용
- 애플리케이션 : 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용
- 재사용 규모에 따른 분류
- 코드 : 자료의 분류 조합 집계 추출을 용이하게 하기 위해 사용되는 기호
- 주요기능 : 식별기능, 분류기능, 배열기능, 표준화기능, 간소화기능
- 종류
- 순차코드 : 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법
- 블록코드 : 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법
- 10진코드 : 코드화 대상 항목을 0~9까지 10진분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한만큼 반복하는 방법
- 그룹분류코드 : 코드화 대상 항목을 일정기준에 따라 대분류, 중분류, 소분류 등으로 구분하고, 각 그룹안에서 일련번호를 부여하는 방법
- 연상코드 : 코드화 대상 항목의 명칭이나 약호와 관계있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법(ex. TV-40 : 40인치 TV, L-15-220 :15W 220V의 램프)
- 표의 숫자 코드 : 코드화 대상 항목의 성질, 즉 길이, 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법(120-720-1500 : 두께X폭X길이가 120*720*1500인강판)
- 합성 코드 : 필요한 기능을 하나의 코드로 수행하기 어려운 경우, 2개이상의 코드를 조합하여 만드는 방법(KE-711: 대한한공 711기)
- 디자인패턴 : 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결방식 또는 예제
- GOF디자인패턴 : 생성패턴, 구조패턴, 행위패턴으로 구분
- 생성패턴 : 클래스나 객체의 생성과 참조과정을 정의하는 패턴
- 추상팩토리(Abstract Factory) : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로연관,의존하는 객체들의 그룹으로 생성하여 추상적으로 표현
- 빌더(Builder) : 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성, 객체의 생성과정과 표현방법을 분리하여 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있음
- 팩토리 메서드(Factory Method) : 객체 생성을 서브클래스에서 처리하도록 분리하여 캡슐화한 패턴, 상위클래스에서 인터페이스만 정의하고 실제생성은 서브클래스가 담당, 가상생성자 패턴이라고도함
- 프로토타입(Prototype) : 원본객체를 복제하는 방법으로 객체를 생성하는 패턴, 일반적인 방법으로 객체를 생성하며 비용이 큰 경우 주로 이용
- 싱글톤(Singleton) : 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없음, 클래스내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화할 수 있음
- 구조패턴 : 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴
- 어댑터(Adapter) : 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴, 인터페이스가 일치하지 않을 때 이용
- 브리지(Bridge) : 구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴 , 기능과 구현을 2개의 별도 클래스로 구현
- 컴포지트(Composite) : 여러 객체를 가진 복합 객체와 단일 객체를 구분없이 다루고자 할때 사용하는 패턴, 객채들을 트리구조로 구성
- 데코레이터(Decorator) : 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴, 임의의 객체에 부가적인 기능을 추가하기 위해 다른객체들을 덧붙이는 방식으로 구현
- 퍼싸드(Facade) : 복잡한 서브클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴, 서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요
- 플라이웨이트(Flyweight) : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고, 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴 , 다수의 유사객체를 생성하거나 조작할 때 유용하게 사용할 수 있음
- 프록시(Proxy) : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴
- 행위패턴 : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
- 책임연쇄(Chain of Responsibility) : 요청을 처리할 수 있는 객체가 둘이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴
- 커맨드(Command) : 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
- 인터프리터(Interpreter) : 언어에 문법 표현을 정의하는 패턴
- 반복자(Iterator) : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
- 중재자(Mediator) : 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
- 메멘토(Memento) : 특정시점에서의 객체 내부상태를 객체화함으로써 이후 요청에 따라 객체를 해당시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
- 옵서버(Observer) : 한 객체의 상태가 변화하면 객체의 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴
- 상태(State) : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
- 전략(Strategy) : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
- 템플릿 메소드(Template Method) : 상위클래스에서 골격을 정의하고, 하위클래스에서 세부처리를 구체화하는 구조의 패턴, 유사한 서브클래스를 묶어 공통의 내용을 상위클래스에서 정의함으로써 코드의 양을 줄이고 유지보수를 용이하게해줌
- 방문자(Visitor) : 각 클래스들의 데이터 구조에서 처리기능을 분리하여 별도의 클래스로 구성하는 패턴,분리된 처리기능은 각 클래스를 방문하여 수행함
- 개발지원도구
- 통합개발환경(IDE) : 개발에 필요한환경, 즉 편집기,컴파일러,디버거 등의 다양한 툴을 하나의 인터페이스로 통합하여 제공하는 환경
- 빌드도구
- 빌드 : 소스코드파일들을 컴퓨터에서 실행할 수 있는 제품소프트웨어로 변환하는 과정 또는 결과물
- 빌드도구는 전처리,컴파일 등의 작업을 수행
- 전처리 : 컴파일에 앞서 코드에 삽입된 주석을 제거하거나 매크로들을 처리하는 과정
- 빌드도구 종류
- Ant(Another Neat Tool) : 아파치소프트웨어재단에서개발, 자바프로젝트의 공식적인 빌드 도구, 정해진 규칙이나 표준이 없음
- Maven : 아파치소프트웨어 재단에서 Ant대안으로개발, 의존성을 설정하여 라이브러리를 관리, 규칙이나 표준이 존재하여 예외사항만 기록
- Gradle : 한스도커가 Ant와 Maven을 보완하여 개발 , 안드로이드 스튜디오의 공식 빌드 도구, 그루비(Groovy)기반의 빌드 스크립트를 사용
- 그루비 : 자바를 기반으로 여러프로그래밍 언어들의 장점을 모아 만든 동적 객체지향 프로그래밍 언어
- 협업 도구 : 개발에 참여하는 사람들이 서로 다른 환경에서 원활히 프로젝트를 수행할 수 있도록 도와주는 도구
- 서버 개발 : 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버(WAS)에 탑재하는 것
- 서버개발프레임워크 : 서버프로그램개발시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어
- 대부분은 모델-뷰-컨트롤러(MVC)패턴을 기반으로 개발
- 종류
- Spring : Java를 기반으로 만든 프레임워크, 전자정부표준프레임워크의 기반 기술로 사용
- Node.js : JavaScript를 기반으로 만든 프레임워크, 비동기 입출력 처리와 이벤트 위주의 높은 처리성능을 갖고 있어 실시간으로 입출력이 빈번한 애플리케이션에 적합
- Django : Python을 기반으로 만든 프레임워크, 신속한 개발
- Codeigniter : PHP를 기반으로 만든 프레임워크, 인터페이스가 간편
- Ruby on Rails : Ruby를 기반으로 만든 프레임워크
- 서버개발프레임워크 : 서버프로그램개발시 다양한 네트워크 설정, 요청 및 응답 처리, 아키텍처 모델 구현 등을 손쉽게 처리할 수 있도록 클래스나 인터페이스를 제공하는 소프트웨어
- 서버개발과정 : 서버개발과정은 DTO/VO, SQL, DAO, Service, Controller를 각각 구현하는 과정이다.
- DTO(Data Transfer Object) : 데이터의 교환을 위해 생성되는 객체
- VO(Value Object) : DTO와 동일하지만 읽기만 가능한 객체, 변경이 불가능
- DAO(Data Access Object) : 데이터베이스에 접근하여 데이터를 조회, 생성, 수정, 삭제 작업을 수행하는 객체
- 구현과정
- DTO/VO 구현 : 데이터교환을 위해 사용할 객체를 만드는과정, 송수신할 데이터의 자료형에 맞는 변수 및 객체를 생성
- SQL구현 : 데이터의 삽입,변경,삭제 등의 작업을 수행할 SQL문을 생성하는 과정, SQL문은 소스코드내에직접입력, 또는 별도의 XML파일로 관리
- DAO구현 : 데이터베이스에 접근하고, SQL을 활용하여 데이터를 실제로 조작하는 코드를 구현하는과정
- Service 구현 : 사용자의 요청에 응답하기 위한 로직을 구현하는 과정
- Controller구현 : 사용자의 요청에 적절한 서비스를 호출하여, 그 결과를 사용자에게 반환하는 코드를 구현하는 과정
- API(Application Programming Interface) : 응용프로그램개발시, 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 규칙 등을 정의해 놓은 인터페이스
- 배치프로그램 : 사용자의 상호작용없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하도록 만든 프로그램
- 필수요소
- 대용량데이터 : 대량의 데이터를 가져오거나 전달하거나 계산하는 등의 처리가 가능해야 함
- 자동화 : 심각한 오류가 발생하는 상황을 제외하고는 사용자의 개입 없이 수행되어야 함
- 견고성 : 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 함
- 안정성/신뢰성 : 오류가 발생하면 오류의 발생위치, 시간 등을 추적할 수 있어야 함
- 성능 : 다른 응용프로그램의 수행을 방해하지 않아야 함 ,일정시간내 완료
- 배치스케쥴러 : 일괄처리작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 도구(잡스케쥴러)
- 종류
- 스프링 배치 : Spring Source와 Accenture사가 2007년 공동개발한 오픈소스프레임워크, 로그관리 추적 트랜잭션관리 작업처리 통계 작업재시작 등의 다양한 기능을 제공
- Quartz : 스프링프레임워크로 개발되는 응용프로그램들의 일괄처리를 위한 다양한 기능을 제공하는 오픈소스라이브러리, 수행할작업과 수행시간을 관리하는 요소들을 분리하여 일괄처리작업에 유연성을 제공
- Cron : 리눅스의 기본 스케쥴러 도구, crontab명령어를 통해 작업을 예약할 수 있음
- [분] [시] [일] [월] [요일] [명렁어]
- 분 : 0~59
- 시 : 0~23
- 일 : 1~31
- 월 : 1~12
- 요일 : 0(일요일) ~ 6(토요일)
- [분] [시] [일] [월] [요일] [명렁어]
- 종류
- 필수요소
- 패키지 소프트웨어 : 기업에서 일반적으로 사용하는 여러기능을 통합하여 제공하는 소프트웨어
3단원 통합구현
- XML : 특수한 목적을 갖는 마크업언어를 만드는 데 사용되는 다목적 마크업 언어
- 웹 브라우저간 HTML문법이 호환되지 않은 문제와 SGML의 복잡함을 해결하기 위해 개발
- SGML(Stand Generalized Markup Language) : 텍스트,이미지,오디오 및 비디오 등을 포함하는 멀티미디어 전자문서들을 다른 기종의 시스템들과 정보의 손실없이 효율적으로 전송, 저장 및 자동 처리하기 위한 언어
- 사용자가 직접 문서의 태그(Tag)를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.
- 트리구조로 구성
- 웹 브라우저간 HTML문법이 호환되지 않은 문제와 SGML의 복잡함을 해결하기 위해 개발
- SOAP(Simple Object Access Protocol) : 컴퓨터 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
- 웹서비스에서 사용되는 메시지의 형식과 처리방법을 지정
- 기본적으로 HTTP기반에서 동작하기 때문에 프록시와 방화벽의 영향 없이 통신할 수 있다.
- 최근 SOAP대신 RESTful 프로로토콜 이용하기도함
- RESTful프로토콜 : HTTP와 REST의 원칙을 사용하여 구현되는 웹 서비스로, HTTP로 자원을 관리하는데 사용되는 웹 서비스 API의 집합
- WSDL(Web Service Description Language) : 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어
- XML로 작성되며, UDDI의 기초가된다.
- UDDI : 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 정보를 등록하기 위한 확장성 생성언어(XML)기반의 규격
- SOAP, XML 스키마와 결합하여 인터넷에서 웹 서비스를 제공하기 위해 사용
- 클라이언트는 WSDL파일을 읽어 서버에서 어떠한 조작이 가능한지를 파악할 수 있다.
- XML로 작성되며, UDDI의 기초가된다.
5단원 인터페이스 구현
- 요구사항검토 : 요구사항 명세서의 오류 확인 및 표준 준수 여부 등의 결함 여부를 검토 담당자들이 수작업으로 분석하는방법
- 동료검토 : 요구사항명세서 작성자가 명세서 내용을 직접 설명하고 동료들이 이를 들으면서 결함을 발견하는 형태의 검토방법
- 워크스루 : 검토회의전에 요구사항명세서를 미리 배포하여 사전검토한 후에 짧은 검토회의를 통해 결함을 발견하는 형태의 검토 방법
- 인스펙션 : 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견하는 형태의 검토방법
- 시스템연계기술
- DB Link : DB에서 제공하는 DB Link 객체를 이용하는 방식
- API/Open API : 송신시스템의 데이터베이스에서 데이터를 읽어와 제공하는 애플리케이션 프로그래밍 인터페이스 프로그램
- 연계솔루션 : EAI 서버와 송수신 시스템에 설치되는 클라이언트를 이용하는 방식
- EAI(Enterprise Application Integration): 송수신데이터를 식별하기 위해 송수신 처리 및 진행 현황을 모니터링하고 통제하는 시스템
- Socket : 서버가 통신을 위한소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청시 클라이언트와 연결하여 통신하는 네트워크 기술
- Web Service : 웹서비스에서 WSDL, UDDI, SOAP 프로토콜을 이용하여 연계하는 서비스
- 미들웨어 : 운영체제와 응용프로그램, 또는 서버와 클라이언트 사이에서 다양한 서비스를 제공하는 소프트웨어
- DB : 데이터베이스 벤더에서 제공하는 클라이언트에서 원격의 데이터베이스와 연결하는 미들웨어
- RPC(원격프로시저호출) : 응용프로그램의 프로시저를 사용하여 원격프로시저를 마치 로컬프로시저처럼 호출하는 미들웨어
- MOM(메시지지향미들웨어) : 메시지 기반의 비동기형 메시지를 전달하는 미들웨어, 온라인업무보다는 이기종 분산 시스템의 데이터 동기를 위해 많이 사용
- TP-Monitor(트랜잭션 처리 모니터) : 온라인 트랜잭션 업무에서 트랜잭션을 처리 및 감시하는 미들웨어, 항공기나 철도 예약 업무 등 사용
- ORB(객체 요청브로커) ; 코바(CORBA)표준 스펙을 구현한 객체지향 미들웨어
- WAS : 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위한 미들웨어, 클라이언트/서버 환경보다는 웹 환경을 구현하기 위한 미들웨어
- 모듈연계 : 내부 모듈과 외부 모듈 또는 내부 모듈 간 데이터 교환을 위해 관계를 설정하는 것
- 대표적인 모듈 연계방법
- EAI : 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션
- EAI의 구축유형
- Point-to-Point : 가장 기본적인 애플리케이션 통합 방식, 애플리케이션을 1:1로연결, 변경 및 재사용이 어려움
- Hub & Spoke : 단일 접점인 허브시스템을 통해 다른 데이터를 전송하는 중앙 집중형 방식, 확장 및 유지보수가 용이, 허브장애발생시, 시스템전체에 영향을 미침
- Message Bus(ESB방식) : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식, 확장성이 뛰어나며 대용량 처리가 가능
- Hybrid : Hub & Spoke와 Message Bus의 혼합 방식, 그룹 내에서는 Hub & Spoke 방식을, 그룹간에는 Message Bus방식을 사용, 필요한 경우 한가지방식을 EAI구현이가능,데이터병목현상최소화
- EAI의 구축유형
- ESB(Enterprise Service Bus) : 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션
- 애플리케이션 통합 측면에서 EAI와 유사하지만, 애플리케이션 보다는 서비스통합을 지향
- 특정서비스에 국한되지 않고 범용적으로 사용하기 위하여 애플리케이션과의 결합도(Coupling)를 약하게(Loosely)유지한다.
- 관리 및 보안 유지가 쉽다, 높은 수준의 품질 지원이 가능
- 웹 서비스(Web Service) : 네트워크 정보를 표준화된 서비스 형태로 만들어 공유하는 기술
- 웹서비스는 서비스지향아키텍처(SOA)개념을 실현하는 대표적인 방법
- 서비스지향아키텍처 : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍처
- 웹 서비스의 구성
- SOAP : HTTP, HTTPS, SMTP등을 활용하여 XML기반의 메시지를 네트워크 상에서 교환하는 프로토콜
- UDDI : WSDL을 등록하여 서비스와 서비스 제공자를 검색하고 접근하는데 사용
- WSDL : 웹서비스명, 서비스 제공위치, 프로토콜 등 웹 서비스에 대한 상세정보를 XML 형식으로 구현
- 웹서비스는 서비스지향아키텍처(SOA)개념을 실현하는 대표적인 방법
- EAI : 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션
- 대표적인 모듈 연계방법
- JSON(Javascript Object Notation) : 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성-값의 쌍(Attribute-Value Pairs)형태로 표현하는 개방형 표준 포멧
- 비동기 처리에 사용되는 AJAX에서 XML을 대체하여 사용되고 있다.
- AJAX(Asynchronous Javascript and XML) : 자바스크립트를 사용하여 클라이언트 서버간에 XML 데이터를 주고 받는 비동기 통신 기술
- 전체 페이지를 새로고치지 않고도 웹 페이지 일부 영역만을 업데이트할 수 있다.
- 인터페이스 보안기능 적용 : 일반적으로 네트워크, 에플리케이션, 데이터베이스 영역에 적용
- 네트워크 영역 : 인터페이스 송수신간 스니핑등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해 네트워크 트래픽에 대한 암호화를 설정
- 암호화는 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP등의 다양한 방식을 지원
- IPSec(IP Security) : 네트워크 계층에서 IP패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜
- SSL(Secure Sockets Layer) : TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
- S-HTTP(Secrue Hypertext Transfer Protocol) : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화하는 프로토콜
- 암호화는 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP등의 다양한 방식을 지원
- 네트워크 영역 : 인터페이스 송수신간 스니핑등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해 네트워크 트래픽에 대한 암호화를 설정
- 인터페이스 구현 검증 도구 : 인터페이스 구현을 검증하기 위해서는 인터페이스 단위 기능과 시나리오 등을 기반으로 하는 통합테스트가 필요
- 통합테스트를 수행하기 위해 사용되는 테스트 자동화 도구
- xUnit : Java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
- STAF : 서비스호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크, 크로스 플랫폼이나 분산소프트웨어(데몬)에서 테스트 환경을 조성할 수 있도록지원,
- FitNess : 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
- NTAF : FitNess의 장점인 협업기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임 워크
- Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
- watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
- 통합테스트를 수행하기 위해 사용되는 테스트 자동화 도구
- 인터페이스 구현 감시 도구 : 인터페이스 동작 상태는 APM(애플리케이션 성능 관리)을 사용하여 감시(Monitoring)할 수 있다.
- 대표적인APM
- 스카우터(Scouter) : 애플리케이션 및 OS자원에 대한 모니터링 기능을 제공하는 오픈소스 APM 소프트웨어
- 제니퍼(Jennifer) : 애플리케이션 개발부터 테스트, 오픈, 운영, 안정화까지 전 단계에 걸쳐 성능을 모니터링하고 분석해주는 소프트웨어
- APM : 애플리케이션의 성능 관리를 위해 접속자, 자원현황, 트랜잭션 수행내역, 장애진단 등 다양한 모니터링 기능을 제공하는 도구
- 리소스 방식 : Nagios, Zabbix, Cacti 등
- 엔드투엔드 방식 : VisualVM, 제니퍼, 스카우터 등
- 대표적인APM
12단원 제품소프트웨어 패키징
- 릴리즈 노트 : 소프트웨어 개발 과정에서 정리된 릴리즈 정보를 최종 사용자인 고객과 공유하기 위한 문서
- 릴리즈 노트 작성 항목
- Header(머릿말) : 릴리즈 노트이름, 소프트웨어이름, 릴리즈버전,릴리즈 날짜, 릴리즈 노트날짜, 릴리즈노트버전 등
- 사용자영향도 : 사용자가 다른 기능들을 사용하는데 있어 해당 릴리즈 버전에서의 기능 변화가 미칠 수 있는 영향에 대한 설명
- SW 지원 영향도 : 해당 릴리즈 버전에서의 기능 변화가 다른 응용 프로그램들을 지원하는 프로세스에 미칠 수 있는 영향에 대한 설명
- 면책 조항: 회사 및 소프트웨어와 관련하여 참조할 사항(EX. 프리웨어, 불법복제금지 등)
- 릴리즈 노트 작성 항목
- 디지털저작권권리(DRM) : 창작자가 가지는 배타적 독점 권리로, 타인의 침해를 받지 않을 고유한 권한
- 클리어링하우스 : 저작권에 대한 사용권한, 라이선스 발급, 암호화된 키 관리, 사용량에 따른 결제관리 등을 수행하는 곳
- 콘텐츠 제공자 : 콘텐츠를 제공하는 저작권자
- 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
- 메타데이터 : 데이터에 대한 데이터, 즉 데이터에 대한 속성 정보등을 설명하기 위한 데이터
- 콘텐츠 분배자 : 암호화된 콘텐츠를 유통하는 곳이나 사람
- 콘텐츠 소비자 : 콘텐츠를 구매해서 사용하는 주체
- DRM 컨트롤러 : 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
- 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
- 형상관리(SCM; Software Configuration Management) : 개발 과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동
- 형상관리 기능
- 형상식별 : 형상관리대상에 이름과 관리번호를 부여하고, 계층(Tree)구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전제어 : 소프트웨어 업그레이드나 유지보수과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool)를 결합시키는 작업
- 형상통제 : 식별된 형상 항목에 대한 변경요구를 검토하여 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
- 기준선(Base Line, 변경 통제 시점) : 정식으로 검토되고 합의된 명세서나 제품으로, 소프트웨어 개발 시 소프트웨어 변경을 적절히 제어할 수 있도록 도와줌
- 형상감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상기록 : 형상의식별, 통제, 감사 작업의 결과를 기록관리하고 보고서를 작성하는 작업
- 형상관리 기능
- 소프트웨어 버전 등록 관련 주요 기능
- 저장소 : 최신 버전의 파일들과 변경내역에 대한 정보들이 저장되어 있는 곳
- 가져오기(Import) : 버전관리가되고있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일을 복사함.
- 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아옴
- 체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후, 저장소의 파일을 새로운 버전으로 갱신함.
- 커밋(Commit) : 체크인을 수행할 때 이전에 갱신되 내용이 있는 경우에는 충돌(Conflict)을 알리고 diff도구를 이용해 수정한 후, 갱신을 완료함
- diff도구 : 비교 대상이 되는 파일들의 내용(소스코드)을 비교하며 다른 부분을 찾아 표시해주는 도구
- 동기화(Update) : 저장소에 있는 최신버전으로 자신의 작업공간을 동기화함.
- 소프트웨어 버전 관리 도구
- 공유폴더방식 : 버전관리자료가 지역 컴퓨터의 공유폴더에 저장되어 관리되는 방식
- 종류 : SCCS, RCS, PVCS, QBCS 등
- RCS : 소스파일의 수정을 한사람만으로 제한하는 파일잠금방식으로 관리
- 종류 : SCCS, RCS, PVCS, QBCS 등
- 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장되어 관리되는 방식
- 종류
- CVS(Concurrent Versions System) : 서버와 클라이언트로 구성되어 다수의 인원이 동시에 접근 가능
- Subversion(서브버전, SVN) : cvs를 개선한것으로, 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있는 도구, 아파치소프트웨어재단에서 2000년에 발표
- 소스가 오픈되어 있어 무료로 사용가능하다.
- cvs의 단점이었던 파일이나 디렉터리의 이름, 변경, 이동 등이 가능하다.
- 주요명렁어
- add : 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록함
- export : 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아옴
- info : 지정한 파일에 대한 위치나 마지막 수정일자 등에 대한 정보를 표시
- diff : 지정된 파일이나 경로에 대해 이전 리비전과의 차이를 표시
- Clear Case : 복수 서버와 복수 클라이언트로 구성되어 서버가 부족할때 확장할 수 있음
- 종류
- 분산 저장소 방식 : 버전관리자료가 하나의 원격 저장소와 분산된 개발자PC의 지역저장소에 함께 저장되어 관리되는 방식
- 지역저장소에서 버전관리가 가능하므로 원격저장소에 문제가 생겨도 지역저장소의 자료를 이용하여 작업할 수 있음
- Bitkeeper : SVN과 비슷한 중앙통제방식으로 대규모 프로젝트에서 빠른 속도를 낼 수 있음
- 깃(Git) : 리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지 보수되고 있다.
- 분산버전관리시스템으로 2개의저장소, 지역저장소 원격저장소가 존재
- 주요명령어
- add : 작업내역을 지역저장소에 저장하기 위해 스테이징 영역에 추가함
- commit : 작업내역을 지역저장소에 저장
- branch : 새로운 브랜치를 생성, 최초로 commit을 하면 마스터브랜치가 생성, commit할때마다 해당 브랜치는 가장최근의 commit한 내용을 가리키게됨
- checkout : 지정한 브랜치로 이동, 현재 작업중인 브랜치는 HEAD포인터가 가리키는데, checkout명령을 통해 HEAD 포인터를 지정한 브랜치로 이동시킴
- merge : 지정한 브랜치의 변경내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합함
- init : 지역저장소를 생성
- remote add : 원격 저장소에 연결
- push : 로컬 저장소의 변경내역을 원격저장소에 반영
- fetch : 원격저장소의 변경이력만을 지역저장소로 가져와 반영
- clone : 원격 저장소의 전체 내용을 지역저장소로 복제
- fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제
- 지역저장소에서 버전관리가 가능하므로 원격저장소에 문제가 생겨도 지역저장소의 자료를 이용하여 작업할 수 있음
- 공유폴더방식 : 버전관리자료가 지역 컴퓨터의 공유폴더에 저장되어 관리되는 방식
- 빌드 자동화 도구 : 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
- Jenkins : Java 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 서블릿 컨테이너 : 클라이언트의 요청을 처리하기 위해 서버측에서 실행되는 작은 프로그램인 서블릿을 실행하고 서빌릿의 생명주기를 관리하는 역할을 한다.
- 가장많이 사용되는 , 대부분의 형상관리도구와 연동이 가능, 친숙한 WEB GUI제공
- Gradle : Groovy를 기반으로 한 오픈소스 형태의 자동화 도구
- Groovy : Java에 Python, Ruby, Smalltalk 등의 장점을 결합한 동적 객체 지향 프로그래밍 언어
- 안드로이드 앱 개발환경에서 사용(플러그인 -> Java, c/c++, python 등의 언어도 빌드가능)
- Groovy를 사용해서 만든 DSL(Domain Specific Language)을 스크립트 언어로 사용
- DSL(Domain Specific Language) : 웹페이지에 영역에 특화되어 사용되는 HTML과 같이 특정한 도메인, 즉 영역이나 용도에 맞게 기능을 구성한 언어
- 스크립트언어 : HTML문서 안에 직접 프로그래밍언어를 삽입하여 사용하는 것으로, 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어
- Jenkins : Java 기반의 오픈 소스 형태로, 서블릿 컨테이너에서 실행되는 서버 기반 도구
6단원 화면설계
- 사용자 인터페이스(UI, User Interfcae)
- 사용자와 시스템 간의 상호작용이 원활하게 이루어지도록 도와주는 장치나 소프트웨어
- 사용자 인터페이스의 구분
- CLI(Command Line Interfcae) : 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
- GUI(Graphical User Interfcae) :아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
- NUI(Natural User Interface) : 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
- 사용자 인터페이스의 기본원칙
- 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 함
- 유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 함
- 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함
- 유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 함.
- UI 설계 도구
- 와이어프레임 : 페이지에 대한 개략적인 레이아웃이나 ui요소 등에 대한 뼈대를 설계하는 도구(손그림, 파워포인트 등)
- 목업 : 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형(파워목업, 발사믹 목업 등)
- 스토리보드 : 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동흐름등을 추가한 문서(파워포인터, 키노트, 스케치)
- 프로토타입 : 와이어프레임이나 스토리보드 등에 인터랙션을 적용함으로써 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형 (페이퍼 프로토타입, 디지털 프로토타입)
- 유스케이스 : 사용자의 요구사항을 기능 단위로 표현하는 것
- 품질 요구사항 : 소프트웨어 품질은 소프트웨어에 대한 요구사항이 사용자의 입장에서 얼마나 충족하는가를 나타내는 소프트웨어의 특성의 총체이다
- 소프트웨어 품질 관련 표준
- ISO/IEC 9126 : 소프트웨어의 품질 특성과 평가를 위한 국제 표준
- 기능성 : 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는지 여부를 나타냄
- 신뢰성 : 주어진 시간 동안 주어진 기능을 오류 없이 수행할 수 있는 정도
- 사용성 : 사용자의 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고 사용하며, 향후 다시 사용하고 싶은 정도
- 효율성 : 사용자가 요구하는 기능을 얼마나 빠르게 처리할 수 있는지 정도를 나타냄
- 유지보수성 : 환경의변화 또는 새로운 요구사항이 발생했을 때 소프트웨어를 개선하거나 확장할 수 있는 정도를 나타냄
- 이식성 : 소프트웨어가 다른 환경에서도 얼마나 쉽게 적용할 수 있는지 정도를 나타냄
- ISO/IEC 25010 : ISO/IEC 9126에 호환성과 보안성을 강화하여 개정한 소프트웨어 제품에 대한 국제 표준
- ISO/IEC 1229 : 패키지 소프트웨어의 일반적인 품질 요구사항 및 테스트를 위한 국제 표준
- ISO/IEC 14598 : 소프트웨어 품질의 측정과 평가에 필요 절차를 규정한 표준
- ISO/IEC 9126 : 소프트웨어의 품질 특성과 평가를 위한 국제 표준
- 소프트웨어 품질 관련 표준
- UI시나리오 문서 : 사용자의 인터페이스의 기능 구조, 대표화면, 화면 간 인터랙션의 흐름, 다양한 상황에서의 예외처리 등을 정리한 문서
- HCI(Human Computer Interaction or Interface) : 사람이 시스템을 보다 편리하고 안전하게 사용할 수 있도록 연구하고 개발하는 학문
- 최종목표는 시스템을 사용하는데 있어 최적의 사용자 경험(UX)를 만드는 것
- UX(User Experience) : 사용자가 시스템이나 서비스를 이용하면서 느끼고 생각하게 되는 총체적인 경험
- 감성 공학 : 제품이나 작업 환경을 사용자의 감성에 알맞도록 설계 및 제작하는 기술
1단원 요구사항 확인
- 소프트웨어생명주기 : 소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것
- 폭포수모형 : 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인과정을 거친 후에 다음단계를 진행하는 개발 방법론
- 프로토타입모형 : 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종결과물을 예측하는 모형
- 나선형모형 : 여러번의 소프트웨어 개발과정을 거쳐 점진적으로 개발하는 모형
- 보헴이제안
- 계획수립 -> 위험분석 -> 개발 및 검증 -> 고객평가 (반복)
- 애자일모형 : 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형
- 고객과의 소통에 초점을 맞춘다.
- 스크럼(Scrum) : 팀이 중심이 되어 개발의 효용성을 높이는 기법
- 제품 책임자(PO) : 백로그를 작성, 스크럼마스터, 개발팀
- 스프린트 : 실제 개발 작업을 진행하는 과정으로, 보통 2~4주의 정도의 기간내에서 진행
- XP(eXtreme Programming) : 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질 높이기 위한 방법론(피존의용단)
- 계획하고 진행(이터레이션)한 후 검사하고 출시(릴리즈)한다
- XP의 주요 실천 방법
- Pair Programming(짝프로그래밍) : 다른사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성함
- Collective Ownership(공동코드소유) : 개발코드에 대한 권한과 책임을 공동으로 소유
- Test-Driven Development(테스트 주도 개발) : 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 정확히 파악함
- Whole Team(전체 팀) : 개발에 참여하는 모든구성원들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 함
- Continuous Integration(계속적인 통합) : 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합됨.
- Refactoring(리팩토링) : 프로그램 기능의 변경 없이 시스템을 재구성함
- Small Release(소규모 릴리즈) : 릴리즈 기간을 짧게 반복함으로써 고객의 요구변화에 신속히 대응할 수 있음
- 운영체제(OS, Operating System) : 컴퓨터 시스템의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어
- 운영체제 관련 요구사항 식별시 고려사항 -> 성기주구가
- 성능, 기술지원, 주변기기, 구축비용, 가용성
- 운영체제 관련 요구사항 식별시 고려사항 -> 성기주구가
- 데이터베이스 관리 시스템(DBMS; DataBase Management System) : 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고, 데이터베이스를 관리해주는 소프트웨어
- 고려사항 -> 성기상구가
- 성능, 기술지원, 상호호환성, 구축비용, 가용성
- 고려사항 -> 성기상구가
- 웹 애플리케이션 서버(WAS; Web Application Server) : 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어
- 고려사항 -> 성기구가
- 성능 기술지원 구축비용 가용성
- 고려사항 -> 성기구가
- 오픈소스 : 누구나 별다른 제한없이 사용할 수 있도록 소스코드를 공개한 소프트웨어
- 요구사항 : 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약 조건
- 기능 요구사항 : 시스템이 무엇을 하는지, 어떤 기능을 하는지 등의 기능이나 수행과 관련된 요구사항
- 비기능요구사항 : 품질이나 제약사항과 관련된 요구사항
- 사용자 요구사항 : 사용자 관점에서 본 시스템이 제공해야 할 요구사항
- 시스템 요구사항 : 개발자 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항
- 요구사항 개발 프로세스 : 도출 -> 분석 -> 명세 -> 확인(도분명확)
- 도출 : 청취, 브레인스토밍
- 분석 : 자료흐름도(DFD), 자료사전(DD)
- 자료흐름도(DFD, Data Flow Diagram) : 자료의 흐름 및 변환 과정과 기능을 도형중심으로 기술하는 방법
- 자료사전(DD, Data Dictionary) : 자료흐름도에 있는 자료를 더 자세히 정의하고 기록한것, 메타데이터라고도 한다
- 명세 : 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것
- 확인 : 요구사항 명세서가 정확하고 안전하게 작성되었는지를 검토하는 활동
- 요구공학 : 무엇을 개발해야 하는지 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문
- 요구사항 명세 기법
- 정형명세기법 : 수학적원리기반, 모델 기반
- 요구사항을 정확하고 간결하게 표현 , 표기법이 어려워 사용자 이해 어려움
- 비정형명세기법 : 상태/기능/객체중심, 자연어의 사용으로 일관성이떨어지고, 해석달라질 수 있음, 내용이해쉬움
- 정형명세기법 : 수학적원리기반, 모델 기반
- 요구사항 분석용 CASE(자동화 도구) : 요구사항을 자동으로 분석하고, 요구사항 분석 명세서를 기술하도록 개발된 도구
- 대표적인 요구사항 분석용 CASE
- SADT : SoftTech 사에서 개발
- SREM=RSL/REVS : TRW사가 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 도구
- RSL : 요소, 속성, 관계, 구조들을 기술하는 요구사항 기술 언어
- REVS : RSL로 기술된 요구사항들을 자동으로 분석하여 요구사항 명세서를 출력하는 요구사항 분석기
- PSL/PSA : PSL과 PSA를 사용하는 자동화 도구, 미시간 대학에서 개발
- PSL : 문제(요구사항) 기술 언어
- PSA : PSL로 기술한 요구사항을 분석하여 보고서를 출력하는 문제 분석기
- TAGS : 시스템 공학 방법 응용에 대한 자동 접근 방법, 개발 주기의 전 과정에 이용할 수 있는 통합 자동화 도구
- 대표적인 요구사항 분석용 CASE
- HIPO(Hierarchy Input Process Output) : 시스템의 분석 및 설계, 또는 문서화에 사용되는 기법으로, 시스템 실행 과정인 입력 처리 출력의 기능을 표현한 것
- 하향식 소프트웨어 개발을 위한 문서화 도구
- HIPO Chart : 시스템의 기능을 여러개의 고유 모듈로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것
- UML(Unified Modeling Language) : 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어
- 구성요소 : 사물, 관계, 다이어그램
- 사물 : 다이어그램 안에서 관계가 형성 될 수 있는 대상들
- 관계: 사물과 사물 사이의 연관성을 표현하는 것
- 종류
- 연관(Association)관계 : 2개이상의 사물이 서로 관련되어 있는 관계 , 실선, 화살표
- 사람, 집
- 집합(Aggregation)관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계
- 포함하는쪽과 포함되는쪽은 서로 독립적 , 포함되는쪽(프린터)에서 포함하는쪽(컴퓨터)으로 속이 빈 마름모를 연결
- 컴퓨터, 프린터
- 포함(Composition)관계 : 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 포함하는쪽과 포함되는쪽은 서로 독립될 수 없고 생명주기함께, 포함되는 쪽(키)에서 포함하는 쪽(문)으로 속이 채워진 마름모 연결
- 문, 키
- 일반화(Generalization)관계 : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 보다 일반적인 개념을 상위(부모), 보다 구체적인 개념을 하위(자식)라고 부른다.
- 구체적(하위)인 사물에서 일반적(상위)인 사물쪽으로 속이 빈 화살표를 연결
- 아메리카노,에스프레소 커피
- 의존(Dependency)관계 : 서로에게 영향을 주는 짧은 시간동안만 연관을 유지하는 관계
- 소유관계는 아니지만, 사물의 변화가 다른 사물에도 영향을 미치는 관계
- 영향을주는 사물이 영향을 받는 사물쪽으로 점선 화살표를 연결
- 등급, 할인율 . 등급이 높으면할인율을 적용하고, 등급이 낮으면 할인율 적용 x
- 실체화(Realization) 관계 : 할 수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계
- 사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결하여 표현
- 비행기는 날수 있고 새도 날 수 있다.
- 연관(Association)관계 : 2개이상의 사물이 서로 관련되어 있는 관계 , 실선, 화살표
- 종류
- 다이어그램 : 사물과 관계를 도형으로 표현한 것
- 정적 모델링에서는 구조적 다이어그램사용
- 동적 모델링에서는 행위 다이어그램 사용
- 구조적 다이어그램 종류
- 클래스 다이어그램 : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
- 객체 다이어그램 : 클래스에 속한 사물(객체)를, 즉 인스턴스를 특정시점의 객체와 객체 사이의 관계로 표현, 럼바우 객체지향분석 기법에서 객체 모델링에 활용
- 컴포넌트 다이어그램 : 컴포넌트간의 관계나 인터페이스를 표현
- 배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
- 복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합구조를 갖는 경우 그 내부 구조를 표현
- 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키들의 관계를 표현
- 행위 다이어그램 종류
- 유스케이스 다이어그램 : 사용자의 요구를 분석하는 것, 기능모델링 작업에 사용 , 사용자(Actor)와 사용사레(Use Case)로 구성
- 시퀀스 다이어그램 : 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현
- 커뮤니케이션 다이어그램 : 동작에 참여하는 객체들이 주고받는 메시지와 객체들 간의 연관관계를 표현
- 상태 다이어그램 : 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따른 상태가 어떻게 변화하는지를 표현 , 럼바우 객체지향분석기법에서 동적모델링에 활용
- 활동 다이어그램 : 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현
- 상호작용개요다이어그램 : 상호작용 다이어그램간의 제어흐름을 표현
- 타이밍다이어그램 : 객체상태변화와 시간제약을 명시적으로 표현
- 스테레오 타입(Stereotype)
- UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것
- 길러멧(Guilemet)이라고 부르는 겹화살괄호(<<>>)사이에 표현할 형태를 기술
- 주로 표현되는 형태
- <<include>> : 연결된 다른 UML 요소에 대해 포함 관계에 있는 경우
- <<extend>> : 연결된 다른 UML 요소에 대해 확장관계에 있는 경우
- <<interface>> : 인터페이스를 정의하는 경우
- <<exception>> : 예외를 정의하는 경우
- <<constructor>> : 생성자 역할을 수행하는 경우
- 구성요소 : 사물, 관계, 다이어그램
- 소프트웨어 재사용(Software Reuse) : 이미개발되어 인정받는 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것
- 소프트웨어 재공학(Software Reengineering) : 새로운 요구에 맞도록 기존시스템을 이용하여 보다 나은시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- CASE(Computer Aided Software Engineering) : 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는 것
- 비용산정기법
- 하향식 산정기법 : 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
- 전문가 감정 기법 : 조직내에 있는 경험이 많은 두명이상의 전문가에게 비용 산정을 의뢰하는 기법
- 델파이 기법 : 전문가 감정 기법의 주관적인 편견을 보안하기 위해 많은 전문가의 의견을 종합하여 산정하는 기법
- 상향식 산정기법 : 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정하는 방법
- LOC(원시코드라인수)기법
- 소프트웨어 각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
- 비관치 : 가장 많이 측정된 코드 라인 수
- 낙관치 : 가장 적게 측정된 코드 라인 수
- 기대치 : 측정된 모든 코드 라인 수의 평균
- (a+4m+b)/6 , a:낙관치 b:비관치 m:기대치(중간치)
- 산정공식, 노력(인월) -> 명
- 노력(인월) = 개발기간 * 투입 인원 = LOC/ 1인당 월평균 생산 코드 라인 수
- 개발 비용 = 노력(인월) * 단위 비용(1인당 월평균 인건비)
- 개발 기간 = 노력(인월) / 투입인원
- 생산성 = LOC/노력(인월)
- 소프트웨어 각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법
- 개발 단계별 인원수(Effor Per Task)기법
- LOC기법을 보완하기 위한 기법으로, 각 기능을 구현시키는데 필요한 노력을 생명주기의 각 단계별로 산정 , LOC기법보다 더 정확함
- 수학적 산정 기법 : 경험적 추정 모형, 실험적 추정 모형이라고 한다.
- COCOMO모형 : 원시프로그램의 규모인LOC(원시코드라인수)에 의한 비용산정기법
- 보헴에 제안, Man-Moth
- COCOMO의 소프트웨어 개발 모형
- 조직형(Organic Mode) : 중소규모의 소프트웨어 , 5만라인이하의 소프트웨어 개발
- 반부리형(Semi-Detached Mode) : 중간형소프트웨어, 30만라인이하의 소프트웨어 개발
- 내장형(Embedded Mode) : 초대형 규모의소프트웨어, 30만라인이상
- KDSI : 전체 라인수를 1000라인 단위로 묶은것
- Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
- 푸트남이 제안, 생명주기예측모형, Rayleigh-Norden 곡선의 노력분포도 기초 , 대형프로젝트
- 기능점수(FP; Function Point)모형 : 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하고, 요인별 가중치를 합산하여 총기능점수를 산출하며, 총기능점수와 영향도를 이용하여 기능점수(FP)를 구한 후, 이를 이용해서 비용을 산정하는 기법
- COCOMO모형 : 원시프로그램의 규모인LOC(원시코드라인수)에 의한 비용산정기법
- LOC(원시코드라인수)기법
- 비용 산정 자동화 추정 도구
- SLIM : Rayleigh-Norden 곡선과 Putnam 예측 모델을 기초로 하여 개발된 자동화 추정 도구
- ESTIMACS : 다양한 프로젝트와 개인별 요소를 수용하도록 FP모형을 기초로 하여 개발된 자동화 추정 도구
- 하향식 산정기법 : 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법
- 프로젝트 일정 계획 : 프로젝트의 프로세스를 이루는 소작업을 파악하고 예측된 노력을 각 소작업에 분배하여 소작업의 순서와 일정을 정하는 것
- 프로젝트 일정 계획에 사용되는 기능
- WBS(Work Breakdown Structure, 업무 분류 구조) : 개발 프로젝트를 여러 개의 작은 관리 단위로 분할하여 계층적으로 기술한 업무 구조
- PERT/CPM : 프로젝트의 지연을 방지하고 계획대로 진행되도록 일정을 계획하는 것으로 대단위 계획의 조직적인 추진을 위해, 비용을 적게 사용하면서 최단시간 내 계획 완성을 위한 프로젝트 일정 방법
- PERT : 프로젝트에 필요한 전체 작업의 상호관계를 표시하는 네트워크(낙관,기대,비관)
- CPM : 작업을 나열하고 작업에 필요한 소요기간을 예측하는데 사용하는 기법
- 간트차트 : 프로젝트의 각 작업들이 언제 시작하고 언제 종료되는지에 대한 작업 일정을 막대도표를 이용하여 표시하는 프로젝트 일정표
- 프로젝트 일정 계획에 사용되는 기능
- 소프트웨어 개발 표준 : 소프트웨어 개발 단계에서 수행하는 품질 관리에 사용되는 국제 표준
- ISO/IEC 12207 : ISO에서 만든 표준 소프트웨어 생명 주기 프로세스
- CMMI : 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델
- SPICE : 정보시스템 분야에서 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준 (ISO/IEC 15504)
- 소프트웨어 개발 방법론 테일러링 : 소프트웨어 개발 방법론의 절차, 사용기법 등을 수정 및 보완하는 작업
- 소프트웨어 개발 프레임워크 : 소프트웨어 개발에 공통적으로 사용되는 구성요소와 아키텍처를 일반화하여 여러가지 기능들을 제공해주는 반제품형태의 소프트웨어 시스템
- 종류
- 스프링프레임워크 : 자바플랫폼을 위한
- 전자정부프레임워크 : 대한민국의 공공부문 정보화 사업 시 효율적인 정보 시스템의 구축을 지원하기 위해 필요한 기능 및 아키텍처를 제공하는
- 닷넷프레임워크 : Windows 프로그램의 개발 및 실행환경을 제공하는 프레임워크
- 종류
'정보처리기사' 카테고리의 다른 글
정처기 시험 전 볼 자료 (0) | 2023.07.22 |
---|---|
정보처리기사 실기 키워드 정리(더 간략히) (0) | 2023.07.21 |
정보처리기사 키워드 정리 (0) | 2023.07.15 |