2022년 1회 기출문제 (3월 5일) 오답 노트
1과목 소프트웨어 설계
하향식 통합 테스트 (Top Down Integration Test)
깊이 우선 통합법, 넓이 우선 통합법 사용
테스트 초기부터 사용자에게 시스템 구조 보여줄 수 있다
상위 모듈에서는 tc 사용하기 어렵다
상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
절차
- 주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈은 스텁(Stub)으로 대체한다
- 깊이 우선 or 넓이 우선 등의 통합방식에 따라 하위 모듈인 스텁들이 한 번에 하나씩 실제 모듈로 교체된다
- 모듈이 통합될 때마다 테스트 실시
- 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트 실시
상향식 통합 테스트 (Bottom Up Integration Test)
하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트 하는 방법
가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁은 필요하지 않다
하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)는 필요하다
절차
- 하위 모듈을 클러스터로 결합
- 상위 모듈에서 데이터의 입출력을 확인하기 위해 모듈인 드라이버 작성
- 통합된 클러스터 단위로 테스트
- 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고, 드라이버는 실제 모듈로 대체
자료흐름도(DFD) 4가지 구성요소
처리 Process | 원 |
자료흐름 Data Flow | 화살표 |
자료저장소 Data Store | 평행선 |
단말 Terminal | 사각형 |
객체지향 설계원칙
단일 책임원칙 | 하나의 객체는 하나의 동작에 대해서만 책임을 진다 |
개방-폐쇄의 원칙 | 클래스는 확장에 대해 열려있어야 하며 변경에 대해 닫혀있어야 한다 |
리스코프 교체의 원칙 | 특정 메소드가 상위 타입을 인자로 사용할 때 그 타입의 하위 타입도 문제 없이 작동해야 함 |
의존관계 역전의 원칙 | 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음 |
인터페이스 분리 원칙 | 범용 인터페이스 하나를 두기보다 특정 클라이언트를 위한 여러 개의 인터페이스로 분리하는 것이 좋다 |
생성패턴
추상 팩토리 Abstract Factory | 서로 연관, 의존하는 객체들을 그룹으로 생성해 추상적으로 표현 |
빌더 Builder | 객체의 생성 과정과 표현 방법 분리 → 동일한 객체 생성에서도 서로 다른 결과 |
팩토리 메소드 Factory Method | 객체를 생성하기 위한 인터페이스를 정의하여 어떤 클래스가 인스턴스화 될 것인지는 서브클래스가 결정하도록 하는 것 (Virtual-Constructor 패턴) |
프로토타입 Prototype | 원본 객체를 복제하는 방법 |
싱글톤 Singleton | 하나의 객체를 여러 프로세스가 동시에 참조할 수 없음 |
# 추빌팩프싱
구조패턴
Adapter | 호환성이 없는 클래스 인터페이스를 이용할 수 있도록 변환해주는 패턴 |
Bridge | 구현부에서 추상층을 분리하여 독립적으로 확장 및 다양성을 가지는 패턴 |
Composite | 여러 객체를 가진 복합, 단일 객체를 구분없이 다룰 때 사용하는 패턴 |
Decorator | 상속을 사용하지 않고도 객체의 기능을 동적으로 확장해주는 패턴 |
Façade | 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴 eg.) 리모컨 |
Flyweight | 공유해서 사용함으로써 메모리를 절약하는 패턴 |
Proxy | 접근이 어려운 객체를 연결해주는 인터페이스 역할을 수행하는 패턴 |
# 어브컴데퍼플프
행위패턴
책임 연쇄 Chain of Responsibility | 한 객체가 처리하지 못하면 다음 객체로 넘어가는 패턴 |
Command | 요청에 사용되는 각종 명령어들을 추상, 구체 클래스로 분리하여 단순화함 |
Interpreter | 언어에 문법 표현을 정의하는 패턴 |
Iterator | 동일한 인터페이스를 사용하도록 하는 패턴 |
중재자 Mediator | 서로의 존재를 모르는 상태에서도 협력할 수 있게 하는 패턴 |
Memento | 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴 |
Observer | 관찰대상의 변화를 탐지하는 패턴 |
상태 State | 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴 |
전략 Strategy | 클라이언트에 영향을 받지 않는 독립적인 알고리즘을 선택하는 패턴 |
Template Method | 유사한 서브클래스를 묶어 공통된 내용을 상위 클래스에 정의하는 패턴 |
방문자 Visitor | 필요할 때마다 해당 클래스에 방문해서 처리하는 패턴 |
소프트웨어 아키텍처 설계 과정
설계 목표 설정 → 시스템 타입 결정 → 아키텍처 패턴 적용 → 서브시스템 구체화 → 검토
2과목 소프트웨어 개발
테스트 드라이버 | 단위 테스트에서 테스트의 대상이 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈 | 상향식 테스트에 필요 |
테스트 스텁 | 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈 | 하향식 테스트에 필요 |
스택
리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이뤄지는 자료 구조
후입선출(LIFO; Last In First Out) 방식
순서가 A, B, C, D로 정해진 입력자료를 push, push, pop, push, push, pop, pop, pop 순서로 스택연산을 수행하는 경우 출력 결과
push 입력 pop 출력
push A
push A B
pop A / B
push A C / B
push A C D / B
pop A C / B D
pop A / B D C
pop / B D C A
정렬 알고리즘
37, 14, 17, 40 ,35
▶ 선택 정렬, PASS 3 (3회전)
- PASS 1 ▶ 37, 14, 17, 40, 35 → 14, 37, 17, 40, 35
1번째 37를 제외한 14, 17, 40, 35 중 가장 작은 수(14)와 37을 선택해서 바꿈
- PASS 2 ▶ 14, 37, 17, 40, 35 → 14, 17, 37, 40, 35
1, 2번째 14, 37를 제외한 17, 40, 35 중 가장 작은 수(17)와 37을 선택해서 바꿈
- PASS 3 ▶ 14, 17, 37, 40, 35 → 14, 17, 35, 40, 37 (정답)
1, 2, 3번째 14, 17, 37를 제외한 40, 35 중 가장 작은 수(35)와 37을 선택해서 바꿈
▶ 버블 정렬, PASS 1 (1회전)
- PASS 1 ▶ 37, 14, 17, 40, 35 → 14, 37, 17, 40, 35
1번째 37와 2번째 14를 비교해서 1번째(37) > 2번째(14)가 참이라면 바꿈
▶ 14, 37, 17, 40, 35 → 14, 17, 37, 40, 35 (정답)
2번째 37와 3번째 17를 비교해서 2번째(37) > 3번째(17)가 참이라면 바꿈
3번째 37와 4번째 40을 비교해서 3번째(37) > 4번째(40)가 거짓이므로 종료(끝)
▶ 삽입 정렬, PASS 4 (4회전)
- PASS 1 ▶ 37, 14, 17, 40, 35 → 14, 37, 17, 40, 35
2번째 14를 앞의 1번째 37과 비교해서 수가 더 작다면 바꿔 삽입함
- PASS 2 ▶ 14, 37, 17, 40, 35 → 14, 17, 37, 40, 35
3번째 17을 앞의 2번째 37, 1번째 14와 비교해서 수가 더 작다면 바꿔 삽입함
- PASS 3 ▶ 14, 17, 37, 40, 35
4번째 40을 앞의 3번째 37, 2번째 17, 1번째 14 비교해서 수가 더 작다면 바꿔 삽입함
- PASS 4 ▶ 14, 17, 37, 40, 35 → 14, 17, 35, 37, 40 (정답)
5번째 35를 앞의 4번째 40, 3번째 37, 2번째 17, 1번째 14와 비교해서 수가 더 작다면 바꿔 삽입함
화이트박스 테스트
모듈 안의 내용(작동)을 직접 볼 수 있음
내부의 논리적인 모든 경로를 테스트 해서 테스트 케이스 설계
소스 코드의 모든 문장을 한 번 이상 수행함으로써 진행됨
선택, 반복 등의 부분들을 수행함으로써 논리적 경로 점검
종류 | 설명 |
기초 경로 검사 | 대표적인 화이트박스 테스트 기법 테스트 측정 결과는 실행 경로의 기초를 정의하는 지침으로 사용 |
제어 구조 검사 | 조건 검사: 논리적 조건을 테스트하는 기법 루프 검사: 반복 구조에 맞춰 테스트하는 기법 데이터 흐름 검사: 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 테스트하는 기법 |
# 기조루흐
블랙박스 테스트
모듈 안에서 어떤 일이 일어나는지 알 수 없음
소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고도 함
소프트웨어 인터페이스에서 실시되는 테스트
종류 | 설명 |
동치 분할 검사 | 프로그램의 입력 조건에 타당한 입력 자료와 타당하지 않은 입력 자료의 개수를 균등하게 해서 테스트 케이스를 작성하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 기법 (동등 분할 기법) |
경계값 분석 | 입력 조건의 중간값보다 경계값에서 오류가 발생할 확률이 높다는 점을 이용해 입력 조건의 경계값을 테스트 케이스로 선정해 검사하는 기법 |
원인-효과 그래프 검사 | 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정해 검사하는 기법 |
비교 검사 | 여러 버전의 프로그램에 동일한 테스트 자료를 제공해 동일한 결과가 출력되는지 테스트하는 기법 |
오류 예측 검사 | 다른 블랙박스 테스트 기법으로 찾아낼 수 없는 오류를 찾아내는 일련의 보충적 검사 기법 (데이터 확인 검사) |
# 동경원비오
ISO/IEC 25000
- SW 품질 평가 통합 모델
- SQuaRE(System and Software Quality Requirements and Evaluation)라고도 한다
- ISO/IEC 9126, ISO/IEC 12119, ISO/IEC 14598의 3개 표준을 통합한 모델
- 2500n : 개요 및 품질관리
- 2501n : 품질모델
- 2502n : 품질측정
- 2503n : 품질요구
- 2504n : 품질평가
- 2505n : 확장분야
3과목 데이터베이스 구축
행 | Cardinality(기수) | 비행기 = (비) + 행 + 기수 카행 |
열 | Degree(차수) | 열차 = 열 + 차수 디열 |
DDL(Data Define Language) 데이터 정의어 |
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어 | CREATE: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의한다. ALERT: TABLE에 대한 정의를 변경하는 데 사용한다. DROP: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제한다. |
DML(Data Management Language) 데이터 조작어 |
데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어 | SELECT: 테이블에서 조건에 맞는 튜플을 검색한다 INSERT: 테이블에 새로운 튜플을 삽입한다 DELETE: 테이블에서 조건에 맞는 튜플을 삭제한다 UPDATE: 테이블에서 조건에 맞는 튜플의 내용을 변경한다 |
DCL(Data Control Language) 데이터 제어어 |
데이터의 보안, 무결성, 회복, 병행, 수행, 제어 등을 정의하는 데 사용되는 언어 데이터베이스 관리자가 데이터 관리를 목적으로 사용 |
COMMIT: 명령에 의해 수행된 결과를 실제 물리적 디스트로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료됐음을 관리자에게 알려준다 ROLLBACK: 데이터베이스 조작 작업이 비정상적으로 종료됐을 때 원래의 상태로 복구한다 GRANT: 데이터베이스 사용자에게 사용 권한을 부여한다 REVOKE: 데이터베이스 사용자의 권한을 취소한다 |
병행제어의 목적
여러 사용자들의 데이터베이스 공동 사용을 최대화
사용자의 응답 시간 최소화
데이터베이스 시스템의 활용도 최대화
데이터베이스의 일관성 유지
'T.I.L(Today I learned) > CS' 카테고리의 다른 글
220710 정보처리기사 필기 D-2 (0) | 2022.07.10 |
---|---|
220709 정보처리기사 필기 D-3 (0) | 2022.07.09 |
220708 정보처리기사 필기 D-4 (0) | 2022.07.08 |
220707 정보처리기사 필기 D-5 (0) | 2022.07.07 |
220705 정보처리기사 필기 D-7 (0) | 2022.07.05 |
댓글