정보처리기사

[정보처리기사] 2020년 1회, 2회 소프트웨어 개발 정리

jaeheon0520 2024. 7. 22. 12:31

정렬 알고리즘

 

White Box Test 기법

- 프로그램 내부 구조, 동작을 디테일하게 검사

- 내부 소스코드를 테스트 하는 기법

- 개발자 관점의 테스트 방법

- 문장검증, 선택검증, 경로검증, 조건검증

 

Black Box Test 기법

- 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사

- 내가 원하는 기능이 예측한 대로 정상 동작하는지를 확인

- 사용자 관점의 테스트 방법

- 동등 분할 기법, 경계값 분석 기법, 오류 예측 기법, 원인 결과 그래프 기법, 의사결정 테이블 테스팅, 상태 전이 테스팅

 

소프트웨어 품질 표준

- 정확성: 사용자의 요구사항을 만족시키는 정도

- 신뢰성: 기능상의 장애 없이 의도한 임무 수행

- 효율성: 시스템 자원과 코드의 최적화

- 무결성: 허가받지 않은 사람이 자료에 접근할 수 없도록 통제

- 사용 용이성: 프로그램을 배우는 데 요구되는 노력이 적어야 함

- 유지 보수성: 프로그램의 오류를 발견하고 수정하는 데 요구되는 노력

- 이식성: 다른 환경으로 이전하는 데 요구되는 노력

- 재사용성: 소프트웨어 일부를 다른 시스템에서 사용할 수 있도록 하는 것

 

인터페이스 구현(☆)

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

 

EAI(Enterprize Application Integration) 방식

- 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션

- 구축 유형: Point-to-Point, Hub & Spoke, Message Bus, Hybrid

 

인터페이스 보안 기능 적용

- 네트워크 영역

송/수신간 스니핑 등 데이터 탈취 및 변조 위험 방지를 위해 네트워크 트래픽에 대한 암호화

방식) IPSec, SSL, S-HTTP

 

- 애플리케이션 영역

코드상 보안 취약점을 보완

방식) 시큐어 코딩, 암호화

 

반정규화 정의/유형

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

구분 유형
테이블 분할 수평분할
수직분할
테이블 중복 통계 테이블 추가
진행 테이블 추가
칼럼 중복 중복 칼럼추가
파생 컬럼 추가

 

ISO/IEC 9126 품질특성

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

 

트리의 차수 : 가장 많은 자식을 낳은 노드의 자식의 수 (세로가 아닌 가로로 낳은 자식)

단말 노드의 수 : 리프 노드의 수

 

디지털 저적권 관리(DRM) 기술 요소

암호화 콘텐츠 및 라이선스 암호화
키관리 콘텐츠를 암호화한 키에 대한 저장 및 배포 기술
식별기술 콘텐츠에 대한 식별체계 표현 기술
저작권 표현 라이선스의 내용 표현 기술
정책 관리 라이선스 발급 및 사용에 대한 정책표현
크랙 방지 크랙에 의한 콘텐츠 사용방지 기술
인증 라이선스 발급 및 사용의 기준이 되는 인증 기술
인터페이스 상이한 DRM 플랫폼 간의 상호 호환성 인터페이스
사용권한 콘텐츠의 사용에 대한 권한을 관리하는 기술 요소

 

Brooks의 법칙

- 지연되는 프로젝트에 인력을 더 투입하면 오히려 늦어진다.

 

Pareto의 법칙

- 소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다.

 

형상관리

- 소프트웨어 개발 과정에서 발생하는 모든 변경을 관리하는 활동

- 협업을 진행하는 멤버들의 공유 및 변경이력 관리

- 소스코드, 각종 설계 문서, 회의록 등의 모든 문서가 형상관리 대상이다. 비용은 아님

- 형상관리 도구: CSV, SVN, GIT

- 식별 -> 통제(baseline) -> 감사 -> 기록

 

알고리즘 별 시간 복잡도

 

소프트웨어 정적 분석 도구

- 소스코드를 실행하지 않고, 코딩 표준, 코딩 스타일, 구조와 의존관계 등을 분석

- 정적 분석 도구: pmd, SonarQube, Checkstyle, cppcheck, corbertura

 

동치 분할 검사 (블랙박스 테스트)

- 입력 자료에 초점을 맞춰 검사 사례를 만들고 검사하는 방법

 

검증 검사 (인수테스트)

- 형상검사: 구성요소, 목록, 유지보수를 위한 내용이 표현되었는지 검사

- 알파검사: 사용자가 개발자 앞에서 검사하여 오류와 사용상의 문제를 개발자와 함께 확인

- 베타검사: 선정된 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고, 오류가 발견되면 개발자에게 통보

 

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

- 반드시 암호화/보안을 고려한다.

- 추가로 다양한 이기종 연동을 고려한다.

- 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.

- 애플리케이션의 종류에 적합한 암호화 알고리즘을 적용한다.

- 지속적인 배포를 고련한다.

 

스파게티 코드: 프로그램 로직이 복잡하여 이해하기 어려운 프로그램

외계인 코드: 아주 오래되거나 참고문서 또는 개발자가 없어 유지 보수 작업이 어려운 프로그램