본문 바로가기
정보처리기사/실기

자주 나오는/틀리는 항목

by 애기 개발자 2024. 7. 26.
반응형

UML - 관계 (Relationships)

연관 (Association)

  • 2개 이상의 사물이 서로 관련

집합 (Aggregation)

  • 하나의사물이 다른 사물에 포함
  • 전체와 부분이 독립적

포함(Composition)

  • 포함하는 사물의 변화가 포함되는 사물에게 영향을 미침
  • 전체와 부분이 독립적이지 않음

일반화(Generalization)

  • 일반적이거나 구체적인 관계

의존(Dependency)

  • 서로 영향을 주는 짧은 시간동안 연관을 유지하는 관계

실제화(Realization)

  • 사물이 할 수 있거나 해야하는 기능, 서로를 그룹화

 

UML 다이어그램

구조적 다이어그램 (정적)

클객컴배복패

  • 클래스 다이어그램 (Class)
    • 클래스, 속성, 관계 표현
  • 객체 다이어그램 (Object)
    • 클래스에 속한 사물(객체)들, 인스턴스를 객체와 객체 사이의 관계로 표현
    • 럼바우 객체지향 분석기법에서 객체 모델링에 활용
  • 컴포넌트 다이어그램 (Component)
    • 컴포넌트 간의 관계 및 인터페이스를 표현
  • 배치 다이어그램 (Deployment)
    • 결과물, 프로레스, 컴포넌트 등 물리적 요소들의 위치를 표현
  • 복합체 구조 다이어그램 (Composite Structure)
    • 클래스나 컴포넌트가 복합구조를 갖는 경우 그 내부 구조 표현
  • 패키지 다이어그램 (Package)
    • 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계 표현

 그림문제

폴더모양 - 패키지

클래스 : 속성과 메서드를 포함

 

행위 다이어그램 (동적)

유순타상활타상

  • 유스케이스 다이어그램
    • 사용자 요구 분석
  • 순차 다이어그램 (Sequence)
    • 상호 작용하는 시스템이나 객체들이 주고받는 메시지 표현
  • 커뮤니케이션 다이어그램
    • 객체들이 주고받는 메시지와 객체들 간의 연관 관계 표현
  • 상태 다이어그램
    • 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호작용에 따라 어떻게 변화하는지 표현
    • 럼바우 - 동적모델링
  • 활동 다이어그램
    • 시스템이 어떤 기능을 수행하는지 흐름을 순서에 따라 표현, 자료흐름도와 유사
  • 타이밍 다이어그램
    • 객체 상태 변화와 시간 제약을 명시적으로 표현
  • 상호작용 개요 다이어그램 (Interaction Overview)
    • 상호작용 다이어그램 간의 제어 흐름 표현

 

럼바우 객체지향

객동기

객 - 객체 다이어그램

동 - 상태 다이어그램

기 - 기능

 


디자인 패턴

생성 패턴

- 생성이나 참조 과정 정의

  • 추상 팩토리 (abstract factory)
    • 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관, 의존하는 객체들의 그룹으로 생성하여 추상적 표현
    • 연관된 서브 클래스 묶어 한 번에 교체 가능
  • 빌더 패턴
    • 객체의 생성 과정과 표현 방법 분리, 동일한 객체 생성에도 다른 결과 나옴
  • 팩토리 메소드
    • 객체 생성을 서브 클래스에서 하도록 캡슐화
    • 상위는 인터페이스 정의, 서브클래스가 생성
    • 가상생성자
  • 프로토타입
    • 원본 객체를 복제
  • 싱글톤
    •  하나의 객체를 생성하여 어디서든 참조 가능, 여러 프로세스 동시 참조 불가
    • 불필요한 메모리 낭비 최소화
    • 전역 변수 아

구조 패턴

 - 구조를 통해 확장

 - 구조가 복잡한 시스템을 개발하기 쉽게 도움

  • 어댑터(adapter)
    • 호환성 없는 클래스의 인터페이스를 다른 클래스가 쓸 수 있게 변환
    • 클래스를 쓰고싶지만 인터페이스가 일치하지 않을때 사용
  • 브릿지(bridge)
    • 구현부에서 추상층 분리, 서로가 독립적으로 확장
    • 기능과 구현을 별도 클래스로 구현
  • 컴포지트 (composite, 합성)
    • 복합 객체와 단일 객체를 구분없이 다룸
    • 객체들을 트리 구조로 구성
  • 데코레이터 (decorator, 장식)
    • 객체에 기능을 추가하기 위해 다른 객체를 덧붙임
  • facade
    • 외부의 리모컨
    • 복잡한 서브클래스 위에 인터페이스 구성, 서브클래스를 편하게 사용
  • 플라이웨이트 (Flyweight)
    • 인스턴스를 가능한 공유해서 사용
    • 메모리 절약, 가볍게
  • 프록시 (Proxy)
    • 대리
    • 접근이 어려운 객체 사이에서 인터페이스 역할 수행

행위 패턴

- 행위의 변경, 수정을 위한 패턴

- 하나의 객체로 할 수 없는 작업을 여러 객체로 나눠 결합도를 최소화

  • 역할 사슬 (책임 연쇄, chain of responsibility)
    • 요청을 처리할 수 없는 객체가 둘 이상이며 한 객체가 처리하지 못하면 다음 객체로 넘어감
  • 커맨드
    • 요청을 객체의 형태로 캡슐화, 요청에 필요한 정보를 저장하거나 로그에 남김
    • 요청에 사용되는 각종 명령어들을 추상 클래스와 구체 클래소르 분리하여 단순화
  • 인터프리터 (interpreter, 번역)
    • 언어에 문법 표현 정의
  • 이터레이터 (iterator, 반복)
    • 접근이 잦은 객체에 동일한 인터페이스 사용
    • 내부 표현 노출 없이 순차 접근
  • mediator (중재자)
    • 객체간의 상호작용(interface)를 캡슐화하여 객체로 정의
    • 객체 사이의 의존성을 줄여 결합도 감소
    • 중재자는 객체간의 통제와 지시 수행
  • 메멘토 (memento)
    • 객체를 특정 시점으로 돌림
  • 옵저버
    • 한 객체가 다른 개체에게 상태를 전달
    • 분산 시스템 간에 이벤트 생성, 발행(Publish)하고, 이를 수신(Subscribe) 할 때
  • 상태
    • 객체의 상태에 따라 다르게 처리해야 할때
    • 객체 상태를 캡슐화하고 이를 참조함
  • 전략 (Strategy)
    •  동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
    • 클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용, 클라이언트에 영향 없이 알고리즘의 변경 가능
    • A, B, C 등 여러 전략들을 정하고 필요할 때 원하는 전략(Strategy)을 선택하여 쓰는 것
  • 템플릿 메소드 패턴(template method)
    • 상위 클래스에서 골격을 정의하고 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴
    • 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의하의 코드 양을 줄이고 유지보수 용이
    • 세모, 네모, 동그라미를 그리는 방법(Method)들을 도형이라는 하나의 큰 틀(Template)로 묶는 것
  • 비지터 (visitor, 방문자)
    • 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스 구성
    • 분리된 처리 기능은 각 클래스를 방문

IP문제

192.168.1.0/24 네트워크를 FLSM방식을 이용해 3개의 Subnet으로 나눌 때, 두 번째 네트워크의 브로드캐스트 IP주소를 10진수로 쓰시오

 

답: 192.1681.127

 


경로 제어 프로토콜

IGP (Interior Gateway Protocol) - 내부 게이트웨이

  • RIP - 라우팅 프로토콜, 거리 벡터 라우팅, 벨만 포드
  • OSPF - RIP 개선, 다익스트라

EGP (Exterior Gateway Protocol) - 외부 게이트웨이

BGP (Border Gateway Protocol) - EGP의 단점 보안

 


객체지향 설계 원칙

  • 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙
  • SRP, OCP, LSP, ISP, DIP 를 따서 SOLID 원칙이라 함
종류 내용
단일 책임 원칙 (SRP)  객체는 단 하나의책임만 가져야 한다  
개방-폐쇄 원칙 (OCP) 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다.
확장 오픈, 수정 닫힘
리스코프 치환 원칙 (LSP) 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다.
인터페이스 분리 원칙(ISP)  자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
하나의 인터페이스보다 여러개의 구체적인 인터페이스가 낫다
의존 역전원칙(DIP)  의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다. 
읜존관계를 맺을때 변화하기 쉬운것 보다 어려운것에 의존해야함 
  • SRP(Single Responsibility~ 단일 책임)
  • OCP(Open Closed~ 개방 폐쇄)
  • LSP(Liskov Substitution~ 리스코프 치환) : 자식 클래스는 부모 클래스의 행동 규약을 위반하면 안 된다.
  • ISP(Interface Segregation~ 인터페이스 분리) : 클라이언트가 불필요한 메서드를 가진 인터페이스에 의존해선 안 된다.
  • DIP(Dependency Inversion~ 의존성 역전) : 의존관계 수립 시 변화하기 어려운 것에 의존해야 한다

ARP (Address Resolution Protocol, 주소 분석 프로토콜)

 - IP를 MAC주소로

RARP (Reverse ARP)

 - MAC주소를 IP주소로


인증 (Authentication) : 누구인지(로그인)

승인 (Authorization) : 권한이 있는지 (등급 권한)

 

검증(Verification) : 개발자 시각

확인(Validation) : 사용자 시각

 


정규화

 

함수적 종속

https://dodo000.tistory.com/20

 

10. 함수적 종속(Functional Dependency)

함수적 종속(Functional Dependency) 함수적 종속이란 어떤 릴레이션 R이 있을때 X와 Y를 각각 속성의 부분집합이라고 가정해봅니다. 여기서 X의 값을 알면 Y의 값을 바로 식별할 수 있고, X의 값에 Y의

dodo000.tistory.com


결합도

내공외제스자

내용 결합도(Content)

  • 모듈이 다른 모듈 내부 기능 및 자로를 직접 참조 하거나 수정할 때

공통(공유) 결합도 (Common)

  • 전역변수

외부 결합도(External)

  • 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조

제어 결합도(Control)

  • 다른 모듈을 제어함
  • 하위에서 상위로 명령을 내리는 권리 전도현상 발생

스탬프(검인) 결합도 (Stamp)

  • 배열이나 레코드 전달

자료 결합도 (Data)

  • 파라미터 정도만

내용: 내부 동작 의존
공통: 전역 의존
외부: 외부 프로토콜 함께 의존
제어: 제어권 의존
스탬프: 데이터 구조 의존
자료: 파라미터 정도로만 의존

응집도

기순고절시논우

기능적 응집도 (Functional)

  • 단일문제로 수행, 잘 묶임

순차적 응집도 (Sequentail)

  • 리턴값이 오면 그 리턴값을 입력으로 사용

교환(통신)적 응집도 (Communication)

  • 동일한 입출력으로 다른리턴

절차적 응집도 (Procedural)

  • 한 모듈이 여러 기능을 가질때 그 기능을 순차적으로 수행

시간적 응집도 (Temporal)

  • 특정 시간에 처리되는 모듈들

논리적 응집도 (Logical)

  • 비슷한 요소들로 하나의 모듈로 묶음

우연적 응집도 (Coincidental)

  • 아무거나 다 들어가있음

데이터베이스 설계 순서

  1. 요구 조건분석 : 요구 조건 명세서 작성
  2. 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
  3. 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
  4. 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
  5. 구현 : 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성

애플리케이션 테스트의 기본 원리

  • 파레토 법칙(Pareto Principle)
    • 20%에 해당하는 코드에서 전체 결함의 80%가 나옴
  • 살충제 패러독스 (Pesticed Paradox)
    • 동일한 테스트 케이스로 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
  • 오류-부재의 궤변(Absence of Errors Fallacy)
    • SW의 결함을 모두 제거해도 사용자의 요구사항을 만족시키지 못하면 해당 SW는 품질이 높다고 할 수 없음

 

요분설구 - 단통시인


 

IPC(Inter-Process Communication)

  • 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
  • Shared Memory, Socket, Semaphores, Pipes&named Pipes, Message Queueing

EAI(Enterprise Application Integration)

  • EAI는 기업 내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션
  • Point-toPoint, Hub&Spoke, Message Bus, Hybrid
  • 포허메하
  • (이에아)씨는 (하)얗고 (허)연 (포메)를 키운다

ESB(Enterprise Service Bus)

  • ESB는 애플리케이션 간 연계, 데이터 변환, 웹 서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션

EAI - 애플리케이션 연계

ESB - 중앙 집중식


서비스 공격 유형

Ping of Death : 패킷을 계속 쏴서 네트워크 마비

SMURFING(스머핑) : 데이터를 계속 쏨

SYN Flooding : TCP 3-way-handshake를 계속 중단시킴

TearDrop : Fragment Offset을 변경시켜 패킷 재조립할 때 과부하 발생시킴

LAND Attack : 송신IP, 수신IP 둘다 IP를 변경시켜 공격

DDOS : 여러곳에서 한곳으로 공격

 

네트워크 침해 공격 용어

세션 하이재킹 : 세션 훔침

ARP 스푸핑 : ARP 취약점 공격, MAC주소 공격

스미싱 : 문자로 개인정보 빼냄

사회공학 : 신뢰도를 바탕으로 비 기술적으로 침입

다크 데이터 : 활용되지 않고 남은 데이터

타이포스쿼팅(Typosquatting) : 비슷한 url로 도메인을 바꿔 오타내면 접속됨, url 하이재킹이라고도 함

스피어 피싱 : 사회공학의 한 방법, 메일을 계속 보냄

APT (Advanced Persistent Threats, 지능형 지속 위협) : 네트워크에 침투해 거점을 마련한 뒤 나중에 정보 빼냄

무작위 대입 공격 (Brute Force Attack) : 암호키를 찾기위해 무한 반복

큐싱 : QR코드를 통해 악성 앱 다운 유도

SQL인젝션

XSS(크로스 사이트 스크립팅) : 웹 스트립트 취약점 공격

스니핑(Sniffing) : 네트워크 중간에 패킷 도청

 

정보 보안 침해 공격 용어

워터링홀 : 자주방문하는 사이트 감염시켜 미리 함정 파놓음

좀비PC : 다른 PC공격함, DDoS에 사용

C&C서버 : 좀비PC를 명령하는 서버

봇넷 : 좀비PC가 네트워크로 연결됨

웜 : 네트워크를 통해 바이러스와 같이 자기복제가 가능하며 스스로 전파 가능

바이러스 : 정상 파일 감염시킴, 자기복제 가능, 스스로 전파 불가능

트로이 목마 : 정상적인 프로그램에 포함되어 실행되는 악성코드, 자기복제능력은 없음

키로거 공격 : 키보드움직임을 탐지해 ID, PW 빼감

제로데이공격 : 보안취약점이 발견되었을 때 공표되기 전 공격하는 

 

보안 솔루션

방화벽

침입 탐지 시스템(IDS; Intrusion Detection System) : 시스템의 비정상적인 사용, 오용, 남용을 실시간 탐지

침입 방지 시스템(IPS; Intrusion Prevention System) : 비정상 트래픽 차단

데이터 유출 방지(DLP; Data Leakage/Loss Prevention)

웹 방화벽

VPN (가상 사설 통신망) : 자신의 전용 회선을 사용하는것 처럼 해줌(SSL VPN, IPSec VPN)

NAC(Network Access Control) : 내부 PC의 MAC주소를 등록

SIEM (Security Information and Event Management) : 로그 및 보안 이벤트 통합 관리

SSH

템퍼 프루핑(Tamper Proofing) : SW위변조 발생시 SW를 오작동 시킴

OAuth

 


소프트웨어개발 보안 요소

  • 기밀성 (Confidentiality)
    • 시스템 내의 정보와 자원은 인가된 사용자에게만 접근 허용
    • 정보가 노출되도 읽을 수 없음
  • 무결성 (Integrity)
    • 시스템 내의 정보는 오직 인가된 사용자만 수정 가능
  • 가용성 (Availability)
    • 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용 가능
  • 인증 (Authentication)
    • 시스템 내의 정보와 자원을 사용하려는 사용자가 합법적인 사용자인지 확인하는 행위
    • 비밀번호, 지문 검사 등
  • 부인 방지(NonRepudiation)
    • 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거를 제공

XML + JAVA = AJAX

XML + 언어 = WSDL

XML + 프로토콜 = SOAP

WSDL 초기 = UDDL

 


화이트박스 테스트의 검증 기준

문장(구문)

분기(Branch) - 결정조건이라고도함, 모든 조건문

조건(Condition) - 조건문 안에 개별 조건까지

분기/조건

 

분기결정 - 조건

구결조

 

 블랙박스 테스트의 종류

동치 분할(Equivalence Partitioning)

경계값 분석 (Boundary Value Analysis)

원인-효과 그래프 (Cause-Effect Graph)

오류 예측 (Error Guessing)

비교 검사 (Comparison)


구조체 일반 변수에 '.' 을 찍어 사용하거나

구조체 포인터 변수에 '->'를 사용하거나

구조체 포인터 변수에 *를 사용하여 일반 포인터 변수처럼 사용할 수 있다.


패킷 교환 방식

가상회선 - 연결형

데이터그램 - 비연결


스케줄링 알고리즘

FCFS : 선입 선출

SJF : 단기 작업 우선

HRN (Highest REsponse-ratio Next) : 우선순위를 정함, 우선순위 = (대기시간 + 서비스시간) / 서비스시간

RR(Round Robin) : 일정시간만 할당하고 넘김

SRT (Shortest Remaining Time) : 기존의 남은시간과 새로운 프로세스의 실행시간을 비교하여 가장 짧은 실행시간의 프로레스에게 할당


데이터 베이스 무결성

개체 무결성 : 기본키는 NULL과 중복 안됨

참조 무결성 : 다른 테이블 외래키(참조하는 값)이 존재해야함

도메인 무결성 : 속성 도메인에 벗어난 값 금지

관계 무결성 : 삽입 가능 여부 및 다른 테이블과 관계 적절

 


데이터베이스 트랜잭션 속성

원자성 : 실행되거나 실행되지 말거나

일관성 : 일관된 상태

독립성 : 트랜잭션 실행 도중 연산 결과는 다른 트랜잭션에서 접근할 수 없음

지속성 : 성공 후 영구반영

 

독일지원


암호화

양방향

개인키

대칭키

  • 스트림 암호화
    • LFSR, RC4, TKIP
  • 블록 암호화
    • DES, SEED, AES, ARIA, IDEA, Skipjack

공개키

비대칭키

  • RSA, ECC

ECC 빼고 E가 들어가면 비대칭키(맹신은안됨..)

 

 

TKIP : 무선랜 보안에 사용된 WEP보완, 임시 키 무결성 프로토콜

 

SEED : 한국인터넷진흥원(KISA) 개발, 블록크기 18비트, 키 길이에 따라 128, 256

ARIA : 국정원, 산학연협회 개발

DES : 미국 NBS 개발, 블록크기 64비트, 키길이 56비트, 16회의 라운드 수행, 3DES 있음

AES : 미국 표준 기술연구소 (NIST) 개발, DES의 한계에 개발

IDEA : 스위스의 라이, 메시 개발

SKipjack : 국가안전보장국(NSA) 개발, 클리퍼칩(IC칩) 내장, 음성 통신 사용

 

RSA : MIT의 Rivest, Shamir, Adleman 개발, 소인수분해 기반

ECC : RSA의 대안, 이산대수를 타원곡선으로

 

단방향

해시

SHA : NSA설계, NIST발표, SHA-0, SHA-1, SHA-2, SHA-224, SHA-256, SHA-384, SHA-512

MD5 : Rivest가 MD4 대체하기 위해 개발

N-NASH : 일본 전신전화주식회사(NTT)개발

SNEFRU : R.C.Merkle 발표, 32비트 프로세서 구현 용이하게 할 목적으로 개발

 


관계대수 : 절차적

관계해석: 비절차적

대절해비

버스를 대.절 하면 해.비 하지

 


프로세스 상태 전이

 

 

 

  • 제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
  • 접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
  • 준비 : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 실행 : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기, 보류, 블록 : 프로세스에 입출력처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때
  • 까지 대기하고 있는상태
  • 종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태

*Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정

 


DAC : 관리자 맘대로 (닥치고 해 - 관리자가'임의'로 부여

MAC : 자동으로 등급따라 (막하지마 - '등급' 비교해서 시스템이 부여)

RBAC : 역할놀이


데이터모델

연산 : 개체

구조 : 논리

제약조건 : 무결


인터페이스 설계 원칙

직관성 : 누구나 쉽게 이해하고 사용

유효성: 사용자의 목적을 달성

학습성 : 누구나 쉽게 배움 

유연성 : 요구사항 수용

직유학

반응형

댓글