ABOUT ME

-

Today
-
Yesterday
-
Total
-
choco@desktop:~/tistory
$ 정보처리기사 요점정리
1과목 2과목 3과목 4과목 5과목 실기

$ Linux Kernel
Power Management DVFS
  • 정보처리기사 필기 2과목 - 소프트웨어 개발 (빈출 요점 정리)
    시험 요점정리 (꽃길)/정보처리기사 2021. 7. 21. 19:47

    정보처리기사 필기 빈출 개념과 기출문제를 정리하였습니다.

    공부할 시간이 부족할 경우 아래의 개념을 먼저 학습해보시고, 기출문제들을 최소 3회차를 풀어볼 것을 권장합니다.

    (기출문제: https://www.comcbt.com/xe/iz)

    (전체 목차 및 다른 과목 링크: https://computer-choco.tistory.com/437)

     

    정보처리기사20200926(해설집).hwp
    0.11MB
    정보처리기사20200822(해설집).hwp
    0.13MB
    정보처리기사20200606(해설집).hwp
    0.10MB

    (기출문제 출처는 위의 링크와 같습니다 - comcbt.com)

     

    정보처리기사 필기 2과목 - 소프트웨어 개발 빈출 개념 & 기출 문제

     

    1. 블랙 박스 테스트

    2. 화이트 박스 테스트

    3. 인수 테스트 (알파 테스트, 베타 테스트)

    4. 트리의 차수

    5. 트리 순회

    6. EAI

    7. 형상 관리

    8. DRM

    9. 소프트웨어 패키징 도구

    10. 인터페이스 보안

     

    보너스. 정렬

     


    1. 블랙 박스 테스트 (Black Box Testing) ★★★

    교재 단원: 애플리케이션 테스트 관리

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 출제율 100%에 해당하는 White Box & Black Box Test 개념입니다.

     

    블랙 박스는 안이 보이지 않는 캄캄한 상자입니다. 화이트 박스 테스트 처럼 소스 코드를 볼 수 없기 때문에 구현된 기능이 완전히 작동하는지를 테스트합니다. 

     

    시험에는 테스트 종류가 많이 출제가 됩니다. 블랙박스 테스트 종류는 다음과 같습니다.

     

    블랙박스 테스트

    동치 분할 검사
    (Equivalence Partitioning Testing)
    - 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다.
    경계값 분석
    (Boundary Value Analysis)
    - 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법이다.
    - 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법이다.
    원인-효과 그래프 검사
    (Cause-Effect Graphing Testing)
    - 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
    오류 예측 검사
    (Error Guessing)
    - 과거의 경험이나 확인자의 감각으로 테스트하는 기법
    - 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법, 데이터 확인 검사라고도 한다.
    비교 검사
    (Comparison Testing)
    여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법이다.

    [참고] 화이트박스 테스트와 블랙박스 테스트: https://devinus.tistory.com/6

     

    위의 테스트에 대해 조금 더 구체적으로 설명한 부분이 필요하면 다음을 참고하면 좋을 것 같습니다.

     - 동치 분할 검사(Equivalence Partitioning Test)
    입력 자료에 초점을 맞춰 테스트케이스를 만드는 방법으로, 프로그램 로직의 조건에 타당한 입력자료와 타당하지 않은 입력자료를 균등하게 배분하여 검사한다. 
     - 경게값 분석(Boundary Value Analysis)
    입력 조건의 중간값 보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건을 경계값으로 설정한다. 예를 들면 5천만원 이상 1억원 미만일때 발현되어야 하는 조건이 있다면 7000만원과 같은 애매한 중간값 보다는 딱 5천만원일때 발현이 되는지, 딱 1억원일 때 발현이 안되는지 확인하는 것이다.
     - 원인-효과 그래프 검사(Cause-effect Graphing Testing)
    입력데이터 간의 관계, 출력에 미치는 영향의 분석을 위해 그래프를 그려가서 테스트 하는 방법. 흔히 알고 있는 x-y축으로 나뉜 그래프가 아니라 흐름도와 흡사한 그래프이다. 이미지를 참고(클릭)
     - 오류 예측 검사(Fault Based Testing = Mutation Testing)
    개발자가 프로그램을 다 만들고 나서 번뜩 이런 생각이 떠오를 수 있다. "이렇게 하면 오류가 나지 않을까?" 개발자 뿐만 아니라 테스트 전담팀에서도 이런 연륜이 쌓여 있다. 경계값 오차나, 널처리, 비정상적인 구동 등 테스터의 감각이나 경험, 지식을 통해 에러케이스를 예측하여 테스트 하는 기법이다.
     - 비교검사(Comparison Testing)
    주로 프로그램이 그대로 이행되거나, 일부 업데이트 되는 경우 등 완전 새로운 프로그램이 만들어지기 보다는 원본 프로그램이 있는 경우에 활용될수 있는 검사법이다. 테스트대상 프로그램과 비교대상 프로그램에 같은 입력값을 넣어 데이터를 비교해 본다. 출력값이 서로 다르게 나와야 하는 상황에 다르게 나오는지, 같게 나와야 하는 상황에서 같게 나오는지 테스트한다.


    출처: https://raisonde.tistory.com/entry/블랙박스-테스트Blackbox-Test [지식잡식]

     

    소스 코드를 보지 못하고 주로 데이터를 입력해보고 결과값을 보면서 문제가 없는지 알아보는 방법이라고 이해하면 됩니다. 이름을 외우기 어렵다면 화이트 박스 테스트 기법을 외우고 그 나머지는 블랙 박스 테스트 기법이라고 외우셔도 됩니다.

     

    또한 이 중에서 개별 문제로 내기 좋은 것은 경계값 분석 (Boundary Value Anaylsis) 입니다. 이는 경계값에 해당하는 입력 값을 넣어서 문제가 없는지 확인 하는 것입니다. 예를 들어, 시험 점수에 따라 성적을 A, B, C로 나눈다고 하면 경계값에 해당하는 90점, 89점과 같이 경계에 있는 값들을 넣어보면서 출력값에 문제가 없는지 확인하는 것입니다.

    점수 등급
    90~100 A
    80~89 B
    0~79 C

     

    문제를 풀어보겠습니다.

     

    37. 블랙박스 테스트 기법으로 거리가 먼 것은?
    (1) 기초 경로 검사
    (2) 동치 클래스 분해
    (3) 경계값 분석
    (4) 원인 결과 그래프

    (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    블랙박스 테스트 기법은 화이트 박스 테스트와 달리 소스코드를 볼 수 없기 때문에 경로 검사는 불가능합니다. 답은 1번입니다. 나머지는 위의 표에서 보았던 블랙박스 테스트 기법의 종류들입니다.


    2. 화이트 박스 테스트 (White Box Testing) ★★★

    교재 단원: 애플리케이션 테스트 관리

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 출제율 100%에 해당하는 White Box & Black Box Test 개념입니다.

     

    화이트 박스 테스트란 소프트웨어 내부 소스 코드를 확인하는 기법입니다. 블랙박스는 안이 보이지 않는 어두운 상자를 의미하는데, 이에 대비하여 화이트 박스는 안에가 보이는 것을 의미합니다.

    소스 코드를 다 볼 수 있으므로 소스 코드의 논리적인 경로를 테스트하게 됩니다.

    논리적인 경로를 다 따라간다면 이런 식으로 모든 가능한 길들을 테스트하게 됩니다.

    2020년 정보처리기사 실기 3회 출제 문제

    [그림 출처] https://velog.io/@mrnglory/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-2020%EB%85%84-3%ED%9A%8C-%EC%8B%A4%EA%B8%B0-%EA%B8%B0%EC%B6%9C

     

    그러나 시험 문제에 잘 나오는 것은 화이트 박스 테스트의 종류입니다.

     

    화이트 박스 테스트

    기초 경로 검사
    (Base Path Testing)
    - 대표적인 화이트박스 테스트 기법이다.
    - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용된다.
    제어 구조 검사
    (Control Structure Testing)
    - 조건 검사(Condition Testing): 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
    - 루프 검사(Loop Testing): 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
    - 데이터 흐름 검사(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

    [참고] 화이트박스 테스트와 블랙박스 테스트: https://devinus.tistory.com/6

     

    기초 경로를 다 살펴보는 기초 경로 검사 (Base Path Testing) 이 있고, 조건문이나 반복문 등 제어와 관련된 부분에 초점을 맞춰서 보는 제어 구조 검사 (Control Structure Testing) 이 있습니다. 두 가지 다 실제 코드를 봐야만 수행할 수 있다는 걸 아시면 됩니다.

     

    문제를 풀어보면 다음과 같습니다.

    22. White Box Testing에 대한 설명으로 옳지 않은 것은?
    (1) Base Path Testing, Boundary Value Analysis 가 대표적인 기법이다.
    (2) Source Code의 모든 문장을 한번 이상 수행함으로서 진행된다.
    (3) 모듈 안의 작동을 직접 관찰할 수 있다.
    (4) 산출물의 각 기능별로 적절한 프로그램의 제어구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.

    (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    테스트 방법에 함정을 넣었네요. 답은 1번입니다. 경계값 분석 기법 (Boundary Value Analysis) 는 코드는 모르지만 경계값을 넣어서 테스트해보는 블랙박스 테스트의 기법입니다.

     


    3. 인수 테스트 ★★★

    교재 단원: 애플리케이션 테스트 관리

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 출제율 100%에 해당하는 인수 테스트 개념입니다.

     

    인수 테스트 (Acceptance Test)는 개발한 소프트웨어가 사용자의 요구사항을 충족하는가를 테스트하는 것입니다. 인수라는 단어가 잘 쓰이지 않는 단어처럼 보여서 어색할 수 있지만 사용자 입장에서 테스트를 해보고 개발된 것을 받아들일지 (Accept) 말지 결정하는 것이라고 보면 됩니다.

     

    인수 테스트의 종류는 다양한데, 그 중에서 문제로 출제하기 좋은 것이 알파 테스트와 베타 테스트입니다. 

    인수 테스트의 종류
    - 사용자 인수 테스트 : 사용자가 시스템 사용의 적절성 여부 확인
    - 운영상의 인수 테스트 : 시스템 관리자가 백업/복원 시스템, 재난 복구, 사용자 권리 등 테스트
    - 계약 인수 테스트 : 계약상의 인수/검수 조건을 준수하는지 여부 확인
    - 규정 인수 테스트 : 규정에 맞게 개발되었는지 확인
    - 알파 테스트 : 개발자 앞에서 사용자가 행하는 테스트 기법, 통제된 환경에서 검사
    - 베타 테스트 : 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법, 개발자에 의해 제어되지 않은 환경에서 검사

    [참고] 애플리케이션 테스트 관리 전체 요약 정리 ★: https://powerdev.tistory.com/54

     

    게임과 관련하여 베타 테스트 기간 같은 것을 많이 들어보셨을 텐데요, 베타 테스트란 통제되지 않은 환경에서 최종 사용자가 행하는 테스트입니다. 게임 베타 테스터가 된다면 해당 게임 회사가 아닌 본인의 집에서 진행할 수 있을 것입니다.

     

    하지만 그보다 더 전에 행해지는 알파 테스트는 통제된 환경에서, 개발자 앞에서 사용자가 행하는 테스트 기법입니다. 이 테스트에 참여하게 된다면 게임 회사 내부에서 진행하게 될 것입니다.

     

    문제를 풀어보겠습니다.

    26. 검증 (Validation) 검사 기법 중 개발자의 장소에서 사용자가 개발자 앞에서 행해지며, 오류와 사용상의 문제점을 사용자와 개발자가 함께 확인하면서 검사하는 기법은?
    (1) 디버깅 검사
    (2) 형상 검사
    (3) 자료구조 검사
    (4) 알파 검사

    (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    개발자의 장소에서 개발자와 사용자가 함께 확인하는 테스트 기법이네요. 그러면 4번 알파 검사가 맞습니다.

     


    4. 트리의 차수 ★★

    교재 단원: 데이터 입출력 구현

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 트리의 차수 개념입니다.

     

    트리는 다음과 같이 뒤집힌 나무 모양으로 자료를 저장하는 구조입니다.

    가장 맨 꼭대기에 시작하는 점을 루트 노드 (Root Node) 라고 합니다. 나무의 뿌리에 해당합니다.

    그리고 가지가 뻗어나가서 가장 아래에 달린 것들은 터미널 노드 (Terminal Node) 라고 합니다. 나무의 잎에 해당합니다.

     

    만일 아래의 그림을 보고 Root Node 를 묻는다면 답은 A 이며, Terminal Node를 묻는다면 K, L, F, G, M, I, J가 모두 해당합니다.

     

    [그림 출처] https://ckim0531.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-1%EA%B3%BC%EB%AA%A9-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-5-%EC%9E%90%EB%A3%8C-%EA%B5%AC%EC%A1%B0%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8A%B8%EB%A6%ACTree

     

    그리고 문제에서 자주 출제되는 개념이 바로 차수 (Degree) 입니다. 차수는 노드에서 뻗어나온 가지 (혹은 자식) 의 수를 말합니다. 위의 트리에서 차수가 몇이냐고 묻는다면 가장 많이 뻗어나온 가지의 수를 세면 됩니다. 예를 들어 E는 자식이 K와 L 로 2이므로 차수가 2이고, D는 H, I, J로 뻗어나온 가지가 3개 이므로 위 트리의 총 차수는 가장 큰 값인 3이 됩니다.

     

    문제에 많이 출제되지는 않지만 알아두는 김에 보면 좋은 것은 깊이 (Depth) 입니다. 트리의 노드가 가지는 최대 깊이, 최대 레벨을 의미합니다. 위의 트리는 최대 4 레벨까지 뻗어나갔으니 깊이가 4에 해당합니다.

     

    문제를 풀어보겠습니다.

     

    [그림 출처] https://ckim0531.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-1%EA%B3%BC%EB%AA%A9-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-5-%EC%9E%90%EB%A3%8C-%EA%B5%AC%EC%A1%B0%EC%9D%98-%EA%B8%B0%EB%B3%B8-%ED%8A%B8%EB%A6%ACTree

    31번 문제 그림

    31. 다음 트리의 차수 (degree) 와 단말 노드 (terminal node) 의 수는?

    (1) 차수: 4, 단말 노드: 4
    (2) 차수: 2, 단말 노드: 4
    (3) 차수: 4, 단말 노드: 8
    (4) 차수: 2, 단말 노드: 8

    (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    트리의 차수는 가장 많이 뻗어나온 가지입니다. C나 E의 경우 자식이 둘씩 있죠. 차수는 2 입니다. 단말 노드는 자식이 없는 가장 끝 노드를 의미합니다. D, G, H, F에 해당하므로 4개 입니다. 답은 2번이군요.

     

     


    5. 트리 순회 ★★★

    교재 단원: 데이터 입출력 구현

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 트리 순회 개념입니다.

     

    위에서 봤던 뒤집힌 나무 모양의 자료 구조가 트리입니다. 트리를 순회하는 방식에 대해 문제가 많이 출제되는데요. 다음의 3가지 방법을 잘 기억해주시면 됩니다.

     

    트리 순회 방식

    중위 순회 (Inorder) : Left - Root - Right
    전위 순회 (Preorder) : Root - Left - Right
    후위 순회 (Postorder) : Left - Right - Root

    세 가지 순회 방식 모두 왼쪽 -> 오른쪽 방향은 공통입니다. 차이점은 부모 노드인 Root 노드를 어떤 순서로 방문하냐입니다. 중위 순회 (Inorder) 방식에서 루트가 가운데에 있고, 전위는 첫번째, 후위는 마지막에 있다는 걸 기억해주시면 됩니다. 문제에서 전위 순회가 많이 나오기는 했지만, 다른 방식도 물을 수 있으니 구별해서 잘 외워주시는게 좋을 것 같습니다.

     

    문제를 풀기 전에 실제 그래프로 한 번 연습을 해보겠습니다.

     

    [그림 출처]

    https://simuing.tistory.com/entry/2021-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%84%EA%B8%B0%EC%9A%94%EC%95%BD-%ED%8A%B8%EB%A6%AC-%EC%88%9C%ED%9A%8C%EB%B0%A9%EB%B2%95-%EC%B0%A8%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

    중위 순회를 한다면 Left, Root, Right 입니다.

     

    그러면 Left 먼저 가야하니까 Left의 Left를 가다보니 가장 왼쪽인 D가 됩니다. 그리고 D의 부모인 B가 다음이 됩니다. Left - Root를 갔으니 Right에 해당하는 E가 그 다음이 됩니다. 이제 하나 더 위의 Root로 올라가면 A가 됩니다. 또 더 큰 범위의 Left (B) - Root (A) 가 되었으니 다음은 오른쪽으로 갈 차례입니다. 오른쪽으로 오니 또 왼쪽 길이 있네요. 그러면 최대한 갈 수 있는 Left로 또 가서 (F) 가 됩니다. 왼쪽을 갔으니 Root로 가서 C가 되고, 그리고 다시 오른쪽으로 가면 G가 됩니다.

     

    중위 순회시 최종 순서는 D-B-E-A-F-C-G 가 됩니다.

    (다른 방식은 전위 순회 A-B-D-E-C-F-G, 후위 순회 D-E-B-F-G-C-A 입니다.)

     

    [그림 출처] https://q.fran.kr/%EB%AC%B8%EC%A0%9C/3664

    26. 다음 트리를 전위 순회 (preorder traversal) 한 결과는?

    (1) +*AB/*CDE
    (2) AB/C*D*E+
    (3) A/B*C*D+E
    (4) +**/ABCDE

    (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    전위 순회는 Root - Left - Right 순입니다. 그러면 최상위 루트인 + 를 가장 먼저 방문하고, 그 다음 왼쪽에 있는 *, 그 왼쪽 아래의 *, /로 가다가 A 까지 가게 됩니다. 루트 - 왼쪽을 갔으니, 다음은 오른쪽인 B가 됩니다. 그리고 더 상위의 오른쪽인 C, 그 위로 가서 D, E 순으로 가게 될 것입니다. 답은 4번입니다.

     

    * 계속 헷갈린다면 전위 순회는 루 (루트) 삥 (왼쪽) 뽕 (오른쪽) => 전위순회는 루삥뽕 으로 외워도 될 것 같습니다.

     


    6. EAI ★★

    교재 단원: 인터페이스 구현

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 EAI 개념입니다.

     

    EAI(Enterprise Application Integration)
    EAI는 기업 내 각종 애플리케이션 및 플롯폼 간의 정보 전달, 연계 통합 등 상호 연동이 가능하게 해주는 솔루션입니다.
    EAI는 비즈니스 간 통합 및 연계성을 증대시켜 효율성 및 각 시스템 간의 확정성을 높여줍니다.

    [참고] https://narup.tistory.com/75

     

    간단하게 요약하면 애플리케이션 (app) 들끼리 서로 연결시키는 방법이라고 볼 수 있습니다.

     

    시험에는 EAI 구축 유형이 나옵니다. 이름과 설명을 매칭시킬 수 있어야합니다. (실기 시험을 보기 위해서는 이미지로도 알아두는 게 좋습니다.)

     

    EAI 구축 유형

    [그림 출처] https://hyeonukdev.github.io/2020/05/31/Engineer_Information_Processing/%EC%98%A4%EB%8B%B5%EB%85%B8%ED%8A%B8/%EC%98%A4%EB%8B%B5%EB%85%B8%ED%8A%B81/
     

    Point-to-Point는 이름 그대로 점과 점이 직접적으로 연결된 형태입니다. Hub & Spoke는 중앙에 허브가 있는 중앙 집중적 형태입니다. Message Bus는 중앙에 통로 (Bus) 가 있어서 여러 애플리케이션들이 이 통로를 통해 연결되도록 합니다. Hybrid는 이름이 하이브리드니까 뭔가가 섞인 것이겠죠. 그림 아래쪽에는 Hub가 2개 보이고, Hub로 묶인 그룹끼리는 Bus로 왔다 갔다 하는 것을 볼 수 있습니다. 

     

    그러면 문제를 풀어보겠습니다.

    22. EAI (Enterprise Application Integration) 구축유형 중 Hybrid 에 대한 설명으로 틀린 것은?

    (1) Hub & Spoke 와 Message Bus 의 혼합방식이다.
    (2) 필요한 경우 한 가지 방식으로 EAI 구현이 가능하다.
    (3) 데이터 병목현상을 최소화할 수 있다.
    (4) 중간에 미들웨어를 두지 않고 각 애플리케이션을 point to point로 연결한다.

    (2020.09.26 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    1번의 혼합방식은 맞는 말입니다. 2번은 혼합된 방식이니 둘 중 하나만 선택해서 구현하는 것도 가능합니다. 3번은 Hybrid 방식의 장점입니다. 연결 방식이 기존에 비해 발전된 형태이니 데이터 전달시에 정체되는 것도 막을 수 있을 것입니다. 답은 4번입니다. point to point 로 연결하는 것은 point-to-point 방식이라고 부릅니다.

     


    7. 형상 관리 ★★★

    교재 단원: 제품 소프트웨어 패키징

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.

     

    형상 관리 (Configuration Management) 란 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동입니다. 형상 관리를 통해 변경 사항을 체계적으로 관리 및 추적할 수 있습니다. (이름이 좀 어려워 보이는데, 지금의 형상, 이 모습을 관리한다는 뜻입니다. 즉 소프트웨어를 만들 때마다 버전 1.0, 버전 2.0 이런 식으로 그때의 변경사항을 통해 형상을 관리하는 것이라고 보면 이해하시면 될 것 같습니다.)

     

    어떤 개념인지 이해가 되었다면 아래 문제를 풀어보겠습니다.

     

    32. 제품 소프트웨어의 형상 관리 역할로 틀린 것은?

    (1) 형상 관리를 통해 이전 리비전이나 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용
    (2) 불필요한 사용자의 소스 수정 제한
    (3) 프로젝트 개발비용을 효율적으로 관리
    (4) 동일한 프로젝트에 대해 여러 개발자 동시 개발 가능

    (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    답은 3번입니다. 소프트웨어의 변경사항을 관리하는 것이므로, 1번 버전 관리도 맞고, 2번 소스 수정이 반영되지 않게 변경사항을 반영하지 않겠다 통제할 수도 있고, 4번 여럿이 동시에 개발해도 변경사항이 잘 관리가 됩니다. 그러나 3번은 갑자기 비용이 나오는데, 전혀 상관이 없습니다.

     


    8. DRM ★★★

    교재 단원: 제품 소프트웨어 패키징

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.

     

    디지털 저작권 관리 (DRM) 는 말 그대로 저작권을 관리한다는 것이죠. (무엇의 저작권을? 디지털 콘텐츠의 저작권입니다.) 정확한 정의는 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되는 디지털 콘텐츠 관리 및 보호 기술을 뜻합니다. 디지털 콘텐츠는 노래 파일, 사진 파일 등이 될 수 있을 것입니다. 이런 파일들의 저작권을 인정해주기 위해서 파일을 암호화하고 원본임을 증명할 수 있게 전자서명 같은 것을 넣게 됩니다. 정보처리기사 시험에서 다루는 이유는 소프트웨어 또한 디지털 콘텐츠이기 때문입니다.

     

    시험에서 DRM이 너무 많이 나와서 좀 더 구체적으로 낸다면 클리어링 하우스 (Clearing House)를 낼 수 있을 것 같습니다. 클리어링 하우스는 디지털 저작권 라이선스의 중개 및 발급을 수행하는 곳입니다. 아래 그림은 아직 시험에 나온 적이 없어서 중요하진 않은데 혹시 전체 흐름을 눈으로 보고 싶다면 도움이 되실 것 같습니다.

    [그림 출처] https://m.blog.naver.com/limje1623/221901116268

     

    문제를 풀기 전에 강조할 내용은, DRM에서 사용하는 기술은 디지털 콘텐츠를 보호하기 위한 암호화나 인증이라는 것입니다. 그럼 문제를 풀어보겠습니다.

     

    34. 디지털 저작권 관리 (DRM) 기술과 거리가 먼 것은?

    (1) 콘텐츠 암호화 및 키 관리
    (2) 콘텐츠 식별체계 표현
    (3) 콘텐츠 오류 감지 및 복구
    (4) 라이센스 발급 및 관리

    (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    1번은 암호화니 맞고, 2번은 콘텐츠를 식별 (identification) 하는 기술인데, 이것도 포함됩니다. 혹시나 헷갈린다면 일단 2번은 보류하고 확실히 아닐 것 같은 다른 선택지를 찾으셔도 됩니다. 4번은 라이센스 발급 및 관리인데, 디지털 콘텐츠의 원본임을 증명할 수 있는 라이센스가 발급되고 관리하는 것도 당연히 관련 기술이겠죠. 확실히 아닌 것은 3번입니다. 오류나 복구의 기능은 DRM의 관련 기술로 하는 일이 아닙니다. 이것도 필요한 작업이겠지만 위에서 본 DRM 설명에 따르면 상관이 없습니다.


     

    9. 소프트웨어 패키징 도구 ★★★

    교재 단원: 제품 소프트웨어 패키징

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.

     

    제품 소프트웨어 패키징 도구는 소프트웨어 배포를 위해 패키징하는데, 이때 디지털 콘텐츠의 지적 재산권을 보호하고 관리하는 기능을 제공합니다.

     

    문제와 답이 계속 동일했기에 (그리고 어렵지도 않습니다!) 우선 문제를 풀어보겠습니다.

     

    39. SW 패키징 도구 활용 시 고려 사항과 거리가 먼 것은?

    (1) 패키징 시 사용자에게 배포되는 SW이므로 보안을 고려한다.
    (2) 사용자 편의성을 위한 복합성 및 비효율성 문제를 고려한다.
    (3) 보안상 단일 기종에서만 사용할 수 있도록 해야 한다.
    (4) 제품 SW 종류에 적합한 암호화 알고리즘을 적용한다.

    (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    답은? 3번입니다. 제품을 패키징할 때 당연히 1번 보안을 고려해서 패키징합니다. 사용자의 편의성인 2번도 당연히 고려할 것입니다. 4번은 적합한 암호화 알고리즘을 적용하는데 당연히 맞는 말이겠죠. 3번은 단일 기종이라고 되어있는데, 소프트웨어를 제공하는데, 이걸 단일 기종에만 제공하면 말이 안 될 것입니다. 모두가 가진 노트북 기종이 다르고 핸드폰 기종이 다른데, 한 가지 기종에만 동작할 수 있게 한다면 그런 패키징은 아무도 안 하려고 할 것 같습니다.

     


     

    10. 인터페이스 보안 ★★★

    교재 단원: 인터페이스 구현

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 100% 출제된 개념입니다.

     

    인터페이스의 보안을 위해서 적용할 수 있는 구체적인 솔루션을 묻는 문제가 출제되었습니다. 인터페이스 보안 기능을 일반적으로 네트워크, 애플리케이션, 데이터베이스 영역에 적용된다고 하는데, 이 중 네트워크 영역 솔루션 문제가 계속 출제가 되었습니다.

     

    아래와 같이 네트워크 영역의 보안을 위한 방안들이 있습니다.

    - IPSec : 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉기능을 제공하는 프로토콜
    - SSL : TCP/IP계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 프로토콜
    - S-HTTP : 클라이언트와 서버 간에 전송되는 모든 메시지를 암호화하는 프로토콜

     

    실기 시험이 아니기 때문에 개별 개념들의 의미까지 정확하게 외울 필요는 없을 것입니다. 

     

    27. 인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션과 거리가 먼 것은?

    (1) IPSec
    (2) SMTP
    (3) SSL
    (4) S-HTTP

    (2020.06.06 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    문제의 답은 2번입니다. SMTP는 보안과 관련된 방법이 아니라, 메일을 보낼 때 SMTP 서버로 메일이 가고, 그 서버에서 도착지인 해당 메일 주소로 보내주는 것입니다. 본 문제와 똑같은 문제가 출제되지 않을 수 있어서 이 보기 개념들을 달달 외우는 것은 의미가 없을 수 있을 것 같고, SMTP는 단순히 메일을 전송하는 것이다만 알고 넘어가도 될 것 같습니다. (아예 빼지 않은 이유는 혹시나 이미 나온 문제였는데 비슷하게 출제되었을 때 틀리면 억울하니까요...)

     

    인터페이스 구현 부분에서도 여러 문제들이 출제가 되는데, 위에서는 필기에서 많이 출제된 인터페이스 보안을 한 번 보았고, 이번에는 보너스로 실기에서 많이 출제되는 인터페이스 구현 기술을 소개해드리겠습니다. (필기 문제에서도 보기로도 많이 나타납니다!!)

    구분 설명
    JSON (JavaScript Object Notation) 비동기식 브라우저/서버 통신을 위해 속성-쌍으로 이루어진 오브젝트를 전달하기 위한 인간이 읽기 쉬운 텍스트를 사용하는 개방형 표준 포맷
    REST (REpresentational State Transfer) URL 자원을 활용하여 HTTP 메서드를 주고받는 웹 아키텍처
    AJAX (Asynchronous JavaScript and XML) 자바스크립트를 이용한 비동기식 통신 기술로 클라이언트와 서버 간에 XML XML (EXtensible Markup Language) 데이터를 주고 받는 기술

    JSON, REST, AJAX (+XML) 입니다. 각각의 이름과 뜻을 매칭할 수 있어야합니다.

    JSON은 아래와 같이 생겼습니다. 데이터를 전달하는데 사람이 읽기 쉬운 형식으로 제공하게 됩니다.

    (예시 출처: http://tcpschool.com/json/json_basic_structure)

    "dog": [
        {"name": "식빵", "family": "웰시코기", "age": 1, "weight": 2.14},
        {"name": "콩콩", "family": "포메라니안", "age": 3, "weight": 2.5},
        {"name": "젤리", "family": "푸들", "age": 7, "weight": 3.1}
    ]

    이번엔 REST에 대해 보겠습니다. 우리가 보통 주소창에 URL 주소를 치게 되면 해당 웹사이트로 접속하면서 화면을 볼 수 있게 되지만, 그 URL 주소를 쳐서 화면이 아니라 위에서 보여드린 JSON 같은 데이터만 주도록 구현할 수도 있습니다. 그러면 필요할 때마다 그 주소에 데이터를 요청해서 받게 되는 것이죠.

    예를 들면 다음과 같습니다. http://mypet.com 이라는 사이트에 현재 pet 리스트 데이터를 받고 싶을 때 http://mypet.com/pets 로 요청해서 위와 같은 JSON 데이터를 받을 수 있습니다.

     

    AJAX는 비동기 (async) 방식으로 클라이언트와 서버가 데이터를 주고 받는 기술입니다. 비동기적인 기능을 이용하면 웹페이지를 새로고침하지 않고도 데이터를 불러올 수 있게 해줍니다. 예를 들어, 트위터나 페이스북과 같은 사이트에서 새글을 작성하고 [게시] 를 하게 되면 AJAX 기술을 이용하지 않는다면 글을 올리기 위해 웹페이지 전체가 새로고침 되어버릴 것입니다. 하지만 그렇지 않고 화면 재로드 없이 글만 아래에 슝 나타난다면 이것은 AJAX 방식을 이용한 것일 겁니다.

     

    (그림 출처: https://gifer.com/en/GXxE)

     

    + AJAX 설명을 자세히 보시면 XML 이라는 단어가 보이는데, XML은 아래와 같이 데이터를 표현할 수 있습니다. <> 태그 안에 값을 보면 무엇을 나타내려는지는 알 수 있긴 하지만 위의 JSON 형태보다는 보기에 불편하겠죠?

    (예시 출처: http://tcpschool.com/xml/xml_basic_structure)

    <?xml version="1.0" encoding="UTF-8"?>
    <shop city="서울" type="마트">
        <food>
            <name>귤</name>
            <sort>과일</sort>
            <cost>3000</cost>
        </food>
        <food>
            <name>상추</name>
            <sort>야채</sort>
            <cost>2000</cost>
        </food>
    </shop>

     


    보너스. 정렬 ★★

    교재 단원: 인터페이스 구현

    정보처리기사 필기 (2020.06.06 ~ 2020.09.22) 의 3번의 시험 중 2번 출제된 개념입니다.

     

    10 개의 개념을 다 학습했을 때, 추가적으로 보면 좋을 것 같아 준비하였습니다.

     

    시험 문제로 내기 좋은 것이 버블정렬, 선택정렬, 삽입정렬입니다. 셋다 시간복잡도가 O(N^2)인데, N개의 숫자를 정렬을 할 때 시간이 N의 제곱만큼 든다는 얘기입니다. (제곱으로 시간이 걸린다는 건 굉장히 느린 편에 속합니다)

     

    버블 정렬 (Bubble Sort)

    아래 움직이는 그림으로 보면 앞에서부터 순서대로 가면서 숫자가 이미 정렬되어있으면 (오른쪽 숫자가 더 크면) 바꾸지 않고, 왼쪽 숫자가 더 크면 자리를 바꿉니다. 특징은 서로 인접한 두 개를 비교해간다는 것입니다. (거품이 표면으로 올라오듯이 쭉 올라가는 모습 때문에 버블 정렬이라고 부릅니다)

    [그림 출처] https://commons.wikimedia.org/wiki/File:Bubble-sort.gif

     

    (예시)

    9, 3, 8, 2, 7 를 버블 정렬

    1회전 결과: 3, 8, 2, 7, 9 (버블이 한번 훑고 지나가면 이렇게 자리가 뒤바뀐다)

    2회전 결과: 3, 2, 7, 8, 9

    3회전 결과: 2, 3, 7, 8, 9

     

    (이해가 안 된다면 원본 문서 https://withpie.tistory.com/entry/%EC%82%BD%EC%9E%85%EC%A0%95%EB%A0%AC-%EC%84%A0%ED%83%9D%EC%A0%95%EB%A0%AC-%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC를 보면 더 상세하게 볼 수 있습니다)

     

     

    선택정렬 (Selection Sort)

    전체 숫자를 쭉 보고 가장 작은 숫자를 골라서 맨 앞에 위치한 자리에 넣습니다. 그 다음에는 다음으로 작은 숫자를 찾아서 맨 앞에서 두번째 위치한 자리에 넣습니다. 하나씩 선택해서 자기 자리를 찾아 넣어주는 방식입니다. (원래 맨 앞에 있는 것은? 자리를 서로 바꾸는 것이기 때문에 맨 앞으로 오려고 하는 친구가 있는 그 자리로 갑니다)

    [그림 출처] https://dev-lagom.tistory.com/37

     

    (예시)

    9, 3, 8, 2, 7 를 선택 정렬

    1회전 결과: 2, 3, 8, 9, 7 (최저값인 2와 맨 앞자리인 9의 자리가 교체됩니다)

    2회전 결과: 2, 3, 8, 9, 7

    3회전 결과: 2, 3, 7, 9, 8

     

    (이해가 안 된다면 원본 문서 https://withpie.tistory.com/entry/%EC%82%BD%EC%9E%85%EC%A0%95%EB%A0%AC-%EC%84%A0%ED%83%9D%EC%A0%95%EB%A0%AC-%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC를 보면 더 상세하게 볼 수 있습니다)

     

     

    삽입정렬 (Insertion Sort)

    숫자를 하나씩 보면서 그 숫자보다 더 작은 숫자가 없을 때까지 앞으로 보내서 자기 자리를 찾아주고 그 자리에 삽입해줍니다. (원래 그 자리에 있던 숫자는 한칸씩 뒤로 밀리게 됩니다)

    [그림 출처] https://commons.wikimedia.org/wiki/File:Insertion-sort-example.gif

     

    (예시)

    9, 3, 8, 2, 7 를 삽입 정렬

    1회전 결과: 3, 9, 8, 2, 7 (두번째 자리인 3을 앞쪽에 있는 숫자들.. 지금은 9 하나밖에 없으니 9와 비교해서 앞자리로 올라갑니다)

    2회전 결과: 3, 8, 9, 2, 7 (세번째 자리인 8을 앞쪽의 숫자들 3, 9 를 보면서 자기 자리를 찾아 올라갑니다)

    3회전 결과: 2, 3, 8, 9, 7 (네번째 자리인 2도 앞에 있는 수자들 3, 8, 9를 보며 자기 자리를 찾아 올라갑니다)

     

    (이해가 안 된다면 원본 문서 https://withpie.tistory.com/entry/%EC%82%BD%EC%9E%85%EC%A0%95%EB%A0%AC-%EC%84%A0%ED%83%9D%EC%A0%95%EB%A0%AC-%EB%B2%84%EB%B8%94%EC%A0%95%EB%A0%AC를 보면 더 상세하게 볼 수 있습니다)

     

    문제를 풀어보면 다음과 같습니다.

     

    27. 다음 자료에 대하여 선택 (Selection) 정렬을 이용하여 오름차순으로 정렬하고자 한다. 3회전 후의 결과로 옳은 것은?

    <보기>
    37, 14, 17, 40, 35

    (1) 14, 17, 37, 40, 35
    (2) 14, 37, 17, 40, 35
    (3) 17, 14, 37, 35, 40
    (4) 14, 17, 35, 40, 37

    (2020.08.22 정보처리기사 필기 기출문제 - 출처: 전자문제집 CBT)

    답은 4번입니다. 해설은 다음과 같습니다. 선택 정렬이므로 가장 작은 숫자를 찾아서 맨 앞에 넣고, 다음으로 작은 숫자를 찾아서 맨 앞의 뒤 자리에 넣고 하게 됩니다.

     

    초기 상태: 37, 14, 17, 40, 35

    1회전 결과: 14, 37, 17, 40, 35 (제일 작은 14를 찾아서 맨 앞에 넣습니다)

    2회전 결과: 14, 17, 37, 40, 35 (그 다음으로 작은 17을 찾아서 맨 앞에서 뒤 자리에 넣습니다)

    3회전 결과: 14, 17, 35, 40, 37 (그 다음으로 작은 35를 찾아서 맨 앞에서 두번째 뒤 자리에 넣습니다)

     

     


     

    참고

    정보처리기사 필기 전자문제집 CBT: https://www.comcbt.com/xe/iz

     

     

     

     

     

     

    댓글

Designed by Tistory.