클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

[소프트웨어 개발] 2장 통합 구현 2 - 통합 구현 관리 본문

자격증 공부/정보처리기사 필기

[소프트웨어 개발] 2장 통합 구현 2 - 통합 구현 관리

huenuri 2024. 7. 31. 13:00

모듈 구현에 이어 IDE 도구에 대해서 학습해보려고 한다. 수업 시간 중에 문제를 빨리 풀고 잠시 자유 시간이 있어 이어서 진행해볼 것이다.

 

학습 목표

  1. IDE 도구가 무엇이며 협업 도구로 사용되는 툴에 대해 학습해본다.
  2. 협업 도구에 대해 관심을 갖고 다음에 사용해볼 수 있는 프로그램이 무엇인지 찾아본다.
  3. 형상관리에 대해 이해하며 형상이라는 이 개념에 친숙해진다.
  4. 형상 관리 도구 사례를 살펴보고 CVS, SVN, 깃의 장단점에 대해서도 학습해본다.

 

학습 시간

오후 2시 40분 ~ 3시, 쉬는 시간에 틈틈이(20분) <총 소요 시간 40분>


 

 

IDE(Integrated Development Environment) 도구

1. 개념

  • 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
  • 기존에는 컴파일러, 텍스트 편집기, 디버거를 따로 사용했으나 통합 개발환경을 통해 하나로 묶은 대화형 인터페이스를 따로 제공

 

2. 기능

다양한 기능을 통합한 형태로서 편리한 개발환경을 제공

1. 개발환경 지원 : 자바, 파이썬 등 개발 언어를 통해 어플리케이션 개발환경 제공

2. 컴파일 : 문법에 어긋나는지 확인하고 기계어로 변환하는 기능 제공

 

3. 디버깅 : 프로그래밍 과정에 발생하는 아류 및 비정상적인 연산 제거

 

4. 외부 연계 : 외부 형상, 배포관리 기능과 연계되어 자동 배포 등이 가능

 

5. DB 연동 : JDBC, ODBC 등을 통한 데이터베이스 연동

 

 

3. 비교

대표적인 개발 도구로는 이클립스, 비주얼스튜디오, 엑스 코드가 있다.

1. 이클립스(Eclipse) : 대부분 운영체제 대상, Java, PHP, JSP 언어, Java 개발 최적화

2. 비주얼 스튜디오(Visual Studio) : 윈도즈 시리즈, Visual Basic, C++ 언어, C 계얼 언어 중심

 

3. 엑스 코드(Xcode) : 맥 OS, Object C, Swift 언어, iOS 기반 앱 개발

 

 

 

2. 협업 도구

개념

  • 개발자와 유대감을 형성하거나 개발 관련 소통을 위해 지속적으로 커뮤니케이션을 수행하기 위한 도구
  • 통합 구현 관리를 위해 개발자간 상호 소통을 하는 협업 도구 필요

 

기능

1. 개발자간 커뮤니케이션 : 개발자간 작업 공유, 오류 현상 공유 등 다양한 의사소통 제공

2. 일정 및 이슈 공유 : 소스 코드 구현 도중 발생하는 오류 및 이슈와 프로젝트 일정을 공유

 

3. 개발자간 집단 지성 활용 : 새로운 아이디어를 개 발자들 간에 공유


 

 

 

3. 형상 관리 도구

개념

  • 소프트웨어 생명주기 동안 발생하는 변경사항을 체계적으로 관리하여 소프트웨어의 품질을 향상시키는 관리적 활동
  • 개발 과정의 변경 사항을 관리
  • 유지보수 뿐 아니라 개발 단계에서도 사용

 

절차

1. 형상 식별 : 형상관리 계획을 근거로 형상관리 대상이 무엇인지 식별하는 활동

2. 형상 통제 : 형상 항목의 변경사항에 대해, 형상통제위원회가 승인/기강/보류를 경정하고, 승인된 변경사항의 이행을 체계적으로 통제하는 활동

 

3. 형상 감사 : 형상 관리 계획대로 형상 관리가 진행되고 있는지, 형상 항목의 변경이 요구사항에 맞도록 제대로 이뤄졌는지 등을 살펴보는 활동

 

4. 형상 기록 : 소프트웨어 형상 및 변경 관리에 대한 각종 수행 결과를 기록하는 활동

형상통제위원회(CCB; Change Control Board)
프로젝트 진행 과정에서 변경 사항을 적용할지 여부를 결정하는 회의

 

 

관리 도구 개념 및 기능

  • 소프트웨어 변경 사항을 관리하기 위해 형상 식별, 통제, 감사, 기록을 수행하는 도구

1. 체크인 : 개발자가 수정한 소스를 형상 관리 저장조로 업로드하는 기능

2. 체크아웃 : 형상 관리 자정소로부터 최신 버전을 개발자 PC로 다운로드 받는 기능

 

3. 커밋 : 개발자가 소스를 관리 저장소에 업로드 후 최종적으로 업데이트가 되었을 때 형상 관리 서버에서 반영하도록 하는 기능

 

 

사례

1) CVS(Concurrent Versions System)

  • 가장 오래된 형상 관리 도구 중 하나로 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행

주요 기능

  1. 변경사항 동기화 : check-out, check-in, update, commit 등 서버 저장소와 클라이언트의 변경사항 전송기능 제공
  2. 파일 단위 관리 : 파일 단위로 변경사항 관리, Diff를 통한 파일 내용 비교

장단점

  • 장점 : 직관적이고 비교적 단순한 명령 세트
  • 단점 : 텍스트 기반 소스 코드 위주 지원, 등록된 파일 및 디렉토리의 변동이 불편, 커밋 실패 등에 대한 롤백 기능 미지원

 

2) SVN(Subversion)

  • 중앙 집중형 클라이언트-서버 방식으로 CVS의 단점을 보완해 가장 널리 사용되고 있는 형상 관리 도구

주요 기능

  1. CVS 기능 제공 : CVS 대부분 명령어 수행 가능
  2. 바이너리 파일 관리 : CVC에서는 텍스트 기반 파일만 가능했지만, SVN은 실행 파일과 같은 바이너리 파일 지원
  3. 롤백 기능 지원 : 커밋 실패시 롤백 가능

장단점

  • 장점 : 디렉토리 파일을 자유롭게 이동, CVS에 비해 비약적으로 빨라진 속도, Gzip으로 압축하여 공간 절약, 다양한 플러그인 API 제공
  • 단점 : Trunk, Branch, Tag가 모두 물리적 저장 위치 점유, 잦은 커밋으로 리비전 번호가 크게 증가, 개별 개발자만의 개발 이력을 가질 수 없음

 

 

 

3) Git

  • 리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템

주요 기능

  1. 로컬/ 원격 형상 관리 : Branch, Check-out, Commit 등 로컬 환경에서의 형상 관리 기능 제공, Push, Tetch, Pull 등 원격 환경에서의 형상 관리 기능 제공
  2. 롤백 기능 지원 : 커밋 실패 시 롤백 가능

장단점

  • 장점 : 저장소의 완전한 복사본을 로컬 저장 가능, 로컬 저장을 통해 오프라인 작업, 일시적인 작업에 대한 이력 관리가 쉬움
  • 단점 : 대용량 코드 관리에 부적절, 한번에 diff 명령어를 통한 변경사항을 보기 어려움, CVS, SVN과 개념이 상이하여 학습 시간을 요구


 

 

학습을 마치고

여기까지가 엊그제 강의만 듣고 문제 풀이 학습을 진행했던 부분이었다. 이해하고 암기할 내용들이지만, 한번 써보는 것만으로도 암기에 큰 도움이 되는 것 같다.
공부를 하다보니 반복되는 부분도 좀 있고 지루한 내용도 정말 많아서 집중하는데 어려움을 겪고 있다. 그래도 오늘 3장까지는 개념 정리를 마쳐야할텐데.. 과연 할 수 있을지 의문이다. 그래도 해야겠지.