2. 소프트웨어 개발
2.1 데이터 입출력 구현
2.1.1 데이터 입출력 구현 능력 단위 정의
2.1.2 논리 데이터저장소 확인
- 데이터 입출력 구현 능력 단위 정의
데이터 입출력 구현이란 응용소프트웨어가 다루어야 하는데 데이터 및 이들 간의 연관성, 제약조건을 식별하여 논리적으로 조직화하고, 소프트웨어 아키텍처에 기술된 데이터저장소에 조직화된 단위의 데이터가 저장될 최적화된 물리적 공간을 구성하고 데이터 조작언어를 이용하여 구현하는 능력이다.
- 논리 데이터 저장소 확인
1. 자료구조
1.1 자료 구조 정의
자료 구조는 컴퓨터 상에 자료를 저장하기 위해서 만들어진 논리적인 틀을 말한다. 논리 데이터저장소를 확인하기 위해서는 데이터를 저장하는 자료구조를 이해하고 있어야 한다.
1.2 자료 구조 분류
파일은 같은 타입의 레코드들의 집합을 말한다.
파일의 레코드들을 물리적 저장 장치에 저장시키기 위한 배치 방법으로서 데이터베이스의 물리적 저장 방법이 된다.
기본적으로 저장된 레코드들이 어떻게 접근할 수 있게 하느냐에 따라 크게 순차 방법, 인덱스 방법, 해싱 방법 등으로 나눌 수 있다.

1. 선형 리스트
선형 리스트는 배열과 같이 연속되는 기억장소에 저장되는 리스트이다.
선형 리스트의 대표적인 구조 : 배열
가장 간단한 자료구조이며 접근속도가 빠르다
중간에 자료를 삽입하기 위해서는 연속된 빈 공간이 있어야 한다.
자료의 삽입, 삭제 시 자료의 이동이 필요하기 때문에 번거롭다.
2. 연결 리스트
연결 리스트는 자료들을 선형 리스트처럼 연속으로 배열시키지 않고 임의의 기억 공간에 기억 시키되 각 노드의 포인터를 이용하여 서로 연결한 자료구조이다.
노드의 삽입, 삭제 작업이 용이하다.
기억공간이 연속적으로 놓여있지 않아도 저장이 가능하다.
연결을 위한 포인터가 추가로 필요하기때문에 기억공간을 더 필요로한다.
연결을 위한 포인터를 찾는 시간이 필요하기 때문에 순차리스트에 비해 느리다.
희소 행렬을 링크드 리스트로 표현하면 기억장소가 절약된다.
3. 스택
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO 형식의 자료구조
응용분야는 서브 프로그램 호출 시 복귀 주소 저장에 활용한다.
인터럽트 수행 시 복귀 주소 저장에 활용한다.
수식 연산에 활용한다.
4. 큐
스택과 달리 리스트의 한쪽 끝에서는 삽입 작업이 이루어지고, 반대쪽 끝에서는 삭제 작업이 이루어져 삽입된 순서대로 삭제되는 구조
선입선출 구조 FIFO
Front Pointer는 삭제작업, Rear Pointer는 삽입 작업을 할 때 사용한다.
5. 데크
큐의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조
두개의 포인터를 사용하여, 양쪽에서 삭제와 삽입을 발생 시킬 수 있다.
큐와 스택을 합친 형태이다.
1.3 트리
1. 트리 개념
데이터들을 계층화 시킨 자료 구조
인ㄷ덱스를 조직하는 방법으로 가장 많이 사용되는 구조
트리는 노드들과 노드들을 연결하는 링크들로 구성

2. 트리의 기본적인 성질
노드가 N개의 트리는 항상 N-1 개의 링크를 가진다.
루트에서 어떤 노드로 가는 경로는 유일하다. 또한 임의의 두 노드 간의 경로도 유일하다.
(같은 노드를 두번 이상 방문하지 않는다는 조건하에)
1.4 트리의 순회 방법
1. 중위 순회
왼쪽 서브트리를 중위 순회한다.
중간 노드를 방문한다.
오른쪽 서브 트리를 중위 순회한다.
위의 예에서 D,B,E,A,F,C 순서로 조회한다.
2. 전위 순회
중간 노드를 방문한다.
왼쪽 서브트리를 전위 순회한다.
오른쪽 서브 트리를 전위 순회한다.
위의 예에서 A,B,D,E,C,F 순서로 조회한다.
3. 후위 순회
왼쪽 서브트리를 후위 순회한다.
오른쪽 서브 트리를 후위 순회한다.
중간 노드를 방문한다.
위의 예에서 D,E,B,F,C,A 순서로 조회한다.
1.5 트리 순회방법을 활용한 수식표현법
1. 전위 표기법(prefix)
연산자, 변수, 변수(+AB)의 순서로 수식을 표현하는 표기법
연산자가 가장 먼저 나온다.
2. 중위 표기법(infix)
변수, 연산자, 변수(A+B)의 순서로 수식을 표현하는 표기법
연산자가 중간에 나온다.
3. 후위 표기법(posfix)
변수, 변수, 연산자 (AB+)의 순서로 수식을 표현하는 표기법
연산자가 가장 나중에 나온다.
4. 중위식 -> 전위식으로 표현하는 방법
Infix를 prefix나 postfix로 바꿀 때는 먼저 연산순위를 결정한다.
연산순서가 빠른 순으로 연산자를 그 연산을 수행하는 변수 앞으로 옮긴다.
5. infix -> postifx
연산순서가 빠른순으로 연산자를 그 연산을 수행하는 변수 뒤로 옮긴다.
6. prefix -> infix
앞에서부터 연산자, 변수, 변수 순으로 된 것을 찾아 연산자를 변수와 변수 사이로 옮긴다.
7. postfix -> infix
앞에서부터 변수, 변수, 연산자 순으로 된 것을 찾아 연산자를 변수와 변수 사이로 옮긴다.
1.6 이진트리
1. 이진트리의 개념
이진트리에서 각 노드는 최대 2개의 자식노드를 가진다.
각각의 자식 노드는 자신이 부모의 왼쪽 자식인지 오른쪽 자식인지가 지정된다.
2. 이진트리 종류
포화 이진트리는 모든 레벨에서 노드들이 모두 채워져 있는 트리이다.
완전 이진트리는 마지막 레벨을 제외하고 노드가 모두 채워져있는 트리이다.
마지막 레벨도 모두 다 채워져 있거나 오른쪽으로 연속된 몇개의 노드만 비어 있을 수 있다.

편향 이진트리는 트리의 노드가 왼쪽이나 오른쪽으로 한쪽으로만 노드가 있는 트리이다.
3. 이진트리 특징
높이가 h인 포화이진트리는 2의 h승 -1개의 노드를 가진다.
노드가 N개인 포화 혹은 완전 이진트리의 높이는 O(log2N)이다.
노드가 N개인 이진트리의 높이는 최악의 경우 O(N)이 될 수 있다.
1.7 그래프
1. 그래프의 개념
단순히 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 자료구조이다.
즉 연결되어 있는 객체 간의 관계를 표현할 수 있는 자료구조이다.
2. 그래프 표현 방법
그래프 G = (V,E)이고 다음 V,E는 다음과 같다.
V(G) : 정점
E(G) : 간선, 정점을 연결하는선
3. 그래프종류
무방향 그래프 : 정점을 연결하는 선에 방향이 없다.
정점(V)이 n개인 무방향 그래프에서는 최대 간선(E)가 n(n-1)/2이다.
방향 그래프 : 정점을 연결하는 선에 방향이 있다.
방향그래프에서는 두 정점에 대하여 방향이 다른 두 개의 간선을 연결할 수 있으므로 최대 간선 수는 무방향 그래프의 2배가 되어 n(n-1)이 된다.

4. 그래프 특징
그래프는 네트워크 모델이다.
루트노드, 부모-자식 관계라는 개념이 없다.
2개 이상의 경로가 가능하다.
자기 자신을 향하는 간선은 없다.
중복된 간선을 허용하지 않는다.
1.8 그래프 관련 용어
1. 완전 그래프
그래프에서 간선의 수가 최대인 그래프를 말한다.
무방향 그래프 경우 n개의 정점이 있는 경우 간선의 수는 n(n-1)/2 이다.
방향 그래프의 경우 n개의 정점이 있는 경우 간선의 수는 n(n-1)이다.
2. 인접 : 무방향 그래프에서 정점 a,b에 대하여 간선(a,b)가 있으면 정점 a는 정점 b에 인접하다고 한다.
3. 부속 : 무방향 그래프에서 정점 a,b에 대하여 간선(a,b)가 있으면, 간선(a,b)는 정점 a,b에 부속한다고 한다.
4. 부분 그래프
그래프 G에 일부분인 그래프 G'를 말한다.
5. 경로 : 정점 Vp에서 Vp로 가는 경로
6. 경로의 길이 : 경로상에 있는 간선의 수
7. 단순 경로 : 처음과 마지막을 제외하고 정점이 모두 다른 경로, 즉 경로상의 정점이 중복되지 않는 경로를 단순경로라고 한다.
8. 사이클
처음과 마지막 정점이 다른 단순 경로, 즉 단순경로 중 경로가 다시 원점에 도달하는 경우이며 사이클을 형성한다.
방향성 그래프에서는 방향성 사이클이라 한다.
9. 연결됨 : 점점 V0와 V1이 연결되어 있다는 것은 그래프 G에서 정점V0에서 V1로 가는 경로가 있는 경우이다.
2. 자료 저장 방법
2.1 순차 방법
1. 정의
레코드들의 물리적 순서가 그 레코드들의 논리적 순서와 같게 저장하는 방법이다.
2. 종류
엔트리 순차 파일 : 레코드가 시스템에 삽입되는 순서대로 만들어지는 파일
키순차 파일 : 레코드들의 키값의 크기 순으로 만들어지는 파일
3. 특징
레코드 접근은 기본적으로 레코드가 저장되어 있는 물리적 순서에 따른다.
따라서 어느 한 레코드를 접근하기 위해서는 물리적으로 이 레코드 앞에 저장되어 있는 모든 레코드들을 접근하지 않으면 안되기 때문에 이 순차파일은 파일을 복사하거나 레코드들을 순차적으로 일괄 처리 하는 응용에서 많이 사용한다.
2.2 인덱스 방법
1. 정의
기본적으로 데이터 레코드를 접근하기 위해서 먼저 인덱스를 찾아서 그 인덱스가 가리키는 주소를 따라가 원하는 레코드를 접근하는 방법이다.
2. 특징
인덱스 파일을 사용하는데 데이터파일은 인덱스 파일과 데이터 파일로 구성
인덱스 파일은 <키, 주소> 쌍으로 구성된다.
3. 종류
인덱스된 순차파일 : 하나의 인덱스를 사용
키값에 따라 정렬된 데이터 레코드를 순차적으로 접근하거나 주어진 키 값을 가지고 직접 접근하는 두가지 방법을 모두 지원하는 구조 이다.
3. 데이터 모델링 개요
3.1 데이터 모델링 정의
현실 세계의 사용자 요구사항을 컴퓨터 세계의 정보구조로 변환하기 위하여 실체와 관계를 중심으로 분석/설계하여 점차 자료구조를 만들어가는 과정이다.
3.2 데이터 모델링 목적 및 특징
1. 데이터 모델링 목적
연관 조직의 정보요구에 대한 정확한 이해를 할 수 있다.
사용자, 설계자, 개발자 간에 효율적인 의사소통 수단을 제공한다.
데이터 체계 구축을 통한 고품질 S/W와 유지보수 비용의 감소효과를 기대할 수 있다.
신규 또는 개선 시스템의 개발 기초를 제공한다.
2. 데이터 모델링 특징
데이터 중심 분석을 통한 업무 흐름 파악이 용이하다.
데이터 무결성을 보장할 수 있다.
데이터의 공유를 통한 중복을 제거하고 일관성 있는 정보를 제공받을 수 있다.
3. 데이터 모델링 절차

4. 논리 데이터저장소
4.1 논리 데이터저장소 개요
1. 논리 데이터저장소 개념
데이터 구조 등의 논리적인 자료구조로 만들어진 데이터 저장소이다.
물리 데이터 저장소와는 별개로 사용자 혹은 개발자가 이해하기 쉬운 놀리적인 구조로 추상화 하여 제공한다.
엔티티 : 관리할 대상이 되는 실체
속성 : 관리할 정보의 구체적 항목
관계 : 엔티티간의 대응 관계
2. 논리 데이터 모델링 개념
데이터 구조에 대한 논리적 정의단계로서 정확한 업무 분석을 통한 자료의 흐름을 분석하여 현재 사용 중인 양식, 문서, 장표를 중심으로 자료항목을 추출하여 추출된 엔티티와 속성들의 관계를 구조적으로 정의하는 단계이다.
논리 데이터 저장소를 설꼐하는 과정이 논리 데이터 모델링이다.
3. 논리 데이터 모델링 특성
논리적 데이터 모델링 시 요구사항을 충분히 수집하지 않으면 다음 단계의 요구사항 변경에 따른 많은 비용이 발생한다.
모든 이해당사자들과 의사소통의 보조자료로서 E-R 모델을 활용한다.
논리적 모델은 하드웨어나 소프트웨어에 독립적이다.
4.2 논리 데이터저장솧 확인 절차
1. 엔티티 확인
작성된 엔티티 목록, 엔티티 정의서, 논리 ER-Diagram과 To-Be업무 흐름도를 비교하면서 엔티티 누락 여부 및 중복 여부를 확인한다.
2. 속성 확인
엔티티 정의서에서 데이터 속성을 확인한다.
자주 사용되는 코드성 데이터는 공통코드 대상이다.
3. 데이터 흐름 확인
데이터 프로세스와 엔티티 목록으로 CRUD Matrix를 작성한다.
CRUD Matrix에서 사용되지 않는 엔티티가 있는지 확인한다.
CRUD Matrix에서 엔티티를 사용하지 않는 프로세스가 있는지 확인한다.
4. 데이터 접근 권한 및 통제 확인
다수의 사용자가 접근하는 데이터베이스에서 각 사용자 또는 사용자 집단이 자신들이 허가받은 데이터에만 접근하도록 제어해야 한다.
5. 데이터 백업 정책 및 분산 구조 확인
데이터 백업 주기 및 대상, 백업 방식에 대하여 확인한다.
'자격증 > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 13일차 (0) | 2021.01.20 |
|---|---|
| 정보처리기사 12일차 (0) | 2021.01.20 |
| 정보처리기사 10일차 (0) | 2021.01.13 |
| 정보처리기사 9일차 (0) | 2021.01.04 |
| 정보처리기사 8일차 (0) | 2020.12.31 |