전통적인 소프트웨어 개발 단계 이해
- 소프트웨어 개발 관련자
1. 요청 고객 (Client)
2. 사용자 (실제 Customer)
3. 프로젝트 관리자 (PM)
4. 개발자 (Developer)
* SI는 발주처가 존재하고 이를 받아서 PM이 프로젝트를 관리하고 개발자가 개발한다.
Software Development Life Cycle
1. 요구사항 (Business Requirements)
2. 요구명세 + 요구분석 (Requirements) : 실제 구현하기위한 매우 상세한 기능 분석하여 고객과 명세서와 스케줄 공유
3. 설계 : 세부적으로 구현 레벨로 설계한다.
4. 구현 : PM이 각 구현, 테스트 단계를 세분화한다. 요구사항 분석부터 출시까지 전체 관리하기도 한다.
5. 테스트(QA) : 소프트웨어 버그 확인
6. 납품 및 유지보수 : 소프트웨어 릴리즈는 테스트 단계에서 완벽한 버전을 수차례 확인해서 공식 릴리즈하게 됨
전통적인 개발 프로세스
- 폭포수(Waterfall Model) : 완벽하게 설계해서 개발자 N명, 기간까지 예측하는 모델
- 프로토타입(Prototype Model) : 고객에게 프로토타입 기능을 만들어서 보여준 후 컨펌 후 개발하는 모델
- 나선형 모델(Spiral model) : 개발시 위험을 최소화 하기 위해 점진적으로 완벽한 프로그램을 개발해 나가는 모델
현업 개발 프로세스
최근 소프트 웨어 업계에선 Mobile First로 서비스를 개발한다.
또한 기능 개발 시 AB Test 등 고객 반응 확인 후, 고객이 선호하는 기능 중심으로 출시한다.
- Agile : 고객의 빠른 요구 변화에 대응하기 위해 최소 기능 개발 후 고객 반응이 좋으면 디벨롭 시켜서 발전시키는 개발 문화이다.
Jira 소프트웨어 기반으로 애자일 프로세스를 관리한다.
- Product Owner :
- 고객을 직/간접 경험하고, 인터뷰해서 비지니스 요구사항 도출
- 큰 개발건은 Product Requirement Document 작성해서 개발팀을 이해시킴
- 작은 건은 티켓을 만들어 개발보드에 백로그로 넣어놓음 - Development team leader :
- 각 개발 사항을 작게 나눠서 티켓으로 만들고 개발자에게 티켓을 assign
- daily scrum으로 진행사항을 확인하고 개발자와 progress 공유 - Scrum Master :
- 개발자들과 sprint 끝낸 후 회고
DevOps 이해
- DevOps : 운영시스템 효율화/자동화 프로젝트를 목표로 유지보수하여 micro features에 대해서도 빠르게 이해할 수 있다.
이를 통해 Release System 자동화, 코드 리뷰와 테스트 자동화, 서비스 모니터링 시스템, 커뮤니케이션 시스템이 가능해졌다.
최근 개발 문화에서는 프론트 엔지니어, 백엔드 엔지니어, DevOps 엔지니어로 나뉘어진다.