정보처리기사

정보처리기사 실기 2트도전(1단원~12단원 이론정리)

2023. 7. 2. 22:31
목차
  1. 2단원 데이터 입출력 구현
  2. 9단원 소프트웨어 보안 구축
  3. 11단원 응용 SW 기초 기술 활용
  4. 7단원. 애플리케이션 테스트 관리
  5. 4단원. 서버프로그램 구현
  6. 3단원 통합구현
  7. 5단원 인터페이스 구현
  8. 12단원 제품소프트웨어 패키징
  9. 6단원 화면설계
  10. 1단원 요구사항 확인

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의 변형된 정책, 주체가 맡은 역할에 근거
    • 접근통제 매커니즘 : 정의된 접근통제를 구현하는 기술적인 방법
      • 접근통제목록, 능력리스트, 보안등급, 패스워드, 암호화
    • 접근통제 보안모델 : 보안 정책을 구현하기 위해 정형화된 모델
      • 기밀성 모델 : 군사목적으로 개발된 최초의 수학적 모델
      • 무결성 모델 : 기밀성모델에서 정보변경을 방지하기 위한 모델
      • 접근통제 모델 : 접근통제 매커니즘을 보안 모델로 발전시킨것(접근통제행렬)
    • 접근 통제 조건 : 접근통제 매커니즘의 취약점을 보안하기 위해 적용할 수 있는 조건
      • 값종속통제, 다중사용자통제, 컨텍스트 기반 통제 
  • 로그 : 데이터베이스의 처리 내용이나 이용상황등 상태 변화를 시간의 흐름에 따라 모두 기록한 파일
  • 스토리지 : 대용량의 데이터를 저장하기 위해 서버와 저장장치를 연결하는 기술
    • 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 : 애플사에서 개발한 유닉스 기반의 모바일 운영체제
  • 기억장치의 관리전력 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 : 데이터그램방식을 기반으로하는 비연결형 서비스 제공 -> 네트워크계층
      • 데이터그램방식 : 비연결형통신에서 주로 사용되는 방식
  •  

출처 :&nbsp;https://starrykss.tistory.com/1655

  • 응용계층의 주요 프로토콜
    • 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) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
  • 인터넷계층의 주요 프로토콜 
    • 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(원격접근서비스)에기반
  • 네트워크 관련 신기술
    • 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
  • 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의 단점을 보완하기 위해 만들어졌음, 경로 벡터 알고리즘
  • 트래픽제어 :  전송되는 패킷의 흐름 또는 그 양을 조절하는 기능
    • 흐름제어 : 송수신 측 사이에 전송되는 패킷의 양이나 속도를 규제하는 기능
      • 정지대기(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) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후, 트랜잭션을 재실행 시키는 것
    • 덤프(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:노드수)
  • 소스코드 최적화 : 나쁜코드를 배제하고, 클린코드로 작성
    • 클린코드 : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드
    • 나쁜코드 : 프로그램의 로직이 복잡하고 이해하기 어려운 코드
      • 스파게티 코드 : 코드의 로직이 서로 복잡하게 얽혀 있는 코드
      • 외계인 코드 : 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 코드
    • 클린코드 작성원칙 : 가독성, 단순성, 의존성배제, 중복성 최소화, 추상화
    • 소스코드최적화 유형 : 클래스 분할배치(클래스 응집도를 높이고 크기작게작성), 느슨한결합(인터페이스 클래스이용)
  • 소스코드 품질 분석 도구 
    • 정적분석도구 : 작성한 소스코드를 실행하지 않고 코딩표준이나 코딩 스타일, 결함 등을 발견하는 코드 분석 도구
      • 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)를 이용하여 다수의 프로세스들 간의 자료흐름을 중심으로 처리과정을 표현한 모델링
  • 객체지향설계원칙 : 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜야 할 원칙(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 : 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방식 
  • 테스트케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
  • 공통 모듈 : 여러 프로그램에서 공통으로 사용할 수 있는 모듈
  • 재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
    • 재사용 규모에 따른 분류
      • 함수와 객체 : 클래스나 메소드 단위의 소스코드를 재사용
      • 컴포넌트 : 컴포넌트 자체에 대한 수정없이 인터페이스를 통해 통신하는 방식으로 재사용
      • 애플리케이션 : 공통된 기능들을 제공하는 애플리케이션을 공유하는 방식으로 재사용 
  • 코드 : 자료의 분류 조합 집계 추출을 용이하게 하기 위해 사용되는 기호 
    • 주요기능 : 식별기능, 분류기능, 배열기능, 표준화기능, 간소화기능
    • 종류
      • 순차코드 : 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법 
      • 블록코드  : 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방법
      • 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)를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.
    • 트리구조로 구성 
  • 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파일을 읽어 서버에서 어떠한 조작이 가능한지를 파악할 수 있다.

 


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구현이가능,데이터병목현상최소화
      • ESB(Enterprise Service Bus) : 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션
        • 애플리케이션 통합 측면에서 EAI와 유사하지만, 애플리케이션 보다는 서비스통합을 지향
        • 특정서비스에 국한되지 않고 범용적으로 사용하기 위하여 애플리케이션과의 결합도(Coupling)를 약하게(Loosely)유지한다. 
        • 관리 및 보안 유지가 쉽다, 높은 수준의 품질 지원이 가능 
      • 웹 서비스(Web Service) : 네트워크 정보를 표준화된 서비스 형태로 만들어 공유하는 기술
        • 웹서비스는 서비스지향아키텍처(SOA)개념을 실현하는 대표적인 방법 
          • 서비스지향아키텍처 : 기업의 소프트웨어 인프라인 정보시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는 정보 기술 아키텍처
        • 웹 서비스의 구성 
          • SOAP : HTTP, HTTPS, SMTP등을 활용하여 XML기반의 메시지를 네트워크 상에서 교환하는 프로토콜
          • UDDI : WSDL을 등록하여 서비스와 서비스 제공자를 검색하고 접근하는데 사용
          • WSDL : 웹서비스명, 서비스 제공위치, 프로토콜 등 웹 서비스에 대한 상세정보를 XML 형식으로 구현
  • 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) : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화하는 프로토콜 
  • 인터페이스 구현 검증 도구 : 인터페이스 구현을 검증하기 위해서는 인터페이스 단위 기능과 시나리오 등을 기반으로 하는 통합테스트가 필요
    • 통합테스트를 수행하기 위해 사용되는 테스트 자동화 도구 
      • 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, 제니퍼, 스카우터 등 

 


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 : 소스파일의 수정을 한사람만으로 제한하는 파일잠금방식으로 관리
    • 클라이언트/서버 방식 : 버전 관리 자료가 서버에 저장되어 관리되는 방식
      • 종류
        • 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문서 안에 직접 프로그래밍언어를 삽입하여 사용하는 것으로, 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작하게 하는 언어 

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 : 소프트웨어 품질의 측정과 평가에 필요 절차를 규정한 표준 
  • 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 : 시스템 공학 방법 응용에 대한 자동 접근 방법, 개발 주기의 전 과정에 이용할 수 있는 통합 자동화 도구 
  • HIPO(Hierarchy Input Process Output) : 시스템의 분석 및 설계, 또는 문서화에 사용되는 기법으로, 시스템 실행 과정인 입력 처리 출력의 기능을 표현한 것 
    • 하향식 소프트웨어 개발을 위한 문서화 도구 
    • HIPO Chart : 시스템의 기능을 여러개의 고유 모듈로 분할하여 이들 간의 인터페이스를 계층 구조로 표현한 것 
  • UML(Unified Modeling Language) : 시스템 분석, 설계, 구현 등 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어 
    • 구성요소 : 사물, 관계, 다이어그램
      • 사물 : 다이어그램 안에서 관계가 형성 될 수 있는 대상들 
      • 관계: 사물과 사물 사이의 연관성을 표현하는 것 
        • 종류 
          • 연관(Association)관계 : 2개이상의 사물이 서로 관련되어 있는 관계 , 실선, 화살표
            • 사람, 집 
          • 집합(Aggregation)관계 : 하나의 사물이 다른 사물에 포함되어 있는 관계 
            • 포함하는쪽과 포함되는쪽은 서로 독립적 , 포함되는쪽(프린터)에서 포함하는쪽(컴퓨터)으로 속이 빈 마름모를 연결 
            • 컴퓨터, 프린터 
          • 포함(Composition)관계 : 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
            • 포함하는쪽과 포함되는쪽은 서로 독립될 수 없고 생명주기함께, 포함되는 쪽(키)에서 포함하는 쪽(문)으로 속이 채워진 마름모 연결
            • 문, 키 
          • 일반화(Generalization)관계 : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
            • 보다 일반적인 개념을 상위(부모), 보다 구체적인 개념을 하위(자식)라고 부른다. 
            • 구체적(하위)인 사물에서 일반적(상위)인 사물쪽으로 속이 빈 화살표를 연결
            • 아메리카노,에스프레소        커피 
          • 의존(Dependency)관계 : 서로에게 영향을 주는 짧은 시간동안만 연관을 유지하는 관계
            • 소유관계는 아니지만, 사물의 변화가 다른 사물에도 영향을 미치는 관계 
            • 영향을주는 사물이 영향을 받는 사물쪽으로 점선 화살표를 연결
            • 등급, 할인율   . 등급이 높으면할인율을 적용하고, 등급이 낮으면 할인율 적용 x 
          • 실체화(Realization) 관계 : 할 수 있거나 해야하는 기능으로, 서로를 그룹화 할 수 있는 관계
            • 사물에서 기능 쪽으로 속이 빈 점선 화살표를 연결하여 표현 
            • 비행기는 날수 있고 새도 날 수 있다. 
      • 다이어그램 : 사물과 관계를 도형으로 표현한 것 
        • 정적 모델링에서는 구조적 다이어그램사용
        • 동적 모델링에서는 행위 다이어그램 사용 
        • 구조적 다이어그램 종류
          • 클래스 다이어그램 : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
          • 객체 다이어그램 : 클래스에 속한 사물(객체)를, 즉 인스턴스를 특정시점의 객체와 객체 사이의 관계로 표현, 럼바우 객체지향분석 기법에서 객체 모델링에 활용 
          • 컴포넌트 다이어그램 : 컴포넌트간의 관계나 인터페이스를 표현 
          • 배치 다이어그램 : 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
          • 복합체 구조 다이어그램 : 클래스나 컴포넌트가 복합구조를 갖는 경우 그 내부 구조를 표현
          • 패키지 다이어그램 : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키들의 관계를 표현 
        • 행위 다이어그램 종류
          • 유스케이스 다이어그램 : 사용자의 요구를 분석하는 것, 기능모델링 작업에 사용 , 사용자(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)를 구한 후, 이를 이용해서 비용을 산정하는 기법 
    • 비용 산정 자동화 추정 도구 
      • 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
  1. 2단원 데이터 입출력 구현
  2. 9단원 소프트웨어 보안 구축
  3. 11단원 응용 SW 기초 기술 활용
  4. 7단원. 애플리케이션 테스트 관리
  5. 4단원. 서버프로그램 구현
  6. 3단원 통합구현
  7. 5단원 인터페이스 구현
  8. 12단원 제품소프트웨어 패키징
  9. 6단원 화면설계
  10. 1단원 요구사항 확인
'정보처리기사' 카테고리의 다른 글
  • 정처기 시험 전 볼 자료
  • 정보처리기사 실기 키워드 정리(더 간략히)
  • 정보처리기사 키워드 정리
최맹수
최맹수
최맹수
맹수개발
최맹수
전체
오늘
어제
  • 분류 (236)
    • 로우코드(Lowcode) (53)
      • outsystems (35)
      • OutSystems프로젝트 (18)
      • Mendix (0)
    • 프론트엔드 (0)
      • html (0)
      • css (3)
      • javascript (68)
      • react (47)
      • typescript (7)
    • 정보처리기사 (20)
      • 실기 (16)
    • 공부 (9)
    • Git (5)
    • 백엔드 (21)
      • node.js(express) (20)
    • 자바 (1)
      • java (1)
      • Spring (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • javscript
  • 함수
  • await
  • 정보처리기사실기
  • 자바스크립트
  • lowcode
  • dom
  • 프론트엔드
  • outsystems
  • 로우코드
  • Promise
  • typescript
  • react
  • 배열
  • javascript
  • kiosk
  • aggreagtes
  • 프로젝트
  • 정보처리기사
  • 아웃시스템즈

최근 댓글

최근 글

hELLO · Designed By 정상우.
최맹수
정보처리기사 실기 2트도전(1단원~12단원 이론정리)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.