정보처리기사 실기/서버프로그램 구현

서브 프로그램 구현 & 배치 프로그램 구현

· 코딩마이데이

1. 서브 프로그램 구현

업무 프로세스 확인

1. 프로세스의 개념

프로세스란 개인이나 조직이 한 개 이상의 정보 자원의 입력을 통해 가치 있는 산출물을 제공하는 모든 활동들의 집합

프로세스 모델

 

 

프로세스 모델의 구성 항목

고객 제품/서비스 또는 출력의 대상이 되는 개인이자 조직
프로세스 입력을 가치 있는 산출물로 변환시켜 출력하는 활동들
공급자 입력을 제공하는 개인이나 조직
입력 공급자에 의해 제공되는 정보 자원
출력 프로세스를 통해 고객에게 제공되는 가치 있는 제품/서비스

 

2. 프로세스의 구성요소

항목 설명
프로세스 책임자(Owner) 프로세스의 성과의 운영을 책임지는 구성원
프로세스를 설계하고 지속적으로 유지하는 사람
프로세스 맵(Map) 상위 프로세스와 하위 프로세스에 체계를 도식회(전체 업무의 청사진)
프로세스 Task 정의서 기대하는 결과물을 산출물하기 위해 Task들이 어떻게 운영되어야 하는지에 대한 문서
프로세스 성과 지표 프로세스의 과정과 결과를 고객 입장에서 정량적으로 표현한 성과 측정 지표
프로세스 조직 프로세스를 성공적으로 수행하기 위해 개인들의 업무를 유기적으로 수행하는 구성원
경영자의 리더십
(Leadership)
경영자는 프로세스의 중요성을 인식하고
기업의 경영 방침을 확고하게 해야 함

 

3. 프로세스의 맵(Map)

구조적 분석 기법에서의 자료 흐름도

 

객체 지향 분석 기법에서의 사용 사례 다이어그램

 

 

프레임워크(Framework)에 대한 이해

1. 소프트웨어 프레임워크의 정의

(1) 효율적인 정보 시스템 개발을 위한 코드 라이브러리, 애플리케이션 인터페이스 (Application Interface), 설정 정보 등의 집합으로서 재사용이 가능하도록 소프트웨어 구성에 필요한 기본 뼈대를 제공

(2) 광의적으로 정보 시스템의 개발 및 운영을 지원하는 도구 및 가이드 등을 포함

 

2. 프레임워크의 특징

항목 설명
모듈화
(modularity)
프레임워크는 인터페이스에 의한 캡슐화를 통해서 모듈화를 강화하고
설계와 구현의 변겨에 따르는 영향을 극소화하여 소프트웨어의 품질을 형상시킴
재사용성
(resuability)
프레임워크가 제공하는 인터페이스는 반복적으로 사용할 수 있는 컴포넌트를 정의할 수 있게 하여 재사용을 높여줌
소프트웨어의 품질 향상 뿐 아니라 개발자의 생산성도 높여줌
확장성
(extensibility)
프레임워크 다형성(polymorphism)을 통해 애플리케이션이 프레임워크의 인터페이스를 확장할 수 있게 함
제어의 역흐름
(Inversion of
control)
프레임워크 코드가 전체 애플리케이션의 처리 흐름을 제어하여 특정한 이벤트가 발생할 때 다형성(Polymorphism)을 통해 애플리케이션이 확장한 메소드를 호출함으로써 제어가 프레임워크로부터 애플리케이션으로 거꾸로 흐르게 함
애플리케이션에서 객체를 통제해야 하는데, 프레임워크가 객체를 통제

 

세부 업무 프로세스를 기반으로 업무 프로그램을 구현

프로그램을 구현하기 위해 서버 영역(Back End)과 화면 영역(Front End)을 구현

모듈 구현 순서 예시

 

데이터 저장 계층 또는 영속 계층(Persistence Layer)에 대한 이해

객체 설명
DAO
(Data Access Object)
특정 타입의 데이터베이스나 다른 지속적인 메커니즘에 추상 인터페이스를 제공하는 객체
애플리케이샨 흐름을 데이터 저장 부분(Persistence Layer)에 매핑함으로써 DAO는 데이터베이스의 세부 내용을 노출하지 않고 특정 데이터 조작 기능을 제공

 

DB와 관련 없는 코드들을 persistence mechanism과 분리하기 위해 사용

persistence layer => Database에 data에 CRUD(Create, Read, Update, Drop)하는 계층

비지니스 로직이 DB로부터 데이터를 얻어오기 위해 매번 Driver를 로드하고 Connection 객체를 생성하는 부담을 줄이기 위해 DB 전용 객체로만 쓰기 위함

객체 설명
 DTO
(Data Transfer Object)
프로세스 사이에서 데이터를 전송하는 객체를 의미
Database에서 Data를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체
로직을 가지고 있지 않고 data와 그 data에 접근을 위한 getter, setter만 가지고 있음
많은 프로세스 간의 커뮤니케이션이 원격 인터페이스(예: 웹 서비스)에 의해 이루어지기 때문에 전송될 데이터를 모으는 DTO를 이용해서 한 번만 호출하게 하는 것
DTO는 스스로의 데이터를 저장 및 회수하는 기능을 제외하고 아무 기능도 가지고 있지 않다는 것이 DAO와의 차이

 

DAO로 데이터베이스에 접근하고, DTO로 데이터를 전달 받음

객체 설명
VO
(Value Object)
VO는 간단한 독립체(Entity)를 의미하는 작은 객체를 의미
가변 클래스인 DTO와 다르게 getter 기능만 제공하는 불변 클래스를 만들어서 사용
DTO와 동일한 기능이지만 read only

 

서브 프로그램 테스트

소프트웨어 테스트의 원칙

(1) 개발자가 자신의 개발한 프로그램 및 소스 코드를 테스팅하지 않습니다.

(2) 효율적인 결함 제거 법칙 사용

      (가) 낚시의 법칙

       : 낚시를 즐겨하는 사람들은 특정 자리에서 물고기가 잘 잡힌다는 사실을 경험적으로 알고 있음

         소프트웨어 제품의 결합도 특정 기능, 모듈, 라이브러리에서 결함이 많이 발견된다는 것

      (나) 파레토의 법칙

       : 소프트웨어 제품에서 발견되는 전체 결함의 80%는 소프트웨어 제품의 전체 기능 중 20%에 집중되어 있음

(3) 완벽한 소프트웨어 테스팅은 불가능

(4) 테스트는 계획 단계부터 해야 함

(5) 살충제 패러독스(Pesticide Paradox)

      : 동일한 테스트 케이스를 반복 실행하면 더 이상 새로운 결함을 발견할 수 없으므로 주기적으로 테스트 케이스를 점검하

        고 개선해야 함  

(6) 오류-부재의 궤변(Absence of Errors Fallcy)

      : 사용자의 요구 사항을 만족하지 못한다면 오류를 발견하고 제거해도 품질이 높다고 말할 수 없음

 

2. 배치 프로그램 구현하기

1. 배치 프로그램의 개념

사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 것

 

2. 배치 프로그램의 필수 요소

요소 설명
대용량 데이터 대용량의 데이터를 처리할 수 있어야 함
자동화 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함
견고함 유효하지 않은 데이터의 경우도 처리해서 비정상적인 동작 중단이 발생하지 않아야 함
안정성 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 함
성능 주어진 시간 내에 처리를 완료할 수 있어야 하고,
동시에 동작하고 있는 다른 애플리케이션을 방해하지 않아야 함

 

3. 배치 스케줄러의 개념

일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

 

4. 배치 스케줄러의 공유

(1) 스프링 배치(Spring Batch) : Spring Source사와 Accenture사와 공동 작업으로 2007년에 탄생한 배치 기반 오픈소스 프레임워크

(2) Quartz 스케줄러(Schedular) : Spring Framework에 플러그인(Plug-in)되어 수행하는 Job과 실행 스케줄을 정의하는 Trigger를 분리하여 유연성을 제공하는 오픈소스 스케줄러

 

Spring Batch : 대용량 배치 처리

 

 

 

배치 프로그램 테스트

1. 디버그(Debug)의 개념

디버그(Debug) 또는 디버깅(Debugging)은 컴퓨터 프로그램의 논리적인 오류(Bug)을 찾아내는 과정을 말함

 

2. 디버거(Debugger)의 개념

디버그를 돕는 도구

디버거는 디버깅을 하려는 코드를 중단점을 지정하여 프로그램 실행을 중단하고, 코드를 단계적으로 실행하여 값을 확인 할 수 있도록 지원