본문 바로가기

자격증/정보처리기사

[정보처리기사] 소프트웨어 공학

  • 정적 테스트 리뷰
    • 동료 검토: 명세서 작성자가 명세서 설명, 이해관계자가 결함 발견
    • 워크 스루: 검토 자료를 사전검토 후 짧게 회의를 진행
    • 인스펙션: 저작자 외의 전문가가 검사하여 오류를 찾는 공식적 검토
  • 요구사항 명세 방법
    • 정형: 수학적 원리와 표기법으로 서술
    • 비정형: 자연어 기반으로 서술
  • 데이터 흐름도 구성요소
    • 처리기: 원
    • 데이터 흐름: 화살표
    • 데이터 저장소: 평행선(=)
    • 단말: 네모
  • 소프트웨어 품질 특성
    • 기능성: 성능
    • 신뢰성: 성능 수준 유지
    • 사용성: 쉽게 사용 가능
    • 효율성: 자원의 양에 따름
    • 유지보수성: 변경되는 능력
    • 이식성: 전이
  • 신뢰성
    • 성숙성: 고장 회피 능력
    • 고장 허용성: 고장 시에도 성능을 유지하는 능력
    • 회복성: 복구해서 성능 수준 올리는 능력
  • 소프트웨어 테스트
    • 검증: 개발 과정 테스트
    • 확인: 결과 테스트
  • 자료 사전
    • 자료 용어가 무엇을 의미하는지 알려주기 위함.
    • = 정의
    • + 연결
    • {} 반복
    • [] 선택
    • () 생략
    • ** 주석
    • ex. 나 = {밥, [게임 | 외출], 공부, 잠} + (양심)
  • 스크럼
    • 백로그: 요구사항 분석 등
    • 스프린트: 코딩코딩
    • 스크럼 미팅: 매일마다 짧게 회의
    • 번 다운 차트: 백로그 대비 시간 차트
  • 비즈니스 연속성 계획
    • BIA: 장애 발생 시 BCP를 구축하기 위한 분석(ANALYSIS)
    • RTO: 중단부터 복구까지 시간(TIME)
    • RPO: 체크포인트(POINT)
    • DRP: 재난 복구 계획(PLAN)
    • DRS: 재해복구 시스템(SYSTEM)
  • 일정 관리 모델
    • 주 공정법(CPM): 얽힌 여러 작업의 일정을 계산
    • PERT: 일의 순서를 계획적으로 정리
    • 중요 연쇄 프로젝트 관리(CCPM): 자원제약사항을 고려
  • 분석 자동화 도구
    • 상위 CASE: 계획 수립, 기본설계를 다이어그램으로 표현 (설계)
    • 하위 CASE: 시스템 명세서 생성 및 소스 코드 생성 지원 (구현, 테스트)
  • 소프트웨어 아키텍처 4+1뷰
    • 유스케이스 뷰: 다른 뷰를 검증 (+1)
    • 논리 뷰: 기능적 요구사항을 설명하는 뷰
    • 프로세스 뷰: 비기능적 속성을 표현하는 뷰
    • 구현 뷰: 소프트웨어 모듈의 구성을 보여주는 뷰
    • 배포 뷰: 물리적인 아키텍처에 어떻게 배치되는지 보여주는 뷰
  • UML 정적 다이어그램 종류
    • 클래스: 클래스 관계
    • 객체: 인스턴스 관계
    • 컴포넌트: 컴포넌트 관계
    • 배치: 컴포넌트를 포함한 물리적 요소들
    • 복합체 구조: 복합 구조의 내부를 표현
    • 패키지: 패키지 관계
  • UML 관계
    • 집합 관계: 빈 마름모. 구성 성분 의미
    • 복합 관계: 찬 마름모. 구성 성분이면서 생명주기를 같음.
  • 형상 관리 절차
    • 형상 식별: 관리 대상 정의
    • 형상 통제: 통제 지원
    • 형상 감사: 무결성 평가
    • 형상 기록: 보고서 작성
  • 형상 관리 도구 기능
    • 체크인: 형상 관리 저장소로 업로드 (ex. push)
    • 체크아웃: 최신 버전을 PC로 다운 (ex. pull)
    • 커밋: 체크인 후 최종적으로 업데이트에 반영 (ex. merge)
  • 테스트
    • 단위: 모듈 테스트
    • 통합: 상호작용 검증
    • 시스템: 시스템에서 잘 도는지
    • 인수: 요구사항 만족했는지
  • 소프트웨어 재사용
    • 재공학: 이미 만든 거 진화시켜서 다시 쓰기
    • 역공학: 기존에 만든 것을 분석하여 기술력을 재구성
    • 재개발: 기존 시스템을 참조하여 완전히 새걸로 개발
  • 인터페이스 감시 도구
    • 스카우터: DB Agent를 통해 DB 모니터링
    • 제니퍼: 성능 모니터링 및 분석하는 APM 소프트웨어
  • DRS: 재해 복구 시스템
    • Miror Site: 주 센터 + 복구 센터 (고가용성)
    • Hot Site: 복구 센터가 미러링을 통해 주 센터와 비슷한 수준의 자원 보유. 복구 센터는 대기
    • Warm Site: 복구 센터가 중요한 정보만 저장
    • Cold Site: 데이터만 원격에 보관. 신뢰성 낮지만 간편
  • LoC: 낙관치, 중간치, 비관치를 측정하여 예측치를 구하는 비용산정 모델
  • 구조적 커버리지
    • 구문 커버리지 100%: 모든 문장 실행
    • 분기 커버리지 100%: 모든 분기가 T/F 실행
    • 조건 커버리지 100%: 모든 분기의 개별 조건식이 T/F 실행
  • 럼바우의 객체지향 분석 절차
    • 객체 모델링: 시스템의 정적 구조 표현
    • 동적 모델링: 객체 제어 흐름 표현
    • 기능 모델링: 값의 변화 과정 표현
  • 백업 유형
    • 전체 백업: 전체를 백업
    • 차등 백업: 전체 백업 사이에 변화된 데이터 백업
    • 증분 백업: 전체 백업 내역과 차등 백업 내용이 누적되어 백업
  • 성능 테스트
    • 부하 테스트: 점진적으로 부하 증가
    • 강도 테스트: 임계점 이상 부하
    • 스파이크 테스트: 갑자기 튀는 부하
    • 내구성 테스트: 오랜 시간 높은 부하
  • CMMI: 통합 능력 성숙도 단계
    • 초기화 단계: 프로세스 미비
    • 관리 단계: 프로세스 정의 및 수행
    • 정의 단계: 표준 프로세스로 업무를 수행
    • 정량적 관리 단계: 프로세스의 정량적 통제
    • 최적화 단계: 역량 향상을 도모
  • 소프트웨어 공학 법칙
    • 브룩스의 법칙: 사공이 많으면 산으로 간다.
    • 파레토 법칙: 전체 결과의 80%는 전체 원인의 20%에서 발생 (우수한 인력 20%일 수도 있고, 결함 20%일 수도 있음)
    • 롱테일 법칙: 핵심 인력 20%보다 사소한 80%더 많은 가치를 창출
  • 맥케이브 순환복잡도
    • V(G) = E-V+2
    • V(G) = P(분기문)+1
  • 테스트
    • 기본 경로 테스트: 모든 가짓수 테스트 (화박)
    • 비교 테스트: 여러 버전에 입출력 동일한지 테스트 (블박)
  • 목 객체 유형
    • 더미 객체: 호출 시 예외
    • 테스트 스텁: 상태를 가정하고 예외 반환 (수동)
    • 테스트 드라이버: 상태를 가정하도록 호출하는 녀석 (능동)
    • 테스트 스파이: 클래스로 가는 출력 검증
  • 애플리케이션 성능 측정 지표
    • 처리량: 처리 가능한 트랜잭션의 수
    • 응답 시간: 사용자의 입력부터 출력까지
    • 경과 시간: 사용자 요구 트랜잭션이 걸리는 시간
    • 자원 사용률: 트랜잭션 처리하는 동안 먹는 자원량
  • WSDL: Web Service Description Language. 근데 이제 XML을 곁들인.
  • 소프트웨어 결함
    • 에러: 사람이 문제인 경우
    • 버그: 에러가 소프트웨어에
    • 실패: 버그가 실행될 때
  • UML 구성 요소
    • 사물
    • 관계
    • 다이어그램
  • 시퀀스 다이어그램 구성 요소
    • 객체
    • 생명선
    • 실행
    • 메시지
  • 클래스 다이어그램 구성 요소
    • 클래스
    • 속성
    • 연산
    • 접근 제어자
  • 요구사항 분석
    • 소단위 명세서: 컴팩트한 요구사항 명세서
    • 자료 사전
    • 요구사항 명세서
  • 소프트웨어 생명주기 모델
    • 폭포수: 확실하게 끝내고 다음
    • 프로토타이핑
    • 나선형
    • 반복적 모델: 반복적으로 점증