개인 사용자에게 최적화된 운영체제
소규모 기어용으로 최적화된 운영체제
트랜잭션이 몰리거나 복구 기능을 필요로 하는 소규모 기업용 운영체제
동시 처리 성능이 뛰어나며 메모리도 6TB까지 지원
Debian GNU/Linux
개발자 패키지와 매뉴얼이 활성화되어 있어 개발자에게 최적화되어 있음
Ubuntu
가장 광범위하게 쓰이는 Linux 운영체제로 다양한 개발자용 패키지 제공
Fedora
안정화된 운영과 다양한 하드웨어 지원
CentOS
프로그래밍에 최적화된 환경 제공, RHEL 소스로 컴파일됨
openSUSE
안정화된 버전과 테스트 중인 버전을 동시에 공급
Slackware
다양한 소프트웨어와 그래픽 유저 인터페이스가 미리 설치
언어의 타입, 시스템의 특징, 언어의 특징, 관리 도구 지원 등을 고려하여 선택해야 함
요구 사항 관리
프로젝트 수행 시 정확한 요구 사항 정의 및 관리
ex. JFeature
설계
ERD를 통한 자동화된 데이터 모델링, UML 자동 생성
ex. DBdesigner
구현
소프트웨어 구현 시 개발자 편의성 고려
ex. Eclipse, CodeBlock
테스트
지속적 통합 기반, 자동 테스트 수행
ex. JUnit
빌드
소프트웨어 빌드 자동화, 스크립트를 통한 빌드 자동화
ex. Ant, Jenkins
형상 관리
개발 산출물 관리 및 변경 통제
ex. Subversion, Selenium
품질 관리
설계 품질의 측정을 통해 패키지를 효과적으로 분석하고 관리
ex. jDepend, Mylyn
이슈 관리
프로젝트를 진행하면서 발생하는 문제를 시스템에 등록하여 관리하는 시스템
ex. Mantis, Git
프로젝트 관리
일정 관리를 위한 간트 차트, 네트워크 다이어그램, WBS 등을 제공
ex. Redmine, OpenProj
개발하려는 전체 시스템에 필요로 하는 서비스를 효율적으로 선택하여 개발 환경을 구축해야 함
외부 인터넷망이 차단된 상태에서 인트라넷망을 활용하여 개발 환경을 구축하는 방식
정보 유출이 민감한 경우 사용
클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발 환경을 구축하는 방식
개발 환경 투자비용이 적고 구축 시간이 빠름
On-Premise 방식과 Cloud 방식을 혼용하는 방식
컴퓨팅 환경
프로그램을 서리하고 운용할 하드웨어 장비를 세팅
스토리지
대규모 데이터를 저장, 관리, 전송, 이중화하기 위한 저장 장치 세팅
데이터베이스
실제 데이터를 저장하고 관리하기 위한 데이터베이스 세팅
네트워킹 전송
구성된 서비스, 프로그램, 콘텐츠를 효율적으로 전달하기 위한 환경 세팅
개발자 도구
프로그램을 실제 개발하기 위한 제반 환경 구축
보안 환경 구축
외부의 침입으로부터 시스템과 데이터를 보호하기 위한 환경 구축
응용 기술
증강 현실, 머신러닝, 게임 등 개발을 위한 환경 세팅
생산성 향상
여러 서비스 환경 구축