정보처리기사
시간복잡도
- O(n^2): 삽입, 선택, 버블
- O(nlog2n): quick(최대 n^2), heap, 병합
- O(n): 순차탐색
- O(log2n): 이진탐색
- O(1): 해싱, 배열
테스트 기법
- 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트, 개발자 수행
- 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
- 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
- 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
- 루프 테스트
- 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트, 사용자 수행
- 동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing)
- 경계값 분석 테스트(Boundary Value Analysis Testing)
- 오류 예측 테스트
- 원인-결과 그래프 테스트
- 의사 결정 테이블 테스트
- 상태 전이 테스트
소프트웨어 3R
- 역공학(Reverse-Engineering)
: 기존 개발된 시스템의 코드나 데이터로부터 설계 명세서나 요구 분석서 등을 도출하는 작업 - 재공학(Re-Engineering)
: 소프트웨어의 위기를 유지 보수의 생산성으로 해결하려는 방법- Migration: 기존 SW 시스템을 새로운 환경에서 사용할 수 있도록 변환하는 작업
- 재사용(Re-Use)
- 합성 중심: 블록(모듈)을 만들어서 끼워 맞추는 방법
- 생성 중심: 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법
인터페이스 구현 검증 도구
: 통합 테스트에서의 테스트 자동화 도구
- 종류
- xUnit: 다양한 언어(x)를 지원하는 단위 테스트 프레임워크
- STAF: 서비스 호출, 컴포넌트 재사용
- FitNesse: 웹 기반 테스트케이스를 지원하는 테스트 프레임워크
- Selenium: 웹 어플리케이션 테스트 프레임워크
- NTAF: FitNesse의 장점인 협업과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
- watir: Ruby(r)를 사용하는 애플리케이션 테스트 프레임워크
EAI ( Enterprise Application Integration )
: 기업에서 운영하는 서로 다른 플래폼, App간의 정보 전달, 연계, 통합을 위한 솔루션
네트워크 보안
- 송수신간 스니핑(엿보기) 등 데이터 탈취 및 변조 위협을 방지
- IPSec
- AH: 인증, 무결성 보장
- ESP: 인증, 무결성, 기밀성 보장
- SSL
- HTTPS: port 443
- S-HTTP
데이터 모델링 3단계
- 개념
- ERD 생성
- 트랜잭션 모델링
- 개념 스키마 설계
- 논리
- 정규화
- Transaction Interface 설계
- 개념 스키마를 평가 및 정제
- 물리
- 성능 향상(인덱스, 파티션, 반정규화 등)
- 물리적 스키마(저장 레코드 양식, 접근 경로) 설계
반정규화
: 데이터 베이스 정규화 후 성능향상을 위해 정규화 기법에 위배된 의도적 수행기법
- 종류
- 테이블 분할: 수평분할 / 수직분할
- 테이블 중복: 통계 테이블 추가 / 진행 테이블 추가
- 컬럼 중복: 중복 컬럼 추가 / 파생 컬럼 추가
ISO/IEC 9126: 소프트웨어 품질 특성과 척도에 관한 표준 지침
- 기능성, 신뢰성, 사용성, 효율성, 유지보수성, 이식성ISO/IEC 12119: 소프트웨어 품질 특성과 척도 + 테스트에 관한 표준 지침
- CMM, CMMi, SPICE: 소프트웨어 프로세스에 대한 개선 및 능력 측정 기준
Digital Rights Management
- 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 사용하는 접근 제어 기술
- 유통과 관련된 내용으로 오류 감지 및 복구와는 무관
- 구성 요소
- Clearing House: 사용자에게 콘텐츠 라이센스를 발급하고 권한을 부여해주는 시스템
- 콘텐츠 제공자(Contents Provider)
- 패키저(Packager): 컨텐츠를 메타 데이터(컨텐츠를 설명하는 데이터)와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램
- 콘텐츠 분배자(Contents Distributor)
- 콘텐츠 소비자(Customer)
- DRM 컨트롤러(DRM Controller): 배포된 콘텐츠의 이용 권한을 통제하는 프로그램(멜론 등)
- 보안 컨테이너(Security Container): 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안 장치
- 기술 요소
- 암호화(Encryption): 콘텐츠 및 라이선스를 암호화
- 키 관리(key Management): 콘텐츠를 암호화한 키에 대한 저장 및 분배
- 암호화 파일 생성(Packager): 콘텐츠를 암호화된 콘텐츠로 생성
- 식별 기술(Identification): 콘텐츠 식별 기술
- 저작권 표현(Right Expression)
- 정책 관리(Policy Management)
- 크랙 방지(Tamper Resistance): 크랙에 의한 콘텐츠 사용 방지 기술
- 크랙: 불법적인 방법으로 소프트웨어에 적용된 저작권 보호 기술을 해제 및 무단 사용할 수 있도록 하는 기술이나 도구
- 인증(Authentication): 라이선스 발급 및 사용의 기준이 되는 사용자 인증
- 인터페이스(Interface): 상이한 DRM 플랫폼 간의 상호 호환성 제공
- 사용 권한
형상관리
: 비용을 제외하고 SW 개발 과정에서 발생하는 모든 변경사항을 관리
형상관리 절차
식별 → 통제(BaseLine 설정) → 감사 → 기록(형상 관리 위원회: Configuration Control Board)
형상관리 용어
용어 | 설명 |
---|---|
import | 맨 처음 프로제트 시작 시 저장소에 등록 |
checkout | 저장소에서 소스파일 받아오기 |
add | 새 파일을 버전 관리 대상으로 추가 |
commit | 수정한 파일을 저장소에 저장하여 갱신(=check-in) |
update | 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화 |
diff | 이전 개발자가 처음 추가한 파일과 이후 변경된 파일의 차이 확인 |
merge | 충돌난 파일에 대해 합치는 작업 |
trunk | 개발 메인 디렉토리 |
branch | 메인 개발 과정과 별도로 새로운 기능의 테스트와 같이 추가적인 작업을 수행하기 위한 서브 디렉토리 |
형상관리 도구
- 중앙집중방식: CVS, SVN
- 분산방식: GIT
버전관리 도구
- 공유 폴더 방식: 인간 Merge
- 분산 저장소 방식
- CVS(Concurrent Versions System)
- 클라이언트-서버 방식
- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리
- SVN(Subversion)
- 클라이언트-서버 구조
- 서버에는 최신 버전의 파일들과 변경 내역이 관리
- CVS 단점이었던 파일, 디렉터리의 이름 변경, 이동 등이 가능
테스트 레벨
- 단위(Unit) 테스트
: 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트- 정적
- 소스코드의 실행없이 내부 확인
- 도구
- PMD, SonarQube, FindBugs, CheckStyle, CppCheck, Cobertura
- 동적: 입력값에 대한 출력값 확인
- 정적
- 통합(Integration) 테스트
: 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트- 빅뱅 테스트: 모든 모듈이 결합된 프로그램 전체가 대상
- 상향식 테스트: 드라이버(Driver) 사용
- 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 스텁(Stub) 사용
- 혼합식 통합 테스트: : 하위 수준-상향식 통합, 상위 수준-하향식 통합 사용, 샌드위치(Sandwich)식 통합 테스트 방법
- 회귀 테스팅(Regression Testing): 통합 테스트가 완료 된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
- 시스템(System) 테스트
: 전체 시스템 또는 제품의 동작에 대해 테스트- 기능 요구사항 테스트
- 비기능 요구사항 테스트
- 인수(Acceptance) 테스트
: 계약상의 요구사항이 만족되었는지 확인- 알파 테스트: 개발자 + 사용자
- 베타 테스트: 사용자
- 형상 테스트: 구조 확인
SW 패키징 도구 활용 시 고려 사항
- 암호화/보안 고려
- 다양한 이기종 연동 고려
- 사용자 편의성을 위한 복잡성 및 비효율성 문제 고려
- 제품 소프트웨어의 종류에 적합한 암호화 알고리즘 적용
Clean Code 작성 원칙
: 가독성, 단순성, 의존성, 중복성, 추상성
Alien Code: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램
Spaghetti Code: 소스 코드가 복잡하게 얽힌 프로그램
Legacy Code: 더 이상 쓰기 힘들고 난해한 코드
트리의 차수: 가장 많은 자식의 수
트리의 단말 노드: 자식이 없는 노드 수
Brooks의 법칙: 지연되는 프로젝트에 인력을 더 투입하면 오히려 늦어진다는 법칙
참고 자료
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 2020년 1회차 (4)프로그래밍 언어 활용 (0) | 2023.07.19 |
---|---|
[정보처리기사] 2020년 1회차 (3)데이터베이스 설계 (0) | 2023.07.19 |
[정보처리기사] 2020년 1회차 (1)소프트웨어 설계 (0) | 2023.07.18 |
[정보처리기사] 2020년 3회차 (5)정보시스템 구축관리 (0) | 2023.07.18 |
[정보처리기사] 2020년 3회차 (4)프로그래밍 언어 활용 (0) | 2023.07.18 |