* 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 도구 |
'정보처리기사 > 필기' 카테고리의 다른 글
[정보처리기사] Part02-03-1. 제품 소프트웨어 패키징 (1) | 2022.07.15 |
---|---|
[정보처리기사] Part02-05-3. 인터페이스 구현 검증 (0) | 2022.02.25 |
[정보처리기사] Part02-02-1. 모듈 구현 (0) | 2022.02.25 |
[정보처리기사] Part02-01-4. 데이터 조작 프로시저 최적화 (0) | 2022.02.25 |
[정보처리기사] Part01-04-3. 인터페이스 상세 설계 (0) | 2022.02.25 |
댓글