정보처리기사 2020년 3회

이주원·2025년 7월 2일

컴퓨터언어

목록 보기
49/50

리팩토링(refactoring)

구분설명기대 효과
정의기존 코드의 외부 동작은 그대로 유지하면서
내부 구조만 체계적으로 개선
코드 기능 유지 + 내부 가독성↑ (en.wikipedia.org, lvivity.com)
목적① 유지보수성 강화복잡함 감소, 코드 읽기·이해 쉬워짐버그 수정·기능 추가·테스트 효율↑
목적② 기술 부채 완화중복 제거, 네이밍·구조 정리향후 변경·확장 시 재작업·비용 감소
목적③ 확장성·재사용성 개선작은 모듈 추출, 책임 분리, 추상화 도입기능 추가보다 구조 변경 부담↓
목적④ 코드 가독성 향상메소드·변수 이름 의미있게 변경, 중복 제거신규/이전 개발자 온보딩 쉬워짐
목적⑤ 성능 개선 (부수적)불필요한 복잡성 제거 시 가벼워짐런타임 성능 약간 개선 가능
기법 예시메소드/클래스 추출, 이름 변경, 중복 코드 통합, 조건문 간소화 등구조 개선 위한 대표적 마이크로 리팩토링
주의사항외형 변화에 집중하되 기능은 그대로 유지
작업 전 단위 테스트 필수
리팩토링 시 기능 변경·버그 유입 방지
언제?기능 추가 전, 코드 리뷰 시, 기술 부채 발생 시 등적용 시기 잘 설정하면 장기 효율 극대화

✅ ICMP란?

항목설명
정의IP 패킷의 오류 및 진단 처리를 위한 제어 메시지 프로토콜
역할네트워크의 상태를 점검하고 오류를 알리는 제어 메시지 전달
계층OSI 7계층 중 네트워크 계층
특징- 데이터 전송이 아닌 오류 통지/상태 보고 전용
- 연결 없이 전송하는 비연결형 프로토콜
주요 메시지 유형- Echo Request/Reply (→ ping 명령)
- Destination Unreachable
- Time Exceeded
IP와의 관계IP와 함께 작동, 오류를 IP로 알리는 구조
예시 사용- ping 명령어 (목적지 도달 확인)
- traceroute 명령어 (경로 추적)

스키마(Schema)

구분설명
정의데이터베이스의 논리적 구조와 제약 조건을 정의한 명세
목적데이터의 구성, 관계, 제약 조건 등을 설계하고 문서화
포함 요소테이블, 속성(컬럼), 도메인, 관계, 키, 인덱스, 제약조건 등
종류- 외부 스키마 (External): 사용자 관점의 뷰
- 개념 스키마 (Conceptual): 전체 DB의 논리적 구조
- 내부 스키마 (Internal): 실제 물리적 저장 구조
변경 주기구조 중심이므로 자주 변경되지 않음
관련 용어- 인스턴스: 실제 데이터
- 스키마: 데이터 구조 (틀)
예시CREATE TABLE 문 등을 통해 정의
CREATE TABLE 회원 (ID INT PRIMARY KEY, 이름 VARCHAR(20));

✅ 프로토콜 (Protocol) 정리 표

구분설명
정의컴퓨터 간 데이터 통신을 위한 약속(규칙)
즉, 송수신 간에 메시지를 어떻게 보낼지 정한 규칙
주요 역할- 데이터 전송 순서 및 형식 지정
- 오류 제어, 흐름 제어
- 데이터 재전송, 수신 확인
구성 요소- 구문(Syntax): 데이터 형식
- 의미(Semantics): 각 필드의 의미와 역할
- 시간(Synchronization): 전송 속도, 순서 등
예시 프로토콜- TCP/IP (인터넷 통신)
- HTTP/HTTPS (웹)
- FTP (파일 전송)
- SMTP/IMAP (메일) 등
OSI 7계층별 프로토콜- 응용계층: HTTP, FTP, DNS
- 전송계층: TCP, UDP
- 네트워크계층: IP, ICMP
- 데이터링크계층: Ethernet 등
종류- 비연결형: UDP 등
- 연결형: TCP 등
비유두 사람이 전화통화할 때 말하는 방식·규칙에 해당

✅ 관계대수의 나누기 연산 (÷) 정리

항목설명
기호A ÷ B
정의릴레이션 A에서 릴레이션 B에 있는 모든 값에 대해 대응되는 값들만 선택
전제 조건- A의 속성 ⊇ B의 속성
- 즉, A가 B의 속성을 모두 포함하고 있어야 함
결과A에서 B의 모든 튜플과 짝지을 수 있는 속성만 추출됨
예시예: "모든 과목을 수강한 학생"을 찾을 때
개념적으로- B는 조건 역할
- A는 전체 데이터
- B의 모든 조건을 만족시키는 A의 튜플만 결과에 포함

분기 검증 기준 (Branch Coverage)

항목설명
정의소스코드의 모든 **조건문(if, switch 등)의 각 분기(참/거짓)**이 최소 1회 이상 수행되도록 테스트 케이스를 설계하는 기준
목적프로그램의 제어 흐름 상 모든 분기를 테스트하여 누락된 로직 없이 테스트할 수 있도록 함
포함 범위조건문의 True, False 분기 모두 포함
장점- 단순 조건 커버리지보다 더 정밀한 테스트 가능
- 주요 로직 분기 경로 오류 발견 가능
한계- 조건문 내부의 개별 조건식 조합까지는 검사하지 않음
(복합 조건 검사에는 조건 커버리지 필요)
예시 코드if (A > 0) { ... } else { ... }
→ A > 0인 경우, A ≤ 0인 경우 모두 테스트 필요
관계 기준- 문장 커버리지보다 강력함
- 조건 커버리지, 경로 커버리지보다 약함
보장 범위모든 **제어 흐름 그래프의 간선(edge)**이 한 번 이상 수행되었는지 검사

SQL 문

구문설명
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수과목별로 최소 점수와 최대 점수를 조회함
AS 최소점수, AS 최대점수컬럼명 별칭 설정
FROM 성적데이터가 저장된 테이블: 성적 테이블로부터 조회
GROUP BY 과목이름동일한 과목이름을 가진 행들끼리 그룹화
HAVING AVG(점수) >= 90그룹화된 결과 중에서 평균 점수가 90 이상인 과목만 필터링
HAVINGGROUP BY 이후 조건 필터링 시 사용

형상 통제(Configuration Control)

항목설명
정의식별된 **형상 항목(코드, 문서 등)**에 대한 변경 요청을 검토·승인·기록·반영하는 활동
목적변경 사항이 무질서하게 반영되지 않도록 관리하고, **기준선(Baseline)**의 일관성과 무결성 유지
주요 활동- 변경 요청 수신
- 영향도 분석
- 변경 승인 여부 결정
- 변경 내용 문서화 및 반영
담당 조직형상 통제 위원회 (CCB, Configuration Control Board)
결과물- 변경 요청서 (CR, Change Request)
- 변경 통보서
- 형상 변경 이력 문서
형상 관리 단계 중 위치1. 형상 식별 → 2. 형상 통제 → 3. 형상 상태 보고 → 4. 형상 감사
중요성- 프로젝트 진행 중 발생하는 수많은 변경 요구사항공식적으로 통제
- 혼선 방지책임 추적성 확보

헝가리안 표기법(Hungarian Notation)

항목설명
정의변수명 앞에 **자료형이나 목적을 나타내는 접두어(prefix)**를 붙여, 변수의 속성이나 의미를 명시하는 표기법
목적- 변수의 자료형이나 용도를 이름만 보고 파악 가능
- 코드 가독성 및 유지보수성 향상
기본 구조접두어 + 변수이름 (예: strName, iCount, bFlag)
예시 접두어- i: 정수형(int)
- f: 실수형(float)
- b: 논리형(bool)
- str: 문자열(String)
- arr: 배열(array)
- p: 포인터(pointer)
사용 예시- iScore → 정수형 점수
- bActive → 활성화 여부를 나타내는 bool형
- strUserName → 문자열 사용자 이름
장점- 코드만 보고도 변수 의미와 자료형 파악 가능
- 실수 방지 및 디버깅 효율 ↑
단점- 형 변화 시 변수명도 바꿔야 함 (유지보수 부담)
- IDE 지원이 발전하면서 사용 빈도 감소
현재 추세현대 언어(Java, Python 등)에서는 권장되지 않음
→ 대신 의미 중심 네이밍을 선호 (userAge, isLoggedIn 등)

✅ OSPF(Open Shortest Path First)

항목설명
정의RIP의 단점을 보완한 링크 상태 기반IGP(내부 라우팅 프로토콜)
동작 방식- 라우팅 정보에 거리, 링크 상태, 인접 노드 정보 반영
- 최단 경로를 실시간 계산하여 라우팅
최단 경로 탐색 알고리즘다익스트라 알고리즘(Dijkstra) 사용
라우팅 정보 전파변경 발생 시, 네트워크 내 모든 라우터에 변경 내용 전파
특징- 링크 상태 라우팅
- 자율 시스템(AS) 내에서 동작
- RIP보다 빠르고 효율적
사용 범위대규모 네트워크에 적합
프로토콜 유형IGP (Interior Gateway Protocol)
관리 단위동일 자율 시스템(AS) 내부
RFCRFC 2328 (OSPFv2), RFC 5340 (OSPFv3 – IPv6 지원)

✅ EAI 통합 방식 정리 표

방식명칭설명장점단점
Point to Point (1:1 연결)가장 기본적인 통합 방식. 애플리케이션을 직접 연결 (1:1)간단한 구조, 소규모에 적합애플리케이션 수 증가 시 연결 복잡도 ↑
변경 및 재사용 어려움
Hub & Spoke중앙 허브(Hub)를 통해 데이터 전송. Spoke는 개별 애플리케이션구조 단순, 유지보수 용이허브 장애 시 전체 시스템 영향 큼
Message Bus미들웨어를 통해 애플리케이션 간 메시지 전달. 버스 구조 기반확장성, 대용량 처리 가능구현 및 관리 복잡도 ↑
Hybrid내부는 Hub & Spoke, 외부는 Message Bus 방식 혼합유연한 구조, 데이터 병목 최소화설계 및 구현 복잡

✅ 직관성(直觀性) 설계 원칙 정리

항목설명
정의사용자가 별도의 설명 없이도 쉽게 이해하고 사용할 수 있어야 하는 설계 원칙
목표사용자가 예측 가능한 방식으로 시스템을 조작하도록 유도
핵심 특징- 직접 경험이나 상식으로 이해 가능
- 학습 곡선이 짧음
- 사용 설명서 없이도 사용 가능
대표 예시- 휴대폰의 터치 인터페이스
- 아이콘 디자인 (휴지통 = 삭제)
- 슬라이더 = 볼륨 조절
적용 분야UI/UX 디자인, 소프트웨어 인터페이스, 웹페이지, 앱 메뉴 구조 등
관련 원칙- 가시성(Visibility)
- 피드백 제공(Feedback)
- 일관성(Consistency)
장점- 사용자의 시행착오 감소
- 학습 부담 최소화
- 사용자 만족도 및 신뢰도 향상

✅ 생성자(Constructor) 정리 표

항목설명
정의객체가 생성될 때 자동으로 호출되어 멤버 변수 초기화 등을 수행하는 특수한 메서드
역할- 객체 변수 생성 시 초기값 설정
- 객체 생성과 동시에 자동 실행
이름 규칙클래스 이름과 동일한 이름을 사용 (언어에 따라 다름)
리턴 타입리턴 타입 없음 (void도 사용하지 않음)
종류- 기본 생성자: 매개변수 없음
- 매개변수 생성자: 매개변수로 초기값 전달
- 복사 생성자 (C++ 등)
- 생성자 오버로딩 가능 (Java, C++ 등)
예시 (Java)java<br>public class Student {<br> String name;<br> int age;<br><br> // 생성자<br> Student(String n, int a) {<br> name = n;<br> age = a;<br> }<br>}<br>
특징- 생성 시 1회만 호출
- 명시하지 않으면 기본 생성자 자동 생성(Java 기준)
- 클래스 내부에 위치
소멸자와 차이점생성자는 객체 생성 시 호출, 소멸자는 객체 소멸 시 호출됨 (C++ 등에서 사용)

SQL 문장

항목내용
ALTER기존 테이블을 수정할 때 사용하는 SQL 명령
TABLE 학생학생이라는 테이블을 대상으로 작업
ADD테이블에 새로운 열(컬럼)을 추가
주소 VARCHAR(20)추가할 컬럼의 이름은 주소, 자료형은 VARCHAR(20) (최대 20자 문자열)
profile
뭐가될지 모름

0개의 댓글