7일차 : 2-2 통합구현 관리

Dev_HG·2020년 7월 4일
0

1. IDE 도구

1. IDE(Integrated Development Environment) 도구의 개념

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

2. IDE 도구의 기능

  • 개발환경 지원 : 자바(Java), 파이썬(Python) 등 개발언어를 통해 어플리케이션 개발환경 제공
  • 컴파일 : 문법에 어긋나는지 확인하고 기계어로 변환하는 기능 제공
  • 디버깅 : 프로그래밍 과정에 발생하는 오류 및 비정상적인 연산 제거
  • 외부 연계 : 외부 형상, 베포관리 기능과 연계되어 자동 배포등이 가능
  • DB 연동 : JDBC,ODBC등을 통한 데이터베이스 연동
    cf : JDBC(Java Database Connectivity)
  • 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
    cf : ODBC(Open Database Connectivity)
  • 마이크로소프트가 만든, 데이터베이스에 접근하기 위한 소프트웨어의 표준 규격이다.

3. IDE 도구 간 비교

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

[이클립스(Eclipse)]

  • 개발사 : IBM, 이클립스 재단
  • 플랫폼 : 크로스 플랫폼
  • 운영 체제 : 대부분의 운영체제 대상
  • 언어 : Java, PHP, JSP
  • 라이센스 : 이클립스
  • 특징 : Java 개발 최적화

[비주얼 스튜디오(Visual Studio)]

  • 개발사 : 마이크로소프트(Mycrosoft)
  • 플랫폼 : 크로스 플랫폼
  • 운영체제 : 윈도우즈 시리즈
  • 언어 : Visual Basic, C++
  • 라이센스 : 상용
  • 특징 : C 계열 언어 중심

[엑스 코드(Xcode)]

  • 개발사 : 애플(Apple)
  • 플랫폼 : 애플 플랫폼
  • 운영 체제 : 맥(Mac) OS
  • 언어 : Object C, Swift
  • 라이센스 : GCC
  • 특징 : IOS 기반 앱 개발

2. 협업 도구

1. 협업 도구의 개념

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

2. 협업 도구의 분류

[문서 공유]

  • 구글 드라이브(google Drive) : 팀원, 고객 문서를 공유하거나 공동작업 가능
    [소스 공유]
  • 깃허브(Github) : 오픈소스 프로젝트 등을 진행 및 소스공유
    [아이디어 공유]
  • 에버노트(Evernote) : 팀원 간 아이디어 공유, 기사 스크랩 등
    [디자인 공유]
  • 레드 펜(Red Pen) : 웹 디자이너 친화 협업 도구
    [마인드 맵]
  • 마인드 마이스터(Mind Meister) : 공동의 브레인스토밍 지원 마인드맵 도구
    [프로젝트 관리]
  • 트렐로(Trello) : 최신 트렌드 UI 제공, 카드식 배열 작업 목록
  • 레드마인(Redmine) : 다수의 프로젝트 이슈 관리 도구
  • 지라(JIRA) : 프로젝트 이슈 트래킹 기반 협업 도구
    [일정관리]
  • 구글캘린더 : 구글 제공 캘린더 내 다수 일정 공유 가능

3. 협업 도구의 기능

  • 개발자 간 커뮤니케이션 : 개발자 간 작업 공유, 오류 현상 공유 등 다양한 의사소통을 제공
  • 일정 및 이슈 공유 : 소스 코드 구현 도중 발생하는 오류 및 이슈와 프로젝트 일정을 공유
  • 개발자 간 집단 지성 활용 : 새로운 아이디어를 개발자들 간에 공유함으로써 집단 지성을 활용

3. 형상 관리 도구

1. 형상 관리 도구의 개념

  • 소프트웨어 변경 사항을 관리하기 위해서 형상 식별, 통제, 감사, 기록을 수행하는 도구이다.
  • 소스나 코드나 문서의 버전 관리, 이력 관리, 추적 등 변경 사항을 체계적으로 관리할 수 있는 기능을 제공하는 도구이다.
  • 대표 제품으로 CVS, SVN, Git가 있다.

2. 형상 관리 도구의 기능

  • 체크인(Check-In) : 개발자가 수정한 소스를 형상 관리 저장소로 업로드 하는 기능
  • 체크아웃(Check-Out) : 형상 관리 저장소로부터 최신 버전을 개발자 PC로 다운로드 받는 기능
  • 커밋(Commit) : 개발자가 소스를 형상 관리 저장소에 업로드 후 최종적으로 업데이트가 되었을 때 형상 관리 서버에서 반영하도록 하는 기능

3. 형상 관리 도구 사례

1. CVS(Concurrent Versions System)

  • 가장 오래된 형상 관리 도구 중의 하나로서 중앙 집중형 서버 저장소를 두고 클라이언트가 접속해서 버전 관리를 실행한다.
  • 주요 기능으로 Check-Out, Check-In, Update, Commit 등 서버 저장소와 클라이언트의 변경 사항 전송, Diff를 통한 파일 내용 비교, 파일 단위의 변경 사항 관리이다.

[CVS 주요기능]

[주요기능]

  • 체크아웃/체크인 등 클라이언트-서버 간 변경사항 동기화
  • 파일단위 기반의 변경사항 관리 가능
  • Diff를 통한 파일 내용의 비교
    [장점]
  • 직관적이고 비교적 단순한 명령세트
    [단점]
  • 텍스트 기반 소스 코드 위주 지원
  • 등록된 파일 및 디렉토리의 변동이 불편
  • 커밋 실패 드엥 대한 롤백 기능 미지원
    cf: 롤백(Rollback) : 데이터베이스에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 행위이다.

2. SVN(Subversion)

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

  • SVN은 CVS를 대체하기 위해 만든 도구로, 사용법이 CVS와 유사하여 CVS 사용자가 어렵지 않게 SVN을 도입하여 사용 가능하다.

  • 빠른 속도, 저장 공간 절약, 작업 모음 단위 기반으로 동작 등이 개선되었다

[SVN 주요 기능]

[주요기능]

  • CVS에서 제공하는 대부분의 명령어 수행 가능
  • 바이너리 문서 형상 관리 가능
  • 커밋 실패 시 롤백 지원 가능
    [장점]
  • 디렉토리 파일을 자유롭게 이동 가능
  • CVS에 비해 비약적으로 빨라진 속도
  • Gzip으로 압축하여 공간절약 가능
  • 다양한 플러그인 API 제공
    [단점]
  • Trunk, Branch, Tag가 모두 물리적 저장 위치 점유
  • 잦은 커밋으로 인해 리비전 번호가 크게 증가할 수 있음
  • 개별 개발자만의 개발 이력을 가질 수 없음

3. Git

  • 리누스 토발즈가 2005년 리눅스 커널의 개발을 위해 만든 형상 관리 시스템이다.
  • Git는 중앙 집중형 방식이 아닌 분산형 방식으로 각 PC 스스로 완전한 저장소가 구성되며, 필요에 따라 중앙 집중형 방식으로도 운영할 수 있다.
    [주요 기능]
  • Branch, Check-Out, Commit 등 로컬 환경에서의 형상 관리 기능
  • Push, Fetch, Pull 등 원격 환경에서의 변경 전송기능
  • SVN 저장소에 대한 이관(Migration) 기능

[장점]

  • 저장소(Repository)의 완전한 복사본을 로컬(Local) 저장 기능
  • 로컬 저장을 통해 오프라인(Offline) 작업 가능
  • 일시적인 작업에 대한 이력 관리가 쉬움

[단점]

  • 대용량 코드 관리에 부적절
  • 한번에 diff를 보기 어려움
  • CVS, SVN과 개념이 상이하여 학습시간이 요구
profile
꾸준함

0개의 댓글