
개발 환경 구축
개발환경 구축의 개념
- 개발환경 구성 시 구현될 시스템 요구사항의 명확한 이해가 필요
- 개발 도구와 서버의 선정이 이루어져야 하고, 개발에 사용되는 도구들의 사용 편의성과 성능, 라이선스를 확인
개발 도구의 분류
빌드 도구
- 작성한 코드의 빌드 및 배포를 수행하는 도구
- 각각의 구성요소와 모듈에 대한 의존성 관리를 지원
- Ant, Maven, Gradle
구현 도구
- 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
- 프로그램을 개발할 때 가장 많이 사용되는 도구
- Eclipse, IntelliJ, Spring Tool Suite, NetBeans, Visual Studio
테스트 도구
- 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
- 코드의 테스트, 테스트에 대한 계획, 수행 및 분석 등의 작업 가능
- xUnit, PMD, Findbugs, Cppcheck, Sonar
형상 관리 도구
- 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구
- 프로젝트 진행 시 필수로 포함되는 도구
개발환경 구성요소
하드웨어 개발환경
서버 하드웨어 개발환경
웹 서버
- HTTP를 이용한 요청/응답을 처리
- 웹상의 정적 콘텐츠(CSS, Javascript, Image)를 처리
- WEB-WAS(Web Application Server)-DB의 3계층 구조를 실무에서 활용
- 주요 제품으로 Apache 웹 서버, IIS 웹 서버, Google Web Server, Nginx 등 존재
웹 애플리케이션 서버
- 동적 콘텐츠(Servlet, JSP)를 처리하기 위해 사용
- 주요 제품으로 Tomcat, Weblogic, Jeus, Resin 등 존재
데이터베이스 서버
- 데이터의 수집, 저장을 위한 용도로 사용
- 연계되는 주요 DBMS로 MySql, Oracle, MS-SQL, DB2 등 존재
파일 서버
- 파일 저장 하드웨어로 물리 저장 장치를 활용한 서버
- 대용량 HDD, SSD 등의 장치가 존재
클라이언트 하드웨어 개발환경
클라이언트 프로그램
- 설치를 통해 사용자와 커뮤니케이션하는 프로그램
- Visual Basic, C#, Delphi 등으로 개발되어 사용
웹 브라우저
- 웹 서비스의 형태로 서버에서 웹 애플리케이션을 응답할 때 브라우저를 통해 사용자와 커뮤니케이션
- 일반적인 형태의 웹 사이트가 해당
모바일 앱
- 모바일 디바이스에 설치되어 활용되는 애플리케이션
- 앱 스토어, 안드로이드 마켓 등을 통해 다운로드 가능
모바일 웹
- 웹 브라우저와 동일한 형태로 모바일상 웹 브라우저를 통해 서비스를 제공
- 모바일에 최적화되어 제공되는 웹사이트가 해당
소프트웨어 개발환경
운영체제
- 서버의 하드웨어를 사용자 관점에서 편리하고 유용하게 사용하기 위한 소프트웨어
- 프로젝트의 성격에 따른 운영체제 사용
- Windows, Unix, Linux
미들웨어
- 컴퓨터와 컴퓨터 간의 연결을 쉽고 안전하게 할 수 있도록 해주고 이에 대한 관리를 도와주는 소프트웨어
- 자바 기반 환경에서 JVM(Java Virtual Machine)을 설치하여 컨테이너(Container)로의 기능을 주로 이용
- Weblogic, Websphere, Jeus, Tomcat
DBMS
- 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어
- 데이터의 저장 및 활용을 위해 DBMS를 설치
형상 관리
형상 관리(Configuration Management)의 개념
- 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
- SW 생명 주기 동안 형상 관리를 통해 산출물을 체계적으로 관리하여 SW의 가시성, 추적성, 무결성 등의 품질 보증을 보장할 수 있음
형상 관리의 목적
- 프로젝트 생명주기 동안 제품의 무결성과 변경에 대한 추적성을 확보할 수 있음
- 프로젝트 변경이 발생하였을 때 처리하는 메커니즘을 제공
- 대표적인 메커니즘으로 형상 관리 대상 파악, 베이스라인(Baseline) 지정, 형상 관리, 접근제어 등이 있음
형상 관리의 절차
형상 식별
- 형상 관리 대상을 정의 및 식별하는 활동
- 추적성 부여를 위해 ID와 관리 번호를 부여
- 변경 관련 이슈 발생 시 ID와 관리 번호를 이용하여 추적
형상 통제
- 형상 항목의 버전 관리를 위한 형상통제위원회(CCB, Configuration Control Board) 운영
- 변경 요구 관리, 변경 제어, 형상 관리 등 통제 지원
- 베이스라인에 대한 관리 및 형상 통제 수행 가능
형상 감사
- 소프트웨어 베이스라인의 무결성 평가
- 베이스라인 변경 시 요구사항과 일치 여부 검토
형상 기록
- 소프트웨어 형상 및 변경 관리에 대한 각종 수행 결과를 기록
- 형상 결과 보고서 작성
소프트웨어 형상 관리 도구 유형
공유 폴더 방식(RCS, SCCS)
- 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- 담당자 한 명이 매일 공유 폴더의 파일을 자기 PC로 복사하고 컴파일하여 에러 확인과 정상 동작 여부 확인
- 정상 동작일 경우 다음날 각 개발자가 동작 여부 확인
클라이언트/서버 방식(CVS, SVN)
- 중앙에 버전 관리 시스템을 항시 동작시키는 방식
- 개발자들의 현재 작업 내용과 이전 작업 내용 추적에 용이
- 서로 다른 개발자가 같은 파일을 작업했을 때 경고 메시지 출력
분산 저장소 방식(Git 등)
- 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
- 중앙의 저장소에서 로컬 파일을 복사(Clone)한 순간 개발자 자신만의 로컬 저장소에 생성
- 개발 완료한 파일을 수정한 다음에 로컬 저장소에 먼저 커밋(Commit)한 이후, 다시 원격 저장소에 반영(Push)하는 방식
소프트웨어 형상 관리 도구별 특징
CVS(Concurrent Versions System)
- 서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근할 수 있는 형상 관리 도구
SVN(Subversion)
- 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
- 저장소를 만들어 그곳에 소를 저장해 소스 중복이나 여러 문제를 해결하기 위한 도구
RCS(Revision Control System)
- CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 여러 사용자가 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구
Bitkeeper
- SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구
Git
- Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에서 효과적이고 유용
- Git의 커밋(Commit) 동작은 로컬 저장소에서 이루어지고, 푸시(Push)라는 동작으로 원격 저장소에 반영
- 로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있음
- Git의 작업 폴더는 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소
Clear Case
- 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음
'정보처리 > 프로그래밍언어활용' 카테고리의 다른 글
서버 프로그램 구현 배치 프로그램 구현 (1) | 2025.05.11 |
---|---|
서버 프로그램 구현 공통 모듈 구현 (0) | 2025.05.10 |