UML 다이어그램
표준화된 범용 모델링 언어
구조적 | 클래스 다이어그램 | 클래스의 속성 및 연산과 클래스 간의 정적인 관계를 표현 |
객체 다이어그램 | 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현 | |
컴포넌트 다이어그램 | 시스템을 구성하는 물리적 컴포넌트와 그들 사이의 의존 관계 표현 | |
배치 다이어그램 | 컴포넌트 사이의 종속성 표현, 물리적 요소들의 위치 표현 | |
복합체 구조 다이어그램 | 클래스나 컴포넌트가 복합 구조를 갖는 경우, 그 내부 구조 표현 | |
패키지 다이어그램 | 모델 요소들을 그룹화한 패키지들의 관계를 표현 | |
행위적 | 유스케이스 다이어그램 | 시스템이 제공하는 기능과 관련 외부 요소를 사용자 관점에서 표현 |
시퀀스 다이어그램 | 객체 간 동적 상호작용을 시간적 개념 중심으로 메시지 흐름으로 표현 | |
커뮤니케이션 다이어그램 | 동작에 참여하는 객체들이 주고받는 메시지와 객체 간 연관 표현 | |
상태 다이어그램 | 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 어떻게 변화하는지 표현 |
|
활동 다이어그램 | 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리 흐름을 순서대로 표현 |
|
타이밍 다이어그램 | 객체 상태 변화와 시간 제약을 명시적으로 표현 |
소프트웨어 테스트의 기본 원리
- 결함 발견 : 결함 제거가 아닌 결함의 발견을 목적으로 한다.
- 초기 집중 (요르돈 법칙) : 개발 설계 시부터 테스트를 고려, 결함의 조기발견 및 재유입을 방지한다.
- 결함 집중 (파레토 법칙) : 결함의 80%는 전체 모듈의 20% 내에서 발견된다. (결함이 높은 곳에 자원 집중)
- 오류-부재 궤변 : 요구사항을 충족시키지 못하면, 결함을 모두 제거하였다고 품질이 우수하다고 볼 수 없다.
- 불완전성 : 완벽한 테스팅은 불가능하다. 무한 경로, 무한 입력값, 무한 타이밍
- 살충제 페러독스 : 동일한 테스트 전략, 기법을 적용할 시 내성이 생긴다.
- 정황 의존성 : 테스트는 테스트 주변 환경에 의한 영향을 받는다.
* 브룩스 법칙 : 지체되는 소프트웨어 개발 프로젝트에 인력을 추가하는 것은 개발을 늦춘다.
* 요르돈 법칙 : SW 개발 초기 체계적인 분석 및 설계가 수행되지 못하면 그 결과가 프로젝트 후반에 영향을 미치게 되어 비용이 커진다는 법칙 (snowball effect, 눈덩이 법칙)
* 파레토 법칙 : 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상을 가리키는 말이다.
소프트웨어 테스트 원리 중 20%의 모듈에서 80%의 결함이 발견된다는 "결함 집중"의 원리를 내포하고 있다.
* 롱테일 법칙 : 사소해 보이는 80%의 다수가 20%의 소수 핵심보다도 뛰어난 가치를 창출해낸다는 이론
테스트 프로세스
테스트 계획 → 테스트 분석 및 디자인 → 테스트 케이스 및 시나리오 작성 → 테스트 수행 → 테스트 결과 평가 및 리포팅
테스트 오라클
테스트의 결과가 참인지 거짓인지를 판단하기 위해 사전에 정의된 참값을 입력하여 비교하는 기법
- 참 오라클 : 모든 입력값
- 샘플링 오라클 : 몇 개의 입력값
- 휴리스틱 오라클 : 경험에 의존
- 일관성 검사 오라클
테스트 분류
- 정적 테스트 : 리뷰, 정적 분석
- 동적 테스트 : 화이트박스 테스트, 블랙박스 테스트, 경험기반 테스트
리뷰
- 인스펙션(동료검토) : 소프트웨어 요구, 설계, 원시코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 문제를 식별하고 올바른 해결을 찾아내는 검토기법
- 워크스루 : 검토자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하여 리뷰하는 비형식적인 검토기법
정적 분석
코딩 표준, 복잡도 측정(맥케이브의 순환 복잡도 개념), 자료 흐름 분석
화이트박스 테스트 [구결조 조변다 기제데]
내부구조와 동작을 검사하는 테스트 방식
- 구문(문장) 커버리지 : 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 커버리지
- 결정(선택, 분기) 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
- 조건 커버리지 : 각 개별 조건식이 적어도 한 번은 참과 거짓 결과가 되도록 수행
- 조건/결정 커버리지 : 전체 조건뿐 아니라 개별 조건식도 참 한 번, 거짓 한 번 결과가 되도록 수행
- 변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식의 영향을 받지 않고 전체 조건식에
독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 커버리지
- 다중 조건 커버리지 : 결정 조건 내 모든 개별 조건식의 모든 가능한 조합을 100% 보장
- 기본 경로 커버리지 : 수행 가능한 모든 경로 테스트, 맥케이브 순환 복잡도 기반으로 커버리지 계산
- 제어 흐름 테스트 : 프로그램 제어 구조를 그래프 형태로 나타내어 내부로직을 테스트하는 기법
- 데이터 흐름 테스트 : 제어 흐름 그래프에 데이터 사용 현황을 추가한 그래프를 통해 테스트
종류 | 설명 |
기초 경로 검사 | 대표적인 화이트 박스 테스트 기법 |
제어 구조 검사 | 조건검사 : 논리적 조건을 테스트하는 기법 루프검사 : 반복 구조에 맞춰 테스트하는 기법 데이터 흐름 검사 : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 테스트하는 기법 |
블랙박스 테스트 [동경결상 유분 페원비]
내부 구조나 동작을 모르는 상태에서 검사하는 테스트 방식
- 동등 분할 테스트 : 입력 데이터의 영역을 유사한 도메인별로 유횻값/무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트
- 경곗값 분석 테스트 : 등가 분할 후 경곗값 부분을 포함하여 테스트 케이스를 설계하여 테스트
- 결정 테이블 테스트 : 요구 사항의 논리와 발생조건을 테이블 형태로 나열, 조건과 행위를 모두 조합하여 테스트
- 상태 전이 테스트 : 테스트 대상이나 객체 상태를 구분하고 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트
- 유스 케이스 테스트 : 시스템이 실제 사용되는 유스 케이스로 모델링 되어 있을 때, 프로세스 흐름을 기반으로 테스트 케이스를 명세화해 수행하는 테스트
- 분류 트리 테스트 : SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계
- 페어 와이즈 테스트 : 테스트 데이터 값을 최소한 한 번씩 조합하는 방식
- 원인-결과 그래프 테스트 : 그래프를 활용해 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석하여 효용성이 높은 테스트 케이스를 선정하여 테스트
- 비교 테스트 : 여러 버전의 프로그램에 같은 입력값을 넣어 동일한 결과가 나오는지 테스트
종류 | 설명 |
동치 분할 검사 | 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 해 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법 (동등 분할 기법) |
경곗값 분석 | 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용해 입력 조건의 경계값을 테스트 케이스로 선정해 검사하는 기법 |
원인-효과 그래프 검사 | 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정해 검사하는 기법 |
비교 검사 | 여러 버전의 프로그램에 동일한 테스트 자료를 제공해 동일한 결과가 출력되는지 테스트하는 기법 |
오류 예측 검사 | 다른 블랙박스 테스트 기법으로 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법 (데이터 확인 검사) |
단위 테스트 : 사용자 요구 사항에 대한 단위 모듈, 서브루틴 등 테스트 ex)컴포넌트 테스트
- 하향식통합 : 메인 제어 모듈부터 아래 방향으로 이동 (스텁 개발)
- 상향식 통합 :최 하위 레벨의 모듈부터 위쪽 방향으로 이동 (드라이버 개발)
통합 테스트 : 모듈 사이의 인터페이스, 통합된 컴포넌트 간 상호작용을 검증하는 테스트 ex)상향식, 하향식 테스트
시스템 테스트 : 통합된 단위 시스템의 기능이 정상적으로 수행되는지 검증하는 테스트 ex)기능, 비기능 테스트
인수 테스트 : 계약의 요구 사항이 만족되었는지 확인하는 테스트 ex)알파, 베타 테스트
개발 방법론
구조적 방법론
기능에 따라 나누어 개발한 후 통합(분할 정복)
프로세스 중심, 하향식 방법론, 나씨-슈나이더만 차트 사용
*나씨슈나이더만 (ns차트) : 구조적 프밍표현을 논리 기술을 중점으로 한 도형적 표현 방식
정보공학 방법론
정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
개발 주기 사용, 대형 프로젝트
객체지향 방법론
객체를 기본 단위로 시스템 분식 및 설계
객체, 클래스, 메시지 사용
컴포넌트 기반 방법론
컴포넌트를 조립해서 하나의 응용 프로그램 작성
개발 기간↓, 생산성↑, 확장성, 재사용
제품 계열 방법론
공통 기능을 정의하여 개발
임베디드 SW에 유용, 영역 공학과 응용공학으로 구분
애자일방법론
절차보단 사람중심, 변화에 유연 신속 효율적 개발
유형 - XP, SCRUM(정해진 시간, 정해진 장소), LEAN(도요타 린)
XP의 5가지 가치 [용단의피존]
용기, 단순성, 의사소통, 피드백, 존중
비용추정
LOC (코드라인수) : 예측치 = 낙관치+4중간치+비관치 / 6
Man Month (MM) : 한 사람이 1개월간 할 수 있는 일의 양
COCOMO : 보헴이 제안, 프로그램 규모에 따라 비용을 선정하는 방식
- 조직형(=기본형,단순형) : 5만 라인 이하, 50KDSI 이하
- 반 분리형 : 30만 라인 이하, 300KDSI 이하
- 임베디드 형 : 30만 라인 초과, 300KDSI 초과
Putnam : Rayleigh-Norden 곡선
FP (기능점수) : 요구 기능에 따른 가중치 부여
'자격증 > 정보처리기사' 카테고리의 다른 글
내가 공부하려고 정리하는 정보처리기사 실기 정리 (6/6) (1) | 2021.10.03 |
---|---|
내가 공부하려고 정리하는 정보처리기사 실기 정리 (5/6) (0) | 2021.10.02 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (4/6) (0) | 2021.10.01 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (3/6) (1) | 2021.09.30 |
내가 공부하려고 정리하는 정보처리기사 실기 정리 (1/6) (1) | 2021.09.28 |
댓글