본문 바로가기

Study/정보처리기사 실기

[정보처리기사 실기] 서버프로그램 구현 _ 서버 프로그램 구현

공통 모듈 구현

1) 모듈 (Module)

- 모듈화 통해 분할된 하나의 기능 수행하는 프로그램 코드 집합

- 단독으로 컴파일 가능하고 재사용 가능

- 모듈 기능 잘 수행하기 위해서는 모듈 독립성 확보 되어야 함

- 독립성 높을수록 모듈 변경 시 다른 모듈에게 영향 주지않고 오류 수정 용이


2) 모듈화 (Modularity)

 소프트웨어를 기능 단위 모듈로 계층적으로 분할하는 설계 및 구축 기법

 

소프트웨어 패키징이란 모듈로 생성한 실행파일들을 묶어 배포용 설치 파일을 만드는 것 말함

모듈화는 모듈 간 결합도 (Coupling)의 최소화와 모듈 내 요소들의 응집도 (Cohesion)를 최대화하는 것이 목표


3) 공통 모듈 구현

- 소프트웨어 개발에 있어 기능 분할 및 추상화 통해 성능 향상시키고, 유지보수 효과적으로 하기 위한 공통 코드 구현 기법

- 모듈 독립성 위해 결합도 줄이고, 응집도 높인 공통 모듈 구현 권장


모듈 독립성 평가

1) 결합도 (Coupling)

[내, 공, 외, 제, 스, 자]

- 모듈 간 상호 의존하는 정도 또는 두 모듈 사이 연관 관계

- 독립적 모듈 되기 위해서는 각 모듈 간 결합도 약해야 하며 의존하는 모듈 적어야 함

내용 결합도
(Content)
- 한 모듈이 다른 모듈 내부 자료를 직접적으로 참조하는 경우
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
공통 결합도
(Common)
- 두 모듈이 공통 데이터 영역 (전역변수 참조) 사용하는 경우
- 파라미터가 아닌 모듈 밖에 선언된 전역변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는
경우의 결합도
외부 결합도
(External)
외부선언이 되어 있는 개개 자료항목 참조하는 경우
제어 결합도
(Control)
두 모듈이 제어 요소 교환하는 경우
스탬프 결합도
(Stamp)
- 두 모듈이 동일한 자료 구조 (배열, 객체) 참조하는 경우
- 모듈 간 인터페이스로 배열이나, 객체, 구조 등이 전달되는 경우의 결합도
자료 결합도
(Data)
두 모듈이 매개변수 통해 자료 교환하는 경우

2) 응집도 (cohesion)

[기, 순, 통, 절, 시, 논, 우]

- 모듈 안 요소들이 서로 관련되어 있는 정도 의미

- 독립적 모듈 되기 위해서는 각 모듈 응집도 강해야 함

기능적 응집도
(Functional)
- 모듈 내 모든 요소가 하나의 기능 수행
- 가장 좋은 응집도
- 모든 기능들이 연관되어 그룹화된 것
순차적 응집도
(Sequential)
한 요소 출력이 다른 요소 입력으로 사용되는 경우
통신적 (교환적) 응집도
(Communication)
- 동일한 입출력 자료 이용하는 요소로 구성
- 동일한 입력과 출력을 사용하여 다른 기능 수행하는 활동
절차적 응집
(Procedural)
- 일정한 순서에 따라 처리되는 모습
- 입, 출력 간 연관성은 없으나, 순서에 따라 수행될 필요 있음
시간적 응집도
(Temporal)
특정 시간에 처리되는 몇 개의 기능 모아 구성
논리적 응집도
(Logical)
논리적으로 유사한 처리 요소들로 구성
우연적 응집도
(Coincidental)
서로 무관한 요소로만 구성

3) 모듈 계층구조

- 프로그램 구성하는 모듈 구조를 계층 형태로 나타내는 것

- 팬인 (fan-in)과 팬아웃(fan-out) 확인 가능

Fan-In (공유도) 특정 모듈 제어 (호출)하는 상위 모듈의 수
Fan-Out (제어도) 특정 모듈에 의해 제어 (호출)되는 하위 모듈의 수


서버 프로그램 구현

업무프로세스를 기반으로 개발 언어와 도구 이용해 서버에서 서비스 제공에 필요한 기능 구현하는 활동

 

1) 서버 프로그램 구현 절차

서버프로그램은 백엔드와 프론트엔드를 구분하여 구현

- 백엔드 (Back-End) : 사용자와 만나지 않고 핵심 로직 처리하는 영역으로 DB나 인터페이스 통해 시스템 접근

- 프론트엔드 (Front-End) : 사용자 화면에 나타나는 웹 화면 영역 웹 페이지 설계하는 기술

 

예시

- DTO (DataTransferObject) : 프로세스 사이에서 데이터 전송하는 객체로 Getter, Setter 메소드만 포함

- VO (ValueObject) : 값을 위한 객체이며, DTO와 비슷한 역할 수행

- DAO (DataAccessObject) : 'DB 접근 위한 로직'과 '비즈니스 로직'을 분리하기 위해 사용하며 특정 타입 DB에

추상인터페이스 제공하는 객체이므로 세부내용 노출 없이 데이터 조작 가능

 


배치 프로그램 (Batch Program)

사용자와의 상호작용 없이 작업들 반복 수행하거나 정해진 순서에 따라 자동으로 일괄 처리하는 것

 

배치 프로그램 유형

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

배치 스케줄러 (Batch Schedular)

일괄처리 위해 주기적, 반복적으로 발생하는 작업을 지원하는 도구

유형 설명
스프링 배치
(Spring Batch)
- 스프링 프레임워크 사용할 수 있는 대용량 스케쥴러
- 로그 관리, 추적, 트랜잭션관리, 통계, 재시작 기능 제공
쿼츠 스케줄러
(Quartz Scheduler)
- 스프링 프레임워크에 플러그인되어 일괄처리 위한 기능을 제공하는 오픈소스 기반 스케줄러
- 수행작업과 수행시간 요소 분리해 유연성 제공