[정보처리기사] 1/2/3과목 주요 암기 항목

Hyo Kyun Lee·2023년 1월 24일
0

정보처리기사

목록 보기
3/26

0. 요구사항 관련 순서

  • 요구사항 개발 단계
    요구사항 도출 > 분석 > 명세 > 확인 및 검증

  • 요구사항 분석 단계
    요구사항 분류 > 모델링 > 할당 > 협상 > 분석

1. 애플리케이션 모너티링 도구

  • 변경 관리 : ChangeMiner
  • 성능 관리 : Jeniffer, Nmon
  • 정적 분석 : PMD, CppCheck, ChechStyle, SonarQube
  • 동적 분석 : Avalanche, Valgrind

2. 국제 제품 품질 기준

  • ISO/IEC 9126 : 품질 요소의 특성, 품질 측정
  • ISO/IEC 14596 : 제품 평가 프로세스 및 평가 모듈 제공(개발 과정)
  • ISO/IEC 12119 : 패키지 제품에 대한 품질 요구사항, 테스트 국제 표준
  • ISO/IEC 25000 : SQuaRE, 9126+14596+12119, 개발 공정 각 단계에서 산출되는 제품이 요구사항을 만족하는지 검증하기 위한 품질 측정 및 평가

3. ISO/IEC 9126 품질 요소 특성

※ 모든 품질요소 특성에는 준수성이 부가 특성에 들어간다.

  • 기능성 : 특정 조건에서 명시/내재 요구사항 만족
    → 적합성, 정확성, 상호운용성, 보안성, 준수성
  • 신뢰성 : 시간이 지나도 동일 기능을 오류없이 수행, 성능 수준 유지
    → 성숙성, 결함허용성, 회복성, 준수성
  • 사용성 : 모든 사용자에 의해 이해, 학습, 선호될 수 있는 소프트웨어의 능력
    → 이해성, 학습성, 운용성, 친밀성, 준수성
  • 효율성 : 자원을 효율적으로 사용, 자원의 양에 따라 요구된 기능 수행
    → 시간 반응성, 자원 효율성, 준수성
  • 유지보수성 : 환경과 요구사항에 대한 소프트웨어 수정/개선 등 및 변경되는 능력
    → 변경성, 분석성, 안정성, 시험성, 준수성
  • 이식성 : 이기종간 하드웨어에서 운용되는 능력
    → 적응성, 설치성, 공존성, 대체성, 준수성

4. ISO/IEC 14598 품질 특성

  • 반복성 : 동일 평가자가 동일 사양으로 평가시 동일한 결과
  • 재현성 : 비슷한 사양에서 평가시 유사한 결과
  • 공정성 : 결과가 특정 결과에 편향되지 않음
  • 객관성 : 객관적 자료에 의해서만 평가

5. 국제 프로세스 품질 표준

  • ISO/IEC 9001 : 설계/개발/생산/설치 등 서비스 과정(공급자/구매자간 관리 책임)
  • ISO/IEC 12207 : 소프트웨어 획득/공급/개발/운영/유지보수를 체계적으로 관리하기 위한 생명주기 단계별 필요 프로세스(기본/지원/조직)
  • ISO/IEC 15504 : 소프트웨어 프로세스 평가 및 개선하여 품질, 생산성 향상
    → SPICE, 불완전/수행/관리/확립/예측/최적화
  • CMMi : CMM모델 통합, SPICE 준수하는 소프트웨어 개발 능력/성숙도 평가 및 프로세스 개선, 지속적인 품질 개선
    → 단계별 표현 / 연속적 표현

6. ISO/IEC 25000

  • SQuARE, 소프트웨어 각 개발 공정에서 산출물이 적절한 품질인지 확인
  • 2500n : 품질 관리
  • 2501n : 품질 모델
  • 2502n : 품질 측정/품질측정 메트릭
  • 2503n : 품질 요구
  • 2504n : 품질 평가

7. 소스코드 품질 분석 도구

  • 정적
    → pmd : java, 타 언어소스에 대한 디버그, 데드 코드 분석 도구
    → cppcheck : C++/C 코드의 메모리 누수, 오버 플로우 등 확인
    → sonarQube : java 코드 코딩 표준 검사 도구
    → ccm : 다양한 언어의 코드 복잡도, 리눅스, 맥 환경 CLI
    → cobertuna : icoverage 기반의 테스트 커버리지
  • 동적
    → Avalanche : Valgrind 기반 프레임 워크, 소프트웨어 에러 및 취약점
    → Valgrind : 자동화 메모리 누수 및 스레드 결함 분석 도구

8. 맥케이브 회전 복잡도

소프트웨어 제어 흐름 표현, 소스 코드 복잡도를 정량적으로 나타내는 지표

  • V(G) = 간선 - 노드 + 2
  • V(G) = 분기수 + 1

9. 인터페이스 구현 검증 도구

  • xUnit : junit, cunit, nunit(Net), hyypunit(Web) 등 다양한 언어 지원, 단위 테스트 프레임 워크(구성 원소 및 단위)
  • STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경 지원 테스트 프레임 워크(데몬 사용)
  • FITNesse : 웹기반 테스트 프레임 워크, 테스트 케이스 테이블 작성시 빠르게 편하게 원하는 값 테스트
  • NTAF : STAF + FITNesse, 분산환경 지원 + 효율적인 테스트 케이스
  • Selenium : Python..다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임 워크(언어학습X, 기능 테스트)
  • watir : Ruby 기반 웹 애플리케이션 테스트 프레임워크

10. 데이터베이스 병행제어 미보장시 단계별 문제점

  • Lost Update(갱신손실) : 먼저 실행된 트랜잭션의 결과를 그 이후의 트랜잭션의 결과가 덮어쓸때
  • Dirty Read(현황파악오류) : 트랜잭션 중간 수행 결과를 다른 트랜잭션이 참조할때
  • Inconsistency(모순성) : 두 트랜잭션이 동시에 실행, DB의 일관성이 결여(결과가 서로 다름)
  • Cascading Rollback(연쇄복귀) : 복수의 트랜잭션이 데이터 공유시, 트랜잭션이 취소되면 다른 부분에서 트랜잭션이 취소되지 않을때

11. 병행제어 기법

  • 로킹(Locking) : 하나의 트랜잭션 실행시, 다른 트랜잭션이 접근하지 못하도록(상호배제, Mutual Exclusive)
    → DB, Record, File 등, 로킹 단위..작아지면 공유도 증가 및 오버헤드 증가, 병행성 수준 커짐

  • 낙관적 검증(Optimistic Validation) : 일단 트랜잭션 수행, 그 이후에 검증 수행하여 DB 반영

  • 타임 스탬프 순서(Time stampe Ordering) : 트랜잭션 수행시 타임 스탬프 부여, 부여된 시간에 따라 트랜잭션 수행

  • 다중 버전 동시성 제어(MVCC) : 데이터의 타임 스탬프를 비교하여 직렬 가능성 보장되는 적절한 버전 선택 및 접근

12. DB 고립성 수준

  • Read Uncommitable : 한 트랜잭션에서 갱신중인 데이터를 읽는 것을 허용
  • Read Commitable : 한 트랜잭션에서 갱신 완료한 데이터를 읽는 것을 허용
  • Repeatable Read : 한 트랜잭션 완료시까지 데이터 갱신,삭제 등을 제한
  • Serializable Read : 선행 트랜잭션이 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한(고립성 최고수준)

13. 인덱스 종류

  • 순서(Ordered) 인덱스 : 데이터 정렬된 순서로 생성(B-Tree 알고리즘)
  • 해시(Hash) 인덱스 : 해시 함수에 의해 데이터에 키값으로 접근, 튜플 양에 무관(접근 비용 균등)
  • 비트맵(Bitmap) 인덱스 : 각 컬럼에 적은 개수의 값이 저장된 경우(수정/변경이 적을 경우)
  • 함수기반(Functional) 인덱스 : 수식 및 함수를 이용한 인덱스
  • 단일(Single) 인덱스 : 하나의 컬럼
  • 결합(Concatenated) 인덱스 : 다중 컬럼
  • 클러스터드(Clustered) 인덱스 : 기본 키 기준으로 묶어서 저장, 물리적 순서에 따라 인덱스 생성, 특정 범위 검색시

14. 순수 관계 연산자

  • 셀렉트(Select, 시그마 기호) : WHERE, 조건
  • 프로젝트(Project, 파이 기호) : SELECT, 선별
  • 조인(Join, 리본 기호) : 공통 속성을 이용해 연결
  • 디비전(Division, %) : 특정 릴레이션과 관련한, 겹치는 부분 있으면 그대로 select하되, 특정 릴레이션의 컬럼은 제외하고 출력

15. 데이터 모델

  • 요구조건 분석
  • 개념적 설계 : 사용자 요구에 대한 트랜잭션 모델링, 개체관계 다이어그램 작성, 개념적 표현(DB 관계없음)
  • 논리적 설계 : DB에 따라 논리적 스키마 설계, 트랜잭션 인터페이스 설계, 모델링 표기법으로 형상화(정규화/스키마 평가 및 정제/논리DB구조에 맞게 매핑/테이블 설계/정규화)
  • 물리적 설계 : 물리적인 스키마 설계, 테이블 저장 경로, 접근 경로 설계, 레코드 집중 분석 및 설계, 저장 레코드 양식 설계, 반 정규화(효율적인 트랜잭션 처리)

0개의 댓글