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
결합도
내공외제스자
내용 결합도(Content)
- 모듈이 다른 모듈 내부 기능 및 자로를 직접 참조 하거나 수정할 때
공통(공유) 결합도 (Common)
- 전역변수
외부 결합도(External)
- 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조
제어 결합도(Control)
- 다른 모듈을 제어함
- 하위에서 상위로 명령을 내리는 권리 전도현상 발생
스탬프(검인) 결합도 (Stamp)
- 배열이나 레코드 전달
자료 결합도 (Data)
- 파라미터 정도만
내용: 내부 동작 의존
공통: 전역 의존
외부: 외부 프로토콜 함께 의존
제어: 제어권 의존
스탬프: 데이터 구조 의존
자료: 파라미터 정도로만 의존
응집도
기순고절시논우
기능적 응집도 (Functional)
- 단일문제로 수행, 잘 묶임
순차적 응집도 (Sequentail)
- 리턴값이 오면 그 리턴값을 입력으로 사용
교환(통신)적 응집도 (Communication)
- 동일한 입출력으로 다른리턴
절차적 응집도 (Procedural)
- 한 모듈이 여러 기능을 가질때 그 기능을 순차적으로 수행
시간적 응집도 (Temporal)
- 특정 시간에 처리되는 모듈들
논리적 응집도 (Logical)
- 비슷한 요소들로 하나의 모듈로 묶음
우연적 응집도 (Coincidental)
- 아무거나 다 들어가있음
데이터베이스 설계 순서
- 요구 조건분석 : 요구 조건 명세서 작성
- 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
- 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 구현 : 목표 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 : 역할놀이
데이터모델
연산 : 개체
구조 : 논리
제약조건 : 무결
인터페이스 설계 원칙
직관성 : 누구나 쉽게 이해하고 사용
유효성: 사용자의 목적을 달성
학습성 : 누구나 쉽게 배움
유연성 : 요구사항 수용
직유학
'정보처리기사 > 실기' 카테고리의 다른 글
정보처리기사 실기 후기 (1) | 2024.07.29 |
---|---|
오답 (13) | 2024.07.24 |
정보처리기사 실기 11장 - 응용 SW 기초 기술 활용 (5) | 2024.07.22 |
10장 오답 (1) | 2024.07.22 |
정보처리기사 실기 10장 - 프로그래밍 언어 활용 (0) | 2024.07.16 |
댓글