[정보처리기사] 2020 정보처리기사 필기 문제풀이 (1)
정보처리기사 필기 대비 문제풀이 (소프트웨어 설계, 소프트웨어 개발)
Question #1
객체지향 기법에서 클래스들 사이의 ‘부분-전체(Part-Whole)’ 관계 또는 ‘부분(is-a-part-of)’의 관계로 설명되는 연관성을 나타내는 용어는?
지문
- 일반화
- 추상화
- 캡슐화
- 집단화
풀이
문제 풀이 접기/펼치기
일반화 (Generalization)
is-a
관계 (상속)예:
사람
→학생
(학생은 사람이다.)추상화 (Abstraction)
복잡성을 줄이기 위해 핵심 특징만 추출하는 개념
예: 인터페이스
캡슐화 (Encapsulation)
데이터와 메서드를 하나의 단위로 묶고 접근 제어를 통한 정보 은닉
집단화 (Aggregation)
부분-전체
관계를 표현하는 약한 결합의 연관성예:
자동차
(전체)와바퀴
(부분) → 자동차가 사라져도 바퀴는 독립적으로 존재 가능
Question #2
객체지향 분석 방법론 중 E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조식별, 주체 정의, 속성 및 관계 정의, 서비스 정의 등의 과정으로 구성되는 것은?
지문
- Coad와 Yourdon 방법
- Booch 방법
- Jacobson 방법
- Wiffs-Brocks 방법
풀이
문제 풀이 접기/펼치기
Coad와 Yourdon 방법
E-R 다이어그램을 확장하여 객체의 정적 구조와 동적 행위를 모델링
5단계 프로세스
- 객체 식별
- 구조 식별 (일반화 / 집단화)
- 주체(subject) 정의
- 속성 및 관계 정의
- 서비스(메서드) 정의
graph LR A[객체 식별] --> B[구조 식별] B --> C[주체 정의] C --> D[속성 및 관계 정의] D --> E[서비스 정의]
Booch 방법
미시적 / 거시적 개발 모델 강조 (UML1의 기반이 됨)
클래스 / 객체 다이어그램, 상태 다이어그램 등을 사용
Jacobson 방법
유스케이스(Use Case) 중심의 방법론
Wirfs-Brock 방법
역할(Role)과 책임(Responsibility)에 초점 (CRC 카드2 사용)
Question #3
자료 사전에서 자료의 생략을 의미하는 기호는?
지문
- { }
- **
- =
- ( )
풀이
문제 풀이 접기/펼치기
기호 | 의미 | 예시 |
---|---|---|
= | 정의 (is composed of) | 주문 = 주문번호 + 상품명 |
+ | 연결 (and) | 이름 = 성 + 이름 |
[ ] | 선택 (or) | 결제 = [현금 카드] |
{ } | 반복 (iteration) | 전화번호 = {숫자}3..8 |
( ) | 생략 가능 (optional) | 주소 = (우편번호) + 도로명 |
** | 주석 (comment) | ** 최대 10자** |
Question #4
검토회의 전에 요구사항 명세서를 미리 배포하여 사전 검토한 후 짧은 검토 회의를 통해 오류를 조기에 검출하는데 목적을 두는 요구사항 검토 방법은?
지문
- 빌드 검증
- 동료 검토
- 워크 스루
- 개발자 검토
풀이
문제 풀이 접기/펼치기
빌드 검증
소프트웨어를 컴파일하고 실행하여 오류가 있는지 없는지 확인하는 과정
빌드 검증은 소프트웨어 오류를 조기에 발견하고 수정하는데 효과적인 방법
동료 검토
개발자가 서로의 코드를 검토하여 오류를 발견하고 수정하는 과정
동료 검토는 소프트웨어 오류를 조기에 발견하고 수정하는 데 효과적인 방법
워크 스루
요구사항, 설계, 코드 등 개발 산출물을 작성자가 직접 설명하며 검토자들이 이를 따라 걸어가면서(Walking Through) 분석하고 피드백을 주는 과정에서 유래
요구사항 명세서를 미리 배포하여 사전 검토하고 짧은 검토 회의를 통해 오류를 조기에 검출하는 방법
워크 스루는 요구사항 또는 설계서에 대한 검토를 위해 소규모의 전문가 그룹이 모여서 문서를 함께 검토하고 토의하는 방식
개발자 검토
개발자가 소프트웨어의 요구사항을 검토하여 오류를 발견하고 수정하는 과정
개발자 검토는 소프트웨어 요구사항을 이해하고, 오류를 검출하는 데 효과적인 방법
Question #5
CASE가 갖고 있는 주요 기능이 아닌 것은?
지문
- 그래픽 지원
- 소프트웨어 생명주기 전 단계의 연결
- 언어 번역
- 다양한 소프트웨어 개발 모형 지원
풀이
문제 풀이 접기/펼치기
CASE 도구의 분류
Upper CASE: 요구 분석/설계 단계 지원 (ex. 모델링 도구)
Lower CASE: 구현/테스트 단계 지원 (ex. 코드 생성기)
Integrated CASE: 전체 생명주기 지원
그래픽 지원
다이어그램(DFD, ERD, UML 등) 작성을 위한 시각적 도구 제공
예: Rational Rose, Visio
소프트웨어 생명주기 전 단계의 연결
요구 분석 → 설계 → 구현 → 테스트 단계를 통합 관리
예: 요구사항 변경 시 관련 설계 문서 자동 업데이트
언어 번역
CASE의 주요 기능이 아니며, 번역 기능은 자연어 처리(NLP) 도구(예: Google 번역)의 영역
다양한 소프트웨어 개발 모형 지원
폭포수, 애자일, 스파이럴 등 모델에 맞는 템플릿 및 도구 제공
Question #6
XP(eXtreme Programming)의 5가지 가치로 거리가 먼 것은?
지문
- 용기
- 의사소통
- 정형 분석
- 피드백
풀이
문제 풀이 접기/펼치기
XP의 추가 가치
단순성 (Simplicity): 필요한 기능만 최소한으로 구현
존중 (Respect): 팀원 간 협력과 존중
용기 (Courage)
변경 사항을 두려워하지 않고 적극적으로 수용
예: 리팩토링 시 과감한 코드 수정.
의사소통 (Communication)
개발자, 고객, 팀원 간 지속적 소통 강조
예: 매일 10분 스탠드업 미팅
정형 분석 (Formal Analysis)
XP와 무관한 개념
정형 분석은 형식적 명세(Formal Specification)나 수학적 검증에 사용되며, XP의 실용적/유연한 접근 방식과 대조됨
피드백 (Feedback)
짧은 주기로 실행 가능한 소프트웨어를 고객에게 전달하여 피드백 수집
예: 1~2주 단위의 반복(Iteration) 개발
Question #7
럼바우(Rumbaugh)의 객체지향 분석 절차를 가장 바르게 나열한 것은?
지문
- 객체 모형 → 동적 모형 → 기능 모형
- 객체 모형 → 기능 모형 → 동적 모형
- 기능 모형 → 동적 모형 → 객체 모형
- 기능 모형 → 객체 모형 → 동적 모형
풀이
문제 풀이 접기/펼치기
객체 모형 → 동적 모형 → 기능 모형
객체 모형 (Object Model)
시스템의 정적 구조를 정의
클래스 다이어그램을 사용해 객체, 속성, 관계(상속, 연관 등)를 표현
예: 학생 클래스와 수강 관계 모델링
동적 모형 (Dynamic Model)
시스템의 시간에 따른 행위를 표현
상태 다이어그램(State Diagram)을 사용해 객체의 상태 변화를 추적
예: 주문 객체의 상태 변화 (접수 → 처리 → 완료)
기능 모형 (Functional Model)
시스템의 데이터 흐름과 처리 과정을 설명
DFD(Data Flow Diagram)를 활용해 입력 → 처리 → 출력을 표현
예: 결제 처리 기능의 데이터 흐름
은행 시스템 모델링 예시
객체 모형: 계좌, 고객, 거래 클래스 정의
동적 모형: 계좌의 상태 (활성 → 정지 → 해지)
기능 모형: 이체 기능의 데이터 흐름 (출금 → 송금 → 입금)
Question #8
데이터 흐름도(DFD)의 구성요소에 포함되지 않는 것은?
지문
- Process
- Data Flow
- Data Store
- Data Dictionary
풀이
문제 풀이 접기/펼치기
Process
데이터를 변환하거나 처리하는 기능을 나타냄
예: 주문 처리, 결제 검증
표기법: 원 또는 사각형 모서리가 둥근 형태
Data Flow
데이터가 이동하는 경로와 방향을 표시
예: 주문서 → 주문 처리
표기법: 화살표
Data Store
데이터가 저장되는 위치 (DB, 파일 등)
예: 고객 정보, 재고 DB
표기법: 평행선 또는 열린 직사각형
Data Dictionary
DFD의 구성 요소가 아님
데이터 사전은 DFD의 부가적 설명 도구로, 데이터 요소의 세부 정의를 제공
예: 주문서 = 주문번호 + 고객ID + 상품목록
graph LR A[고객] -->|주문서| B(주문 처리) B -->|확인서| A B -->|주문내역| C[(주문 DB)] C --> B
누락된 요소: 데이터 사전 (DFD에 직접 표시되지 않음)
Question #9
트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어하는 미들웨어는?
지문
- RPC
- ORB
- TP monitor
- HUB
풀이
문제 풀이 접기/펼치기
RPC
원격 프로시저 호출 (트랜잭션 관리 기능 없음)
ORB
CORBA 표준의 객체 통신 미들웨어 (예: 분산 객체 간 통신)
TP monitor
트랜잭션의 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability) (ACID)을 보장하는 미들웨어
분산 시스템에서 다수의 트랜잭션을 모니터링하고 제어합니다.
주요 기능
부하 분산: 다중 트랜잭션을 효율적으로 처리.
장애 복구: 시스템 장애 시 트랜잭션 롤백 또는 재시작.
예시: IBM CICS, Oracle Tuxedo.
HUB
네트워크 장비로, 데이터 감시/제어와 무관
Question #10
소프트웨어 개발 방법 중 요구사항 분석(Requirements Analysis)과 거리가 먼 것은?
지문
- 비용과 일정에 대한 제약설정
- 타당성 조사
- 요구사항 정의 문서화
- 설계 명세서 작성
풀이
문제 풀이 접기/펼치기
비용과 일정에 대한 제약설정
프로젝트의 예산, 리소스, 시간 제약을 고려한 요구사항 우선순위 결정
타당성 조사
기술적/경제적/운영적 타당성 검토 (Feasibility Study)
요구사항 정의 문서화
SRS(Software Requirements Specification) 작성
설계 명세서 작성
설계 단계(Design Phase)의 작업으로, 요구사항 분석 이후에 수행
예: 아키텍처 설계, UML 다이어그램 작성
Question #11
다음 트리의 차수(degree)와 단말 노드(terminal node)의 수는?
graph TD A --> B A --> C B --> D C --> E C --> F E --> G E --> H
지문
- 차수: 4, 단말 노드: 4
- 차수: 2, 단말 노드: 4
- 차수: 4, 단말 노드: 8
- 차수: 2, 단말 노드: 8
풀이
문제 풀이 접기/펼치기
차수: 2, 단말 노드: 4
차수 (Degree)
한 노드가 가진 최대 자식 수
C
의 자식 수 = 2 (E
,F
)E
의 자식 수 = 2 (G
,H
)다른 노드의 자식 수:
A
=2,B
=1,D
=0,F
=0,G
=0,H
=0전체 트리의 차수 = 2
단말 노드 (Terminal Node):
자식이 없는 노드 (리프 노드)
단말 노드:
D
,F
,G
,H
→ 4개
Question #12
검증 검사 기법 중 개발자의 장소에서 사용자가 개발자가 앞에서 행하는 기법이며, 일반적으로 통제된 환경에서 사용자와 개발자가 함께 확인하면서 수행되는 검사는?
지문
- 동치 분할 검사
- 형상 검사
- 알파 검사
- 베타 검사
풀이
문제 풀이 접기/펼치기
동치 분할 검사
입력 데이터를 그룹으로 나누어 대표값으로 테스트 (화이트박스 기법)
형상 검사
변경 관리 시 버전 일관성을 확인 (예: Git 태그 검증)
알파 검사
개발자 환경에서 수행되며, 사용자와 개발자가 함께 참여
통제된 환경에서 결함을 조기에 발견하는 것이 목적
예: 개발사 내부에서 실제 사용자와 함께 테스트
베타 검사
실제 사용자 환경에서 테스트 (알파 검사 이후 단계)
알파 vs 베타 검사
구분 알파 검사 베타 검사 장소 개발자 환경 사용자 환경 참여자 개발자 + 일부 사용자 실제 사용자 목적 초기 결함 발견 실제 환경 적합성 검증
Question #13
하향식 통합에 있어서 모듈 간의 통합 시험을 위해 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈을 무엇이라고 하는가?
지문
- Stub
- Driver
- Procedure
- Function
풀이
문제 풀이 접기/펼치기
Stub
임시 모듈로, 하위 모듈의 간단한 동작만 구현 (예: 고정값 반환)
하향식 통합 (Top-Down Integration)
상위 모듈 → 하위 모듈 순으로 통합하며 테스트
아직 개발되지 않은 하위 모듈을 대체하기 위해 스텁이 사용
Driver
상향식 통합에서 사용되는 테스트 모듈 (하위 모듈을 호출하는 역할)
Procedure
일반적인 프로그램 단위로, 테스트용 모듈과 무관
Function
일반적인 프로그램 단위로, 테스트용 모듈과 무관
Question #14
소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은?
지문
- Brooks의 법칙
- Boehm의 법칙
- Pareto의 법칙
- Jackson의 법칙
풀이
문제 풀이 접기/펼치기
Brooks의 법칙
“인력을 추가하면 프로젝트 지연이 악화된다” (ex. “맨먼스 미신”)
Boehm의 법칙
소프트웨어 비용 추정 모델(COCOMO) 관련
Pareto의 법칙
“80/20 법칙”으로 불리며, 소수의 원인(20%)이 대부분의 결과(80%)를 초래한다는 이론
결함 집중 모듈에 대한 테스트 강조 원리
소프트웨어 테스트에서
20% 모듈에서 80% 오류가 발견
20% 테스트 케이스로 80% 결함을 검출할 수 있음
Jackson의 법칙
데이터 구조 중심 설계 방법론
Question #15
디지털 저작권 관리(DRM)의 기술 요소가 아닌 것은?
지문
- 크랙 방지 기술
- 정책 관리 기술
- 암호화 기술
- 방화벽 기술
풀이
문제 풀이 접기/펼치기
크랙 방지 기술
콘텐츠 무단 복제/변조 방지 (예: 코드 난독화, 탬퍼 증거)
정책 관리 기술
사용 권한 정의 및 적용 (예: 재생 횟수, 기간 제한)
암호화 기술
콘텐츠 암호화 → 인증된 사용자만 복호화 가능
방화벽 기술
네트워크 보안을 위한 기술로, DRM과 직접적 연관 없음
DRM은 콘텐츠 자체의 보호에 초점을 둠
Question #16
인터페이스 구현 검증도구 중 아래에서 설명하는 것은?
서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하여 자동화하는 검증 도구
지문
- xUnit
- STAF
- FitNesse
- RubyNode
풀이
문제 풀이 접기/펼치기
xUnit
단위 테스트 프레임워크 (JUnit, NUnit 등)
분산 환경 테스트 미지원
STAF (Software Testing Automation Framework)
분산 환경에서의 테스트 자동화를 지원
서비스 호출, 컴포넌트 재사용, 플랫폼 간 테스트가 가능
대문(Proxy)을 통해 다양한 시스템과 통신하며 테스트를 수행
FitNesse
협업형 테스트 (Wiki 기반)
자동화보다는 문서화에 강점
RubyNode
재하지 않는 도구
Question #17
White Box Testing에 대한 설명으로 옳지 않은 것은?
지문
- Base Path Testing, Boundary Value Analysis가 대표적인 기법이다.
- Source Code의 모든 문장을 한 번 이상 수행함으로써 진행된다.
- 모든 내부 작동을 직접 관찰할 수 있다.
- 산출물의 각 기능별로 적절한 프로그램의 제어구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.
풀이
문제 풀이 접기/펼치기
화이트박스 테스트(White Box Testing) 핵심 개념
정의
소스 코드의 내부 구조를 기반으로 테스트를 수행
모든 문장, 분기, 조건을 검증하여 논리적 오류를 발견
대표적 기법
Base Path Testing (기본 경로 테스트): 제어 흐름 그래프를 사용해 독립 경로 테스트
Condition Coverage: 조건문의 모든 가능성 검사
Loop Coverage: 반복문의 경계값 및 중간값 테스트
Base Path Testing, Boundary Value Analysis가 대표적인 기법이다.
Boundary Value Analysis (경계값 분석): 블랙박스 테스트 기법
Source Code의 모든 문장을 한 번 이상 수행함으로써 진행된다.
문장 커버리지(Statement Coverage)를 의미
모든 내부 작동을 직접 관찰할 수 있다.
내부 로직(변수, 제어 흐름)을 직접 확인할 수 있음
산출물의 각 기능별로 적절한 프로그램의 제어구조에 따라 선택, 반복 등의 부분들을 수행함으로써 논리적 경로를 점검한다.
제어 구조(
if
,for
등)를 따라 논리적 경로를 검증
Question #18
외계인 코드(Alien Code)에 대한 설명으로 옳은 것은?
지문
- 프로그램의 로직이 복잡하여 이해하기 어려운 프로그램을 의미한다.
- 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미한다.
- 오류가 없어 디버깅 과정이 필요 없는 프로그램을 의미한다.
- 사용자가 직접 작성한 프로그램을 의미한다.
풀이
문제 풀이 접기/펼치기
프로그램의 로직이 복잡하여 이해하기 어려운 프로그램을 의미한다.
“로직 복잡성”은 스파게티 코드의 특징
아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램을 의미한다.
레거시 코드(Legacy Code)의 일종으로, 다음과 같은 특징을 가지고 있음
오래된 기술로 작성되어 현대적 환경과 호환되지 않음
문서화 부재 또는 원 개발자 소실로 인해 유지보수가 극히 어려움
예: 20년 전 COBOL로 작성된 은행 시스템
오류가 없어 디버깅 과정이 필요 없는 프로그램을 의미한다.
외계인 코드는 오류가 있을 수 있으며, 디버깅이 더 어려움
사용자가 직접 작성한 프로그램을 의미한다.
사용자 작성 코드와 무관
Question #19
해당 다이어그램을 통한 4가지 기본 순회 방식 설명
graph TD C --> B C --> E B --> A E --> D E --> F F --> G
풀이
문제 풀이 접기/펼치기
전위 순회 (Preorder Traversal)
순서:
루트 → 왼쪽 서브트리 → 오른쪽 서브트리
용도: 트리 구조 복제, 전위 표기법(폴란드 표기법) 생성
결과:
C B A E D F G
중위 순회 (Inorder Traversal)
순서:
왼쪽 서브트리 → 루트 → 오른쪽 서브트리
용도: 이진 탐색 트리(BST)에서 오름차순 정렬
결과:
A B C D E F G
후위 순회 (Postorder Traversal)
순서:
왼쪽 서브트리 → 오른쪽 서브트리 → 루트
용도: 트리 삭제 (자식 노드 먼저 처리), 후위 표기법(역폴란드 표기법)
결과:
A B D G F E C
레벨 순회 (Level Order Traversal)
순서:
루트 → 레벨 1 노드 → 레벨 2 노드 → ...
용도: 트리의 계층적 구조 분석 (BFS 방식)
결과:
C B E A D F G
Question #20
알고리즘 시간 복잡도 $O(1)$이 의미하는 것은?
지문
- 컴퓨터 처리가 불가
- 알고리즘 입력 데이터 수가 한 개
- 알고리즘 수행시간이 입력 데이터 수와 관계없이 일정
- 알고리즘 길이가 입력 데이터보다 작음
풀이
문제 풀이 접기/펼치기
컴퓨터 처리가 불가
$O(1)$은 처리 가능한 가장 빠른 복잡도
알고리즘 입력 데이터 수가 한 개
입력 데이터 수와 무관 (예: 데이터 100개여도 $O(1)$)
알고리즘 수행시간이 입력 데이터 수와 관계없이 일정
상수 시간(Constant Time)을 의미
입력 데이터의 크기(n)와 무관하게 항상 일정한 시간이 소요
예시
배열에서 인덱스로 원소 접근 (
arr[3]
)해시 테이블에서 키 조회 (
hash_map["key"]
)
알고리즘 길이가 입력 데이터보다 작음
알고리즘 길이와는 관련이 없음
Question #21
정렬된 $N$개의 데이터를 처리하는데 $O(Nlog_2N)$의 시간이 소요되는 정렬 알고리즘은?
지문
- 선택 정렬
- 삽입 정렬
- 버블 정렬
- 합병 정렬
풀이
문제 풀이 접기/펼치기
알고리즘 | 평균/최악 시간 복잡도 | 특징 |
---|---|---|
1. 선택 정렬 | $O(N^2)$ | 최솟값을 찾아 교환 |
2. 삽입 정렬 | $O(N^2)$ (최선: $O(N)$) | 이미 정렬된 데이터에 효율적 |
3. 버블 정렬 | $O(N^2)$ | 인접 요소 비교/교환 |
4. 합병 정렬 | $O(Nlog_2N)$ | 분할 정복(Divide and Conquer) 기반, 안정적 |
Question #22
ISO/IEC 9126의 소프트웨어 품질 특성 중 기능성(Functionality)의 하위 특성으로 옳지 않은 것은?
지문
- 학습성
- 적합성
- 정확성
- 보안성
풀이
문제 풀이 접기/펼치기
학습성
사용성(Usability)의 하위 특성으로, 기능성과 무관
예: 소프트웨어 사용법을 쉽게 익힐 수 있는지
적합성
기능이 목적에 부합하는지 (예: 계산기 앱에서 사칙연산 지원)
정확성
결과의 정밀도 (예: 은행 시스템의 이자 계산 오차 없음)
보안성
무단 접근 방지 (예: 로그인 인증, 데이터 암호화)
기타 기능성 하위 특정
상호 운용성 (Interoperability): 다른 시스템과 연동 능력
준수성 (Compliance): 표준/규정 준수 (예: GDPR)
Question #23
EAI(Enterprise Application Integration)의 구축 유형으로 옳지 않은 것은?
지문
- Point-to-Point
- Hub & Spoke
- Message Bus
- Tree
풀이
문제 풀이 접기/펼치기
EAI는 기업 내 애플리케이션 통합을 위한 아키텍처
Point-to-Point (P2P)
애플리케이션 간 1:1 직접 연결 방식
장점: 간단한 구조
단점: 연결 수 증가 시 복잡도 기하급수적 증가
Hub & Spoke
중앙 허브(Hub)를 통해 모든 애플리케이션이 연결
장점: 중앙 집중식 관리
단점: 허브 장애 시 전체 시스템 영향
Message Bus
공통 버스를 통해 애플리케이션이 비동기 통신
장점: 확장성 높음, 느슨한 결합(Loose Coupling)
예: ESB(Enterprise Service Bus)
Tree
EAI 표준 구축 유형에 포함되지 않음
트리 구조는 계층적 데이터 처리(예: 디렉토리 구조)에 사용되나, EAI 통합 패턴으로는 부적합
EAI vs ESB
EAI: 레거시 시스템 통합에 중점
ESB: Message Bus 기반의 현대적 통합 (EAI의 진화형)
Question #24
소스코드 품질 분석 도구 중 정적 분석 도구가 아닌 것은?
지문
- pmd
- cppcheck
- valMeter
- checkstyle
풀이
문제 풀이 접기/펼치기
정적 분석 도구 (Static Analysis Tools)
특징: 소스코드를 실행하지 않고 코드 구조, 코딩 규칙, 잠재적 결함을 분석
대표 도구
pmd: Java, JavaScript 등에서 복잡도, 중복 코드, 코딩 규칙 검사
cppcheck: C/C++ 코드의 메모리 누수, 오버플로우 검출
checkstyle: Java 코드의 코딩 컨벤션 준수 여부 검사
동적 분석 도구 (Dynamic Analysis Tools)
특징: 프로그램 실행 중 메모리, 성능, 보안 취약점 분석.
대표 도구
⚠️ valMeter: 존재하지 않는 도구 (오타 가능성 있음)
Valgrind: 동적 분석 도구로, 메모리 누수 및 스레드 오류 검사
Valgrind: 동적 분석 도구로, 메모리 누수 및 스레드 오류 검사
Question #25
반정규화(Denormalization) 유형 중 중복 테이블을 추가하는 방법에 해당하지 않는 것은?
지문
- 빌드 테이블의 추가
- 집계 테이블의 추가
- 진행 테이블의 추가
- 특정 부분만을 포함하는 테이블 추가
풀이
문제 풀이 접기/펼치기
정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가 하는 경우가 발생하여 이를 극복하기 위해 성능에 중점을 두어 정규화하는 방법
빌드 테이블의 추가
빌드 테이블의 추가는 중복 테이블의 추가하는 방법에 해당하지 않으며, 빌드 테이블은 주로 소프트웨어 빌드 자동화 도구에서 사용
집계 테이블의 추가
집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)를 설정하여 사용하는 것으로, 트리거의 오버헤드에 유의
진행 테이블의 추가
이력 관리 등의 목적으로 추가하는 테이블로, 적절한 데이터 양의 유지와 활용도를 높이기 위해 기본키를 적절히 설정
특정 부분만을 포함하는 테이블 추가
데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블을 생성