본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Developer_Study/정보처리기사

[정보처리기사 실기] 8과목 - 서버 프로그램 구현

by 케리's 2023. 2. 27.

01. 개발환경 구축

개발환경 구성을 위한 도구의 분류가 중요하다.

 

1. 개발도구의 분류

구분 설명
빌드도구 작성한 코드의 빌드 및 배포 수행
각각의 구성 요소와 모듈에 대한 의존성 관리 지원
ex) Ant, Maven, gradle
구현도구 개발자의 코드작성과 디버깅, 수정등과 같은 작업을 지원하는 도구
프로그램을 개발할 때 가장 많이 사용하는 도구
ex) Eclipse, InteliJ, Spring Tool Suite, NetBeans, Visual Studio
테스트도구 코드의 기능 검증과 전체 품질 높이기 위해 사용
코드의 테스트, 테스트에 대한 계획 수행 및 분석 등 작업가능
ex) xUnit, PMD, Findbus, Cppcheck, Sonar
형상관리도구 개발자들이 작성한 코드와 리소스등 산출물에대한 버전관리 위한 도구
프로젝트 진행 시 필수로 포함되는 도구
ex) CVS, Subversion, Git

 

2. 개발환경 구성요소

1) 하드웨어 개발환경

(1) 서버 하드웨어 개발환경 

구분 설명
웹 서버 HTTP를 이용한 요청/응답 처리
웹 상의 정적 콘텐츠 (CSS, JS, Image) 처리
WEB - WAS - DB 3계층 구조를 실무에서 활용
ex) Apache 웹서버,  IIS 웹서버, Google Web Server, Nginx
웹 어플리케이션 서버  동적 콘텐츠 (Servlet, JSP) 를 처리하기위해 사용
ex) Tomcat, Weblogic, Jeus, Resin 등
DB서버 데이터의 수집, 저장을 위한 용도로 사용
DBMS - Mysql, oracle, ms-sql db2
파일서버 파일저장 하드웨어로 물리 저장장치를 활용한 서버
HDD,SSD장치

 

(2) 클라이언트 하드웨어 개발환경

구분 설명
클라이언트 프로그램 설치를 통해 사용자와 커뮤니케이션하는 프로그램
Visual Basic, C#, Delphi등으로 개발되어 사용
웹 브라우저 웹 서비스 형태로 서버에서 웹 애플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션
일반적인 형태의 웹사이트
모바일 앱 모바일 디바이스에 설치되어 활용되는 애플리케이션
앱스토어, 안드로이드 마켓 등 통해 다운로드 가능
모바일 웹 웹 브라우저와 동일한 형태로 모바일상 웹 프라우저를 통해 서비스를 제공
모바일에 최적화 되어 제공되는 웹사이트가 해당

 

2) 소프트웨어 개발환경

구분 설명
운영체제 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
프로젝트의 성격에 따른 운영체제 사용
미들웨어 컴퓨터와 컴퓨터간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
자바 기반 환경에서 JVM을 설치하여 컨테이너로 기능을 주로 이용
DBMS 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어
데이터의 저장 및 활용을 위해 DBMS설치

 

3) 형상관리

소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동 

 

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

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

 

(2) SW 형상관리 도구 유형 - 공클분

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

 

02. 공통 모듈 구현

1. 모듈

그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체

 

2. 모듈화

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

 

3. 응집도(Cohesion) 와 결합도 (Coupling)

1) 응집도 - 우논시절통순기 (기능적 응집도 좋음, 응집도가 높음)

모듈의 독립성을 나타내는 정도, 모듈 내부 구성요소간 연관 정도, 하나의 모듈은 하나의 기능을 수행할 수록 응집도가 높다.

유형 설명
우연적 응집도
(Coincidental Cohesion)
모듈 내부의 각 구성요소가 연관이 없을 경우
ex) 아무상관 없는 모듈끼리 모아둠
논리적 응집도
(Logical Cohesion)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
ex) 비슷한 모듈끼리 모아둠
시간적 응집도
(Temporal Cohesion)
연관된 기능이라기 보다 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
ex) 같은 시간대에 일어나는 모듈을 모아둠
절차적 응집도
(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
ex) 모듈 내부의 기능이 순차적으로 수행되는 경우
통신적 응집도
(Communication Cohesion)
동일한 입, 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우 응집도
ex) 동일한 입력 동일한 출력을 모아둔것
순차적 응집도
(Sequential Cohesion)
모듈 내에서 한 활동으로 부터 나온 출력값을 다른 활동이 사용할 경우
ex) 출력값이 나왔으면 그 출력값을 입력값으로 사용하는것
기능적 응집도
(Functional Cohesion)
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 
ex) +함수의 기능을 하기위해 똘똘 뭉쳐져있음, + 말고는 아무것도 안함

 

2) 결합도 - 내공외제스자 (자료 결합도가 좋음, 자료 결합도는 낮음)

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

유형 설명
내용 결합도
(Content Coupling)
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
ex) 서로 얽혀있는 스파게티 코드일때
공통 결합도
(Common Coupling)
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수 참조하고 전역 변수를 갱신하는 식으로 상호작용 하는 경우 결합도
ex) 전역 변수 참조할때
외부 결합도
(External Coupling)
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우 결합도
ex) 외부의 있는 변수를 참조했을때  
제어 결합도
(Control Coupling)
단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우 결합도
ex) 제어 요소 전달 : f a(x, y, z) → if (x > 10) 일때 전달
스탬프 결합도
(Stamp Coupling)
모듈간의 인터페이스로 배열이나 오브젝트, 스트럭처 등 전달되는 경우
ex) 자료구조를 넘김 : int (*X) → 포인터 또는 [] 배열을 넘길때
자료 결합도
(Data Coupling)
모듈 간의 인터페이스로 값이 전달되는 경우
ex) 데이터 전달 : f a(int x) → a(10) 파라미터 전달

 

4. 공통 모듈 구현 절차 

DTO/VO → SQL → DAO → Service → Controller → 화면

 

* 루틴(Routine)  : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로서 기능을 가진 명령들의 모임

 

 

03. 배치프로그램 구현

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

 

1. 배치 프로그램 유형 - 이온정

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

 

2. 배치 스케줄러 

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

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

 

3. Cron 표현식 - 초분시일월요년

스케줄러를 실행 시키기 위해 작업이 실행되는 시간 및 주기등을 설정하게 되는데 크론 표현식을 통해 배치 수행 시간을 설정한다.

표현식은 크게 리눅스/유닉스(초 없음) 와 쿼츠(초 있음)로 구분된다. (초의 유무에 따라 차이가 있음)

 

순서 필드이름 허용 값
1 0~59, 특수문자
2 0~59, 특수문자
3 0~23, 특수문자
4 1~31, 특수문자
5 1~12, JAN ~ DEC 특수문자
6 1~7, SUN ~ SAT 특수문자
7 1970 ~ 2099, 특수문자
기호 의미
* 모든 수
? 해당 항목을 미사용
- 기간 설정
, 특정 기간 설정
/ 시작 시간과 반복 간격 설정
L 마지막 기간에 동작
W 가장 가까운 평일에 동작
# 몇번째 주, 요일 설정

 

1) 예시

사용 예 의미
0 0 12 * * ? 매일 12시에 실행
0 15 10 * * ?  매일 오전 10시 15분에 실행
0 * 14 * * ?  매일 오후 14시에서 15시 사이에 매분마다 실행
0 0/5 14,20 * * ?  매일 14시에 시작하여 14:55분까지 ,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분 실행

댓글