네트워크 TOPCIT 교재 : https://www.topcit.or.kr/ebook/tech/ess03_net/JBook.htm

보안 TOPCIT 교재 : https://www.topcit.or.kr/ebook/tech/ess04/JBook.htm


전공이라 정리 안함

'흑역사 > TOPCIT' 카테고리의 다른 글

[TOPCIT] 02. 데이터베이스 정리  (0) 2018.07.27
[TOPCIT] 01. 소프트웨어 개발 정리  (0) 2018.07.24

데이터베이스 TOPCIT 교재 : https://www.topcit.or.kr/ebook/tech/ess02/JBook.htm


02 데이터베이스 구축 / 운영


- 데이터베이스 설계의 3단계 - 개념적, 논리적, 물리적 단계

- 개념적 데이터모델링 : 추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링 진행(EA 수립 시 많이 이용)

- 논리적 데이터모델링 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음

- 물리적 데이터모델링 : 실제로 데이터베이스에 이식할 수 있도록 성능향상 및 저장의 효율화를 위해 물리적인 성격을 고려하여 설계


- 무결성과 키

- 데이터 무결성이란 데이터의 무효갱신으로부터 데이터를 보호하여 정확성, 유효성, 일관성, 안정성을 유지하려는 성질을 의미

1. 영역 무결성 : 속성 값은 원자성(Atomicity)를 가지며, 해당 도메인에서 정의된 값이어야 함

2. 키 무결성 : 테이블의 모든 레코드는 서로 식별 가능해야 함

3. 엔티티 무결성 : 기본키는 유일값이며 NULL이 될 수 없음

4. 참조 무결성 : 외래키는 NULL이거나, 외래키가 참조하는 테이블의 기본키에 존재해야만 함

5. 사용자 정의 무결성 : 다른 무결성 범주에 속하지않는 특정 업무 규칙  정의

- 키

1. 슈퍼키 : 테이블 내의 레코드를 유일하게 식별해 낼 수 있는 속성

2. 후보키 : 최소성을 갖는 수퍼키, 즉 수퍼키 중 한 속성이라도 제거하면 수퍼키의 성질을 잃는 경우에 이 수퍼키를 후보키라고 함

3. 기본키 : 후보키 중 하나이며, 설계자에 의해 선택됨, 튜플을 유일하게 식별하는 속성의 집합 (not null)

4. 외래키 : 다른 테이블을 참조할 때 원래 테이블의 외래키는 참조하려는 기본키를 참조하는 원래 테이블의 속성을 의미

- ERD 만질 줄 알아야 함


- 이상 현상

- 삽입 이상 : 어떤 정보 삽입 시에 원하지 않는 정보까지 함께 삽입해야만 하는 현상

- 삭제 이상 : 어떤 정보를 삭제시 필요한 정보까지 함께 삭제되어야 하는 현상

- 수정 이상 : 어떤 정보를 수정시 동일한 내용을 여러 건의 데이터에서 반복 수정해야 하는 현상


- 함수 종속성 ( X -> Y : 종속자 Y는 결정자 X에 함수적으로 종속됨 )


- 정규화 어떤건지 (두부이겨다줘), 2차, 3차 정규화 직접 해보기


- CREATE VIEW [테이블 이름] AS(

SELECT 주문. 주문번호,

주문.주문자명

주문목록.주문단가

주문목록.주문수량

FROM 주문, 주문목록

WHERE 주문.주문번호 = 주문목록.주문번호)


- GRANT SELECT ON [테이블 이름] TO v_user


- 도메인 정의 : 각 엔티티의 속성에 대해서 어떤 유형의 값이 들어가는지를 정의하는 개념은 도메인이다.

- 관계 연산

- 관계 대수 : 원하는 정보를 얻기 위해 수행해야 할 연산의 순서를 명시하는 절차적 언어

합집합,교집합,차집합,카티션프로덕트 (일반집합) // 셀렉트,프로젝트,조인,디비전 (순수관계연산)

- 관계 해석 : 원하는 정보가 무엇인지를 정의하는 비절차적인 언어


- 관계데이터베이스 언어의 종류

DDL : CREATE, ALTER, DROP, RENAME

DML : SELECT, FROM, WHERE, INSERT, DELETE, UPDATE

DCL : GRANT, REVOKE, COMMIT, ROLLBACK


- 저장 프로시저 (Stored Procedure) : 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. DB에 대한 일련의 작업을 정리하여 DBMS에 저장한 것.

- 동적 SQL vs 정적 SQL

정적 : SQL문을 변수에 담지 않고 코드상에서 섞어서 기술함, 커서를 선언하여 SQL 구문을 정적 처리 (Looping 구조로 데이터 처리)

동적 : SQL 구문을 String형 변수에 담아 동적 처리함 (변경이 가능 하므로 NVL()처리가 필요없음)


- 옵티마이저 : 사용자의 다양한 요구에 따라 그 때마다 SQL문의 문법적 오류를 확인하고, 가장 빠른 데이터에 접근 경로를 작성하여 최적의 경로 및 처리 절차를 찾아주는 역할을 수행하는 DBMS 핵심 엔진

RBO(Rule Base Optimizer), CBO(Cost Base Optimizer)


- 트랜잭션 : 하나의 논리적인 작업 단위를 이루는 여러 연산들의 집합, 한 번에 수행되어야 할 읽기와 쓰기 연산을 수행하는 단위

A (Atomicity) : 연산 전체가 성공적이거나 한 가지라도 실패할 경우 전체가 취소되어 무결성 유지

C (Consistency) : 트랜잭션 성공적으로 완료 시 언제나 모순 없이 일관된 데이터베이스 상태 보존

I (Isolation) : 트랜잭션이 실행 중에 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가

D (Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장됨

- Commit과 Rollback 연산 알아두기


- 동시성(병행) 제어 : DB 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능

병행제어를 하지 않았을 경우 문제점 : 갱신 손실, 오손 데이터 읽기, 모순성, 연쇄복귀, 반복할 수 없는 읽기

- 동시성(병행) 제어 기법

- 2PL(2-Phase Locking) : 확장(Lock)과 수축(Unlock)을 통해 트랜잭션 처리

- 교착상태(Deadlock) : 다중처리 환경에서 트랜잭션이 특정자원의 할당을 무한정 기다리고 있는 상태

원인 : 상호배제, 점유와 대기, 비선점, 환형 대기

- 데이터베이스 장애의 유형

- 트랜잭션 장애 : 내부적인 오류로 트랜잭션 완료 불가

- 시스템 장애 : 전원, 하드웨어, 소프트웨어 등의 고장

- 디스크 장애 : 디스크 스토리지의 일부 또는 전체가 붕괴 (REDO 활용)


- REDO(재수행) 과 UNDO(취소)

- 데이터베이스 복구 기법

- 로그 기반 기법 : 로그파일을 이용해 복구 (REDO, UNDO)

- 검사점 복구 기법 : checkpoint (UNDO), 복구속도 빠름

- 그림자 페이징 기법 : UNDO만 씀 REDO 불필요, 다른기법과 함께 사용, 오버헤드발생가능

- 백업 종류 전체 백업 VS 차등 백업

- 전체 백업은 말 그대로 DB 전체를 백업, 차등 백업은 변경된 데이터에 대해서만 백업함


- 관계 DBMS가 지원하지 못하는 기능들을 객체관계 DBMS가 지원하는 것 3가지 ?

데이터 추상화, 상속, 캡슐화


- 데이터웨어하우스 : 내부와 외부 데이터를 주제별로 통합하여 별도의 프로그래밍 없이 즉시 분석할 수 있도록 하는 통합 시스템


- 데이터웨어하우스 모델링 : 정보분석을 쉽게 할 수 있도록 데이터를 팩트 테이블과 차원 테이블 형태로 구성

- ETL (Extraction, Transformation, Loading) : 데이터를 소스 시스템에서 추출하여 정제 후 데이터웨어하우스에 적재하는 작업까지의 전 과정


- OLAP : 최종 사용자가 매개체 없이 정보에 직접 접근하여 대화식으로 정보를 분석하고 활용.


- 데이터마이닝 : 데이터 안에서 체계적인 통계적 규칙이나 패턴을 탐색하고 이를 의미 있는 정보로 변환하여 기업의 의사결정에 적용하는 일련의 과정


- XML (Extensible Markup Language) : 웹 환경에서 데이터를 구조화하고 교환하기 위하여 표준으로 개발한 확장 가능한 마크업 언어

- XLL (Extensible Linking Language) : XML문서 간의 연결 및 XML 문서 내의 특정 위치 설정 등 링크 기능 수행 표준 언어를 의미한다


- NoSQL : 기존의 관계형 DB가 아닌 비정형, 초고용량 데이터 처리를 위해 쓰기속도에 중점을 둔 다수 서버에 데이터 복제 및 분산 저장 등 수평적 확장이 가능한 DB



'흑역사 > TOPCIT' 카테고리의 다른 글

[TOPCIT] 03. 네트워크와 보안  (0) 2018.07.27
[TOPCIT] 01. 소프트웨어 개발 정리  (0) 2018.07.24

소프트웨어 TOPCIT 교재 : https://www.topcit.or.kr/ebook/tech/ess01/JBook.htm


01. 소프트웨어 특성


- 소프트웨어 공학의 4가지 중요요소

방법 : 코딩,자료구조,테스팅 등

도구 : 소프트웨어 개발 생명주기 상의 수많은 도구

절차 : 방법 + 도구, 소프트웨어 개발을 도와줌

사람 : 사람에 대한 의존성이 큼


- 소프트웨어 생명주기

검토 -> 계획 -> 요구사항 분석 -> 구현 -> 테스트 -> 운용 -> 유지보수

- 소프트웨어 관리

유지관리 : 개발 후에도 관리

요구관리 : 관계자들로부터 요구

형상관리 : 산출물에 대한 형상을 만들고 관리

품질관리 : 계획가 일치한가 ?

- 기능성,신뢰성,사용성,효율성,유지보수성,이식성


- Q. 소프트웨어 생명주기에 관한 나선형 모델의 특징과 수행단계를 기술하고, 애자일 방법과 비교.

특징) 프로토타입을 지속적발전시켜 최종 소프트웨어 개발까지 이르게하는 점증적 방법

단계) 계획 -> 위험분석 -> 개발/구축 -> 고객 평가

비교) 1. 나선형은 문서를 통한 개발 방법이며, 애자일은 실질적인 코딩을통한 방법론.

2. 나선형은 발생하는 위험을 관리, 최소화 하지만 애자일은 변화를 수용하고 협업을 강조


- 자료구조 : 컴퓨터에서 다양한 자료를 더욱 효율적으로 활용하도록 조직적,체계적으로 구분하여 표현

- 분류 : 선형,비선형(트리,그래프)

- 자료구조 선택 기준 : 처리시간, 크기, 활용도, 갱신정도, 용이성

- 알고리즘 : 주어진 문제해결을 위한 처리 절차를 단계적으로 기술.

조건 : 입출력(0개이상입력 하나이상 결과출력), 명확성,유한성,유효성

분석기준 : 정확성, 작업량, 기억 장소 사용량, 최적성, 명확성

성능분석 : 공간 복잡도(메모리 사용량), 시간 복잡도(컴파일시간 + 실행시간)

정렬과 탐색 : 정렬 방법과 각 Sort 코딩 다 할줄 알아야 함

- 운영체제 : 컴퓨터 하드웨어와 응용프로그램간의 중재자. 시스템 자원 효율적 관리

- 프로세스 : "실행 중인 프로그램", "PCB를 가진 프로그램" (프로세스 생명주기,PCB,쓰레드 알아두기)

- 병행 프로세스 : 두 개 이상의 프로세스를 동시에 처리

오류 해결책 : 임계영역, 상호 배제, 세마포어

- 스케줄링 : 다중 프로그래밍을 지원하는 운영체제에서 프로세스를 효율적으로 CPU에게 할당하는 것

목적 : 프로세스의 공정성, 처리량 최대화, 반응시간 최소화, 예측 가능,과부화 방지 등

종류 : 선점형(CPU점유 시 다른 프로세스가 빼앗을 수 있음),비선점형(반대)

스케줄링 종류 : FIFO, SJF,SRT,RoundRobin,HRN


- 가상기억장치 : 주기억장치를 많은 여유 공간을 가진 대용량처럼 사용, 매핑

구현기법 : 페이징기법, 세그멘테이션기법

페이지 교체기법 : FIFO, LRU, LFU, NUR

성능에 영향을 미치는 요인 : 워킹 셋,스래싱,지역성


- 컴퓨터구조 키워드 : 멀티코어 프로세서, 병렬시스템(SISD ~ MIMD까지), 파이프라인 프로세서,배열,다중프로세서, 은행원 알고리즘

- 요구사항 분석과 명세화 키워드 : 기능적,비기능적 요구 / 자료흐름도,자료사전,소단위 명세서 / 유스케이스,클래스,액티비티 다이어그램

- 모델링 : 시스템의 성능 또는 동작과정 분석을 위하여 이를 간단히 도식화


- 소프트웨어 설계 원리 : 분할,추상화,정보은닉,단계적 정제,모듈화,구조화 / 응집도, 결합도 / 변환 중심 설계, 트랜잭션 중심 설계, 구조도

응집도 : 모듈 내부가 얼마나 강한 연관성으로 뭉쳐져 있는가? 응집도와 결합도는 서로 반비례함

결합도 : 모듈 사이의 상호 복잡도를 일컫는다.

응집도와 결합도의 종류 숙지 http://raisonde.tistory.com/entry/%EA%B2%B0%ED%95%A9%EB%8F%84Coupling%EA%B3%BC-%EC%9D%91%EC%A7%91%EB%8F%84Cohension

- 구조적 설계 기법 2가지 : 변환흐름 중심 설계, 트랜잭션흐름 중심 설계

변환흐름 중심 설계 : 정보를 받아들여 가공 처리한 후 그 결과를 외부세계에 출력하는 시스템을 이에 합당한 컴퓨터 구조로 매핑

트랜잭션흐름 중심 설계 : 설계에 들어온 입력을 여러 갈래의 출력흐름으로 쪼갤 수 있는 경우에 가능


- 소프트웨어 아키텍처

- 개념 : 소프트웨어 개발에 직간접적으로 영향을 미치고 복잡도를 높이는 다양한 요소들을 체계적으로 다루기 위한 개발 대상 소프트웨어의 청사진

- 설계절차 : 요구사항분석, 아키텍처 분석 및 설계, 아키텍처 검증 및 승인

- 유형 : 저장소, MVC, C-S, 계층 구조

- 설계표현방법

- 컨텍스트 모델 : 요구사항 분석 초기 시스템과 외부환경의 경계를 정해야 함, 이 모델은 시스템과 외부 환경과의 인터페이스에 초점을 둠

- 컴포넌트 다이어그램 : 잘 만들어진 부품을 사다가 조립하여 만들 수 있도록 재사용 가능한 부품을 컴포넌트라고함. 재사용해서 소프트웨어 개발 속도와 생산성 향상

- 패키지 다이어그램 : 다수의 사용자를 위해 개발된 상업용 소프트웨어를 패키지라 함. 서브시스템들 사이의 의존 관계를 나타낸 것임


- 객체지향 설계과정 키워드 : 객체, 클래스, 캡슐화, 상속, 다형성 연관, 집합 / 클래스, 속성, 관계, 연관, 오퍼레이션, 클래스 다이어그램 / 여러종류 다이어그램 / 싱글톤,메소드,파세이드,스트래티지 패턴

객체지향 설계 5원칙 SOLID

1. SRP (단일 책임의 원칙) : 하나의 클래스는 하나의 메소드만을 갖게 됨에 따라 수정에 대한 이유는 한가지여야 한다.

2. OCP (개방 폐쇄의 원칙) : 하나의 클래스는 수정에는 폐쇄되어 있고, 확장에는 개방되어 있어야 한다.

3. LSP (리스콮 치환의 원칙) : 상속의 가장 중요한 원칙, 하위클래스는 언제나 상위클래스로 참조가 가능해야 한다.

4. ISP (인터페이스 분리의 원칙) : 사용자 별로 다른 방식의 인터페이스를 제공해야 한다.

5. DIP (의존성 역전의 원칙) : 인터페이스를 통한 추상화를 통해 최대한 느슨하게 설계하자는 원칙 (리눅스 의존성 문제같은거)

- 객체는 독립적으로 존재하는 실세계의 사물, 클래스는 유사한 객체들의 모임

- 캡슐화 : 정보 은닉을 통한 추상화, 독립성 향상을 얻을 수 있는 방법, 속성과 오퍼레이션을 함께 묶어 보호하려는 방법.

- 상속 : 상위 클래스의 속성이 하위 클래스에 상속(inheritance)된다.

- 다형성 : 동일한 이름의 오퍼레이션일지라도 클래스에 따라 다르게 동작한다.


- 정적 모델링과 동적 모델링

- 정적 모델링 : 시간의 개념이 개입되지 않은 객체의 정적인 정보를 밝히는 것

- 동적 모델링 : 시스템을 구성하는 객체의 상태나 동작의 변화 혹은 객체들 사이의 상호 작용에 관심을 두고 클래스들의 오퍼레이션을 찾는 과정.


- 디자인 패턴 : 소프트웨어를 설계할 때 특정 상황에서 자주 사용하는 패턴을 정형화한 것, 좋은 소프트웨어 설계를 위한 개발자들의 경험적 산물.

- 싱글톤 패턴 : 객체의 생성과 관련된 패턴으로써 특정 클래스의 인스턴스가 오직 하나임을 보장(클래스의 객체를 한 객체로 제한), 이 인스턴스에 접근할 수 있는 방법을 제공

- 팩토리 메소드 패턴 : 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생설할지에 대한 결정은 하위 클래스에서 이루어지도록 인스턴스 생성의 책임을 미룸.

- 파세이드 패턴 : 시스템의 복잡성을 줄이기 위해 서브시스템을 구조화하고 서브시스템으로의 접근을 하나의 파세이드 객체로 제공하는 패턴

- 스트래티지 패턴 : 다양한 알고리즘을 각각 하나의 클래스로 캡슐화하여 알고리즘을 대체가 가능하도록 한 것.


- 사용자 인터페이스 설계원리 핵심 키워드 : UI/UX , HCI, GUI

- UI(:User Interface) : 일관성 필요, 사용자 중심 설계, 피드백, 파괴적인 행동에 대한 확인

- HCI(:Human Computer Interaction) : 모든 시스템은 기능 수행부분과 인터페이스 연계부분으로 나눌 수 있음, 사용자 관점에서 인터페이스는 사용자와 컴퓨터간의 대화 방식 즉 사용자에 대한 소프트웨어의 입출력 언어이다.

- GUI(:Graphic User Interaction) : 윈도우를 사용하는 경우 동시다발적으로 정보를 볼 수 있으며 사용자들이 화면을 교환하며 볼 수 있다.

- 코드 재사용 및 리팩토링 : 어떤 시점에 쓰여진 프로그램의 일부 또는 전부를 사용하는 것.

- 코드 스멜(code smell) : 코드의 가독성이 낮거나 중복된 로직을 의미

- 발생원인 : 가독성이 낮은 프로그램, 중복된 로직(복붙), 복잡한 조건문(과도한 case문)

- 소프트웨어 테스팅 : 어플리케이션 또는 시스템 동작과 성능,안정성이 사용자나 고객의 요구수준에 만족하는지 확인 및 검증하는 것

- 명세기반, 구조기반, 경험기반의 테스팅 기법이있음

- 화이트박스 : 구조적, 코드기반 테스트기법 / 단위 테스팅에서 주로 사용되고, 테스트가 가능한 소프트웨어 내에서 결함을 찾고 기능 검증

- 블랙박스 : 기능 또는 명세기반 테스트 / 주로 시스템 테스팅에서 사용되고 기능 및 비기는 요구사항을 모두 검증한다.(동등 분할, 경계값 분석 등)

- 소프트웨어 유지보수 : SDLC의 마지막 단계로 소프트웨어의 생명을 연장시키는 운영 중심의 작업단계

절차 : 현행 S/W이해 -> 요구사항 분석 -> 영향범위 파악 및 수정 -> 테스트/유지보수

역공학과 재공학, 재사용 ( 소프트웨어 3R )

- 역공학(Reverse Engineering) : 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어냄.(분석 -> 설계단계 -> 요구사항 분석 / 순공학 반대)

- 재공학 : 역공학으로 재구조화된 소프트웨어를 기반으로 다시 추상개념으로 현실화 한 것

- 재사용 : 재공학을 통해 구현 및 사용중인 소프트웨어의 사용


- 소프트웨어 형상관리 (SCM) : 소프트웨어의 개발 과정에서 소프트웨어 변경 사항을 관리하기 위해 개발된 일련의 활동 즉 개발 시점부터 유지보수가 이루어지는 단계까지 발생되는 모든 구성 요소들의 변경이력에 관련된 행동들에 대한 관리

- 형상관리활동 : 식별 -> 통제 -> 감사 -> 기록

- 서브버전(SVN) : 오픈 소프트웨어 버전 관리 시스템이다. C-S모델을 따른다.

- 분산형 저장소(git) : 클라이언트가 마지막 Snapshot을 직접 다운받지 않고 저장소 전부를 복제한다.

- TFS(Team Foundation Server) : 보고, 요구 사항 관리, 프로젝트 관리, 등 기능을 제공하는 MS제품 비쥬얼 스튜디오나 이클립스 백엔드로 사용할 때 최상의 성능


- 소프트웨어 품질관리 : 어플리케이션 생명주기 동안에 이루어지는 모든 활동과 활동 결과로 작성되는 산출물에 대한 품질을 통제하고 보증하기 위한 활동


- 애자일(Agile) : 문서작업 및 설계에 집중하던 개발 방식에서 벗어나 좀 더 프로그래밍에 집중하는 개발 방법론이다.

- 애자일 개발 방법론 XP(eXtreme Programming)

- 스크럼(SCRUM) : 프로젝트 관리를 위한 애자일 방법론으로서 추정 및 조정 기반의 경험적 관리기법의 대표적인 형태.

제품 책임자 : 백로그를 만들고 우선순위를 조정하거나 새로운 항목을 추가

스크럼 마스터 : 팀의 업무 방해요소 제거

스크럼 팀 : 5~9명으로 구성됨

- 스크럼 프로세스 산출물

제품 백로그 : 제품에 담고자하는 기능의 우선순위를 정리한 목록

스프린트 백로그 : 하나의 스프린트 동안 개발할 목록. 

소멸 차트 : 개발 완료까지 남은 작업량을 보여주는 그래프

- 모바일 컴퓨팅 특징 : 편재성, 접근성, 보안성, 편리성, 위치 확인성, 즉시 연결성, 개인화 가능성


- 그리드 컴퓨팅과 클라우드 컴퓨팅 : 그리드 컴퓨팅은 인터넷 상의 모든 컴퓨터 자원을 사용하지만, 클라우드는 사업자 사유 컴퓨팅만 사용(중앙에서 단일 조직이 관리)

- 클라우드 서비스 유형

Iaas : 서버 호스팅 같은 거

Paas : 플랫폼 제공

Saas : 소프트웨어 제공 (범위 넓)


- 하이퍼바이저 : 물리적인 서버를 가상화하는 기술 (vitual box, vmware 등)


Q. 서버 가상화 기술은 방식에 따라서 전가상화 반가상화가 있다. 커널을 수정해야 하는 방식을 선택하고 장점을 설명하라.

- 반가상화 : 운영체제가 자원을 제어하는 것이 아니라 하이퍼바이저가 직접 자원을 제어하기 때문에 속도가 빠르다.

- 소프트웨어 제품 라인 공학을 적용할 경우 얻을 수 있는 효과

- 품질 개선, 생산성 향상, 기술 내재화, 제품 출시 기간 절약

'흑역사 > TOPCIT' 카테고리의 다른 글

[TOPCIT] 03. 네트워크와 보안  (0) 2018.07.27
[TOPCIT] 02. 데이터베이스 정리  (0) 2018.07.27

+ Recent posts