정보처리기사 실기 필수 암기 내용 정리
📌 형상관리
식통감기
소프트웨어 개발 과정에서 산출물의 변경 사항을 체계적으로 관리하는 절차
- 형상식별: 관리할 항목 정의
- 형상통제: 변경 요청 관리 및 승인
- 형상감사: 변경 이력 및 산출물 상태 점검
- 형상기록: 형상 항목과 변경 사항 문서화
📌 정규화 단계
도부이결다조
데이터 중복을 줄이고 이상 현상을 방지하기 위한 관계형 데이터베이스 설계 기법
- 도메인 분해: 컬럼 값이 유효한 도메인에 속하는지
- 부분 함수 종속 제거 (2NF): 기본키의 일부에만 종속된 속성 제거
- 이행 함수 종속 제거 (3NF): 비주요 속성이 다른 비주요 속성에 종속된 것 제거
- 결정자가 후보키가 아닌 것 제거 (BCNF)
- 다치 종속 제거 (4NF): 하나의 속성이 여러 값 가질 때 다른 속성들과 독립적일 경우 분리
- 조인 종속 제거 (5NF): 조인으로만 복원 가능한 관계 제거
📌 OSI 7계층
응표세전네데물
컴퓨터 네트워크 통신의 계층적 모델
- 응용 계층: 사용자 인터페이스 제공
- 표현 계층: 데이터 형식 변환 및 암호화
- 세션 계층: 연결 설정, 유지, 종료
- 전송 계층: 신뢰성 있는 데이터 전송 (TCP/UDP)
- 네트워크 계층: 경로 설정 및 IP 주소
- 데이터링크 계층: 물리 주소(MAC) 기반 데이터 전송
- 물리 계층: 전기적/물리적 신호 전달
계층 번호 | 이름 | 키워드 | 역할 요약 | 대표 프로토콜 |
---|---|---|---|---|
7 | 응용층 | 사용자 인터페이스 | 사용자가 네트워크에 접근 (웹, 메일 등) | HTTP, HTTPS, FTP, SMTP, IMAP, DNS, SNMP, SSH, DHCP |
6 | 표현층 | 변환, 암호화 | 데이터 형식 변환, 암호화, 압축 등 | TLS, SSL, JPEG, MPEG, ASCII, EBCDIC |
5 | 세션층 | 연결 관리 | 세션 열고 닫고, 대화 유지 | NetBIOS, RPC, PPTP |
4 | 전송층 | 신뢰성, 순서 | 데이터 전달 보장 (TCP/UDP) | TCP, UDP, SCTP |
3 | 네트워크층 | 경로, 주소 | IP 주소로 목적지까지 경로 설정 | IP, ICMP, IGMP, IPsec, OSPF, BGP |
2 | 데이터링크층 | 프레임, MAC | MAC 주소로 이웃 장비와 통신 | Ethernet, PPP, Frame Relay, ARP |
1 | 물리층 | 전기 신호 | 전기/광 신호로 비트 전송 | RS-232, DSL, USB, IEEE 802.11, 광케이블 |
📌 XP 가치
의사피존용단
익스트림 프로그래밍에서 중시하는 개발자 간 핵심 가치
- 의사소통: 적극적인 커뮤니케이션
- 피드백: 즉각적이고 자주 피드백
- 존중: 팀원 간의 존중
- 용기: 변화를 두려워하지 않음
- 단순성: 단순한 설계 지향
📌 결합도 (Coupling)
내공외제스자
각 개념 내용 좀 봐야함 몇번 틀림
모듈 간 의존성 정도 (낮을수록 좋음)
- 내용 결합 (Content Coupling): 내부 구조를 직접 참조 (최악)
- 공통 결합 (Common Coupling): 전역변수 공유
- 외부 결합 (External Coupling): 외부 인터페이스 공유
- 제어 결합 (Control Coupling): 제어 정보를 인자로 전달
- 스탬프 결합 (Stamp Coupling): 구조체 일부만 사용
- 자료 결합 (Data Coupling): 필요한 데이터만 인자로 전달 (최선)
📌 응집도 (Cohesion)
우논시절통순기
모듈 내부 구성요소 간 관련성 (높을수록 좋음)
각 개념 내용 좀 봐야함 몇번 틀림
- 우연적 응집 (Coincidental Cohesion): 관련 없는 작업 묶음 (최악)
- 논리적 응집 (Logical Cohesion): 논리적으로 유사한 기능 묶음
- 시간적 응집 (Temporal Cohesion): 특정 시간에 실행될 작업 묶음
- 절차적 응집 (Procedural Cohesion): 순서대로 실행될 기능 묶음
- 통신적 응집 (Communicational Cohesion): 동일한 데이터 사용
- 순차적 응집 (Sequential Cohesion): 한 작업의 결과가 다음 입력
- 기능적 응집 (Functional Cohesion): 하나의 기능에 집중 (최선)
📌 요구사항 개발 프로세스
도분명확
소프트웨어 요구사항을 정의하고 정제하는 절차
- 도출: 이해관계자와 요구사항 수집
- 분석: 모순·중복 제거
- 명세: 문서화 및 표현
- 확인: 타당성 검토
📌 객체지향 분석 기법
럼바우객동기
럼바우 방법론은 객체지향 시스템 분석의 대표적 방법
- 객체 모델링: 클래스와 속성, 관계 표현
- 동적 모델링: 상태 변화 표현
- 기능 모델링: 데이터 흐름 및 기능 표현
아키텍처 4+1 관점
논구프배유
각 개념 내용 좀 봐야함 몇번 틀림
시스템을 다각도에서 설명하기 위한 방법
- 논리적: 클래스, 객체
- 구현: 소스코드 구조
- 프로세스: 동시성, 스레드
- 배치: 실행환경
- 유스케이스: 사용자 요구사항
📌 정적 다이어그램
클객컴배복패
시스템 구조를 보여주는 UML 다이어그램
- 클래스 다이어그램
- 클래스의 구조와 관계를 표현
classDiagram class User { -id: String -name: String +login() +logout() } class Account { -balance: int +deposit(amount) +withdraw(amount) } User "1" -- "1..*" Account
- 클래스의 구조와 관계를 표현
- 객체 다이어그램
- 클래스의 인스턴스를 표현
- 예시: User 클래스의 인스턴스 user1(id=”user123”, name=”홍길동”)과 Account 클래스의 인스턴스 account1(balance=10000) 간의 관계
- 컴포넌트 다이어그램
- 시스템의 컴포넌트 구조를 표현
- 예시: Web UI → Business Logic → Database 컴포넌트 간의 의존 관계
- 배치 다이어그램
- 물리적 아키텍처를 표현
- 예시: Web Server(Web App)와 Database Server(Database) 간의 TCP/IP 연결
- 복합체 구조 다이어그램
- 클래스 내부 구조를 표현
classDiagram class Computer { +CPU cpu +Memory memory +Storage storage } class CPU class Memory class Storage Computer *-- CPU Computer *-- Memory Computer *-- Storage
- 클래스 내부 구조를 표현
- 패키지 다이어그램
- 패키지 간의 관계를 표현
- 예시: UI 패키지(UserController, UserView) → Domain 패키지(UserService, UserRepository) → Infrastructure 패키지(Database, Cache) 간의 의존 관계
📌 동적 다이어그램
유시커상활상타
시스템의 동작 흐름 표현
- 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍
📌 Cron 구성
분시일월요일 명령어
- 일정한 주기로 명령어 실행하기 위한 스케줄러 표현
- 각 필드는 공백으로 구분되며, 왼쪽부터 순서대로:
- 분 (0-59)
- 시 (0-23)
- 일 (1-31)
- 월 (1-12)
- 요일 (0-6, 0=일요일)
- 실행할 명령어
# 매분 실행
* * * * * /script/every-minute.sh
# 매시 0분에 실행
0 * * * * /script/hourly.sh
# 매일 오전 3시에 실행
0 3 * * * /script/daily-backup.sh
# 매주 일요일 오전 2시에 실행
0 2 * * 0 /script/weekly-cleanup.sh
# 매월 1일 오전 4시에 실행
0 4 1 * * /script/monthly-report.sh
# 매년 1월 1일 자정에 실행
0 0 1 1 * /script/happy-new-year.sh
# 평일(월-금) 오전 9시에 실행
0 9 * * 1-5 /script/workday-start.sh
# 10분마다 실행
*/10 * * * * /script/every-10min.sh
# 업무시간(9-17시) 동안 매시간 실행
0 9-17 * * * /script/business-hours.sh
📌 EAI 유형
기업 애플리케이션 통합 방식
- Point to Point: 1:1 직접 연결
- Hub & Spoke: 중앙 허브 중계
- Message Bus: 메시지 버스 활용
- Hybrid: 혼합 구조
📌 SOLID 원칙
객체지향 설계의 5대 원칙
- Single Responsibility Principle: 하나의 책임만
- Open/Closed Principle: 확장엔 열려 있고 수정엔 닫힘
- Liskov Substitution Principle: 자식 클래스는 부모 대체 가능
- Interface Segregation Principle: 클라이언트는 자신이 사용하지 않는 메서드에 의존 X
- Dependency Inversion Principle: 고수준 모듈은 저수준 모듈에 의존 X
📌 디자인 패턴
생성 패턴 (Creational Patterns)
생구행 - 생빌프로팩앱싱
객체 생성을 추상화하는 패턴
- Builder: 복잡한 객체의 생성 과정을 단계별로 분리
- Prototype: 객체를 복제하여 새로운 객체 생성
- Factory Method: 객체 생성을 서브클래스에 위임
- Abstract Factory: 관련 객체들을 생성하는 인터페이스 제공
- Singleton: 클래스의 인스턴스를 하나만 생성
구조 패턴 (Structural Patterns)
구어데프브플컴
클래스나 객체를 조합하여 더 큰 구조를 만드는 패턴
- Adapter: 호환되지 않는 인터페이스를 연결
- Decorator: 객체에 동적으로 기능 추가
- Facade: 복잡한 서브시스템에 대한 간단한 인터페이스 제공
- Bridge: 구현부와 추상부를 분리하여 독립적으로 확장
- Flyweight: 공유를 통해 많은 객체를 효율적으로 지원
- Composite: 객체들을 트리 구조로 구성하여 부분-전체 계층 표현
- Proxy: 다른 객체에 대한 접근을 제어
행위 패턴 (Behavioral Patterns)
행상템메옵스전반중책방
객체 간의 상호작용과 책임 분배를 다루는 패턴
- Strategy: 알고리즘을 캡슐화하여 교체 가능하게 만듦
- Template Method: 알고리즘의 구조를 정의하고 일부 단계를 서브클래스에 위임
- Mediator: 객체 간의 복잡한 상호작용을 캡슐화
- Memento: 객체의 상태를 저장하고 복원
- Observer: 객체의 상태 변화를 다른 객체에 알림
- State: 객체의 내부 상태에 따라 행동을 변경
- Visitor: 객체 구조에 대한 연산을 분리
- Command: 요청을 객체로 캡슐화
- Iterator: 컬렉션의 요소에 접근하는 방법을 제공
- Chain of Responsibility: 요청을 처리할 수 있는 객체들을 연결
- Interpreter: 문법을 정의하고 해석
📌 테스트 오라클
참샘휴일
테스트 결과의 참·거짓을 판단하는 기준
- 참오라클: 모든 입력에 대해 정답을 알고 있음
- 샘플링오라클: 일부 입력만 정답
- 휴리스틱오라클: 경험 기반
- 일관성검사오라클: 시스템 자체 결과 비교
📌 테스트 단계
단통시인
개발 주기에 따라 진행되는 테스트 단계
- 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
📌 상향식/하향식 통합 테스트
상드하스
- 상향식: 하위 → 상위 (드라이버 필요)
- 하향식: 상위 → 하위 (스텁 필요)
📌 테스트 기준
다중조건 선택검증 조건검증 결정검증 결정/조건 구문
- 다중조건 검증 (Multiple Condition Coverage): 모든 조건 조합 검증
- 선택검증 (Selection Coverage): 조건문의 각 분기 검증
- 조건검증 (Condition Coverage): 각 조건의 참/거짓 검증
- 결정검증 (Decision Coverage): 전체 조건문의 참/거짓 검증
- 결정/조건 검증 (Decision/Condition Coverage): 결정과 조건 모두 검증
- 구문 검증 (Statement Coverage): 모든 실행문 검증
📌 소스코드 최적화
가단의중추
- 가독성 향상
- 단순 구조
- 의존 최소화
- 중복 제거
- 추상화로 재사용성
ISO/IEC 9126
소프트웨어 품질 특성
기신사효유이
- 기능성
- 신뢰성
- 사용성
- 효율성
- 유지보수성
- 이식성
ISO/IEC 14598
소프트웨어 품질 평가 기준
반재공객
- 반복성
- 재현성
- 공정성
- 객관성
DAC vs MAC 비교
항목 | DAC | MAC |
---|---|---|
권한 결정 주체 | 리소스 소유자 | 시스템 정책 |
유연성 | 높음 | 낮음 |
보안성 | 낮음 | 높음 |
대표 기술 | chmod , chown |
SELinux, AppArmor |
실사용 예시 | 일반 리눅스 시스템 | 정부, 군 시스템 |
📌 UML 관계
연집합합의일실
UML에서 클래스 간의 관계를 표현하는 방법들
- 연관 관계 (Association)
- 클래스 간의 일반적인 연결
- 양방향 또는 단방향 가능
classDiagram class Student { -name: String } class Course { -title: String } Student "1" -- "0..*" Course : 수강
- 집합 관계 (Aggregation)
- 전체-부분 관계 (약한 포함)
- 부분이 전체 없이도 존재 가능
classDiagram class Department { -name: String } class Professor { -name: String } Department "1" o-- "0..*" Professor : 소속
- 합성 관계 (Composition)
- 강한 포함 관계
- 부분이 전체 없이는 존재 불가
classDiagram class Car { -model: String } class Engine { -type: String } Car "1" *-- "1" Engine : 포함
- 의존 관계 (Dependency)
- 일시적인 관계
- 한 클래스가 다른 클래스를 파라미터로 사용
classDiagram class Order { +calculateTotal() } class Calculator { +calculate() } Order ..> Calculator : 사용
- 일반화 관계 (Generalization)
- 상속 관계
- 부모-자식 클래스 관계
classDiagram class Animal { +eat() } class Dog { +bark() } Animal <|-- Dog
- 실체화 관계 (Realization)
- 인터페이스 구현
- 클래스가 인터페이스를 구현
classDiagram class Flyable { <<interface>> +fly() } class Bird { +fly() } Flyable <|.. Bird
📌 UML 관계 표기법 외우는 팁
- 실선 vs 점선
- 실선: 영구적/강한 관계 (항상 존재하는 관계)
- 점선: 일시적/약한 관계 (임시로 사용하는 관계)
- 화살표 유무
- 화살표 없음: 양방향 관계
- 화살표 있음: 단방향 관계
- 채워진 vs 빈 마름모
- 채워진 마름모 (◆): 합성 관계 (Composition) - “죽음의 관계” (전체가 없어지면 부분도 없어짐)
- 빈 마름모 (◇): 집합 관계 (Aggregation) - “생존의 관계” (전체가 없어져도 부분은 살아남음)
- 쉬운 연상법
- 합성 (◆): “죽음의 관계” - 마름모가 채워져 있어서 “죽음”을 상징
- 집합 (◇): “생존의 관계” - 마름모가 비어있어서 “생존”을 상징
- 의존 (..>): 점선 + 화살표 - “임시로 사용”하는 느낌
-
일반화 (< –): 실선 + 삼각형 - “상속”의 강한 관계 -
실체화 (< ..): 점선 + 삼각형 - “인터페이스 구현”의 약한 관계 - “실선은 영구, 점선은 임시”
- “채워진 마름모는 죽음, 빈 마름모는 생존”
- “화살표는 방향, 삼각형은 상속”
Leave a comment