반응형

     정보

    • 업무명     : 정보처리기사 실기 : 9강 서버 프로그램 (개발환경 구축하기)

    • 작성자     : 이상호

    • 작성일     : 2020-05-09

    • 설   명      :

    • 수정이력 :

     

     

     내용

    [개발환경 준비]

    [1] 개발환경 구축의 이해
    • 개발환경을 구축하기 위해서는, 해당 프로젝트의 목적과 구축 설계에 대한 명확한 이해가 필요하며, 이에 맞는 하드웨어, 소프트웨어의 선정이 이루어져야 한다. 

    • 또한 개발에 사용되는 제품들의 성능과 라이선스 그리고 사용 편의성 등에 대한 내용도 파악해야 한다.

     

    [2] 개발환경 구축에 필요한 하드웨어와 소프트웨어에 대한 이해
    • 개발환경 구성을 위해서는 어떤 종류의 개발 소프트웨어들이 존재하며 각 종류마다 어떤 특성을 갖는지에 대해 판단할 수 있어야 한다. 그리고 이러한 소프트웨어가 설치되는 하드웨어에 대한 이해도 필요하다. 

    • 1. 개발을 위해 사용되는 소프트웨어의 종류와 특성 

      • (1) 구현 도구 

        • 프로그램을 개발할 때 가장 많이 사용되는 도구로서 코드의 작성 및 편집, 디버깅 등 과 같은 다양한 작업이 가능하며 Eclipse, Visual Studio Code, IntelliJ, NetBeans 등 다 양한 소프트웨어 도구들이 사용되고 있다. 

        • 구현해야 할 소프트웨어가 어떤 프로그래밍 언어로 개발되는지에 따라 선택하여 사용한다.

      • (2) 테스트 도구 소프트웨어의 품질을 높이기 위해 테스트에 사용되는 소프트웨어 도구들로 코드의 테스트, 테스트에 대한 리포팅 및 분석 등의 작업이 가능하다. 사용되는 테스트 도구 들에는 xUnit, Spring Test 등이 있다.

      • (3) 형상관리 도구 대다수의 프로젝트들은 다수의 개발자들로 구성된 팀 단위 프로젝트로 진행되며, 개발 자들이 작성한 소스 및 리소스 등 산출물에 대한 버전 관리를 위해 형상관리 도구가 사용된다. 대표적인 형상관리 도구로는 CVS, Subversion, Git 등이 있다. 

         

      • (4) 빌드 도구 개발자가 작성한 소스에 대한 빌드 및 배포를 지원하며, 프로젝트에서 사용되는 구성 요소들과 라이브러리들에 대한 의존성 관리를 지원하는 도구이다. 사용되는 빌드 도구 에는 Ant, Maven, Gradle 등이 있다.

    • 2. 하드웨어를 고려한 개발 소프트웨어의 선정 

      • 프로그램 개발에 사용되는 소프트웨어들은 OS에 따라 적합한 것을 선정하여야 한다. 개발 에 사용되는 시스템의 하드웨어 사양을 파악하여 해당 시스템 성능에 적합한 소프트웨어 를 선정하여야 한다.

     

    [수행]

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

    • 1. 목표 시스템의 환경을 분석한다. 다음 예시와 같이 간단한 인사 관리 시스템 구축을 통해 개발환경 구축에 필요한 도구에 대해 파악한다

     

    • 2. 요구 사항을 분석한다.

     

    [2] 개발언어 및 하드웨어 사양을 고려한 구현 도구를 선정한다.
    • 1. 개발언어의 선정

      • (1) 개발언어의 선정 기준

        • ※ 위 고려 항목은 참고 사항으로 활용되며, 위 항목들 이외에도 알고리즘과 계산상의 난이도, 소프트웨어의 수행 환경, 자료 구조의 난이도, 개발 담당자와의 경험과 지 식 등이 고려되어야 한다

     

    • (2) 개발언어의 선정 

      • 인사 관리 웹 애플리케이션 시스템 프로젝트에서 범용성, 이식성이 뛰어나고 대상 업 무의 성격에 적합한 Java 및 JavaScript/HTML5를 Server와 Client 개발언어로 선정한다. 

        • (가) Server Side: 웹 애플리케이션 개발에 적합한 Java 선정 

        • (나) Client Side: 차세대 웹 표준인 HTML5와 jQuery를 선정

     

    • 2. 개발 도구의 선정 

      • (1) 통합 개발환경의 종류 및 특징 다양한 프로그래밍 언어를 지원하는 통합 개발환경의 예로 이클립스(Eclipse), 비주얼 스튜디오(Visual Studio) 등을 들 수 있다. 이클립스는 자바를 기본적으로 지원하지만 파이썬(Phython), PHP, JSP, C, C++ 등과 같은 언어들도 추가적으로 설치할 수 있다. 설치된 언어들은 각각의 디버거를 비롯한 다양한 도구들을 지원하고 있다

     

    • (2) 통합 개발환경의 선정 목표 시스템 구축을 위한 통합 개발환경의 선정은 풍부한 기능과 Plug-in을 보유하고 있고, 다양한 적용 사례가 존재하는 통합 개발 도구(IDE: Integrated Development Environment)를 개발 도구로 선정한다.

     

    [3] 프로그램의 배포 및 라이브러리 관리를 위한 빌드(Build) 도구를 선정한다.
    • 1. 빌드 도구 Gradle, Maven, Ant의 특징

     

    • 2. 빌드 도구의 선정 

      • (1) 프로젝트 팀원의 빌드 도구의 친밀도와 숙련도에 따라 결정한다. 

      • (2) 형상관리 도구를 고려하여 빌드 도구를 선정한다. 

      • (3) 통합 개발 도구와 호환이 가능한 빌드 도구를 선정한

     

    [4] 개발 인원을 고려한 형상관리 도구를 선정한다
    • 1. 형상관리 도구의 종류

     

    • 2. 형상관리 도구의 선정 

      • (1) 목표 시스템 환경 등을 고려하여 선정한다. 

      • (2) 통합 개발 도구와 호환이 가능한 빌드 도구를 선정한다.

     

    [5] 프로젝트 검증에 적합한 테스트 도구를 선정한다
    • 1. 테스트 도구의 종류

     

    • 2. 테스트 도구의 선정 

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

     

    [개발환경 구축]

    [1] 개발환경 구성
    • 일반적으로 사용되는 시스템 환경은 프로그램 개발을 위한 개발환경, 테스트를 위한 테스트 환경, 실제 시스템이 운영되는 운영환경과 백업환경 등으로 분류할 수 있다. 이 중 개발환경 구축에 필요한 하드웨어와 소프트웨어 명세를 살펴보기로 한다. 

    • 1. 개발 하드웨어 환경 개발 하드웨어 환경은 운영환경과 유사한 구조로 구성하는 것이 원칙이며, 개발용 하드웨어 환경을 구축하기 위해서는 다음과 같은 하드웨어 구성을 고려하여야 한다. 

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

      • (2) 서버(Server) 환경 구성 

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

        • (가) 웹(Web) 서버 클라이언트(웹 브라우저 화면)에서 요청하는 서비스의 속도를 향상시키기 위해 정적 파일(HTML, CSS, 이미지 등)들을 제공하는 웹 서버 애플리케이션이 설치되는 하드웨어이다. 

        • (나) 웹 애플리케이션(Application) 서버 동적 웹 서비스를 제공하기 위해 Tomcat, Undertow, IIS 등 미들웨어인 WAS(Web Application Server)와 서비스에 관련된 애플리케이션이 설치되는 하드웨어이다.

        • (다) 데이터베이스(Database) 서버 MySql, Oracle, MS-SQL 등 데이터베이스가 설치되는 하드웨어이다. 

        • (라) 파일(File) 서버 서비스 제공을 위해 파일을 저장하고, 공유하기 위한 파일 저장 하드웨어이

     

    • 2. 개발 소프트웨어 환경 

      • 개발 소프트웨어 환경도 개발 하드웨어 환경과 마찬가지로 운영환경과 동일한 구조로 구성하는 것이 원칙이며, 개발용 소프트웨어 환경을 구축하기 위해서는 다음과 같은 유형 의 소프트웨어 구성을 고려하여야 한다. 

      • (1) 시스템 소프트웨어 

        • (가) 운영체제(OS: Operation System) :하드웨어 운영을 위한 운영체제로서, Windows/Linux/UNIX 등의 환경으로 구성되는 데, 일반적으로 상세 소프트웨어 명세는 하드웨어를 제공하는 벤더(Vendor)에서 제공한다. (예) Windows, Linux, UNIX(HPUX, Solaris, AIX) 등 

        • (나) JVM(Java Virtual Machine) :Java 관련 응용 프로그램을 기동하기 위한 인터프리터 환경으로, 적용 버전을 개발 표준에서 명시하여 모든 개발자가 동일한 버전을 적용하는 것이 좋다.

        • (다) Web Server 정적 웹 서비스를 수행하는 미들웨어로서, 웹 브라우저 화면에서 요청하는 정적 파 일을 제공한다. (예) Apache, Nginx, IIS(Internet Information Server), GWS(Google Web Server) 등 

        • (라) WAS(Web Application Server) 웹 애플리케이션을 수행하는 미들웨어로서, 웹 서버와 JSP/Servlet 애플리케이션 수행을 위한 엔진으로 구성된다. (예) Tomcat, Undertow, JEUS, Weblogic, Websphere 등 

        • (마) DBMS(Database Management System) 데이터 저장과 관리를 위한 데이터베이스 소프트웨어이다. (예) Oracle, DB2, Sybase, SQL Server, MySQL 등

      • (2) 개발 소프트웨어 

        • (가) 요구 사항 관리도구 목표 시스템의 기능과 제약 조건 등 고객의 요구 사항을 수집, 분석, 추적을 쉽게 할 수 있게 지원한다. 

          • (예) JFeature, JRequisite, OSRMT, Trello 등

        • (나) 설계/모델링 도구 기능을 논리적으로 결정하기 위해 통합 모델링 언어(UML: Unified Modeling Language) 지원, Database 설계 지원 등 설계 및 모델링을 지원하는 도구이다. 

          • (예) ArgoUML, DB Designer, StarUML 등 

        • (다) 구현 도구 문제 해결 방법을 소프트웨어 언어를 통해 구현 및 개발을 지원하는 도구이다. 

          • (예) Eclipse, IntelliJ, Visual Studio 등

        • (라) 테스트 도구 구현 및 개발된 모듈들에 대하여 요구 사항에 적합하게 구현되어 있는지 테스트를 지원하는 도구이다  

          • (예) JUnit, CppUnit, JMeter SpringTest 등 

        • (마) 형상관리 도구 산출물의 변경 사항을 버전별로 관리하여 목표 시스템의 품질 향상을 지원하는 도구이다. 

          • (예) Git, SVN 등

     

    [2] 형상관리 구성
    • 1. 형상관리의 정의 

      • 형상관리(SCM: Software Configuration Management)란 소프트웨어의 개발 과정에서 발생 하는 산출물의 변경 사항을 버전 관리하기 위한 일련의 활동으로, 다음과 같은 특성을 가지고 있다. 

      • (1) 소프트웨어 변경사항을 파악하고 제어하며, 적절히 변경되고 있는지에 대해 확인하여 해당 담당자에게 통보하는 작업이다. 

      • (2) 형상관리는 프로젝트 생명주기의 전 단계에서 수행하는 활동이며, 유지 보수 단계 에서도 수행되는 활동이다. 

      • (3) 형상관리를 함으로써 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정에서 발생 하는 여러 가지 문제점 발생 요인이 최소화되도록 보증하는 것을 목적으로 한다.

    • 2. 형상관리 절차 

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

      • (1) 형상 식별 

        • (가) 형상관리 대상을 식별하여 이름과 관리 번호를 부여하고, 계층(Tree) 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업으로 베이스라인의 기준을 정하는 활동이다

        • (나) 형상관리 대상이 되는 형상인 형상항목은 다음과 같다.

          • 1) 소프트웨어 공학 기반 표준과 절차: 방법론, WBS, 개발 표준

          • 2) 소프트웨어 프로젝트 계획서

          • 3) 소프트웨어 요구 사항 명세서

          • 4) 소프트웨어 아키텍처, 실행 가능한 프로토타입

          • 5) 소프트웨어 화면, 프로그램 설계서

          • 6) 데이터베이스 기술서: 스키마, 파일 구조, 초기 내용

          • 7) 소스코드 목록 및 소스코드

          • 8) 실행 프로그램

          • 9) 테스트 계획, 절차, 결과

          • 10) 시스템 사용 및 운영과 설치에 필요한 매뉴얼

          • 11) 유지 보수 문서: 변경 요청서, 변경 처리 보고서 등

    • (2) 변경 제어 

      • 식별된 형상항목의 변경 요구를 검토, 승인하여 적절히 통제함으로써 현재의 베이스라 인에 잘 반영될 수 있도록 조정하는 작업으로, 적절한 형상 통제가 이루어지기 위해서 는 형상통제위원회 승인을 통한 통제가 이루어질 수 있어야 한다. 

    • (3) 형상 상태 보고 

      • 베이스라인의 현재 상태 및 변경 항목들이 제대로 반영되는지 여부를 보고하는 절차 이며 형상의 식별, 통제, 감사 작업의 결과를 기록 및 관리하고 보고서를 작성하는 작업이다. 

    • (4) 형상 감사

      • 베이스라인의 무결성을 평가하기 위해 확인, 검증 과정을 통해 공식적으로 승인하는 작업을 말한다.

     

    [수행]

    [1] 통합 개발환경 도구를 설치한다. 
    • 통합 개발환경 도구는 Eclipse, IntelliJ, Visual Studio 등 다양한 도구들이 있으나, 본 실습 에서는 준비 단계에서 선정한 통합 개발환경 도구를 설치한다. 

    • 1. 요구 사항에 적합한 통합 개발환경 도구를 다운받는다.

      • 개발환경 도구를 설치한다

     

    • 2. 다운받은 통합 개발환경 도구를 설치한다.

      • (1) 통합 개발환경 도구를 실행한다.

     

    [2] Java 웹 애플리케이션 환경을 구성한다.
    • 1. Spring 프레임워크 환경을 구성한다. 

      • Spring 환경을 구성을 위해서는 STS(Spring Tool Suite)를 설치해야 하므로 통합 개발환경 도구에서 STS를 Plug-in 한다. 

      • (1) STS를 Plug-in 한다.

     

     

     

     

     

     

    [3] 형상관리 도구를 설치한다.
    • 형상관리 도구는 CVS, SVN, Git 등 다양한 형상관리 도구가 사용되나, 본 예제에서는 Git 를 형상관리 도구로 설치한다.

     

     

     

    [연습문제]

    • 개발을 위해 사용되는 소프트웨어의 종류와 특성이 잘못된 것은?

      • (1) 구현 도구 :프로그램을 개발할 때 가장 많이 사용되는 도구로서 코드의 작성 및 편집, 디버깅 등 과 같은 다양한 작업이 가능하며 Eclipse, Visual Studio Code, IntelliJ, NetBeans 등 다 양한 소프트웨어 도구들이 사용되고 있다. 

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

      • (3) 형상관리 도구 :대다수의 프로젝트들은 다수의 개발자들로 구성된 팀 단위 프로젝트로 진행되며, 개발 자들이 작성한 소스 및 리소스 등 산출물에 대한 버전 관리를 위해 형상관리 도구가 사용된다. 대표적인 형상관리 도구로는 CVS, Subversion, Git , Gradle 등이 있다. 

      • (4) 빌드 도구 :개발자가 작성한 소스에 대한 빌드 및 배포를 지원하며, 프로젝트에서 사용되는 구성 요소들과 라이브러리들에 대한 의존성 관리를 지원하는 도구이다. 사용되는 빌드 도구 에는 Ant, Maven등이 있다.

     

    • 서버(Server) 환경 구성 에 대한 설명이 잘못된 것은?

      • 1) 웹(Web) 서버 클라이언트(웹 브라우저 화면)에서 요청하는 서비스의 속도를 향상시키기 위해 정적 파일(HTML, CSS, 이미지 등)들을 제공하는 웹 서버 애플리케이션이 설치되는 하드웨어이다. 

      • 2) 웹 애플리케이션(Application) 서버 : 정적 웹 서비스를 제공하기 위해 Tomcat, Undertow, IIS 등 미들웨어인 WAS(Web Application Server)와 서비스에 관련된 애플리케이션이 설치되는 하드웨어이다.

      • 3) 데이터베이스(Database) 서버 MySql, Oracle, MS-SQL 등 데이터베이스가 설치되는 하드웨어이다. 

      • 4) 파일(File) 서버 서비스 제공을 위해 파일을 저장하고, 공유하기 위한 파일 저장 하드웨어이다.

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기