셤숌셤/정보처리기사 필기 오답노트

2과목: 소프트웨어 개발

moonday 2021. 7. 18. 22:30

EAI : 버스, 허브가 미들웨어
SMTP : 전자우편 교환
알파검사 : 사용자-개발자
- 인터페이스 구현 검증 도구 : xUnit, STAF, FitNesse, NTAF, Selenuim, watir
- ESB : 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스 제공의 솔루션으로 구현검증 도구가 아님
형상관리 -> 소스코드, 요구분석서, 운영설치 지침서
최대간선 계산법 : 무방향 n(n-1)/2 , 방향 n(n-1)
테스트 오라클 : 테스트결과 판단을 위해 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동, 종류에는 참, 샘플링, 휴리스틱, 일관성검사가 존재
빌드 자동화 도구 중에서
- Jenkins는 JAVA 기반의 오픈소스로 가장 많이 사용됨
- Graddle은 Grooby를 기반으로 한 오픈소스 자동화도구, 안드로이드 앱 개발 환경에서 사용됨, 플러그인 설정하면 JAVA C/C++, Python등의 언어도 빌드 가능
메타데이터 -> 패키저
화이트박스 : "모듈"
- 모듈 안 작동 직접 검사
- 논리, 모든 "경로" 테스트
- 구조적
- 과정 초기 검사
- 기초경로검사, 조건, 루프검사
해싱함수 중 폴딩법 : 레코드 키 값K를 여러부분으로 나눈 후 각 부분의 값을 더하거나 XOR(배타적논리합)한 값을 홈주소로 삼음
순환 복잡도(cyclomatic) : (화살표수 - 노드수) +2
선택정렬 : 앞에서부터 레코드(정렬할대상)위치를 뒤와 비교해가면서 하나씩 옮기는 방법
+(비교가 아직 안끝난 상태에서 비교대상이 앞으로 정렬될 필요가없으면 패스(회차,횟수에 포함하지않고)하고 다음과 정렬을 위한 비교를 함
Preorder(root-left-right) : 상하에서는 맨 위 노트부터 아래로 내려가고, 좌우에서는 좌먼저
AJAX : 인터페이스 구현 시, 자바스크립트 비동기통신기술: (클라-서버 XML데이터 주고받는 기술)
 
알파,베타 테스트는 인수테스트의 한 종류
<인수테스트>
- 사용자 인수 테스트 : 사용자가 적절성여부 확인
- 운영상의 인수테스트 : 시스템 관리자가 인수시 수행
- 계약 인수 테스트 : 계약상 인수/검수 조건 준수여부 확인
- 규정 인수 테스트 : SW가 규정에 맞게 개발되었는지 확인
- 알파테스트 : 개발자 장소에서 "사용자가 개발자 앞"에서 행함
- 베타 테스트 : 선정된 최종 "사용자가 여러명의 사용자 앞"에서 행하는 테스트
블랙박스 : "경계값분석", "기능"
- 기능 테스트(요구명세서)
- 인터페이스 실시
- 후반부에 테스트로 사용
- 동치분할, 경계값분석, 원인-효과 그래프, 오류예측, 비교검사
단말노드 = 자식이 없어
알파테스트 => 통제, 사용자가 개발자 앞에서
- 테스트 스텁 : 하향식, 일시적 필요조건, 시험용 모듈
- 회귀테스트 : 이미 테스트된 프로그램의 테스팅 반복, 통합 테스트로 인한 새로운 오류있는지 확인하는 테스트
Pareto파레토 => 소프트웨어 테스트 오류의 80%는 전체 모듈 20%에서 일어난다
자동화검증 도구 중STAF => 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트프레임워크, 각 테스트 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고 통합
소프트웨어 형상관리 : 개발과정의 변경사항을 관리
외계인코드 Alien code : 오래되서 문서도 없고, 개발자도 없는 상태의 코드
전위순회 : (기호들순서대로나열) (계산할대상들나열) => 계산할때 뒤에서부터 앞(안쪽으로) 계산 하더라
BigO 표기법 : 알고리즘의 실행시간이 최악일 때 표기하는 벙법
- O(1) = 데이터 수 관계없이 일정하게 문제해결에 하나의 단계만을 거침, 스택의 삽입, 삭제
- O(logn) = 문제 해결에 필요한 단계가 입력값n 또는 조건에 의해 감소함, 이진트리, 이진검색
- O(n) = 문제해결에 필요한 단계가 입력값 n과 1:1의 관계를 가짐, for문
- O(nlog₂n) = 문제해결에 필요한 단계가 n(log₂n)번만큼 수행됨, 힙정렬, 2-Way 합병 정렬
- O(n²) = 문제해결에 필요한 단계까 입력값의 제곱만큼 수행, 삽입/쉘/선택/버블/퀵정렬
- O(2의n승) = 문제해결에 필요한 단계가 2의 입력값 제곱만큼 수행, 피보나치 수열

참고하면 좋을 블로그 : BigO 표기법
소프트웨어 품질 특성 : 기능성(적합, 정확, 보안)
EAI(Enterprise Application Integration)의 구축 유형 :
1.Point-to-point : 기본적 애플리케이션 통합방식, 앱 1:1로 연결하면 변경 및 재사용이 어려움
2. Hub&spoke : 중앙집중형방식, 확장/유지보수가 용이, 허브장애 발생시 시스템 전체에 영향
3. ESB(message Bus) : 미들웨어 , 확장성이 뛰어남, 대용량처리 가능
4. Hybrid : 허브와 메세지의 혼합 방식, 그룹내 허브 그룹간 메세지
반정규화의 중복레이블 추가 :
1.집계테이블 추가,
2.진행테이블 추가,
3.특정부분만을 포함하는 테이블 추가
전위식 계산 : 앞쪽에 연산자(=기호) 앞에 뒤쪽에 피연산자(=계산할 수들)를 뒤쪽에
후위식 계산 : 피연산자앞에 순서대로 쓰고 뒤쪽에 연산자
결함관리 순서: 1.기록 -> 2. 수정-> 3. 검토 -> 4. 재확인
스트레스 테스트 : 과부하상태 테스트
트리 차수 : 노드(동그라미표시)에서 최고 갯수의 가지(연결된 선) 수
APM 종류 : 1. 리소스 2. End to End
DRM => 디지털 저작권 관리 // 클리어링 하우스 => 결제

DRM 디지털 저작권 관리 기술요소
- 암호화 : 라이센스 암호화 + 전자서명
- 키관리 : 암호화된 키에 대한 저장, 분배 기술
- 암호화 파일 생성 : 암호화된 콘텐츠로 생성위한 기술
- 저작권 표현 : 라이센스 내용 표현 기술
- 정책관리 : 라이선스 발급 및 사용의 정책 표현 및 관리 기술
- 크랙방지 : 크랙에 의한 콘텐츠 사용 방지 기술
- 인증 : 라이선스 발급 및 사용의 기준이 되는 사용자 인증 기술
- 식별기술 : 식별체계표현기술
DRM 기술요소 중에 방화벽은 없어XXXXX(아이창피해ㅡㅡ)
공유폴더 방식 => 파일 변경사항 DB기록
살충제 패러독스 : 테스트 내성이 생김-> 같은 테스트로는 오류가 더이상 잡히지 않음
파레토 : 80%오류는 20%영역에서 생김
오류부재 : 오류가 없어도 사용자 만족이 0이면 품질이 낮음
ISO/IEC/IEEE 29119-3 표준 케이스 구성
1. 식별자 2. 테스트항목 3. 입력명세 4. 출력명세 5. 환경설정 6. 특수절차 요구 7. 의존성 기술
테스트 하네스 구성요소
- 테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스 , 테스트 스크립트, 목오브젝트
클라이언트/서버 방식 (버전관리 자료가 중앙시스템(=서버)에 저장)
- SVN, CVS, CVSNT, Clear case, CMVC, perforce..

분산저장소 방식(원격 저장소-pc로컬저장소 함께 저장되어 관리)
- Git, GNV arch, DVVS, Bazaar, Mercurial, TeamWare, Bitkeeper, plastic SCM ...
<소스코드품질분석도구>
1. 정적분석도구
: pmd, cppcheck, com, checkstyle, SonarQube, cober, 뭐하나 더 있었는데
2. 동적분석도구
:
Inorder 방식 : 왼쪽제일 뿌리에서 오른쪽으로 이동(이때, 자식은 부모를 거쳐서 옆으로 이동)
=> 왼쪽뿌리에서 위로오르며 노드(동그라미)에 연결된 선을 따라 옆으로 이동가능
테스트오라클 (제한된 검증, 수학적기법, 자동화 기능)
- 정의된 참값(참 거짓 판단)
- 참, 샘플링, 휴리스틱, 일관성 검사
1. 외부스키마 = 서브스키마 = 사용자뷰 "논리"
=> 사용자나 응용프로그래머가 각 개인의 입장에서 필요로하는 DB의 논리적 구조를 정의
2. 개념스키마 "논리"
=> 기관, 조직체 관점에서 필요로하는 데이터를 종합한 조직전체의 DB(딱 1개)
3. 내부스키마
=> 물리적 구조 실제저장 방법 기술, 시스템 프로그래머나 시스템 설계자가 보는 관점
콘텐츠를 메타 데이터와 함께 배포가능한 단위로 묶는 기능 수행 => 패키저가 담당
해싱함수(홈주소를 삼는 방법에 따른 방식)
1. 제산법 : 가장 작은 소수로 나눈 나머지가 홈주소
2. 제곱법 : 제곱 후, 중간부분을 값으로
3. 폴딩법 : 부분값을 더하거나 XOR값으로
4. 기수변환법 (Radix) : 진수 변환 후, 높은 자릿수 변환
5. 대수적 코딩법 : 다항식의 계수를 …
6. 계수분석법(숫자 분석법): 숫자 분포를 분석해서 비교적 고른자리를 필요한만큼 선택
7. 무작위법 : 난수(랜덤값)를 발생시켜 나온 값
인터페이스 보안을 위해 네트워크 영역에 적용될 수 있는 솔루션
- IPSec
- SSL
- S-HTTP
블랙박스 - 오류예측
화이트박스 - 조건, 루프검사
cyclomatic(순환복잡도)의 수는 화살표로 이뤄진 영역의 갯수를 세면 됨
-ex: 삼각형모양 두 개로 이뤄진 사각형의(화살표가모두순환) 경우=> 3 (삼각형1+삼각형1+사각형(삼각형삽쳐진모양)제외넓이)
형상관리 도구의 주요 기능
- 체크인check-in : 체크아웃한 파일 수정완료한 후 저장소의 파일을 새로운 버전으로 갱신
- 체크아웃check-out : 프로그램 수정위해 저장소에서 파일 받아오고 소스파일과 함께 버전관리를 위한 파일도 받아옴
- 커밋commit : 체크인 수행할 떄, 이전에 개신된 내용이 있는 경우 충돌을 알리고 diff도구를 이용해 수정한 후 갱신을 완료
- import
- update
알고리즘 설계 기법
- 분할 정복, 분할 통치(Divide and Conquer) : 큰 문제를 보다 작은 문제로 "분할하여 해결"하는 전략
- 동적 계획법(Dynamic Programming) : 아래단계의 간단한 문제부터 해결하며 상위로 나아가는 "상향식 접근"
- 탐욕 알고리즘(Greedt Algorithm): 완벽한 해결책<차선책, 상황에 맞는 해결책을 즉석에서 모색
- 백트래킹(Backtracking): 깊이우선탐색(Depth Frist Search) 알고리즘 이용, 문제해결의 모든 가능성을 트리로 구축
형상관리 (Softward Configuration Management)
- 소프트웨어 개발 전체 단계 적용( 유지보수단계에서도 수행)
- 목적 : 개발 전체비용 줄이고, 방해요인 최소화하도록 보증
- 변경 원인 알아내어 제어 및 확인하여 해당 담당자에게 통보
파티션의 종류
- 범위분할 Range : 열(세로) 값기준, 데이터가 특정 파티션에 집중될 수 있음
- 해시분할 Hash: 범위분할 단점 보안, 데이터 고르게 분산
- 조합분할 Composite: 파티션이 너무 커서 관리하기 어려울때 사용 (범위적용->해시적용 두개다했을 때)
SW품질 측정의 개발자관점 : 정확성, 사용성, 무결성
ISO/IEC9126
사용성의 특성 학습성이 있음


*여러번 틀리는 문제들의 키워드
- 패키저,메타데이터