상세 컨텐츠

본문 제목

정보처리기사 실기 - 8.서버 프로그램 구현

ETC

by jeonghojin 2022. 4. 3. 16:07

본문

※학습목적으로 정리해놓은 내용입니다. 하단에 출처 표기

8. 서버 프로그램 구현

8-1 개발환경 구축

 

개발 도구의 분류(발구테형)

구분 설명
빌드 도구 - 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
구현 도구 - 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
- 프로그램을 개발할 때 가장 많이 사용되는 도구
테스트 도구 - 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
형상 관리 도구 - 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함되는 도구

 

 

형상 관리의 절차(식통감기)

절차 설명
형상 식별 - 형상관리 대상을 정의 및 식별하는 활동
- 추적성 부여를 위해 ID와 관리번호를 부여
- 변경 관련 이슈 발생 시 ID와 관리번호를 이용하여 추적
형상 통제 - 형상 항목의 버전 관리를 위한 형상통제위원회 운영
- 변경요구 관리, 변경제어, 형상 관리 등 통제 지원
- 베이스라인에 대한 관리 및 형상 통제 수행 가능
형상 감사 - 소프트웨어 베이스라인의 무결성 평가
- 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록 - 소프트웨어 형상 및 변경관리에 대한 각종 수행결과를 기록
- 형상결과 보고서 작성

 

소프트웨어 형상 관리 도구 유형(공클분)

형상 관리 도구 유형 설명
공유 폴더 방식
(RCS, SCCS)
- 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동적 여부 확인
- 정상 독작일 경우 다음날 각 개발자들이 동작 여부 확인
클라이언트/서버 방식
(CVS, SVN)
- 중앙에 버전 관리 시스템을 항시 동작시키는 방식
- 개발자들의 현재 작업 내용과 이전 작업내용 추적에 용이
- 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력
분산 저장소 방식
(Git 등)
- 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
- 중앙의 저장소에서 로컬 파일을 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성
- 개발 완료한 파일을 수정한 다음에 로컬 저장소에 우선적으로 커밋(Commit)한 이후, 다시 원격 저장소에 반영(Push)하는 방식

* JDK : 자바 애플리케이션을 구축하기 위한 핵심 플랫폼이다.

* Maven(메이븐) : Java 기반 프로젝트 관리를 목적으로 하는 빌드 도구로 컴파일, 빌드, 패키지, 테스트, 라이브러리 관리 기능이 있다.(pom.xml 활용)

 

* Gradle(그래들) : 그루비(Groovy)를 기반으로 한 빌드 도구로 Ant와 Maven등 이전 세대 빌드 도구의 단점을 보완하고 개선했다.

* 브랜치(Branch) : 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이다. 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스 코드를 변경할 수 있는 기능이다.


8-2 공통 모듈 구현

(1) 공통 모듈 구현의 개념

1. 모듈의 개념

- 모듈은 그 자체로 하나의 완전한 기능을 수행할 수 잇는 독립된 실체이다.

- 모듈화를 통해 분리된 시스템의 각 기능들로 서브프로그램, 서브 루틴, 소프트웨어 내의 단위 프로그램, 작업 단위 등과 같은 의미로 사용된다.

 

3. 모듈화(Modularity)의 개념 및 기법

- 모듈화는 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법이다.

기법 설명
루틴
(Routine)
- 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
메인 루틴
(Main Routine)
- 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
- 메인 루틴은 서브 루틴을 호출
서브 루틴
(Subroutine)
- 메인 루틴에 의해 필요할 때마다 호출되는 루틴

 

* 공통 모듈(Common module) : 전체 프로그램의 기능 중 특정 기능을 처리할 수 있

는 실행 코드이다. 자체적으로 컴파일이 가능하고, 다른 프로그램에서 재사용이 가능하다.

 

응집도 :

모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도이다.

하나의 모듈은 하나의 기능을 수행할수록 응집도가 높다.

 

응집도의 유형(우논시절 통순기)

유형 설명
우연적 응집도
(Coincidental Cohesion)
모듈 내부의 각 구성요소가 연관리 없을 경우의 응집도
논리적 응집도
(Logical Cohesion)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
시간적 응집도
(Temporal Cohesion)
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
절차적 응집도
(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
통신적 응집도
(Communication Cohesion)
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
순차적 응집도
(Sequential Cohesion)
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
기능적 응집도
(functional Cohesion)
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

 

결합도 :

- 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.

- 소프트웨어 구조에서 모듈 간의 관련성을 측정하는 척도이다.

 

결합도의 유형(내공 외제 스자)

유형 설명
내용 결합도
(Cortent Coupling)
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
공통 결합도
(Common Coupling)
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
외부 결합도
(Extenal Coupling)
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
제어 결합도
(Control Coupling)
단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 저리를 해야 한다는 제어요소가 전달되는 경우의 결합도
스탬프 결합도
(Stamp Coupling)
모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
자료 결합도
(Data Coupling)
모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우의 결합도

 

* DAO(Data Access Object) : 특정 타입의 데이터베이스에 추상 인터페이스를 제공하는 객체로 세부내용 노출업이 데이터를 조작하는 객체이다.

 

* VO(Value Object) : 간단한 엔티티를 의미하는 작은 객체 가변 클래스인 DTO와 달리 고정 클래스를 가지는 객체이다.

 

* DTO(Data Transfer Object) : 프로세스 사이에서 데이터를 전송하는 객체로 데이터 저장,회수 외에 다른 기능이 없는 객체이다.

 

* 서비스(Service) : 사용자의 요청을 처리하는 기능을 제공하기 위한 로직을 구현하고 DAO 클래스를 통해서 DB 연동을 처리하는 기능을 수행하는 클래스이다.

 


8-3 서버 프로그램 구현

서버 프로그램 세부 구현 프로세스

DTO/VO 구현 - SQL 문 구현 - DAO 구현 - Service 구현 - Controller 구현


8-4 배치 프로그램 구현

배치 프로그램의 유형(이온정)

유형 설명
이벤트 배치 사전에 정의해 둔 조건 충족 시 자동으로 실행
온디맨드 배치 사용자의 명시적 요구가 있을 때마다 실행
정기 배치 정해진 시점(주로 야간)에 정기적으로 실행

 

배치 스케줄러의 종류

종류 설명
스프링 배치
(Spring Batch)
스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
쿼츠 스케줄러
(Quartz Scheduler)
스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러

 

리눅스/유닉스 크론 표현식

분, 시간, 일, 월, 요일, 연도(생략가능)

 

쿼츠 크론 표현식

초, 분, 시간, 일, 월, 요일, 연도(생략가능)

 

크론 표현식 특수문자 의미

기호 의미
* 모든 수
? 해당 항목을 미사용
- 기간 설정
, 특정 기간 설정
/ 시작시간과 반복간격 설정
L 마지막 기간에 동작
W 가장 가까운 평일에 동작
# 몇 번째 주, 요일 설정

크론 표현식 특수문자 의미

0 0 12 * * ? 매일 12시에 실행
0 15 10 * * ? 매일 오전 10시 15분에 실행
0 * 14 * * ? 오후 14시에서 15시 사이에 매 분마다 실행
0 0/5 14,20 * * ? 매일 14시에 시작하여 14시 55분까지 5분마다 실행, 20시 정각부터 20시 55분까지 5분마다 실행
0 0 20 ? * MON-FRI 매주 월요일과 금요일 사이 20시에 실행
0 15 10 15 * ? 매달 15일 10시 15분에 실행
0 15 10 L * ? 매달 마지막 날 10시 15분에 실행
0 15 10 ? * 6L 2020-2021 2020년부터 2021년 매달 마지막 토요일 10시 15분에 실행
0 15 10 15 * ? 매달 15일 10시 15분에 실행
0 11 11 1 1 ? 1월 1일 11시 11분마다 실행

출처 : 수제비 2021 정보처리기사 실기 Vol.1 - 도서출판 건기원

관련글 더보기