정렬 알고리즘
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 패키징 도구 활용 시 고려사항
- 반드시 암호화/보안을 고려한다.
- 추가로 다양한 이기종 연동을 고려한다.
- 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.
- 애플리케이션의 종류에 적합한 암호화 알고리즘을 적용한다.
- 지속적인 배포를 고련한다.
스파게티 코드: 프로그램 로직이 복잡하여 이해하기 어려운 프로그램
외계인 코드: 아주 오래되거나 참고문서 또는 개발자가 없어 유지 보수 작업이 어려운 프로그램
'정보처리기사' 카테고리의 다른 글
[정보처리기사] 2020년 1회, 2회 프로그래밍 언어 활용 정리 (0) | 2024.07.23 |
---|---|
[정보처리기사] 2020년 1회, 2회 데이터베이스 구축 (0) | 2024.07.22 |
[정보처리기사] 2020년 1회, 2회 소프트웨어 설계 정리 (0) | 2024.07.21 |
스크럼(Scrum) 기법 (0) | 2024.03.08 |
소프트웨어 생명 주명 주기(2) (0) | 2024.03.07 |