CS/Others

[정보처리기사] 2과목 - 소프트웨어 개발(1)

bonggang 2020. 8. 2. 14:49

데이터 입출력 구현


자료 구조

- 프로그램에서 사용하기 위한 자료를 기억장치 공간 내에 저장하는 방법과 자료간의 관계, 처리 방법 등을 저장공간의 료율성 및 실행 간 신속성을 높이기 위해 연구 분석

 

자료 구조 분류

선형 구조(Linear Structure)

1. 배열(Array)

- 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합

- 첨자를 이용해 데이터에 접근

- 첨자의 수에 따라 n차원 배열이라 부름

 

2. 선형 리스트(Linear List)

- 일정한 순서에 의해 나열된 자료 구조

- 연속리스트(배열), 연결리스트(포인터)

+) 연속 리스트(Contiguous List):

- 기억장소가 연결적으로 배정받기 때문에 기억장소 이용 효율은 *밀도가 1이 가장 좋음

* 밀도가 1: 기억장소를 빈공간없게 꽉 차게 사용

- 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입 삭제 시 자료의 이동 필요

+) 연결 리스트(Linked List):

- 자료들을 반드시 연속적으로 배열시키지 않고 임의의 기억공간에 기억. 자료 항목의 순서에 따라 노드의 포인터 부분을 이용해 서로 연결시킨 자료구조

- 노드의 삽입/삭제 작업이 용이

- 연결을 위한 링크 부분이 필요해 기억 공간의 이용 효율이 좋지 않음

- 연결을 위한 포인터를 찾는 시간이 필요해 접근 속도가 느림

 

3. 스택(Stack)

- 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 구조

- 후입선출(LIFO, Last In First Out)

- 모든 공간이 채워진 상태에서 삽입 시 Overflow 발생

- 모든 공간이 비워진 상태에서 삭제 시 Underflow 발생

 

4. 큐(Queue)

- 리스트의 한쪽에서는 삽입 다른 쪽에서는 삭제가 이루어지는 구조

- 선입선출(FIFO, First In First Out)

 

비선형 구조(Non-Linear Structure)

1. 트리(Tree)

- 정점(Node)과 선분(Branch)을 이용해 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

- Degree(차수): 노드에서 뻗어 나온 가지 수

- 단말노드(잎 노드): 자식이 하나도 없는 노드

 

 

데이터 저장소

- SW 개발 과정에서 다루어야 할 데이터들을 논리적인 구조로 조직화하거나 물리적인 공간에 구현한 것

- 논리 데이터저장소: 데이터 및 데이터 간 연관성, 제약조건을 식별하여 논리적 구조로 조직화 한 것

- 물리 데이터조장소: 논리 데이터저장소에 저장된 데이터와 구조들을 HW 저장장치에 저장한 것

 

 

데이터 베이스(DB)

- 특정 조직의 업무를 수행하는 데 필요한 데이터 모임

- 통합된 데이터(Integrated Data): 중복 최소화

- 저장된 데이터(Stored Data): 컴퓨터 접근 가능한 저장매체에 저장

- 운영된 데이터(Operational Data): 조직 업무 수행 시 필요

- 공용 데이터(Shared Data): 여러 시스템이 공동 소유, 운영

 

 

DBMS(DataBase Management System)

- 사용자와 DB 사이에서 사용자 요구에 따라 정보를 생성해주고 DB를 관리해주는 SW

- 기존 파일 시스템이 갖는 데이터 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템

- 필수 기능: 정의, 조작, 제어

+) 정의 기능: DB에 저장될 데이터형과 구조에 대한 명시

+) 조작 기능: 데이터 검색, 갱신, 삽입, 삭제 등을 처리하기 위해 사용자와 DB 간 인터페이스 수단 제공

+) 제어 기능: 데이터 무결성이 유지되도록 제어/보안 유지, 권한 검사, 병행 제어

- 장점: 데이터 독립성, 일관성, 무결성 유지/보안 유지/데이터 실시간 처리, 통합 관리, 표준화 가능/중복 제거 및 기억 공간 절약/실시간 처리

- 단점: 전문가 부족, 전산화 비용 증가, 파일 백업/회복 어려움, 복잡한 시스템

 

 

데이터 입출력

- SW 기능 구현을 위해 DB에 데이터를 입력, 출력

 

 

SQL(Structured Query Language)

- 국제 표준 DB 언어

- 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)

 

 

데이터 접속(Data Mapping)

- 프로그래밍 코드와 DB의 데이터를 연결하는 것

- SQL Mapping: 프로그래밍 코드 내에 SQL을 직접 입력해 DBMS의 데이터에 접속하는 기술

- ORM(Object-Relational Mapping): 객체지향 프로그래밍의 객체와 관계형 DB의 데이터를 연결하는 기술

 

 

트랜잭션(Transaction)

- DB 상태를 변환시키는 하나의 논리적인 기능을 수행하기 위한 작업의 단위 또는 한 번에 수행되야 할 연산

- TCL(Transaction Control Language): 트랜잭션을 제어하기 위해 사용되는 명령어

-> COMMIT: 비정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 DB에 반영

-> ROLLBACK: 비정상적으로 종료되어 DB 일관성이 깨졌을 때 모든 변경 작업을 취소하고 이전 상태로 되돌림

-> SAVEPOINT: ROLLBACK 할 위치인 저장점을 지정

 

 

절차형 SQL

- C, JAVA 등 프로그래밍 언어와 같이 연속적으로 실행하거나 분기, 반복 등의 제어가 가능한 SQL

- 단일 SQL 문장으로 처리가 어려운 연속 작업을 처리

- BEGIN~END 형식 블록 구조로 기능별 모듈화 가능

- 절차형 SQL 종류: 프로시저, 트리거, 사용자 함수

-> 프로시저(Procedure): 특정 기능을 수행하는 일종의 트랜잭션 언어, 호출을 통해 실행되어 미리 저장해 놓은 SQL 작업 수행

-> 트리거(Trigger): DB시스템에서 데이터 입력, 갱신, 삭제 등 이벤트가 발생할 때마다 관련 작업이 자동으로 수행

-> 사용자 정의 함수: 프로시저와 유사하게 SQL을 사용해 일련의 작업을 연속적으로 처리, 종료 시 예약어 Return을 사용해 처리 결과를 단일 값으로 반환

 

 

통합 구현


단위 모듈

- SW 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것

- 사용자나 다른 모듈로부터 값을 전달받아 시작되는 작은  프로그램을 의미하기도 함

- 구현 순서: 단위기능 명세서 -> 입출력 기능 구현 -> 알고리즘 구현

 

1. 단위 기능 명세서 작성

- 단위 기능을 명세화한 문서

- 복잡한 시스템을 단순히 구현하기 위한 추상화 직업 필요

- 대형 시스템을 분해하여 단위 기능별로 구분하고 계층적으로 구성하는 구조화 과정을 거침

 

2. 입출력 기능 구현

- 단위 기능 명세서의 데이터 형식에 따라 입출력 기능을 위한 알고리즘 및 데이터 구현

- 모듈 간 연동 또는 통신을 위한 데이터 구현

- IPC(Inter Process Communication): 모듈 간 통신을 구현하기 위해 사용되는 프로그래밍 인터페이스 집합

-> 공유메모리(Shared Memory), 소켓(Socket), 세마포어(Semaphores - 접근제어), 파이프(Pipes), 메시지 큐잉(Message Queuing)

 

3. 알고리즘 구현

- 입출력 데이터를 바탕으로 단위 기능별 요구 사항들은 구현 가능 언어를 이용하여 모듈로 구현

- 구현된 단위 기능들이 사용자 요구와 일치하는지 확인 필요

- 디바이스 드라이버 모듈, 네트워크 모듈, 파일 모듈, 메모리 모듈, 프로세스 모듈

 

 

단위 모듈 테스트(단위 테스트)

- 단위 기능을 구현하는 모듈이 정해진 기능을 정확히 수행하는지 검증

- 화이트 박스 테스트: 모듈의 소스 코드를 오픈시킨 상태에서 소스 코드의 모든 논리적 경로를 테스트

- 블랙 박스 테스트: SW가 수행할 특정 기능이 완전히 작동되는 것을 입증하는 테스트

- 단위 모듈에 대한 코드이므로 시스템 수준의 오류 탐지가 어려움.

 

테스트 케이스

- 모듈을 테스트하기 위해 모듈에 입력될 수 있는 여러 값들과 예상 결과들을 나열해 목록 생성

- 구성 요소: 식별자, 테스트 항목, 입력 명세, 출력 명세, 환경 설정, 특수 절차 요구, 의존성 기술

 

테스트 프로세스

1. 계획 및 제어 단계: 목표 달성을 위한 계획 수립

2. 분석 및 설계 단계: 목표를 구체화하여 테스트 시나리오와 테스트 케이스 작성

3. 구현 및 실행 단계: 테스트 케이스들을 조합하여 테스트 프로시저에 명세

4. 평가 단계: 테스트가 계획과 목표에 맞게 수행되었는지 평가, 기록

5. 완료 단계: 이후 테스트를 위해 수행 과정과 산출물을 기록 및 저장

 

 

개발 지원 도구

1. 통합 개발 환경(IDE, Integrated Development Environment)

- 개발에 필요한 환경(편집기, 컴파일러, 디버거 등)을 통합하여 하나의 인터페이스로 제공

2. 빌드 도구

- 소스 코드를 SW로 변환하는 과정에 필요한 전처리, 컴파일 등의 작업들을 수행하는 SW

- Ant, Maven, Gradle 등

3. 협업 도구

- 개발에 참여하는 사람들이 서로 다른 작업 환경에서 프로젝트를 수행할 수 있도록 도와주는 도구

 

 

제품 소프트웨어 패키징


SW 패키징

- 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것

- 개발자가 아닌 사용자 중심으로 진행

- 소스 코드는 향후 관리를 고려해 모듈화하여 패키징

- 다양한 환경을 고려해 일반적인 배포 형태로 패키징

고려사항

- 사용자 시스템 환경(OS, CPU, 메모리 등)에 필요한 최소 환경 정의

- UI는 시각적인 자료와 함께 제공하고 메뉴얼과 일치시켜 패키징함

- SW를 패키징해 배포한 이후 HW와 함께 관리될 수 있도록 Managed Service 형태로 제공하는게 좋음

작업 순서

- 기능 식별 -> 모듈화 -> 빌드 진행 -> 사용자 환경 분석 -> 패키징 및 적용 시험 -> 패키징 변경 개선 -> 배포

 

 

릴리즈 노트

- 개발 과정에서 정의된 릴리즈 정보를 SW의 최종 사용자인 고객과 공유하기 위한 문서

- SW 버전 및 릴리즈 정보를 체계적으로 관리 가능

- SW 초기 배포 또는 개선 사항 적용 후 추가 배포 시 제공

고려사항(초기사항)

- 정확하고 완전한 정보를 기반으로 개발팀에서 직접 현재 시제로 작성

- 신규 코드, 빌드 등 이력이 정확하게 관리되어 변경 또는 개선된 항목에 대한 이력 정보도 작성

고려사항(추가버전)

- 베타 버전이 출시되거나 긴급 버그 수정, 업그레이트, 사용자 요청 등 특수한 상황의 경우 작성

작성 순서

- 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 항목 식별

 

 

디지털 저작권 관리(DRM)

- 저작권: 창작자가 가지는 배타적 독점적 권리로 타인의 침해를 받지 않을 고유한 권한

- 저작권자가 배포한 디지털 콘텐츠가 저작권자가 의도한 용도로만 사용되도록 디지털 콘텐츠의 생성, 유통, 이용까지의 전 과정에 걸쳐 사용되도록 디지털 콘텐츠를 관리 및 보호하는 기술

- 크기가 작은 경우 사용자가 콘텐츠를 요청하는 시점에 실시간 패키징 수행, 클 경우 미리 패키징 수행 후 배포

- 종량제 방식을 적용한 SW의 경우 서비스의 실제 사용량을 측정하여 이용한만큼 부과

- 패키징 수행 시 콘텐츠에는 암호화된 저작권자의 전자서명이 포함되고 저작권자가 설정한 라이센스 정보가 *클리어링 하우스에 등록됨.

* 클리어링 하우스: 디지털 저작권 라이센스 중개 및 발급을 수행

- 기술 요소: 암호화, 키 관리, 암호화 파일 생성, 식별 기술, 저작권 표현, 정책 관리, 크랙 방지, 인증

 

 

SW 설치 매뉴얼

- 개발 초기에서부터 적용된 기준이나 사용자가 SW를 설치하는 과정에 필요한 내용을 기록한 문서

- 설치 시작부터 완료까지의 과정을 순서대로 설명

- 서문: 문서 이력, 설치 매뉴얼 주석, 설치 도구의 구성, 설치 환경 체크 항목 기술

- 기본 사항: SW 개요, 설치 관련 파일, 설치 아이콘, 프로그램 삭제, 관련 추가 정보

- 작성방법: 설치 화면 및 UI, 설치 이상 메시지, 설치 완료 및 결과, 설치 시 점검 사항, Network 환경 및 보안, 고객 지원 방법, FAQ, 준수 정보 및 제한 보증 등

- 순서: 기능 식별 -> UI 분류 -> 설치/백업 파일 확인 -> 삭제 절차 확인 -> 이상 케이스 확인 -> 최종 매뉴얼 작성

 

 

SW 사용자 매뉴얼

- 사용자가 SW를 사용하기 위해 필요한 내용을 기록한 문서

- 서문: 문서 이력, 사용자 매뉴얼 주석, 기록 보관 내용

- 기본 사항: SW 개요, 사용 환경, 관리 모델 버전별 특징, 기능 및 인터페이스 특징, 구동 환경 설명

- 작성방법: 사용자 화면 및 UI, 주요 기능 분류, 응용 프로그램 및 설정, 장치 연동, Network 환경, Profile 안내, 고객 지원 방법, 준수 정보 및 제한 보증 등

- 작성 순서: 기능 식별 -> 사용자 화면 분류 -> 사용자 환경 파일 확인 -> 초기화 절차 확인 -> 이상 케이스 확인 -> 최종 매뉴얼 작성

 

 

SW 버전 등록

- SW 패키징 형상 관리: 변경 사항을 관리하기 위한 활동

- 형상 관리는 개발 전체 비용을 줄이고 여러 방해 요인이 최소화 되도록 보증하는 것을 목적

- 형상 관리의 중요성: 변경 사항을 체계적으로 관리 및 추적, 버그 및 수정 사항 추적, 무절제한 변경 방지, 진행 정도 확인

 

형상 관리 기능

- 형상 식별: 대상에 이름과 관리 번호 부여, 계층 구조로 구분

- 버전 제어: 다른 버전의 형상 항목을 관리하고 특정 절차와 도구를 결합하는 작업

- 형상 통제: 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 하는 작업

- 형상 감사: 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

- 형상 기록: 형상 식별, 통제, 감사 작업 결과를 기록하고 관리

 

 

참고 자료


https://powerdev.tistory.com/50?category=878089

https://1d1cblog.tistory.com/154?category=847035