728x90

소프트웨어 개발

1장 데이터 입, 출력 구현

34. 자료구조

저장 공간의 효율성과 실행시간의 신속성을 위한 자료의 처리 방법

선형구조 : 배열, 선형 리스트(연속 리스트, 연결 리스트), 스택, ,

스택 : 후입선출(LIFO). 꽉 찬 상태에서 삽입 시 오버플로, 없을시 삭제하면 언더플로 발생.

: 선입선출(FIFO). 오버플로, 언더플로 둘 다 가능

 

35. 데이터저장소 / 데이터베이스 / DBMS

데이터저장소 : 논리, 물리 데이터저장소로 구분.

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

             물리 데이터 저장소 : 논리 데이터저장소에 저장된 데이터와 구조를 하드웨어적인 저장장치에 저장한 것

데이터베이스

             통합된 데이터(Integrated Data) : 중복을 배제한 데이터의 모임

             저장된 데이터(Stored Data) : 컴퓨터가 접근할 수 있는 저장매체에 저장된 자료

             운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는 데 존재 가치가 확실하고 없으면 안됨

             공용 데이터(Shared Data) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료

            

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

필수 기능 3가지

             1) 정의 기능 : 데이터의 형과 구조에 대한 정의 등을 명시

             2) 조작 기능 : 데이터 검색, 갱신, 삽입, 삭제 등의 수단 제공

             3) 제어 기능 : 무결성, 권한검사, 병행 제어를 가능하게 한다.

 

36. 데이터 입, 출력

SQL(Structured Query Language) : 관계 대수와 관계해석을 기초로 한 혼합 데이터 언어. DDL, DML, DCL로 나뉨

데이터 접속 : 프로그래밍 코드와 데이터베이스를 연결하는 것

             SQL Mapping : 코드 내에 SQL을 직접 입력하는 방식. JDBC, ODBC, MyBatis

             ORM(Object-Relational Mapping) : 객체와 데이터베이스를 연결하는 기술. JPA, Hibernate, Django

트랜잭션(Transaction) : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위.

트랜잭션을 제어하기 위한 명령어를 TCL이라고 하며 COMMIT, ROLLBACK, SAVEPOINT가 있다.

             COMMIT : 트랜잭션 처리가 종료되어 변경 내용을 DB에 반영하는 명령어

ROLLBACK : 하나의 트랜잭션 처리가 비정상적으로 종료되었을 떄 모든 변경 작업을 취소하고 이전 상태로 되돌리는 연산

SAVEPOINT(CHECKPOINT) : ROLLBACK할 위치인 저장점을 지정하는 명령어

 

37. 절차형 SQL

절차형 SQL : 프로그래밍 언어처럼 연속적인 실행이나, 분기, 반복 등의 제어가 가능한 SQL. 프로그래밍 언어에 비해 효율은 떨어지지만 단일 SQL 문장으로 처리하기 어려운 작업 처리에 적합하다. ,출력 패킷은 적은 편BEGIN~END의 블록 구조로 되어있어 모듈화 가능

             프로시져 : 호출을 통해 실행되어 미리 저장한 SQL 작업 수행

             트리거 : 데이터의 입력, 갱신, 삭제 등의 이벤트 발생 시 자동으로 수행

             사용자 정의 함수 : 일련의 작업을 연속적으로 처리, Return을 통해 결과를 단일값으로 반환한다.

디버깅은 삽입 및 변경 관련 SQL문을 주석 처리하고, 출력문을 이용해 확인한다. SHOW 명령어를 사용해서 오류를 자세히 확인한다.

 

2장 통합구현

38. 단위 모듈 구현

단위 모듈 : 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것. 독립적인 컴파일이 가능하다.

             처리문, 명령문, 데이터 구조 등이 포함되어 있다.

             단위 기능 명세서 작성 -> ,출력 기능 구현 -> 알고리즘 구현

IPC : 모듈 간 통신 방식을 구현하기 위해 사용되는 프로그래밍 인터페이스 집합

Shared Memory, Socket, Semaphores, Pipes&named Pipes, Message Queueing

디바이스 드라이버 모듈 : 하드웨어 주변 장치의 동작을 구현한 모듈

네트워크 모듈 : 네트워크 장비 및 데이터 통신을 위한 기능을 구현한 모듈

파일 모듈 : 컴퓨터 내부의 데이터 구조 영역에 접근하는 방법을 구현한 모듈

메모리 모듈 : 파일을 가상 메모리에 매핑/해제하는 방법, 프로세스 사이의 통신 기능을 구현한 모듈

프로세스 모듈 : 하나의 프로세스 안에서 다른 프로세스를 생성하는 방법을 구현한 모듈

39. 단위 모듈 테스트

모듈이 기능을 정확히 수행하는지 검증하는 것. 단위 테스트(Unit Test)라고 하며, 화이트박스 테스트와 블랙박스 테스트 기법 사용. 시스템 수준의 오류는 잡아낼 수 없다.

테스트 프로세스 5단계

1) 계획 및 제어 단계

2) 분석 및 설계 단계 : 테스트 시나리오와 테스트 케이스를 작성

3) 구현 및 실행 단계 : 테스트 케이스를 조합해 테스트 프로시저에 명세하는 단계., 테스트 수행

4) 평가 단계

5) 완료 단계

테스트 시나리오 : 테스트 케이스를 순서에 따라 여러 개를 묶은 집합

테스트 프로시져 : 테스트 케이스의 실행 순서를 의미. 테스트 스크립트라고도 한다.

 

40. 개발 지원 도구

통합 개발 환경(IDE) : 편집기, 컴파일러, 다버거 등의 다양한 툴을 하나의 인터페이스로 통합, 제공

빌드 도구 : 소스 코드 파일들을 컴퓨터에서 실행할 수 있게 변환하는 과정. 소스 코드의 전처리, 컴파일 등의 작업 수행. ex) Ant, Maven, Gradle

Ant : 아파치에서 개발한 SW. 자바 프로젝트의 공식적인 빌드 도구. XML 기반. 정해진 규칙이 없다.

Maven : 아파치에서 개발, Ant의 대안으로 개발. 의존성을 설정해 관리

Gradle : 둘 다 보완해서 개발한 도구. 의존성 활용, Groovy 기반의 빌드 스크립트 사용

협업도구, 그룹웨어(Groupware) : 서로 다른 작업 환경에서 프로젝트를 구행하도록 도와주는 도구

 

3. 제품 소프트웨어 패키징

41. 소프트웨어 패키징

소프트웨어 패키징 : 실행 파일들을 묶어 배포용 설치 파일을 만드는 것. 사용자를 중심으로 진행한다.

패키징 작업 순서 : 애자일 기법인 경우 2~4주 내에 지정, 각 주기가 끝날때마다 패키징 수행.

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

 

42. 릴리즈 노트 작성

릴리즈 정보를 사용자인 고객과 공유하기 위한 문서. 개선된 작업이 있을 대마다 릴리즈 노트에 담아 제공.

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

 

42. 디지털 저작권 관리(DRM)

디지털 컨텐츠 관리 및 보호 기술이다. 아날로그인 경우 디지털로 변환 후 패키저에 의해 DRM 패키징 수행

크기가 작은 경우 사용자가 요청하는 시점에 패키징, 큰 경우에는 미리 패키징해서 배포

패키징 수행 시 컨텐츠에 암호화된 전자서명이 포함되고, 라이선스 정보가 클리어링 하우스에 등록된다.

클리어링 하우스 : 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제관리

패키저 : 컨텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램

DRM 컨트롤러 : 배포된 컨텐츠의 이용 권한을 통제

보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 윟나 전자적 보안 장치

디지털 저작권 관리 기술

암호화, 키 관리, 식별 기술, 저작권 표현, 정책 관리, 크랙 방지, 인증

 

44. 소프트웨어 설치 매뉴얼 작성

45. 소프트웨어 사용자 매뉴얼 작성

사용자 매뉴얼은 사용자가 소프트웨어를 사용하면서 필요한 제반 사항이 모두 포함되도록 작성. 컴포넌트 명세서와 컴포넌트 구현 설계서를 토대로 작성한다.

Profile : 소프트웨어의 구동 환경을 점검하는 파일.

 

46. 소프트웨어 버전 등록

형상 관리는 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동이다.

주요 용어

             저장소 : 최신 버전의 파일들과 변경 내역들이 저장된 곳

             Import : 아무것도 없는 저장소에 처음 파일을 복사하는 것

             Check-out : 저장소에서 파일을 받아오는 것, 버전 관리를 위한 파일들도 받아온다.

             Check-in : 체크아웃한 파일의 수정을 완료한 후 저장소에 파일을 갱신

             Commit : 체크인 이전에 갱신된 내용이 있는 경우 충돌을 알린다.

             Update : 저장소의 최신버전으로 내 작업공간을 동기화.

 

47. 소프트웨어 버전 관리 도구

공유 폴더 방식 : 로컬 컴퓨터의 공유 폴더에 저장되어 관리하는 방식. SCCS, RCS, PVCS, QVCS

클라이언트/서버 방식 : 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식. 서버에 문제가 생기면 작업이 중단된다. CVS, SVN, Clear Case

분산 저장소 방식 : 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장. Git

 

Subversion(SVN) : CVS를 개선한 것, 아파치에서 개발. 모든 작업은 trunk 디렉토리에서 수행, 추가 작업은 branches 디렉토리 안에 별도의 디렉토리를 만들어 작업한 후 trunk와 병합.

   커밋할 때마다 리비전(Revision)1씩 증가.

             add : 새로운 파일을 버전관리 대상으로 등록

             commit : 버전 관리 대상 파일을 서버에 적용

             update : 서버의 최신 commit 이력을 클라이언트에 적용

             checkout : 서버에서 클라이언트로 소스파일 받아오기

             import : 빈 저장소에 맨 처음 소스파일 받아오기

             export : 순수한 소스 파일만을 받아오기

             info : 파일에 대한 위치나 수정 정보 등 표시

             diff : 이전 리비전과의 차이 표시

Git : 리누스 토발즈가 리눅스에서 발표

             add : 작업 내역을 스테이징 영역에 추가

commit : 지역 저장소에 저장

branch : 브랜치 생성

checkout : 브랜치로 이동

init : 지역 저장소 생성

remote add : 원격 저장소에 연결

push : 원격 저장소에 지역 저장소의 변경 내역을 반영

fetch / clong : 원격 저장소의 내용을 지역 저장소로 복제

fork : 지정한 원격 저장소의 내용을 내 원격 저장소로 복제.

 

48. 빌드 자동화 도구

빌드 자동화 도구 : 빌드를 포함해 테스트 및 배포를 자동화하는 도구. Ant, Make, Mave, Gradle, Jenkins

Jenkins : Java 기반의 오픈 소스. 서블릿 컨테이너에서 실행되는 서버 기반 도구. Web GUI로 사용이 쉽다.

Gradle : Groovy를 기반으로 한 오픈 소수. 안드로이드 앱 개발에서 사용. 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행한다.

 

728x90

+ Recent posts