본문 바로가기
정보처리기사/필기

[정보처리기사] Part02-02-2. 통합구현 관리

by 채연2 2022. 2. 25.

* IDE(통합 개발 환경; Integrated Development Environment) 도구

☞ 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경 제공하는 소프트웨어

 

    ▶ IDE 도구 기능

        ▷ 개발 환경 지원

            - C++, Java 등 언어 이용하여 애플리케이션 개발할 수 있는 환경 제공해 줌

        ▷ 컴파일 및 디버깅 기능 제공

            - 코딩 완료되면 컴파일하여 문법에 어긋나지 않는지 확인하고, 오류 발생 시 이를 추적하여 수정할 수 있는 디버깅 기능 제공

        ▷ 외부 연계 모듈과 통합 기능 제공

            - EAI 등 외부 인터페이스 모듈과 통합 통해 통합 개발 기능 제공

            - JDBC 등 통해 DB 연동 통한 통합 개발 기능 제공

            - 외부 형상, 배포 관리 기능과 연계되어 소스 코드 형상 관리 및 자동 배포 가능

 

    ▶ IDE 도구 비교

구분 개발자 플랫폼 운영체제 언어 라이선스
이클립스
(Eclipse)
IBM, 이클립스 재단 크로스 플랫폼 윈도, 리눅스, 솔라리스, AIX, Mac OS X Java, C, C++, PHP, JSP EPL
비주얼 스튜디오
(Visual Studio)
마이크로소프트 Win32/64 윈도 시리즈 비주얼 베이직, 닷넷, C++, C# 상용
C++ 빌더 엠바카데로 테크놀러지 Win32 윈도 C, C++ 상용
엑스 코드
(Xcode)
애플 애플 플랫폼 맥 OS Object C, Swift GCC

 


* 협업 도구

☞ 하나의 SW 개발 프로젝트에는 적게는 여러 명에서 수백 명 개발자가 참여하기에 그들 간 협업을 위한 도구 필요

☞ 구현 기간 동안 다양한 개발자들과 실시간 커뮤니케이션

☞ 개발 및 작업 일정, 소스, 아키텍처 변경에 따른 이해관계자들 간 공유

☞ 여러 개발자들 아이디어 및 개선 위한 공유

 

    ▶ 협업 도구 분류

        ▷ 문서 공유

            - 구글 드라이브 : 팀원 간 또는 고객과 문서 공유하거나 공동 작업 가능한 온라인 도구

            - 슬라이드 : 온라인에서 PPT 만들 수 있는 서비스

        ▷ 소스 공유

            - 깃허브 : 많은 프로그래머들이 애용하는 공동 작업 공간. 수 많은 오픈 소스 프로젝트 존재

        ▷ 아이디어 공유

            - 에버 노트 : 팀원들과 중요 아이디어 공유 가능하고, 업무와 관련 있는 기사 스크랩 공유 기능

            - 인비전 : 프로그래머나 웹 디자인 전문가들이 많이 사용하는 온라인 프로토타이핑 도구

        ▷ 디자인 공유

            - 레드 펜 : 웹 디자인 전문가들이 사용하는 협업 도구. 자기 디자인 업로드하고 동료 간 공동 작업 수행

        ▷ 마인드 맵핑

            - 마인드 마이스터 : 온라인 공동 마인드 맵핑 도구. 공동으로 브레인스토밍 또는 정보 간 관계망 그리기 수행

        ▷ 프로젝트 관리

            - 트렐로 : 온라인 공동 프로젝트 관리 도구. 프로젝트 각 과제들 분류하고 구성원들 배정

            - 레드마인 : 다수 프로젝트 관리 가능 도구

            - 지라 : 프로젝트 이슈 트래킹 기반 협업 도구

            - 태스크월드 : 사용자가 자유롭게 프로젝트 일정, 팀원 설정 가능한 도구

        ▷ 일정 관리

            -  구글 캘린더 : 구글 일정 관리 서비스. 모바일과 PC 연동 가능

            - 컨플루언스 : 개발자 간 일정 공유 및 문서 공유 기능

 

    ▶ 협업 도구 기능 (=역할)

        ▷ 개발자 간 커뮤니케이션

            - 개발자 간 작업 공유, 오류 현상 공유, 의견 공유 등 다양한 의사 소통 제공

        ▷ 일정 및 이슈 공유

            - 소스 코드 구현 도중 발생하는 오류 및 이슈에 대한 공유 혹은 프로젝트 일정에 대한 공유 기능

        ▷ 개발자 간 집단 지성 활용

            - 구현 아이디어 공유 혹은 새로운 아이디어를 여러 개발자들과 공유함으로서 집단 지성 발휘

 


* 소프트웨어 형상 관리

☞ SDLC 전 단계 산출물을 체계적으로 관리하여, 소프트에어 가시성 및 추적성 부여하여 품질 보증 향상시키는 관리적 활동

☞ SW 구현 진행되는 동안 소스 코드 및 문서에 대한 형상은 지속적으로 변하므로 관리 위해 형상 관리 도구 활용

☞ 형상 관리는 SW 변경 사항 관리 위해 형상 식별, 형상 통제, 형상 감사, 형상 기록 수행

 

 

    ▶ 소프트웨어 형상 관리 대상

        - 소스 코드와 실행 파일, 그리고 각종 설계 문서

        - 각종 프로그램 개발과 관련된 회의록 등 문서화된 자료

 

    ▶ 소프트웨어 형상 관리 절차

        1. 형상 식별 : 형상 관리 대상들 구분하고 관리 목록에 대한 번호 부여

        2. 형상 통제 : SW 형상 변경 제안 검토 승인하여 현재 SW 베이스라인에 반영될 수 있도록 통제

        3. 형상 감사 : SW 베이스라인 무결성 평가하는 단계 (검증, 확인)

        4. 형상 기록 : SW 형상 및 변경 관리에 대한 각종 수행 결과 기록하고, 보고서 작성하는 단계


* 소프트에어 형상 관리 도구

☞  소스 코드나 문서 버전 관리, 이력 관리, 추적 등 변경 사항 체계적으로 관리할 수 있는 기능 제공 도구

 

   1. CVS (Concurrent Versions System)

        - 가장 오래된 형상 관리 도구 중 하나

        - 중앙 집중형 관리 시스템

        - 서버 저장소를 두고 클라이언트가 접속해서 버전 관리 실행

 

        ▶ 주요 기능

            - Checkout/checkin, update/commit 등 서버 저장소와 클라이언트 변경 사항 전송

            - Diff 통한 파일 내용 비교

            - 파일 단위 변경 사항 관리

 

        ▶ 장점

            - 직관적이고 비교적 단순한 명령 세트

 

        ▶ 단점

            - 유니코드 파일명 지원 부족

            - 텍스트 기반 소스 코드만 지원

            - 등록된 파일이나 디렉토리 이름 변경이나 이동 불편

            - 커밋 실패 시 롤백 미지원

 

   2. SVN (Subversion)

        - CVS와 같은 중앙 집중형 방식이지만 CVS 단점 보완한 형상 관리 도구

        - CVS와 사용법 유사해, CVS 사용자가 어렵지 않게 SVN 도입하여 사용 가능

        - CVS에 비해 속도 개선, 저장공간 절약, 변경 관리 단위가 파일이 아닌 작업 모음 단위

 

        ▶ 주요 기능

            - Checkout/checkin, update/commit 등 서버 저장소와 클라이언트 변경 사항 전송

            - Diff 통한 두 개 이상의 파일 내용 비교

            - 바이너리 문서 형상 관리

            - 파일 단위 변경 사항 관리

            - 자동 커밋

            - ignore 통한 형상 관리 배제 자원 지정 기능

 

        ▶ 장점

            - CVS 사용자 쉽게 적응 가능

            - 디렉토리나 파일 자유롭게 이동해도 이력 유지

            - gzip 통한 압축으로 저장 공간 절약

            - CVS에 비해 빠른 속도

            - automic ocmmit으로 커밋 실패 시 롤백 지원

            - 다양한 써드 파티 GUI 도구 존재

 

        ▶ 단점

            - trucnk, branch, tag가 모두 물리적인 저장 위치 점유하므로 비효율적

            - Git에 비해 branch, tag 작업 무거움

 

   3. Git

        - 분산형 관리 시스템

        - 클라이언트가 저장소 자체를 복사하여 스스로 가지고 있음

        - 중앙 서버에 장애 발생하도 로컬 저장소에 커밋 가능하며, 로컬 저장소들을 이용하여 중앙 저장소 복원도 가능

 

        ▶ 주요 기능

            - branch, checkout, commit, tag 등 로컬 환경에서의 형상 관리 가능

            - push, fetch, pull 등 원격 환경에서의 변경 사항 전송 기능

            - 변경은 했지만 commit에는 포함하지 않을 수 있는 staging 기능

            - SVN으로 관리되던 저장소를 Git으로 전환해 주는 마이그레이션 기능

            - diff 통한 파일 내용 비교

            - 바이너리 문서 형상 관리

            - .gitignore 통한 형상 관리 배제 차원 지정 기능

 

        ▶ 장점

            - branch 생성, 이동, 병합 매우 가벼움

            - 각 로컬에 완전한 로컬 저장소 있으므로 원격 저장소에 장애 나더라도 쉽게 복구 가능

            - 여러 번 commit을 로컬 저장소에 실행하고, 원격 저장소에 반영 가능하므로 네트워킹 빈도 줄고 속도는 향상

            - Pack 방식 압축으로 SVN에 비해 저장 공간 절약

            - 다양한 Third party GUI 도구 존재

 

        ▶ 단점

            - CVS, SVN과 기본 개념 많이 다르므로 적응에 시간 필요

            - checkout, commit 등 텍스트는 같지만 의미나 동작이 SVN, CVS와 다른 명령어 있어 혼란 야기

            - 디렉토리가 저장되지 않음

 

구분 CVS Subversion Git
라이선스 GNU GPL v2.0 Apache License v2.0 GNU GPL v2.0
적용 언어 무관 무관 무관
OS Windows/Linux
Mac은 Third Party 도구
Windows/Linux/Mac Windows/Linux/Mac
실행 환경 CLI CLI CLI
GUI TortoiseCVS 등
Third Party 도구
TortoiseSVN, WinSVN 등
Third Party 도구
번들로 제공 SourceTree, GitEye, git-cola 등
다양한 Third Party 도구
320x100

댓글