본문 바로가기

자격증/정보처리기사

[정보처리기사필기] 2과목 : 소프트웨어 개발02 - 기출에 나온 개념

* 기출문제를 풀면서 필요했던 개념들을 추가로 정리.

 

1. 클린코드

2. 정형 기술 검토 (FTR)

3. sw 패키징 도구

4. 자료구조 분류

5. 퀵 정렬

6. 소프트웨어 품질 표준

7. 해싱 함수

8. 애플리케이션 테스트 유형 분류

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

10. 투명성 조건

11. 반정규화 정의/ 유형

12. 무방향, 방향 그래프 최대 간선 수 구하기

 

그외) 단순 문답

 

1.  클린코드 작성원칙

  • 가독성 : 이해하기 쉬운 용어 사용
  • 단순성 : 한 번에 한가지 처리만 수행
  • 의존성 : 코드의 변경이 다른 부분에 영향이 없도록 작성
  • 중복성 : 중복된 코드를 제거하고 공통된 코드 사용
  • 추상화 : 상세내용은 하위클래스에서 구현

*클린코드 ↔ 스파게티 코드 (go to 남발얼기설키 꼬여있는 코드) , 에일리언코드 (유지보수가 아주 어려운 프로그램)

*레거시 시스템 : 예전에 만든 시스템(현재 돌아가긴 하지만 오래됨)

2.  정형 기술 검토 (FTR) 의 지침

: 인스펙션에 포함되는 검토

  • 제작자가 아닌 제품의 검토에만 집중한다
  • 문제 영역을 명확히 표시한다
  • 제기된 모든 문제를 바로 해결하고자 하지 말 것
  • 검토자들은 사전에 작성한 메모들을 공유한다
  • 논쟁이나 반박을 제한한다
  • 의제를 정하고 그 범위를 유지한다
  • 참가자 수를 제한하고 사전 준비를 철저히 하도록 강요한다
  • 자원과 시간 일정을 할당한다
  • 모든 검토자에게 의미있는 교육을 행한다
  • 검토의 과정과 결과를 재검토한다

3.  SW 패키징 도구 활용 시 고려 사항

  • 반드시 암호화. 보안을 고려
  • 추가로 다양한 이기종 연동을 고려
  • 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려
  • 애플리케이션 종류에 적합한 암호화 알고리즘을 적용
  • 지속적인 배포 고려

4.  자료구조의 분류

자료구조란?
: 한정된 자원에 효율적으로 데이터를 저장하고 빠르게 데이터를 찾아서 사용하기 위함.

 

  • 선형구조 : 리스트, 스택, 큐, 테크
  • 비선형 구조 : 트리, 그래픽

 

 

 

 

5.  정렬 (퀵 정렬)

출처: 흥달썜 2021 기출 해설 특강

* 피벗(pivot)을 이용하는 정렬 : 퀵 정렬

n제곱의 시간 복잡도를 가진 정렬(n의 2승) : 선택정렬, 삽입 정렬, 버블 정렬

n*log2의 n 승의 시간 복잡도를 가진 정렬 : 퀵 정렬, 힙 정렬, 병합 정렬 (좀 더 성능이 좋은 알고리즘) 

*https://youtu.be/9PddGl6bg1U?si=rN13mCBTl7tU563K 참고 유튜브 (44:29초)

 

퀵 정렬 (Quick Sort)
: 불안정 정렬에 속하며, 다른 원소와의 비교만으로 정렬을 수행하는 비교정렬에 속함.
: 피벗(pivot)을 이용

 

출처  : https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html

6.  소프트웨어 품질 표준 

  • 정확성(기능성) : 기능이 정확하게 동작, 사용자의 요구사항을 만족시키는 정도
  • 신뢰성 : 기능상의 장애없이 의도한 임무 수행
  • 효율성 : 시스템 자원과 코드량의 최적화
  • 무결성 : 허가받지 않은 사람이 자료에 접근 할 수 없도록 통제
  • 사용 용이성 : 프로그램을 배우는 데 요구되는 노력(사용 편리, 배우기 편안)
  • 유지 보수성 : 프로그램의 오류를 발견하고 수정하는 데 요구되는 노력
  • 이식성(Portability) : 다른 환경으로 이전하는 데 요구되는 노력
  • 재사용성 : 소프트웨어 일부를 다른 시스템에 재사용 할 수 있게 하는 노력

※ ISO / IEC 9126 품질 특성 (시험전 참고용 하위특성 읽어보기)

  • 기능성 : 적합성, 정확성, 상호 운영성, 보안성, 준수성
  • 신뢰성 : 성숙성, 결함 허용성, 복구성
  • 사용성 : 이해성, 학습성, 운용성, 준수성
  • 효율성 : 시간반응성 자원 효율성, 준수성
  • 유지보수성 : 분석성, 변경성, 안정성, 시험성, 준수성
  • 이식성 : 적응성, 설치성, 공존성, 대체성, 준수성

7.  해싱 함수

  • 키 값으로부터 자료가 저장되어 있는 주소를 직접 계산하여 산출된 주소로 바로 접근하는 방법
  • 검색 방법 중 속도는 가장 빠르나, 출돌현상의 해결의 부담이 요구된다.
  • 종류
    • 제산 방법 : 배열의 크기를 나누어 나머지 값을 주소로 취한다.
    • 중간 제곱법 : 키 값을 제곱 후 중간 부분의 값을 주소로 취한다.
    • 중첩방법(폴딩법) : 더하거나 XOR 연산을 총해 나온 주소를 취한다.
    • 기수 변환법 : 키값을 다른 진법으로 간주하고 변환한 주소를 취한다.
    • 계수 분석 방법 : 고르게 분포된 값을 가지고 주소를 취한다.
    • 무작위 방법 : 난수생성한 값을 주소로 취한다.

 

8.  애플리케이션 유형 분류

  • 프로그램 실행 여부
    • 정적테스트, 동적 테스트
  • 테스트 기법
    • 화이트 박스
    • 블랙 박스 테스트
  • 테스트에 대한 시각
    • 검증테스트 (개발자 시각)
    • 확인 테스트 (고객 시각)
  • 테스트 목적
    • 회복테스트, 안전 테스트, 강도(스트레스) 테스트, 성능 테스트 구조 테스트, 회귀 테스트, 병행 테스트
  • 테스트 기반
    • 명세기반 테스트, 구조기반 테스트, 경험기반 테스트

관련기출)

10. 소프트웨어 테스트에서 검증(Verification)과 확인(Validation)에 대한 설명으로 틀린 것은?

1) 소프트웨어 테스트에서 검증과 확인을 구별하면 찾고자 하는 결함 유형을 명확하게 하는데 도움이 된다.
2) 검증은 소프트웨어 개발 과정을 테스트하는 것이고, 확인은 소프트웨어 결과를 테스트하는 것이다.
3) 검증은 작업 제품이 요구 명세의 기능, 비기능 요구사항을 얼마나 잘 준수하는지 측정하는 작업이다.
4) 검증은 작업 제품이 사용자의 요구에 적합한지 측정하며, 확인은 제품이 개발자의 기대를 충족시키는지를 측정한다 : 2개의 설명이 반대로 정의됨

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

도구 설명
xUnit Java, C++, net등 다양한 언어를 지원하는 단위테스트 프레임워크
STAF 서비스 호출, 컴포턴트 재사용 등 다양한 환경을 지원하는 데스트 프레임워크
FitNesse 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
NTAF NAVER테스트 자동화 프레임워크, STAF와 FitNesse를 통합
watir Ruby 기반  웹 애플리케이션 테스트 프레임워크
Selenium 다양한 브라우저 지원 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크

 

10.  투명성 조건

  • 위치 투명성 (Location Transparency)
  • 분할 투명성 (Division Transparency)
  • 지역사상 투명성 (Local Mapping transparency)
  • 중복 투명성 (Replication Transparency)
  • 병행 투명성 (Concurrency Transparency)
  • 장애 투명성 (Failure Transparency)

11. 반정규화 정의/ 유형

: 데이터 베이스 정규화 후 성능향상, 개발 편의성 등을 위해 정규화기법에 위배된 의도적 수행기법

  • 데이블 분할
    • 수평분할
    • 수직분할
  • 테이블 중복
    • 통계테이블 추가
    • 진행 테이블 추가
  • 컬럼 중복
    • 중복 컬럼 추가
    • 파생컬럼 추가

관련기출)

29. 반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법에 해당하지 않는 것은?

1) 빌드 테이블 추가 : 존재하지 않음
2) 집계 테이블 추가
3) 진행 테이블 추가
4) 특정 부분만을 포함하는 데이터 추가

(2020년 1회,2회 필기 기출문제)

12. 무방향, 방향 그래프 최대간선 구하기

무방향 그래프 =  나를 기준으로 존재하는 노드로 연결 (나를 제외) 한뱡향 n(n-1) / 2

출처 : 흥달쌤 2020 4회 기출해설

방향 그래프 = 나 (나빼고) 모든 방향 n(n-1)

*별도 문답(개념 필요없이 문답으로 외우기)

14. 프로그램 설계도의 하나인 NS Chat에 대한 설명으로 가장 거리가 먼 것은?

1) 논리의 기술에 중점을 두고 도형을 이용한 표현 방법이다.

2) 이해하기 쉽고 코드 변환이 용이하다.

3) 화살표나 GOTO를 사용하여 이해하기 쉽다. : 화살표나 GOTO없음

4) 연속, 선택, 반복 등의 제어 논리 구조를 표현한다.

(2022년 1회 필기 기출문제)

 

20. 다음 중 스택을 이용한 연산과 거리가 먼 것은?

1) 선택정렬

2) 재귀호출

3) 후위표현의 연산

4) 깊이우선 탐색

(2021년 2회 필기 기출문제)

 

14. 소프트웨어 개발 활동을 수행함에 있어서 시스템이 고장(Failure)을 일으키게하며, 오류(Error)가 있는 경우 발생하는 것은?

1) Fault : 장애

2) Testcase

3) Mistake

4) Inspection

(2021년 3회 필기 기출문제)

 

47. 패키지 소프트웨어의 일반적인 제품 품질 요구사항 및 테스트를 위한 국제 표준은?

1) ISOO/IEC 2196

2)  IEEE 19554

3) ISO/IEC 12119

4) ISO/IEC 14959

(2020년 3회 필기 기출문제)

 

출처 : 흥달썜 2020 3회 기출해설 강의