본문 바로가기
[Study] 개발 공부

정처기 필기 24년 2회 대비 개념 정리

by 지공A 2024. 5. 13.

1. 소프트웨어 설계

HIPO CHART
- 시스템 분석 및 설계, 입력/처리/출력의 기능
- 하향식 소프트웨어
- 가시적(도식) 도표: 트리구조
- 총체적(총괄, 개요) 도표: 입력/처리/출력
- 세부적(상세) 도표: 기본 요소

클래스 다이어그램의 요소
- Operation: 클래스의 동작
- Message: 메시지를 통해 활동

UML - 구조적(정적) 다이어그램
 - 클래스 다이어그램: 이름, 속성, 메소드 / 정적
 - 컴포넌트 다이어그램
 - 객체 다이어그램
 - 컴포지트 구조 다이어그램
 - 배치 다이어그램
 - 패키지 다이어그램: 그룹화

UML - 행위(동적) 다이어그램
 - 활동 다이어그램
 - 유스케이스 다이어그램: 액터, 사용자 관점
 - 상태 다이어그램
 - 시퀀스 다이어그램: 순차다이어그램, 시간적 흐름에따른 메시지 교환
 - 커뮤니케이션 다이어그램
 - 인터렉션 오버뷰 다이어그램
 - 타이밍 다이어그램

클래스
- 공통된 속성과 연산(행위)을 갖는 객체의 집합
- 클래스에 속한 각각의 객체를 인스턴스라고 함
- 동일 클래스에 속한 각각의 객체들은 공통된 속성과 행위를 가지고 있음

협약에 의한 설계(Design by Contract): 클래스의 명확한 인터페이스 명세를 위해서 선행, 결과, 불변 조건을 기술하는 설계 방법
- 선행 조건(precondition): 클래스 인터페이스 호출 전 사용자가 만족시켜야하는 제약 조건 기술
- 결과 조건(postcondition): 클래스 인터페이스 통해 연산 수행된 후에 만족시켜야 하는 조건 기술
- 불변 조건(invariant): 클래스 내부에서 수행되는 동안 항상 만족해야하는 조건 기술

소스코드 품질 분석
 - 동료 검토(PEER REVIEW) : 2~3명 진행
 - 워크 스루: 검토 자료를 회의 전 배포, 사전검토, 짧은 시간
 - 인스펙션: 공식적 검사회의, 작업자 외 다른 전문가가 검사
 -> 리팩토링 진행

Encapsulation: 속성과 관련된 연산을 클래스 안에 묶어서 하나로 취급하는 것을 의미하는 객체지향 개념

익스트림 프로그래밍(XP)
 - 애자일 방법론: XP, 스크럼, FDD, 크리스탈, 린
 - XP? 의사선생님 약주실때 피존용기에 담아주세요
 - 의사소통
 - 피드백
 - 존중
 - 용기
 - 단순성
 - 객체지향에서 많이 쓰임
 - 애자일 방법론: 잦은 변화, 문서보다는 소프트웨어/소스코드 중심

FEP(Front End Processor, 전치프로세서)
 - 입력되는 데이터를 컴퓨터의 프로세서가 처리하기 전에 미리 처리하여 프로세서가 처리하는 시간을 줄여주는 프로그램이나 하드웨어

GoF(Gang of Four)
 - 생성, 구조, 행동 패턴
 - 생성: builder
 - 구조: adapter, bridge, proxy
 - 행위: 반복적으로 사용되는 객체들의 상호작용을 패턴화, 결합도, 알고리즘이나 책임 분배에 관련된 패턴 / 책임연쇄(Chain of Responsibility), 인터프리터(Intrepreter)

소켓(Socket) 기술: 통신을 위한 프로그램을 생성하여 포트를 할당하고, 클라이언트의 통신 요청 시 클라이언트와 연결하는 내외부 송수신 연결기술

CASE(Computer Aided Software Engineering): 소프트웨어 개발 시, 사용되는 분석 자동화 도구
- 그래픽 지원
- 소프트웨어 생명 주기 전반적인 단계의 연결
- 다양한 소프트웨어 개발 모형을 지원

순차코드(Sequence Code): 자료의 발생 순서, 크기 순서 등 일정 기준에 따라 순서대로 일련 번호를 부여하는 방식, 일련 번호 코드 (e.g. 1, 2, 3...)

객체지향 설계(SOLID)
- 단일 책임 원칙(Single responsibility principle): 하나의 클래스는 하나의 기능만 수행해야 한다
- 개방-폐쇄 원칙(Open/closed principle): 수정에는 닫혀있고, 확장에는 열려있음
- 리스코프 치환 원칙(Liskov substitution principle): 하위 클래스는 상위 클래스를 대체할 수 있다
- 인터페이스 분리 원칙(Interface segregation principle): 쓰지 않는 인터페이스와 연결하지 마라
- 의존관계 역전 원칙(Dependency inversion principle): 자주 바뀌는데에는 의존하지 마라

분산 시스템 미들웨어
- RPC, MOM, WAS, ESB, TP MONITOR, DB, ORB
- 어플-어플, 어플-사용자

파이프필터 아키텍처
- 단방향
- 모든 필터 이동 시에는 오버헤드가 발생

럼바우(격동기!)
- 객체: 객체 다이어그램
- 동적: 상태 다이어그램
- 기능: DFD(자료 흐름도)


2. 소프트웨어 개발

인수 테스트(Acceptance Test)
- 개발한 소프트웨어가 사용자의 요구사항을 충족하는가 테스트
- 사용자가 테스트
- 사용자 인수 테스트
- 운영상의 인수 테스트
- 계약 인수 테스트
- 규정 인수 테스트
- 알파 테스트
- 베타 테스트

인터페이스 구현 검증 도구
- 인터페이스 동작 상태를 확인하기 위해 인터페이스 단위 기능과 시나리오 등을  기반으로 하는 통합테스트가 필요
- 통테는 자동화 도구를 이용하면 효율적, 그 도구가 인터페이스 구현 검증 도구
- xUnit
- STAF: 서비스 호출, 컴포넌트 재사용, 다양한 환경, 데몬
- fitNesse
- NTAF
- Selenium
- watir

제어흐름그래프 복잡도
- 화살표수 - 노드수 + 2

선택정렬(selection sort)
- n개의 레코드 중에서 최소값을 찾아 첫번째 레코드 위치에 놓고, 나머지 중에서 다시 최소값을 찾아 두번째 레코드 위치에 놓는 방식

Alien 코드
- 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 어려운 프로그램

prefix
- 전위표기법, 연산자/변수/변수
infix
- 중위표기법, 변수/연산자/변수
postfix
- 후위표기법, 변수/변수/연산자
(e.g. 34*56*+ => 3*4 + 5*6 = 42)

소프트웨어 품질목표(= 품질 평가 기준항목)
- Correctness, 정확성: 사용자의 요구기능을 충족시키는 정도
- Reliability, 신뢰성: 요구된 기능을 오류없이 수행하는 정도
- Efficiency, 효율성: 요구된 기능을 수행하기 위한 시스템 능력과 필요한 자원의 소요 정도
- Portability, 이식성: 다양한 하드웨어 환경에서도 운용 가능하도록 쉽게 수정할 수 있는 정도
- Integrity, 무결성: 허용되지 않는 사용이나 자료의 변경을 제어하는 정도
- Usabillity, 유용성: 쉽게 사용할 수 있는 정도
- Flexibillity, 유연성: 새로운 요구사항에 맞게 얼마만큼 쉽게 수정할 수 있는지의 정도
- Reusabillty, 재사용성: 이미 만들어진 프로그램을 다른 목적으로 사용할 수 있는지의 정도
- Interoperabillty, 상호운용성: 다른 소프트웨어와 정보를 교환할 수 있는 정도

개발단계에 따른 애플리케이션 테스트
- 개발단계: 요구사항 > 분석 > 설계 > 구현
- 테스트 과정: 단테 > 통테 > 시스템테스트 > 인수테스트

단위테스트
 - 구현 단계에서 각 모듈 개발 완료 후, 개발자가 명세 내용대로 테스트
 - 모듈 내부를 볼 수 있는 구조적 테스트
하네스도구?
 - 테스트 드라이버?: 필요한 데이터를 인자를 통하여 넘겨주고 테스트가 완료된 후 결과 값을 받는 역할
 - 테스트 스텁?: 테스트할 모듈이 호출할 때 인자를 통해 받은 값을 수행한 후, 결과를 모듈에 넘겨주는 역할

테스트 드라이버
- 시험/임시 모듈 호출하는 간이 소프트웨어
- 상향식
- 매개변수 전달, 결과 보여줌

자료구조 종류
- 선형: 큐, 데크, 리스트, 스택
- 비선형: 트리, 그래프

검증(Verification)과 확인(Validation)
- 검증: 개발자
- 확인: 사용자

형상관리 절차(식도감기!)
- 식별 > 통제 > 감사 > 기록

형상관리
- 소프트웨어 개발 과정에서 발생하는 '모든 변경'을 관리
- 모든 문서가 형상관리 대상
- 도구: CVS, SVN, GIT

트리 구조
- B트리(2-3트리, 레드블랙트리): index 트리, 효율 짱
- AVL 트리: 균형을 맞춘 트리, 효율 짱
- 이진탐색트리: 최악의 경우가 있음

전위순회
- 부모먼저
중위순회
- 왼쪽자식먼저, 부모를 중간에
후위순회
- 부모나중에


3. 데이터베이스 구축

 


트랜잭션의 상태
 - PARTIALLY COMMITTED: 마지막 연산이 실행된 직후의 상태, 연산의 처리는 끝났지만, 최종 결과를 데이터베이스에 반영하지 않은 상태
 - 활동 -> (부분 완료 -> 완료) / (실패 -> 철회)

트랜잭션 특성
- ISOLATION(독립성): 동시에 병행 실행되는 경우 다른 트랜잭션 연산이 끼어들 수 없음
- CONSISTENCY(일관성): 연산 결과 유지
- DURABILITY(영속성)
- 원자성


데이터베이스 회복(Recovery) 기법
- 로그기반 회복기법: 즉각갱신기법(Immediate), 지연갱신기법(Deferred)
- Check Point 회복기법
- 그림자페이징 회복기법

CREATE TABLE
- DEFAULT
- NOT NULL
- PRIMARY
- UNIQUE
- FOREIGN
- CONSTRAINT
- CHECK

SQL SELECT 구조
- SELECT 속성, *
: DISTINCT(중복제거)
- FROM TABLE
- WHERE(AND/OR)
- GROUP BY 필드
: HAVING (SUM)
- ORDER BY 컬럼 (ASC: 오름차/DESC: 내림차)

정처기 관계해석
- ∀ (거꾸로 A, all)
- A ∈ B A가 B에 속함
- U 합집합

관계대수
- 순수관계 연산자: Select(아톰), Project(파이), Join(리본), Division(나누기)
- 일반집합 연산자: UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)

해시 분할(Hash Partitioning)
- 해시함수를 적용한 결과 값에 따라 분할
- 특정 파티션에 데이터가 집중되는 범위 분할의 단점 보완
- 데이터를 고르게 분산
- 특정 데이터가 어디에 있는지 판단

SQL문
- UNION: 중복없음
- UNION ALL: 중복 있음

정규형(도부이결다조)
 - 이상현상: 삽입이상, 갱신이상, 삭제이상
 - 비정규 > 1정규 > 2정규 > 3정규 > BCNF > 4정규 > 5정규 
 - 1정규형: 도메인이 원자값
 - 2정규형: 부분 함수적 종속 제거
 - 3정규형: 이행적 함수 종속 제거
 - BCNF: 결정자이면서 후보키가 아닌 것 제거
 - 4정규형: 다치 종속 제거
 - 5정규형: 조인 종속성 이용

병행제어 기법 로킹(Locking)
- 트랜잭션이 접근하고자 하는 데이터를 잠가 다른 트랜잭션이 접근하지 못하도록 하는 병행제어기법
- 로킹 단위: 한번에 로킹할 수 있는 객체의 크기, 필드/레코드/테이블/파일/DB
- 로킹단위가 작아지면 로킹 오버헤드 증가, 병행성 수준 증가, DB 공유도 증가

SQL 명령어
 - DDL
 - DML: SELECT, UPDATE, INSERT, DELETE
 - DCL: GRANT(TO), REVOKE

고가용성 솔루션(HACMP: High Availabillity Cluster Multy Processing)
- 서버와 저장소 등 IT 자원을 묶어 클러스터를 형성하여, 장애 발생 시 자동으로 대처하여 서비스 가용성을 높이는 솔루션
- 2개의 서버를 연결하여 각각 업무를 수행하도록 구현하는 방식이 널리 사용
- 각 시스템 간에 공유 디스크를 중심으로 클러스터링으로 엮어 다수의 시스템을 동시에 연결
- 조직, 기업의 기간 업무 서버 등의 안정성을 높이기 위해 사용

데이터베이스 설계: 개념 > 논리 > 물리
 - 개념: ERD
 - 논리: 정규화 / JOIN / 트랜잭션, 인터페이스 설계
 - 물리:  성능 고려 / 반정규화

관계형 DB 제약 조건 - 무결성
- 개체 무결성: 기본키 NULL값/중복값 가질 수 X
- 도메인 무결성: 속성 값이 정의된 도메인에 속한 값
- 참조 무결성: 외래키 값은 NULL값/참조 릴레이션의 기본키 값, 도메인과 속성 개수가 같아야함
- 사용자 정의 무결성: 사용자가 정의한 제약 조건에 만족
- 데이터 무결성 강화: 특성에 맞는 적절한 무결성을 정의하고 강화

함수 종속
- Y는 X에 함수적 종속이다: X->Y

on delete no action
: 참조되는 테이블의 행을 삭제하려고 할 때, 참조하는 테이블의 행이 존재할 경우 삭제 명령이 수행되지 못하도록 한다.


4. 프로그래밍 언어 활용

OSI-7 계층 (응표세전네데물)
1. 응용계층
2. 표현계층
3. 세션계층
4. 전송계층
5. 네트워크계층
6. 데이터링크 계층
7. 물리계층

표현 계층
- 코드 변환, 데이터 암호화/압축, 구문 검색, 정보 형식 변환

Malloc() 함수
- 힙(heap) 영역의 메모리를 할당
- 사용 후 반드시 free() 함수를 통해 메모리 해제

C: 문자열 처리 함수
- strlen: 길이
- strcpy(s1,s2): s2를 s1으로 복사
- strcmp(s1,s2): s1, s2 비교
- strrev: 거꾸로
- strcat(s1,s2): s1, s2 연결

결합도(약할수록 좋음) (테스형쟤왜저래공유랑내가) 
- 자료(데이터) 결합도(가장 약함)
- 내용 결합도(가장 강함)

응집도(강할수록 좋음) (우리놀던시절통통한순대기가막혀)
- 기능적 응집도(가장 강함)
- 우연적 응집도(가장 약함)

자바 접근제어자
- public, protected, default, private

아스키코드 
- A는 65임

a|b - 이진수표기로 계산

ARQ(Automatic Repeat reQuest)
- Stop-And-Wait
- Go-back-N
- Selective Repeat
- Adaptive(적응형)

파이썬: range(12): 0부터 11

페이지 교체 알고리즘
- FIFO
- OPT(OPTIMAL)
- LRU
- LFU
- NUR
- SCR

2차기회 페이지 교체 알고리즘(FIFO 변형 알고리즘)
-  FIFO 방식으로 페이지를 교체하지만 특정 페이지에 접근하여 페이지 부재없이 성공할 경우 해당 페이지를 큐의 맨 뒤로 이동하는 기법 

파일 디스크립터(File Descriptor)
- 파일 관리를 위해 시스템이 필요로 하는 정보를 가지고 있다
- 보조기억장치에 저장되어있다가 파일이 개방되면 주기억 장치로 이동
- 운영체제에서 알아서 만들어줌
- = 파일제어블록(File Control Block)

Python언어의 3차원 리스트
: [레이어][행][열]
- ex) a = [[[1,2], [3,4], [5,6]], [[7,8], [9,10], [11,12]]]


5. 정보시스템 구축 관리

스토리지
- DAS(Direct Attached Storage): 서버와 저장장치를 전용 케이블로 직접 연결
- NAS: 네트워크
- SAN: 혼합

소프트웨어 비용 산정
COCOMO(Constuctive Cost Model) 모형
- 보헴이 제안, 원시코드 라인 수에 의한 비용 산정 기법
임계경로기법(CPM, Critical Path Method)
- 프로젝트 완성에 필요한 작업을 나열, 소요 기간 예측
- 임계 경로는 최장 경로를 의미
- 선후 관계 명확해야 다음 작업

증발품(Vaporware)
- 판매 계획 또는 배포 계획은 발표되었으나 실제로 고객에게 판매되거나 배포되지 않고 있는 소프트웨어

데이터 마이닝
- 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
- 대용량 데이터 분석, 데이터 속 내재되어 있는 변수 사이의 상호 관계를 규명하여 패턴화함으로써 효율적인 데이터 추출

대칭키 기법: AES, SEED, IDEA
비대칭키 기법: ECC(타원곡선 상 이산대수 문제 이용), RSA(소인수 분해 문제), ELGMAL(이산대수 문제 이용), RABIN(소인수분해, 공개키)

인증(Authentication) 유형
- 지식 기반: 기억 / PW
- 소유 기반: 소유 / 토큰
- 생체 기반: 생체 / 지문
- 행위 기반: 행동 / 서명
- 위치 기반: 위치

랜섬웨어
- 문서 파일 등을 암호화하여 사용자가 열지 못하게하는 공격
- 돈을 요구

MQTT
- 사물 통신, 사물 인터넷과 같이 대역폭이 제한된 통신 환경에 최적화하여 개발된 푸시기술 기반의 경량 메시지 전송 프로토콜
- 메시지 매개자(BROKER)를 통해 송신자가 특정 메시지를 발행하고 수신자가 메시지를 구독
- IBM이 주도하여 개발

하둡
- 오픈 소스를 기반으로 한 분산 컴퓨팅 플랫폼
- 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크
- 구글 / 야후

SSH - TCP 22: 보안이 취약한 단점 보완, 높은 안정성 보장

TLS(Transport Layer Security, 전송 계층 보안)
: 인터넷상에서 데이터의 도청이나 변조를 막기 위해 사용되는 보안 소켓 계층(SSL) 프로토콜 보다 보안성이 강화된 프로토콜
- TLS 1.2 : 2008년 8월에 공개된 버전
- TLS 1.3 : 2018년 8월에 공개된 최신 버전

프로토타입 모형(원형 모형)
- 사용자와 시스템 사이의 인터페이스에 중점
- 요구수집-설계-구축-평가-조정-구현

접근 통제 정책
 - 강제적 접근 통제(MAC, Mandatory Access Control): 자원의 보안 레벨과 사용자의 보안 취급 인자를 비교하여 접근 제어
 - 임의적 접근통제(DAC, Discretionary Access Control): 자원의 소유권을 가진 사람이 다른 사람의 접근을 허용하거나 제한
 - 역할기반 접근 통제(RBAC, Role Based Access Control): 직무, 직책 등 개인의 역할에 따라 결정하여 부여하는 접근 정책

솔트
- 같은 패스워드에 대해 암호화를 수행하더라도 서로 다른 결과
- 덧붙이는 무작위 값

스택가드
- 카나리라고 불리는 무결성 체크용 값을 복귀주소와 변수 사이에 삽입해 두고 버퍼 '오버플로우' 시 카나리 값이 변하게 되면 복귀주소를 호출하지 않는 방법

OWASP(the Open Web Application Security Project)
- 웹 정보 노출이나 악성 코드, 스크립트, 보안이 취약한 부분을 연구하는 비영리 단체
- 보안 취약점 중 보안에 미치는 영향이 큰 것을 기준으로 선정한 10대 웹 어플리케이션 취약점을 3~4년에 한 번씩 발표

허니팟
- 비정상적인 접근을 탐지
- 침입자를 속여 실제 공격을 당하는 것처럼 보여줌

침입탐지 시스템(IDS: Instrusion Detection System)
- 오용 탐지 기법: 이미 발견되고 정립된 공격 패턴을 입력해둠
- 이상 탐지 기법: 조금이라도 이상하게 행동하면 차단

타조: 하둡 기반 데이터웨어 하우스 시스템
원세그: 일본에서 휴대기기를 수신 대상으로 하는 지상 디지털 TV 방송
포스퀘어: 위치기반 소셜네트워크 서비스
텐서플로: 구글에서 공개한 기계 학습을 위한 오픈소스 소프트웨어 라이브러리

클라우드 컴퓨팅 플랫폼(IPS) 아이쿠허리야파스붙이면싹낫겠네
- Iaas(Infrastructure as a Service): 인프라, 장비 빌림
- Paas(Platform~): 개발 환경 빌림
- Saas(Software~): 소프트웨어 빌림 
- Baas: 블록체인

무선 메시 네트워크(WMN; Wireless Mesh Network)
: 기존의 유선 망에서 사용하던 메쉬 형태의 네트워크를 무선망에서도 사용하고자 하는 목적에서 만들어진 메쉬 네트워크의 일종으로 메쉬 라우터들과 메쉬 클라이언트라는 노드들로 이루어진 네트워크

페르소나(Persona)
: 개인이 외부에 보여주는 이미지 혹은 가면이며, 사회적 요구에 대한 반응이다.

MDM(Mobile Device Management)
: 휴대폰을 포함한 모바일 장비의 소프트웨어와 기능을 무선으로 제어하는 솔루션

백신(Vaccine)
: 컴퓨터 바이러스 프로그램을 찾아내고 손상된 파일을 치료하는 소프트웨어

VRRP(Virtual Router Redundancy Protocol, 가상 라우터 장애 복구 프로토콜)
: LAN에서 백업 라우터 운용 방법을 제공하는 프로토콜로, LAN에서 라우터에 장애가 발생하면 백업 라우터가 없기 때문에 VRRP를 사용하여 가상 IP 주소를 정하고 주 라우터와 백업 라우터를 정하면, 주 라우터 장애시에 백업 라우터가 주 라우터가 된다.