본문 바로가기

정보처리기사

서버 프로그램 구현

1. 개발환경 구축

 

 

(1) 개발환경 구축

- 개발환경 구성시 구현될 시스템 요구사항의 명확한 이해 필요

- 개발 도구와 서버의 선정, 개발 도구의 사용 편의성과 성능, 라이선스 확인

- 개발 도구 분류: 빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구 (빌구테형)

 

 

빌드 도구 작성한 코드의 빌드 및 배포를 수행 Ant, Maven, Gradle
구현 도구 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원 Eclipse, IntelliJ, Spring Tool Suite
테스트 도구 코드의 기능 검증과 전체의 품질을 높이기 위해 사용 xUnit, PMD, Findbugs, Cppcheck
형상 관리 도구 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리 CVS, SVN, Git

 

 

(2) 개발환경 구성요소

- 서버 하드웨어 개발환경: 웹 서버, 웹 애플리케이션 서버, 데이터베이스 서버, 파일 서버

- 웹 서버: HTTP를 이용한 요청/응답을 처리, 웹 상의 정적 콘텐츠(CSS, Javascript, Image) 처리, WEB-WAS-DB의 3계층 구조를 실무에서 활용

- 웹 애플리케이션 서버(WAS): 동적 콘텐츠(Servlet, JSP) 처리

- 데이터베이스 서버: 데이터의 수집, 저장을 위한 용도(MySQL, Oracle, MS-SQL)

- 파일 서버: 파일 저장 하드웨어(대용량 HDD, SSD)

- 클라이언트 하드웨어 개발환경(UI): 클라이언트 프로그램, 웹 브라우저, 모바일 앱, 모바일 웹

- 클라이언트 프로그램: 설치를 통해 사용자와 커뮤니케이션하는 프로그램

- 웹 브라우저: 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답시 브라우저를 통해 사용자와 커뮤니케이션

- 모바일 앱: 모바일 디바이스에 설치되어 활용되는 애플리케이션

- 모바일 웹: 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스 제공

- 소프트웨어 개발환경: 운영체제, 미들웨어, 데이터베이스 시스템

 

 

운영체제 서버의 하드웨어를 편리하게 사용하기 위한 소프트웨어 Windows, Unix, Linux
미들웨어 컴퓨터와 컴퓨터 간 연결을 쉽고 안전하게 하기 위한 소프트웨어 Weblogic, Jeus, Tomcat
DBMS 데이터의 저장 및 활용을 위한 소프트웨어 MySQL, Oracle, MS-SQL

 

 

- 형상 관리(Configuration Management)

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

- 프로젝트 생명주기 동안 제품의 무결성, 변경에 대한 추적성 확보

- 베이스라인(Baseline): 개발 과정의 각 단계의 산출물을 검토, 평가, 조정, 처리 등 변화를 통제하는 시점의 기준

- 형상 관리 절차: 형상 식별, 형상 통제, 형상 감사, 형상 기록 (식통감기)

- 형상통제위원회(CCB; Configuration Control Board): 형상 관리에 대한 주요 방침을 정하고 산출물을 검토하며, 단계별 의사결정을 수행하는 조직

- 소프트웨어 형상 관리 도구 유형: 공유 폴더 방식(RCS, SCCS), 클라이언트/서버 방식(CVS, SVN), 분산 저장소 방식(Git) (공클분)

- 소프트웨어 형상 관리 도구 특징: CVS, SVN, RCS, Bitkeeper, Git, Clear Case

- Git커밋(Commit) 동작으로 로컬 저장소 저장, 푸시(Push) 동작으로 원격 저장소에 반영

 

 

2. 공통 모듈 구현

 

 

(1) 재사용(Reuse)

- 이미 개발되어 그 기능, 성능 및 품절을 인정받았던 소프트웨어의 전체 또는 일부분을 다시 사용하는 기법

- 재사용 종류: 재공학(Re-Engineering), 재개발(Re-Development)

- 재사용 규모에 따른 분류: 함수/객체 재사용, 컴포넌트 재사용, 애플리케이션 재사용

 

 

(2) 모듈(Module)

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

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

- 모듈화 기법: 루틴, 메인 루틴, 서브 루틴

- 공통 모듈 구현: 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기위한 공통 컴포넌트 구현 기법

- 응집도(Cohesion): 모듈 내부 구성요소 간 연관도, 응집도가 높을수록 좋은 품질

- 응집도 유형: 우연적, 논리적, 시간적, 절차적, 통신적(교환적), 순차적, 기능적 응집도 (우논시절 통순기)

 

 

우연적 응집도 (응집도 낮음) Coincidental Cohesion 모듈 내 구성요소가 연관이 없을 경우
논리적 응집도 Logical Cohesion 유사한 성격을 갖거나 특정 형태로 분류하여 처리
시간적 응집도 Temporal Cohesion 연관된 기능이라기보다 특정 시간에 처리
절차적 응집도 Procedural Cohesion 다수의 관련된 기능을 순차적으로 수행
통신적 응집도 Communication Cohesion 동일한 입력과 출력을 사용하여 다른 기능을 수행
순차적 응집도 Sequential Cohesion 모듈 내 한 활동으로부터 나온 출력값을 다른 활동이 사용
기능적 응집도 (응집도 높음/좋음) Functional Cohesion 모듈 내 모든 기능이 단일한 목적을 위해 수행

 

 

- 결합도(Coupling): 외부 모듈 간 연관도 또는 상호의존성, 결합도가 낮을수록 좋은 품질

- 결합도 유형: 내용, 공통, 외부, 제어, 스탬프, 자료 결합도 (내공 외제 스자)

 

 

내용 결합도 (결합도 높음) Content Coupling 하나의 모듈이 직접적으로 다른 모듈의 변수나 기능 참조
공통 결합도 Common Coupling 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수 참조
외부 결합도 External Coupling 외부 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스 공유
제어 결합도 Control Coupling 다른 모듈의 내부 논리 조직 제어하기 위한 목적으로 통신
스탬프 결합도 Stamp Coupling 모듈 간 인터페이스로 배열이나 객체, 구조 등이 전달
자료 결합도 (결합도 낮음/좋음) Data Coupling 모듈 간 인터페이스로 전달되는 파라미터를 통해서만 상호작용

 

 

- 팬인/팬아웃:  소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해서 활용하여 시스템 복잡도 측정 가능

- 팬인(Fan-In): 어떤 모듈을 제어(호출)하는 모듈의 수, 자신을 기준으로 들어오는 모듈의 수높을수록 좋음

- 팬아웃(Fan-Out): 어떤 모듈에 의해 제어(호출)되는 모듈의 수, 자신을 기준으로 나가는 모듈의 수낮을수록 좋음

 

 

(3) 공통 모듈 테스트

- IDE(Integrated Development Environment) 도구 활용하여 개별 공통 모듈에 대한 디버깅 수행

- 화이트 기법 활용: 프로그램의 로직을 이해하고, 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식

- 공통 모듈 단위 테스트 도구(xUnit): jUnit, CppUnit, HttpUnit

 

 

3. 배치 프로그램 구현

 

 

(1) 배치 프로그램(Batch Program)

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

- 유형: 이벤트 배치(조건 충족), 온디맨드 배치(사용자 명시적 요구), 정기 배치 (이온정)

- 배치 스케줄러: 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구

- 배치 스케줄러 종류: 스프링 배치(대용량 배치 처리), 쿼츠 스케줄러(다양한 스케줄 기능)

- Cron 표현식: 리눅스/유닉스 크론, 쿼츠 크론 (초분시일 월요연)

 

 

 

'정보처리기사' 카테고리의 다른 글

애플리케이션 테스트 관리  (0) 2023.04.23
소프트웨어 개발 보안 구축  (0) 2023.04.22
SQL 응용  (0) 2023.04.20
프로그래밍 언어 활용(파이썬)  (0) 2023.04.17
프로그래밍 언어 활용(자바)  (0) 2023.04.14