재공학, 역공학이란? 화이트박스테스트, DRM
재공학, 역공학이란? 화이트박스테스트, DRM — #정처기 #정보처리기사 #재공학 #역공학 #화이트박스테스트 #DRM 24년도 1회차 정보처리기사 필기 시험...
#정처기 #정보처리기사 #재공학 #역공학 #화이트박스테스트 #DRM
24년도 1회차 정보처리기사 필기 시험대비 공부를 진행하였습니다.
\* 본글은 PC버전에 최적화 되어있습니다.
공부방법론
제가 이번에 공부하는 방법론은 다음과 같습니다.
- 정보처리기사 필기 기출문제를 푼다.
- 틀린문제에 대한 이론을 모두 정리한다.
- 다음 회차 기출문제를 푼다.
- 2단계로 돌아가 반복한다.
02.17부터 본격적으로 공부를 시작, 본인은 컴퓨터 공학과 3학년까지 마친상태입니다. 전과를 통해 2학년 과목을 몇개 못들어서 모르는 이론들이 꾀나 있었으나, 대부분의 문제가 3학년때 배운 수업에 녹아들어있음을 느끼는 중입니다.
문제집: 시나공 정보처리기사 기출문제집, **\\A, B등급 문제 위주\*\***
참고: me)는 제가 공부하기 편하게 이론을 재구성한 것 입니다.
2과목, 소프트웨어 개발
재공학, 역공학, 소프트웨어 재사용(C)
재공학(Reengineering): 새로운 요구에 맞도록 기존 시스템이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상 시키는 것
역공학(Reverse Engineering): 기존 소프트웨어를 분석하여 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 것
소프트웨어 재사용(Software Reuse): 이미 개발되어 인정받은 소프트웨어의 전체 혹은 일부분을 다른 소프트웨어 개발이나 유지에 사용하는 것
소스 코드 인스펙션: 프로그램의 소스나 코드에서 결함을 찾아내고 이를 확인하려는 작업
화이트박스 테스트(A)
화이트박스 테스트란?: 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트 하여 테스트 케이스를 설계한다.
하는이유?: 제품의 내부 요소들이 명세서에 따라 수행되고 충분히 수행가능한지에 대한 보장을 하기 위함
종류: 기초 경로 검사, 제어 구조 검사 등
- 기초 경로 검사: 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정
- 제어 구조 검사:
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. 암호화: 암호화 및 전자서명
- 키관리: 암호화키 저장 및 분배
- 암호화 파일 설정: 암호화하기
- 식별기술: 식별할 수 있는 무언가
- 저작권 표현: 라이선스 표현
- 정책 관리: 라이선스 발급 및 사용에 대한 정책 표현 및 관리
- 크랙방지: 크랙에 의한 콘텐츠 사용 방지
- 인증: 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
me) 무엇인지 개념만 알면 연관지어서 충분히 맞출 수 있습니다. DRM = 저작권을 보호하기 위한 기술
저작권 보호를 위해 암호화하고, 암호화할때 사용한 키를 관리하고, 컨텐츠를 식별하고, 저작권 표기하고, 사용 정책 만들고 관리하고, 크랙같은거 방지하고, 인증을 통해 사용하게 하고 ... 등 등
DRM관련 용어 정리
클리어링 하우스: 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳
콘텐츠 제공자: 콘텐츠를 제공하는 저작권자
패키저: 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램
콘텐츠 분배자: 암호화된 콘텐츠를 유통하는 곳이나 사람
콘텐츠 소비자: 콘텐츠를 구매하여 사용하는 주체
DRM컨트롤러: 배포된 콘텐츠의 이용 권한을 통제하는 프로그램
보안 컨테이너: 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안장치
통합 개발 환경(IDE) (B)
IDE란: 코딩, 디버그, 컴파일, 배포 등 프로그램과 관련된 모든 작업을 하나의 프로그램에서 처리하도록 하는 소프트웨어 개발 환경이다.
코딩: C,Java등 프로그래밍 언어로 프로그램 작성
컴파일: 고급언어를 저급언어로된 프로그램으로 변환
디버깅: 소프트웨어나 하드웨어의 오류나 잘못된 동작, 버그 수정
배포: 소프트웨어를 사용자에게 전달
me) 일반적으로 우리가 사용하는 visual Studio나 intellij가 IDE가 될 수 있겠군요.
저급언어: 컴터가 이해
고급언어: 우리가 이해(우리가 사용하는 모든 프로그래밍 언어)
소프트웨어 패키징 형상관리 (A)
SCM(Software configuration Management)이란?: 개발 과정에서 소프트웨어의 변경사항을 관리하기 위한 일련의 활동
특징:
1. 변경 원인을 파악하고 제어, 적절히 변경되고 있는지 담당자에게 통보
- 전 단계에 적용되는 활동, 유지 보수에서도 수행
- 개발 비용을 줄이며, 방해요인 최소화
- 소스코드 및 정의서, 지침서, 분석서 등 다양한 자료 등을 포함
- 가시성과 추적성을 보장하여 생상과 품질을 높임
- 대표적인 도구로 Git, CVS, Subversion 등이 존재
me) 우리가 자주 사용하는 git이 SCM의 한 종류였답니다. 문제 풀때 git을 특징을 생각해보면 좋을 것 같습니다. 중요한 부분은 변경사항 관리입니다.
2단원 후기
기출문제를 더 풀어가며 오답노트를 추가할 예정입니다. 2단원의 특징은 소프트웨어 개발 도중 결함, 오류, 디버깅, 테스트 등에 대한 방법론과 도구들을 외우는 것이 핵심이네요. 이것을 제외하면 자료구조나 알고리즘 문제가 등장하는데 아주 기본적인 이론을 물어봅니다.







