8 서버 프로그램 구현
I. 개발환경 구축
1. 개발환경 구축
(1) 분류
- 빌드 도구
- 구현 도구
- 테스트 도구
- 형상 관리 도구
(2) 구성요소
- 하드웨어 개발환경
① 서버 하드웨어 개발환경 : 웹 서버, 웹 어플리케이션 서버, 데이터베이스 서버, 파일 서버
② 클라이언트 하드웨어 개발환경 : 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹
- 소프트웨어 개발환경
① 운영체제, 미들웨어, DBMS
- 형상 관리(Configuration Management)
① 개념 : 소프트웨어 개발을 위한 전체 과정에서의 모든 변경 사항 관리
② 목적 : 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보
③ 절차 : 형상 식별 > 형상 통제 > 형상 감사 > 형상 기록
④ 소프트웨어 형상 관리 도구 유형 : 공유 폴더 방식(RCS, SCCS), 클라이언트/서버 방식(CVS, SVN), 분산 저장소 방식(Git 등)
⑤ 소프트웨어 형상 관리 도구별 특징
CVS(Concurrent Versions System) | 다수의 인원이 동시에 범용적인 운영체제로 접근 가능 |
SVN(Subversion) | 저장소를 만들어 그곳에 소스를 저장 |
RCS(Revision Control System) | 소스 파일의 수정을 한 사람만으로 제한 |
Bitkeeper | 중앙통제방식, 대규모 프로젝트에서 빠른 속도 |
Git | Git의 속도에 중점을 둔 분산형 비전 관리 시스템 |
Clear Case | 복수 서버, 복수 클라이언트 구조 |
⑥ 소프트웨어 형상 관리 도구 사용시 유의사항 : 버전에 대한 쉬운 정보 접근성, 불필요한 사용자에 대한 접근 제어, 동일 프로젝트에 대한 동시 사용성, 빠른 오류 복구
(3) 개발환경 구축 절차
- 절차 : 통합 개발 환경 설치, 형상 관리 도구 설치, 빌드 도구 설치
- Git, SVN 주요명령어
Git | SVN | |
저장소 생성 | git init | svn import |
저장소 복제 | git clone | svn checkout |
커밋 | git commit | svn commit |
변경 내용 확인 | git diff | svn diff |
추가 | git add | svn add |
이동 | git mv | svn mv |
삭제 | git rm | svn rm |
브랜치 생성 | git branch | svn copy |
병합 | git merge | svn merge |
원격 저장소 반영 | git push | svn commit |
설정 확인 | git config | svn info |
II. 공통 모듈 구현
1. 공통 모듈 구현
(1) 개념
- 모듈(Module)의 개념 : 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체
- 특징 : 각각 모듈은 상대적 독립성 가짐, 단독으로 컴파일 가능, 재사용 가능
- 모듈화(Modularity)의 개념 및 기법
루틴(Routine) | 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령의 모임 |
메인 루틴(Main Routine) | 프로그램의 중추, 전체의 개략적인 동작 절차를 표시하도록 만듬 / 메인 루틴은 서브 루틴을 호출 |
서브 루틴(Subroutine) | 메인 루틴에 의해 필요시 마다 호출 |
- 공통 모듈 구현의 개념 : 기능 분할, 추상화 하여 성능 향상 및 유지보수를 효과적으로 하기 위한 기법
(2) 소프트웨어 모듈 응집도
- 응집도(Cohension)의 개념 : 모듈의 독립성을 나타내는 정도
- 유형(낮음->높음)
우연적 응집도(Coincidental), 논리적(Logical) 응집도, 시간적(Temporal) 응집도, 절차적(Procedural) 응집도, 통신적(Communication) 응집도, 순차적(Sequential) 응집도, 기능적(Funcional) 응집도
(3) 소프트웨어 모듈 결합도
- 결합도(Coupling)의 개념 : 외부 모듈과의 연관도 또는 상호의존도
- 유형(높음->낮음)
내용(Content) 결합도, 공통(Common) 결합도, 외부(External) 결합도, 제어(Control) 결합도, 스탬프(Stamp) 결합도, 자료(Data) 결합도
(4) 공통 모듈 구현 절차
- 순서 : DTO/VO -> SQL -> DAO -> Service -> Controller -> 화면구현
- MVC패턴 사용
(5) 팬인(Fan-In) 및 팬아웃(Fan-Out)
- 개념 : 모듈을 계층적으로 분석하기 위한 개념
- 팬인 – 자신에게 들어오는 모듈 / 팬아웃 – 자신에서 나가는 모듈
- 깊이(Depth) : 몇 계층 / 넓이(Width) : 모듈이 제일 많은 계층에서의 모듈의 수
2. 공통 모듈 테스트
(1) 종류
- 화이트박스 테스트 : 응용 프로그램의 내부 구조와 동작을 검사
- 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반 테스트
- 화면 기반 테스트 : 사용자 시나리오에 기반한 공통 모듈 테스트 가능
- 테스트 드라이버(Driver) / 테스트 스텁(Stub) : 테스트 드라이버 – 하위 모듈은 있지만 상위 모듈이 없는 경우 / 테스트 스텁 – 상위 모듈은 있지만 하위 모듈이 없는 경우
III. 서버 프로그램 구현
1. 서버 프로그램 구현
(1) 절차 : 백 엔드 와 프론트 엔드를 구분하여 구현
(2) 서버 프로그램 세부 구현
- DTO(Data Transfer Object) / VO(Value Object) 구현 : 화면에서 전달받은 정보 DB에 저장하는 객체 구현
- SQL문 구현
① DB테이블 정의 및 생성
② Mybatis XML 구현
③ 데이터 접근 객체(DAO;Data Access Object) 구현
④ Service 클래스 구현
⑤ Controller 클래스 구현
⑥ 입/출력 검증(Validation) 로직 구현
IV. 배치 프로그램 구현
1. 배치 프로그램(Batch Program)
(1) 개념 : 상호작용 없이 일련의 작업들을 작업 단위로 묶어 정기적 또는 정해진 규칙에 따라 일괄 처리 하는 방법
(2) 유형
- 이벤트 배치 : 정의해둔 조건 충족시 자동 실행
- 온디맨드 배치 : 명시적 요구가 있을 때마다 실행
- 정기 배치 : 정해진 시점(주로 야간)에 정기적으로 실행
(3) 배치 스케줄러(Batch Scheduler)
- 개념 : Batch Processing을 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
- 종류
① 스프링 배치(Spring Batch) : 스프링 프레임워크와 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공
② 쿼츠 스케줄러(Quartz Scheduler) : 스프링 프레임워크에 플러그인되어 수행하는 작업과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈소스 기반 스케줄러
- Cron표현식
① 초(쿼츠 크론만 있음) : 0~59, 특수문자
② 분 : 0~59, 특수문자
③ 시간 : 0~23, 특수문자
④ 일 : 1~31, 특수문자
⑤ 월 : 1~12, 특수문자
⑥ 요일 : 1~7, 특수문자
⑦ 연도(생략가능) : 1970~2099, 특수문자
⑧ * : 모든 수
⑨ ? : 해당 항목을 미사용
⑩ - : 기간 설정
⑪ . : 특정 기간 설정
⑫ / : 시작시간과 반복간격 설정
⑬ L : 마지막 기간에 동작
⑭ W : 가장 가까운 평일에 동작
⑮ # : 몇 번째 주, 요일 설정
(4) 배치 프로그램 설계
- 배치 프로그램 관리대장 확인
- 배치 설계서 확인
(5) 배치 프로그램 작성
- DTO, VO 구현
- SQL 문 구현
- DAO 구현
- Service 클래스 구현
- 스케줄러 등록
'자격증 > 정처기' 카테고리의 다른 글
정처기 실기 파트9 (0) | 2022.07.10 |
---|---|
정처기 실기 파트7 (0) | 2022.07.10 |
정처기 실기 파트6 (0) | 2022.07.10 |
정처기 실기 파트5 (0) | 2022.07.10 |
정처기 실기 파트4 (0) | 2022.07.10 |