본문 바로가기
Certificate/정보처리기사

[정보처리기사] 2020년 3회차 (2)소프트웨어 개발

by HJ0216 2023. 7. 17.

정보처리기사

네트워크 보안

  • 송수신간 스니핑(엿보기) 등 데이터 탈취 및 변조 위협을 방지
  • IPSec
    • AH: 인증, 무결성 보장
    • ESP: 인증, 무결성, 기밀성 보장
  • SSL
  • S-HTTP

 

ISO/IEC 9126

  • 소프트웨어 품질특성과 척도에 관한 표준 지침
  • 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성
  • cf. 소프트웨어 품질특성과 척도 + 테스트에 관한 표준 지침: ISO/IEC 12119

 

Clean Code 작성 원칙

: 가독성, 단순성, 의존성, 중복성, 추상성

Alien Code: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램
Spaghetti Code: 소스 코드가 복잡하게 얽힌 프로그램
Legacy Code: 더 이상 쓰기 힘들고 난해한 코드

 

테스트 기법

  • 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트, 개발자 수행
    • 종류
      • 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
      • 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
      • 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
      • 루프 테스트
  • 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트, 사용자 수행
    • 동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing)
    • 경계값 분석 테스트(Boundary Value Analysis Testing)
    • 오류 예측 테스트
    • 원인-결과 그래프 테스트
    • 의사 결정 테이블 테스트
    • 상태 전이 테스트

 

형상관리

: 비용을 제외하고 SW 개발 과정에서 발생하는 모든 변경사항을 관리

형상관리 절차

식별 → 통제(BaseLine 설정) → 감사 → 기록(형상 관리 위원회: Configuration Control Board)

형상관리 용어

용어 설명
import 맨 처음 프로제트 시작 시 저장소에 등록
checkout 저장소에서 소스파일 받아오기
add 새 파일을 관리 파일로 추가
commit 수정한 파일을 저장소에 저장하여 갱신(=check-in)
update 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화
diff 이전 개발자가 처음 추가한 파일과 이후 변경된 파일의 차이 확인
merge 충돌난 파일에 대해 합치는 작업
trunk 개발 메인 디렉토리
branch 메인 개발 과정과 별도로 새로운 기능의 테스트와 같이 추가적인 작업을 수행하기 위한 서브 디렉토리

형상관리 도구

  • 중앙집중방식: CVS, SVN
  • 분산방식: GIT

버전관리 도구

  • 공유 폴더 방식: 인간 Merge
  • 분산 저장소 방식
  • CVS(Concurrent Versions System)
    • 클라이언트-서버 방식
    • 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리
  • SVN(Subversion)
    • 클라이언트-서버 구조
    • 서버에는 최신 버전의 파일들과 변경 내역이 관리
    • CVS 단점이었던 파일, 디렉터리의 이름 변경, 이동 등이 가능

 

Digital Rights Management

  • 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 사용하는 접근 제어 기술
  • 유통과 관련된 내용으로 오류 감지 및 복구와는 무관
  • 구성 요소
    • Clearing House: 사용자에게 콘텐츠 라이센스를 발급하고 권한을 부여해주는 시스템
    • 콘텐츠 제공자(Contents Provider)
    • 패키저(Packager): 컨텐츠를 메타 데이터(컨텐츠를 설명하는 데이터)와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
    • 콘텐츠 분배자(Contents Distributor)
    • 콘텐츠 소비자(Customer)
    • DRM 컨트롤러(DRM Controller): 배포된 콘텐츠의 이용 권한을 통제하는 프로그램(멜론 등)
    • 보안 컨테이너(Security Container): 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
  • 기술 요소
    • 암호화(Encryption): 콘텐츠 및 라이선스를 암호화
    • 키 관리(key Management): 콘텐츠를 암호화한 키에 대한 저장 및 분배
    • 암호화 파일 생성(Packager): 콘텐츠를 암호화된 콘텐츠로 생성
    • 식별 기술(Identification): 콘텐츠 식별 기술
    • 저작권 표현(Right Expression)
    • 정책 관리(Policy Management)
    • 크랙 방지(Tamper Resistance): 크랙에 의한 콘텐츠 사용 방지 기술
      • 크랙: 불법적인 방법으로 소프트웨어에 적용된 저작권 보호 기술을 해제 및 무단 사용할 수 있도록 하는 기술이나 도구
    • 인증(Authentication): 라이선스 발급 및 사용의 기준이 되는 사용자 인증

 

테스트 레벨

  1. 단위(Unit) 테스트
    : 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트
    • 정적
      • 소스코드의 실행없이 내부 확인
      • 도구
        • PMD, SonarQube, FindBugs, CheckStyle, CppCheck, Cobertura
    • 동적: 입력값에 대한 출력값 확인
  2. 통합(Integration) 테스트
    : 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트
    • 빅뱅 테스트: 모든 모듈이 결합된 프로그램 전체가 대상
    • 상향식 테스트: 드라이버(Driver) 사용
    • 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 스텁(Stub) 사용
    • 혼합식 통합 테스트: : 하위 수준-상향식 통합, 상위 수준-하향식 통합 사용, 샌드위치(Sandwich)식 통합 테스트 방법
    • 회귀 테스팅(Regression Testing): 통합 테스트가 완료 된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
  3. 시스템(System) 테스트
    : 전체 시스템 또는 제품의 동작에 대해 테스트
    • 기능 요구사항 테스트
    • 비기능 요구사항 테스트
  4. 인수(Acceptance) 테스트
    : 계약상의 요구사항이 만족되었는지 확인
    • 알파 테스트: 개발자 + 사용자
    • 베타 테스트: 사용자
    • 형상 테스트: 구조 확인

 

파티션

: 테이블 또는 인덱스 등을 나눈 단위

  • 장점
    • 데이터 엑세스 범위를 줄여 성능 향상
    • 파티션별로 데이터가 분산되어 디스크 성능 향상
    • 파티션 별 백업 및 복구 속도 향상
    • 시스템 장애 시 데이터 손상 정도 최소화
  • 단점
    • 하나의 테이블을 세분화하여 관리하므로 관리 비용 증가
    • 테이블 간 조인에 따른 비용 증가

 

알고리즘 설계 기법

분할 정복(Divide-and-conquer)

분할이 가능한 부분까지 분할 → 분할된 하위과제들을 모두 해결(정복) → 정복된 해답을 모두 취합

동적 계획법(dynamic programming)

문제를 해결하기 위해 부분 문제에 대한 답을 계속적으로 활용해 나가는 기법

탐욕법(Greedy)

현재 상황에서 지금 당장 좋은 것만 고르는 방법으로 탐욕적으로 문제를 푸는 방법

퇴각검색법 (Backtracking)

어떤 문제의 최적해를 구하기 위해 모든 가능성을 찾아가는 방법

분기한정법 (Branch & Bound)

퇴각검색법과 유사하며, 임의로 답이 될 것같은 부분을 먼저 탐색한다는 차이를 가지고 있음
정해진 범위 bound를 벗어나는 값들을 가지치기 해가며 결과값을 추적

근사해법(Approximation)

어떤 최적화 문제에 대한 해의 근사값을 구하는 알고리즘

 

McCabe cyclomatic 수: 닫힌 면 수 + 1
트리의 차수: 가장 많은 자식의 수

 

 

 

참고 자료

 

흥달쌤

흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관련된 이야기

www.youtube.com

 

[2과목-3장-047] 소프트웨어 버전 관리 도구

1. 공유 폴더 방식 : 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식 * 특징 1) 개발자) 개발이 완료된 파일을 공유 폴더에 매일 복사 2) 담당자) 공유 폴더 파일을 자기 PC로

all-open.tistory.com

 

2020 정보처리기사 제 3회 필기 A형 2과목 031~035

2020 1, 2회 통합필기에도 출제된 문제 : ★ 31. 알고리즘 설계 기법으로 거리가 먼 것은? 1) Divide and Conquer 2) Greedy 3) Static Block 4) Backtracking 알고리즘 설계 기법 ● 분할정복법(Divide & Conquer) - 분할이

kangdanne.tistory.com