Light Blue Pointer
본문 바로가기
Others/자격증 공부

01 서버 프로그램 구현

by Greedy 2021. 7. 20.

01 개발 환경 구축하기

개발 환경 준비

  1. 개발환경 구축의 이해 하드웨어,소프트웨어,개발에 사용되는 제품들의 성능과 라이선스 그리고 사용 편의성
  2. 개발환경 구축에 필요한 하드웨어와 소프트웨어에 대한 이해 서버 시스템의 개발 환경 구성을 위해서는 어떤 종류의 개발 소프트웨어들이 존재하며, 각 종류마다 어떤 특성을 갖는지에 대해 판단할 수 있어야 한다. 소프트웨어가 설치되는 하드웨어에 대해서도 이해가 필요하다

구현도구
서버 프로그램을 개발할때 가장 많이 사용되는 도구 코드의 작성 및 편집 디버깅 등 여러가지 작업 가능
ex : Eclipse,Visual Studio Code, IntelliJ,NetBeans

테스트도구
서버 프로그램의 품질을 높이기 위해 테스트에 사용되는 소프트웨어 도구로, 코드의 테스트, 테스트에 대한 리포팅 및 분석 등의 작업이 가능하다.
ex : xUnit, Spring Test

형상관리도구
많은 프로젝트들은 다수의 개발자들로 구성된 팀 단위 프로젝트로 진행됨 코드 및 리소스 변경 관리 형상관리 : 시스템 형상 요소의 특성을 문서화하고 특성의 변경을 관리하며 변경의 과정이나 실현 상황을 기록,보고하여 지정된 요건이 충족되었다는 사실을 검증하는것 또는 그 과정이나 실현 상황을 기록, 보고하여 지정된 요건이 충족되었다는 사실을 검증하는 것 또는 그 과정을 말한다.

빌드 도구
개발자가 작성한 코드에 대한 빌드 및 배포를 지원한다. 프로젝트에서 사용되는 구성 요소들과 라이브러리들에 대한 의존성 관리를 지원하는 도구이다.
ex: Ant,Mavel,Gradle

Ant : Java기반의 빌드 도구 개발자가 원하는 것을 개발할 수 있다는 유연성에 큰 장점이 있음
Maven : 프로젝트에 필요한 모든 Dependency를 리스트의 형태로 Maven에게 알려 관리할 수 있도록 돕는 방식을 말한다
Gradle : JVM기반의 빌드 도구로 기존의 Ant와 Maven을 보완함 따라서 Java혹은 Groovy를 이용하여 logic을 개발자의 의도에 따라 설계할 수 있다

하드웨어를 고려한 개발 소프트웨어의 선정 서버 프로그램 개발에 사용되는 소프트웨어들은 운영체제에 따라 적합한 것을 선정하여야 한다 개발에 사용되는 시스템의 하드웨어 사양을 파악하여 해당 시스템 성능에 적합한 소프트웨어를 선정하여야 한다

개발환경 준비 수행 순서

  1. 개발환경을 준비하기 위해서 목표 시스템의 환경을 분석한다 제안 요청서, 제안서, 사업수행 계획서, 요구사항 정의서, 시스템 아키텍쳐, 애플리케이션 아키텍쳐 등 분석 및 설계 시의 산출물을 분석하여 개발 환경을 준비한다

목표 시스템 환경 분석

ex
목표 시스템의 환경 예시
요구사항 목록 예시

개발 언어 선정

인사관리 및 웹 애플리케이션 시스템 프로젝트에서 범용성 이식성이 뛰어나고 업무의 성격에 적합한 Java 및 JavaScipt/HTML5를 Server와 Client개발 언어로 선정한다.
Server Side : 웹 애플리케이션 개발에 적합한 Java선정
Client Side : 차세대 웹 표준인 HTML5와 jQuery선정
개발 언어 선정 기준

개발 도구 선정

통합개발환경

빌드 도구 선정

빌드도구 비교
프로젝트 팀원의 빌드 도구에 대한 친밀도와 숙련도에 따라 결정한다
형상관리 도구를 고려하여 빌드 도구를 선정한다
통합개발도구와 호환이 가능한 빌드 도구를 선정한다

형상관리도구 선정

형상관리도구 비교
목표시스템 환경등을 고려하여 선정한다
통합개발도구와 호환이 가능한 형상 도구를 선정한다

테스트 도구 선정

테스트 활동 테스트 도구 내용
테스트 계획 요구사항 관리 고객 요구사항 정의 및 변경사항 관리
테스트 분석/설계 테스트 케이스 생성 테스트 기법에 따른 테스트 데이터 및 케이스 작성
  커버리지 분석 대상 시스템에 대한 테스트 완료 범위 척도
테스트 수행 테스트 자동화 기능 테스트 등 테스트 도구를 활용하여 자동화를 통한 테스트의 효율성을 높일 수 있다.
xUnit, STAF,NTAF 등
  정적 분석 코딩 표준, 런타임 오류등을 검증
  동적 분석 대상 시스템 시뮬레이션을 통한 오류 검출
Avalanche, Valgridd등
  성능 테스트 가상 사용자를 인위적으로 생성하여 시스템 처리 능력 측정
Jmeter, AB, OpenSTA등
  모니터링 시스템 자원 상태 확인 및 분석 지원 도구
Nagios, Zeross등
  형상관리 테스트 수행에 필요한 다양한 도구 및 데이터 관리
  테스트 관리 전반적인 테스트 계획 및 활용에 대한 관리
  결함 추적/관리 테스트에서 발생한 결함 관리 및 협업 지원

통합 개발 도구와 호환이 가능하고 널리 사용되는 테스트 자동화 도구를 선정한다.

개발 환경 구축

개발 하드웨어 환경

개발 하드웨어 환경은 운영환경과 유사한 구조로 구성하는것이 원칙

클라이언트 환경 구성

서버 시스템에서 제공하는 서비스를 활용하기 위해 사용자와의 인터페이스를 제공하는 하드웨어
일반적으로 PC(Client/Server화면), 웹 브라우저 화면, 핸드폰(모바일 앱)이 클라이언트로 활용된다.

서버 환경 구성

서버 활용 목적에 따라 애플리케이션 서버, 데이터베이스 서버, 파일 서버 등으로 나눌 수 있다.
웹 서비스를 제공하기 위해서 애플리케이션 서버를 웹 서버와 웹 애플리케이션 서버로 분리하여 구성하기도 한다.

웹 서버 웹을 통해 HTML을 이용한 요청/응답을 처리하기 위한 미들웨어에 설치되는 서버이다. 주로 클라이언트에서 요청하는 서비스의 속도를 향상시키기 위해 정적 파일(HTML,CSS,이미지 등)들을 제공하는 웹 서버 애플리케이션이 설치되는 서버이다.
웹 애플리케이션 서버 동적 웹 서비스를 제공하기 위해 Tomcat,Undertow,IIS등 미들웨어인 WAS와 서비스에 관련된 애플리케이션이 설치되는 서버이다
데이터베이스 서버 데이터의 수집, 저장을 제공하기 위해 mysql、Oracle、MSーSQL등 데이터베이스가 설치되는 서버이다
파일 서버 서비스 제공을 위해 파일을 저장하고 공유하기 위한 파일 물리적 저장 장치이다

개발 소프트웨어 환경

시스템 소프트웨어

운영체제( OS ) 서버의 하드웨어 운영을 위한 운영체제로서, Windows/Linux/Unix등의 환경으로 구성되는데, 일반적으로 상세 소프트웨어 명세는 하드웨어를 제공하는 벤더에서 제공한다
JVM Java관련 응용 프로그램을 가동하기 위한 인터프리터 환경
Web server 정적 웹 서비스를 수행하는 미들웨어로서 웹 브라우저 화면에서 요청하는 정적 파일을 제공한다
Apache, Nginx, IIS, GWS
WAS 웹 애플리케이션을 수행하는 미들웨어로써, 웹 서버와 JSP/Servlet 애플리케이션 수행을 위한 엔진으로 구성된다
DBMS ( Database Management System) 데이터 저장과 관리를 위한 데이터베이스 소프트웨어이다
Oracle, DB2, Sybase, SQL Server, MySQL

*미들웨어 : 분산 컴퓨팅 환경에서 서로 다른 기종의 하드웨어나 프로토콜, 통신환경등을 연결하여 응용 프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어

개발 소프트웨어

요구사항 관리도구 목표 시스템의 기능과 제약조건 등 고객의 요구사항을 수집, 분석, 추적을 쉽게 할 수 있게 지원한다
JFeature,JRequisite,OSRMT,Trello
설계/모델링 도구 기능을 논리적으로 결정하기 위해 통합 모델링 언어(UML : Unified Modeling Language) 지원, Database설계 지원 등 설계 및 모델링을 지원하는 도구이다.
ArgoUML, DB Designer, StarUML등
구현 도구 문제 해결 방법을 소프트웨어 언어를 통해 구현 및 개발을 지원하는 도구이다.
Eclipse, IntelliJ, Visual Studio등
형상 관리 도구 산출물의 변경사항을 버전별로 관리하여 목표 시스템의 품질 향상을 지원하는 도구이다
Git,SVN등

 

2) 형상 관리 구성

형상 관리의 정의

형상관리 (SCM : Software Configuration Management) 란 소프트웨어의 개발과정에서 발생하는 산출물의 변경사항을 버전관리하기 위한 일련의 활동

-소프트웨어 변경사항을 파악하고 제어하며, 적절히 변경되고 잇는지에 대해 확인하여 담담자에게 통보

-프로젝트 생명주기, 유지보수 단계에서 수행됨

-소프트웨어 개발의 전체 비용을 줄이고 개발 과정에서 발생하는 여러가지 문제점 발생 요인이 최소화되도록 보증하는 것을 목적으로 함

 

형상관리 절차

형상관리는 품질 보증을 위한 중요한 요소로서 다음과 같은 절차를 통해 수행된다.

형상 식별 -> 버전 제어 -> 형상 통제(변경 관리) -> 형상 감사 -> 형상 기록(상태 보고)

형상 식별 형상 관리 대상을 식별하여 이름과 관리 번호를 부여하고, 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업으로 베이스라인의 기준을 정하는 활동이다
버전 제어 소프트웨어 업그레이드나 유지보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 활동이다
형상 통제 식별된 형상 항목의 변경 요구를 검토, 승인하여 적절히 통제함으로써 현재의 베이스라인에 잘 반영될 수 있도록 조정하는 작업으로, 적절한 형상 통제가 이루어지기 위해서는 형상통제위원회 승인을 통한 통제가 이루어질 수 있어야 한다.
형상 감사 베이스라인의 현재 상태 및 변경 항목들이 제대로 반영되는지를 보고하는 절차이며 형상의 식별, 통제, 감사 작업의 결과를 기록 및 보고하고 보고서를 작성하는 작업이다.
형상 기록 베이스라인의 무결성을 평가하기 위해 확인, 검증 과정을 통해 공식적으로 승인하는 작업을 말한다.

 

3) 개발 환경 구축 수행하기

통합개발환경도구 설치.

웹 애플리케이션 환경 구성

    Spring 환경을 구성하기 위해서는 STS를 설치해야 하므로 통합개발환경도구에서 STS를 plug-in함

단위테스트 자동화 도구의 설치 여부를 확인한다.

형상 관리 도구를 다운로드한다.

형상관리도구를 설치한다.

설치한 형상관리도구의 환경을 설정한다.