정보처리기사 필기발행일 2024. 2. 17.원본 https://blog.naver.com/jword_/223356874191 ↗

재공학, 역공학이란? 화이트박스테스트, DRM

재공학, 역공학이란? 화이트박스테스트, DRM — #정처기 #정보처리기사 #재공학 #역공학 #화이트박스테스트 #DRM 24년도 1회차 정보처리기사 필기 시험...

#정보처리기사 필기#Naver Blog

#정처기 #정보처리기사 #재공학 #역공학 #화이트박스테스트 #DRM

​

24년도 1회차 정보처리기사 필기 시험대비 공부를 진행하였습니다.

\* 본글은 PC버전에 최적화 되어있습니다.

​

이미지

공부방법론

제가 이번에 공부하는 방법론은 다음과 같습니다.

  1. 정보처리기사 필기 기출문제를 푼다.
  2. 틀린문제에 대한 이론을 모두 정리한다.
  3. 다음 회차 기출문제를 푼다.
  4. 2단계로 돌아가 반복한다.

​

02.17부터 본격적으로 공부를 시작, 본인은 컴퓨터 공학과 3학년까지 마친상태입니다. 전과를 통해 2학년 과목을 몇개 못들어서 모르는 이론들이 꾀나 있었으나, 대부분의 문제가 3학년때 배운 수업에 녹아들어있음을 느끼는 중입니다.

​

문제집: 시나공 정보처리기사 기출문제집, **\\A, B등급 문제 위주\*\***

참고: me)는 제가 공부하기 편하게 이론을 재구성한 것 입니다.

2과목, 소프트웨어 개발

재공학, 역공학, 소프트웨어 재사용(C)

재공학(Reengineering): 새로운 요구에 맞도록 기존 시스템이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상 시키는 것

역공학(Reverse Engineering): 기존 소프트웨어를 분석하여 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 것

​

소프트웨어 재사용(Software Reuse): 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것

​

소스 코드 인스펙션: 프로그램의 소스나 코드에서 결함을 찾아내고 이를 확인하려는 작업

​


화이트박스 테스트(A)

화이트박스 테스트란?: 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트 하여 테스트 케이스를 설계한다.

하는이유?: 제품의 내부 요소들이 명세서에 따라 수행되고 충분히 수행가능한지에 대한 보장을 하기 위함

​

종류: 기초 경로 검사, 제어 구조 검사 등

  1. 기초 경로 검사: 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정
  1. 제어 구조 검사:

a. 조건 검사: 논리적 조건을 테스트

b. 루프 검사: 반복 구조에 초점

c. 데이터 흐름 검사: 변수의 정의와 변수의 사용의 위치에 초점

이미지

​

반대개념: 블랙박스 테스트

me) 코드를 하나하나 모두 관찰하며 한번 이상 실행하는 테스트 기법, 테스트를 통해 논리적인 경로(반복, 선택 등의 분기점)을 제어하는 걸로 이해했습니다.

​

​

​


ISO/IEC 25010에서 제시한 소프트웨어의 품질 특성 (A)

ISO/IEC 25010이란?: 소프트웨어 제품에 대한 국제 표준으로 2011년 ISO/IEC 9126을 개정하여 만들었다.

​

기능성: 소프트웨어가 사용자의 요구사항을 정확하게 만족하는 기능을 제공하는지

  • 하위특징: 적절성/적합성, 정밀성/정확성, 상호운용성, 보안성, 준수성

신뢰성: 소프트웨어가 요구된 기능을 정확하고 일관되게 오류 없이 수행할 수 있는 정도

  • 성숙성, 고장허용성, 회복성

사용성: 사용자와 컴퓨터 사이에 발생하는 어떠한 행위에 대하여 사용자가 정확하게 이해하고, 사용하며, 향후 다시 사용하고 싶은 정도를 나타낸다.

  • 이해성, 학습성, 운용성, 친밀성

​

효율성: 사용자가 요구하는 기능을 할당된 시간동안 한정된 자원으로 얼마나 빨리 처리하는가

  • 시간 효율성, 자원 효율성

​

유지 보수성: 환경의 변화 또는 새로운 요구사항 발생시 소프트웨어를 개선하거나 확장할 수 있는 정도

  • 분석성, 변경성, 안정성, 시험성

​

이식성: 소프트웨어가 다른 환경에서 얼마나 쉽게 적용할 수 있는지

  • 적용성, 설치성, 대체성 ,공존성

​

추가공부: 품질요구사항

이미지

me) 여기서 소프트웨어의 품질 특성 여러가지를 제시했음. 특성마다 각자 다른 하위특성을 또 보유하고있습니다. 특성에 대한 설명과 하위특징을 자주 봐서 암기 당하는게 좋아보입니다.


인터페이스 구현 검증도구(A)

종류: xUnit, STAF, FitNesse, NTAF, Selenium, Watir

​

xUnit: Java, C++, Net, Http 등 다양한 언어를 지원하는 단위 테스트 프레임 워크

STAF: 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크

​

FitNesse: 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임 워크

​

NTAF: FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임 워크

​

Selenium: 다양한 브라우저 및 개발 언어를 지원하는 웹 어플리케이션 테스트 프레임 워크

​

Watir: Ruby를 사용하는 애플리케이션 테스트 프레임 워크

​

이미지

​


소스코드 품질 분석 도구(B)

소스코드 품질분석 도구란: 코딩 스타일, 코드에 설정된 코딩 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구이다.

​

종류: 정적분석 도구, 동적 분석도구

​

정적분석도구: 작성한 코드를 실행하지 않고 분석, 개발초기 결함찾는데 사용, 개발된 소스코드의 품질 검증, 동적 분석 도구로 발견하기 어려운 결함을 찾고, 소스코드에서 코드의 복잡도, 모델 의존성, 불일치 등을 분석할 수 있다.

​

ex) pmd, cppcheck, SonarQube, checkStyle, ccm, cobertura

​

동적분석도구: 작성한 소스 코드를 실행하여 분석

ex) Avalanche, Valgrind

​

이미지

me) 제일 싫어하는 암기문제입니다... 심지어 종류가 시험에 나옵니다... 발견한 패턴은 c, m이 들어가면 정적 분석도구라는 것입니다.

​


디지털 저작권 관리(DRM) (B)

DRM이란: 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술

​

기술요소:

1. 암호화: 암호화 및 전자서명

  1. 키관리: 암호화키 저장 및 분배
  1. 암호화 파일 설정: 암호화하기
  1. 식별기술: 식별할 수 있는 무언가
  1. 저작권 표현: 라이선스 표현
  1. 정책 관리: 라이선스 발급 및 사용에 대한 정책 표현 및 관리
  1. 크랙방지: 크랙에 의한 콘텐츠 사용 방지
  1. 인증: 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술

​

이미지

me) 무엇인지 개념만 알면 연관지어서 충분히 맞출 수 있습니다. DRM = 저작권을 보호하기 위한 기술

저작권 보호를 위해 암호화하고, 암호화할때 사용한 키를 관리하고, 컨텐츠를 식별하고, 저작권 표기하고, 사용 정책 만들고 관리하고, 크랙같은거 방지하고, 인증을 통해 사용하게 하고 ... 등 등

​

DRM관련 용어 정리

클리어링 하우스: 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳

​

콘텐츠 제공자: 콘텐츠를 제공하는 저작권자

​

패키저: 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램

​

콘텐츠 분배자: 암호화된 콘텐츠를 유통하는 곳이나 사람

​

콘텐츠 소비자: 콘텐츠를 구매하여 사용하는 주체

​

DRM컨트롤러: 배포된 콘텐츠의 이용 권한을 통제하는 프로그램

​

보안 컨테이너: 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안장치

​


통합 개발 환경(IDE) (B)

IDE란: 코딩, 디버그, 컴파일, 배포 등 프로그램과 관련된 모든 작업을 하나의 프로그램에서 처리하도록 하는 소프트웨어 개발 환경이다.

​

코딩: C,Java등 프로그래밍 언어로 프로그램 작성

컴파일: 고급언어를 저급언어로된 프로그램으로 변환

​

디버깅: 소프트웨어나 하드웨어의 오류나 잘못된 동작, 버그 수정

배포: 소프트웨어를 사용자에게 전달

​

이미지

me) 일반적으로 우리가 사용하는 visual Studio나 intellij가 IDE가 될 수 있겠군요.

저급언어: 컴터가 이해

고급언어: 우리가 이해(우리가 사용하는 모든 프로그래밍 언어)


소프트웨어 패키징 형상관리 (A)

SCM(Software configuration Management)이란?: 개발 과정에서 소프트웨어의 변경사항을 관리하기 위한 일련의 활동

​

특징:

1. 변경 원인을 파악하고 제어, 적절히 변경되고 있는지 담당자에게 통보

  1. 전 단계에 적용되는 활동, 유지 보수에서도 수행
  1. 개발 비용을 줄이며, 방해요인 최소화
  1. 소스코드 및 정의서, 지침서, 분석서 등 다양한 자료 등을 포함
  1. 가시성과 추적성을 보장하여 생상과 품질을 높임
  1. 대표적인 도구로 Git, CVS, Subversion 등이 존재

​

이미지

me) 우리가 자주 사용하는 git이 SCM의 한 종류였답니다. 문제 풀때 git을 특징을 생각해보면 좋을 것 같습니다. 중요한 부분은 변경사항 관리입니다.

​

2단원 후기

기출문제를 더 풀어가며 오답노트를 추가할 예정입니다. 2단원의 특징은 소프트웨어 개발 도중 결함, 오류, 디버깅, 테스트 등에 대한 방법론과 도구들을 외우는 것이 핵심이네요. 이것을 제외하면 자료구조나 알고리즘 문제가 등장하는데 아주 기본적인 이론을 물어봅니다.