study/정보처리기사

2과목 소프트웨어 개발

으녕오리 2025. 5. 3. 23:03
  • 소프트웨어 패키징 도구 활용 시 고려사항
    • 반드시 암호화/보안을 고려한다.
    • 추가로 다양한 이기종 연동을 고려한다.
    • 사용자 편의성을 위한 복잡성 및 비효율성 문제를 고려한다.
    • 애플리케이션의 종류에 적합한 암호화 알고리즘을 적용한다.
    • 지속적인 배포를 고려한다.
  • EAI(Enterprise Application Integration) : 기업 내의 컴퓨터 애플리케이션들을 현대화 ~
    ERP(Enterprise Resource Planning) : 기업 내의 모든 인적, 물적 자원을 효율적으로 관리하여 ~
  • EAI 구축 유형
    • point to point
      • 중간에 미들웨어를 두지 않음
      • 상대적으로 저렴
      • 변경/재사용이 어려움
    • Hub & Spoke
      • 허브 시스템을 통해 데이터를 전송
      • 모든 데이터 전송 보장
      • 확장, 유지보수 용이
      • 허브(중심) 장애시 전체 영향
    • Message Bus(ESB)
      • 애플리케이션 사이에 버스를 두어 처리
      • 뛰어난 확장성, 대용량 처리
    • Hybrid (Hub&Spoke + Message Bus)
      • 내부는 Hub&Spoke 방식
      • 외부는 메시지 버스 방식을 사용
      • 데이터 병목(성능이 저하되는 부분)현상 최소화
  • 소프트웨어 정적 분석 도구
    • 소스코드를 실행하지 않고, 코딩 표준, 코딩 스타일, 구조와 의존관계 등을 분석
    • 정적분석 도구 : pmd, cppcheck, SonarQube, Find Bug, checkstyle, corbertura
  • 인터페이스 보안 기능 적용
    • 네트워크 영역 : 송/수신간 스니핑 등 데이터 탈취 및 변조 위협 방지를 위해
      네트워크 트래픽에 대한 암호화
    • 방식 : IPSec, SSL, S-HTTP ★
  • 검증검사(인수 테스트)
    • 형상 검사 : 구성요소, 목록, 유지보수를 위한 내용이 표현되었는지 검사
    • 알파 검사(개발자와 함께) : 사용자가 개발자 앞에서 검사하여 오류와 사용상의 문제를 개발자와 함께 확인
    • 베타 검사(개발자 없이) : 선정된 사용자를 제한되지 않은 환경에서 프로그램을 사용하게 하고, 오류가 발견되면 개발자에게 통보
  • V모델 ★★★★★★★
    • 생명주기 초반부터 테스트 작업을 지원한다. 
    • 폭포수 모델은 산출물 중심, v모델은 작업과 결과의 검증에 중심
    • 인수 테스트 : SW 제품에 대한 요구사항이 제대로 이행되었는지 확인하는 단계
      • 알파 테스트(개발자), 베타 테스트(사용자)
    • 시스템 테스트 : 전체 시스템의 기능 검증
      • 기능적, 비기능적
    • 통합 테스트 : 각 모듈 간의 인터페이스 결함 검증
      • 상향식 통합 테스트 : 드라이버  
      • 하향식 통합 테스트
        • 깊이 우선 방식 or 너비 우선 방식
        • stub(스텁) 사용
      • 혼합식 테스트
        • 상향식 + 하향식
        • 스텁, 드라이버의 필요성 높음
    • 단위 테스트 : 모듈의 동작 검증

  • 인터페이스 구현 검증 도구 ★★★ 
    • xUnit : 다양한 언어, 단위 테스트
    • STAF : 몬, 서비스 호출, 컴포넌트 재사용
    • FitNesse : 웹 기반
    • NTAF : NAVER
    • watir : Ruby
    • Selenium : 웹 애플리케이션 테스트 프레임워크
  • 소프트웨어 형상 관리 절차 : 식별 -> 통제 -> 감사 -> 기록 (식도(통)감기! 로 외우기)
  • 형상관리
    • 소프트웨어 개발 과정에서 발생하는 모든 변경을 관리하는 활동
    • 협업을 진행하는 멤버들의 공유 및 변경 이력 관리
    • 소스코드, 각종 설계 문서, 회의록 등의 모든 문서가 형상관리 대상(비용 제외하고 모두)
    • 형상관리 도구 : CVS, SVN -> 중앙 집중식 / GIT -> 분산
    • 형상 통제 과정에서는 형상 목록의 변경 요구를 즉시 수용 및 반영해야 한다 x
      -> 형상 변경이 발생하면 “형상통제위원회”를 통해 변경을 승인한다.
    • 소프트웨어 개발 비용은 관리 대상 x
  • 스키마
    • 외부 스키마 : 뷰와 관련, 사용자나 응용 프로그래머가 접근할 수 있는 정의를 기술
    • 개념 스키마 : 개체 간의 관계와 제약조건을 나타내고, 접근 권한, 보안 관련 명세가 있음, 데이터베이스 전체를 정의한 것
    • 내부 스키마 : 데이터의 실제 저장 방법 기술
    • 아래에서부터 위로 보기

  • 테스트 오라클(참인지 거짓인지를 판단하기 위해 참값을 입력하여 비교하는 기법)의 유형
    • 참 오라클(전수) : 모든 입력값에 대해 기대하는 결과를 확인하는 전수 테스트
    • 샘플링 오라클(보통) : 특정 몇몇 입력값들에 대해서만 결과를 제공
    • 휴리스틱 오라클(보통 + 추정) : 샘플링 오라클을 개선한 오라클, 특정값에 대한 올바른 결과를 제공하고, 나머지는 추정
    • 일관성 검사 : 이전 수행결과와 현재 수행결과가 동일한지 검증
  • 빌드 자동화 도구(테스트, 배포 자동으로 해줌)
    • Commit(올리다), CI(지속적인 통합), CD(지속적인 배포, delivery)

  • 저작권 관리 구성 요소

  • 디지털 저작권 관리(DRM) 기술요소(이용권한 통제 o, 오류 감지 및 복구 x) : 암호화, 키관리, 식별기술(DOI, URI), 저작권 표현, 정책 관리, 크랙 방지, 인증, 인터페이스, 사용권한
  • 애플리케이션 테스트 유형 분류
    • 프로그램 실행 여부
      • 정적 테스트 : 실행x, 소스코드 o
      • 동적 테스트 : 소스코드
    • 테스트 기법 
      • Black Box Test(블랙 박스 검사) 기법 (소스코드를 보지 않고, 입력값과 출력값으로)
        • 사용자 관점
        • 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사.
        • 내가 원하는 기능이 예측한 대로 정상 동작하는지를 확인.
        • 테스트 방법 종류 ★★★★★★★
          • 동등 분할 기법(Equivalence Partitioning Testing) : 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사
          • 경계값 분석 기법
          • 오류 예측 기법 : 과거의 경험이나 확인자의 감각으로 검사
          • 원인 결과 그래프 기법 : 효용성이 높은 테스트 케이스 선정
          • 의사결정 테이블 테스팅, 상태 전이 테스팅
      • White Box Test(화이트 박스 검사) 기법 (소스코드를 보고)
        • 개발자 관점
        • 프로그램의 내부 구조, 동작을 디테일하게 검사
        • 내부 소스코드를 테스트 하는 기법
        • 문장검증, 선택검증, (기초)경로검증, 조건검증 (문경선조)
    • 테스트에 대한 시각
      • 검증 테스트 : 개발자가 진행
      • 확인 테스트 : 고객이 진행
    • 테스트 목적
      • 회복 테스트, 안전 테스트, 강도 테스트, 성능 테스트, 구조 테스트, 회귀 테스트, 병행 테스트
    • 테스트 기반 ★★★ (명구경)
      • 명세기반 테스트, 구조기반 테스트, 경험기반 테스트 
  • 해싱 함수
    • 키 값으로부터 자료가 저장되어 있는 주소를 직접 계산하여
      산출된 주소로 바로 접근하는 방법
    • 검색 방법 중 속도는 가장 빠르나, 충돌현상의 해결의 부담이 요구된다.
    • 종류 ★★★
      • 제산 방법 : 배열의 크기로 나누어 나머지 값을 주소로 취한다. ★
      • 중간 제곱법 : 키 값을 제곱후 중간 부분의 값을 주소로 취한다.
      • 중첩방법(폴딩법) : 더하거나 XOR 연산을 통해 나온 주소를 취한다. ★
      • 기수 변환법 : 키값을 다른 진법으로 간주하고 변환한 주소를 취한다.
      • 계수 분석방법 : 고르게 분포된 값을 가지고 주소를 취한다.
      • 무작위 방법 : 난수생성한 값을 주소로 취한다.
  • 클린코드 작성원칙 : 가독성, 단순성, 의존성, 중복성, 추상화
  • 특강(2~3문제)
    • 정렬 : 선택정렬, 버블정렬, 삽입정렬 정리하기! 셋 중 하나 꼭 나옴 ★★★★★★★
      • nlogn -> 힙(완전 이진 트리), 퀵(최악은 n제곱, pivot), 병합(합병) (힙퀵병)
      • n제곱 -> 선택, 버블, 삽입
      • 버블 정렬 : 인접한 두 개의 숫자를 비교하여 위치 바꾸는 것을 끝까지 차례차례 한번씩 진행 -> 1회전
      • 선택 정렬 : 최솟값을 첫 번째 위치와 교환 -> 그 다음 최솟값을 두 번째 위치와 교환 반복
      • 삽입 정렬 : 2번째 값을 꺼내서 그 앞의 값이랑 비교 후 작으면 앞으로 보내줌 -> 3번째 값을 꺼내서 그 앞의 값들이랑 비교 후 작으면 앞으로 보내줌
      • 5, 3, 4, 1, 2 로 풀이 연습
    • 트리 : 전위, 중위, 후위
    • 그래프 : 너비우선탐색, 깊이우선탐색
    • 수식 : 전위, 후위
  • 스택
    • 데이터 넣을 때 : 탑포인터 +1 -> D 넣기
    • 데이터 삭제할 때 : D 빼기 -> 탑포인터 -1
  • 자료구조의 분류
    • 선형 구조(연속적) 
      • 리스트
        • 선형 리스트
        • 연결 리스트
      • 스택
    • 비선형 구조(비연속적)
      • 트리
      • 그래프
  • 파레토 법칙 : 기능의 20%에서 오류의 80%가 나온다.
  • 스파게티 코드 : 난잡하게 짠 코드
  • 외계인 코드 : 오래돼서 문서 x 개발자 x
  • 모듈의 독립성을 높이기↑ 위해 응집도 높이고↑, 결합도 낮추기↓
    • 응집도 : 한 모듈 내에서 기능적인 연관 정도
  • ISO/IEC 9126 소프트웨어 품질 특성 (기신사효유이) : 기능성(하위에 보안성, 정확성, 적합성) 신뢰성 사용성 효율성 유지보수성(하위에 적응성) 이식성
  • ISO/IEC 25000 : ISO/IEC 9126과 ISO/IEC 14598을 통합하였다, 2501n(품질 모형), 2503n(품질 측정)
  • 연결 리스트 : 삽입 삭제 빠름, 검색 느림
  • postfix(후위식) -> infix(중위식) : D D 연 -> D 연 D로 바꿔준 뒤, D 연 D 를 또 하나의 D로 취급 후 반복
  • INORDER(중위 순회) : LEFT-ROOT-RIGHT
  • Brooks의 법칙 : Project 일정이 지연된다고 해서 Project 말기에 새로운 인원을 추가 투입하면 Project는 더욱 지연된다
  • 알고리즘 설계 기법 : 분할 정복법(Divide and Conquer), 동적 계획법(Dynamic Programming), 탐욕법(Greedy), 퇴각 검색법(Backtracking), 분기 한정법(Branch & Bound), 근사해법(Approximation Algorithm)
  • 코드 인스펙션 과정 : 계획->사전교육->준비->인스펙션 회의->수정->후속조치
  • 소프트웨어 테스트의 기본 원칙
    • 결함 집중 : 파레토 법칙이 좌우한다. 결함 대부분은 소수에 집중되어있다.
  • 트리의 전체 노드 수 계산 : 전체 노드 수 = 루트 노드 수 + 간 노드의 자식 노드 수 + 단말 노드의 수
  • 상향식 통합 테스트 절차 : 하위 모듈 결합 -> 상위 모듈 드라이버 작성 -> 테스트 -> 클러스터는 프로그램의 상위로 이동, 드라이버는 실제 모듈로 대체
  • McCabe의 cyclomatic(순환복잡도) : 화살표-점+2
  • 체크인(Check-in) : 저장소에 새로운 버전의 파일로 갱신하는 것을 의미
    체크아웃(Check-out) : 저장소에 저장된 파일을 자신의 작업 공간으로 인출
  • 폭포수 모델의 요구분석 단계에서는 프로토타입을 사용하지 않는다.
  • Deplyment : 배포
  • 작업 분해(WBS : Work Breakdown Structure) : 프로젝트의 작업을 계층적으로 분해하고 구조화한 것
  • 해시 : 키-값 쌍
  • 테스트 커버리지 : 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
  • 순차 파일 편성 : 중간에 새로운 레코드 삽입, 삭제 시 전체를 복사해야 함
  • 순서도의 기본 구조 : 입출력, 선택, 반복(연속 x)
  • 단위 테스트 도구로 사용할 수 없는 것 -> IgpUnit
  • 선형 검색은 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 한다. x
    -> 검색 수행 전 반드시 정렬되어 있어야 하는 방식은 이분 검색이다