개발방법론 - yojulab/learn_DevOps GitHub Wiki

Software Development Methodology

Agile

  • 작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법

1. 스크럼 (Scrum)

스크럼은 Agile에서 가장 널리 사용되는 프레임워크로, 주로 소프트웨어 개발 팀에서 짧은 기간 동안 목표를 설정하고 완성하는 방식입니다. 팀은 일정한 기간(스프린트) 동안 특정 목표를 달성하기 위해 노력하며, 일반적으로 1~4주로 구성됩니다.

  • 특징: 짧은 개발 주기(스프린트), 지속적인 피드백, 팀 간의 투명한 소통.
  • 구성 요소: 제품 백로그, 스프린트 백로그, 데일리 스탠드업 미팅, 스프린트 회고.
  • 역할: 제품 소유자(Product Owner), 스크럼 마스터(Scrum Master), 개발 팀.

2. 칸반 (Kanban)

칸반은 비주얼 워크플로우 도구를 사용하여 작업을 관리하는 방법론입니다. 작업 항목은 칸반 보드에서 시각적으로 관리되며, 팀은 각 작업 항목이 '진행 중', '완료' 상태로 이동하는 것을 확인합니다.

  • 특징: 비주얼 보드로 작업 시각화, 작업의 흐름을 최적화하여 낭비 최소화, 지속적인 개선.
  • 구성 요소: 칸반 보드, 작업 항목의 시각화, WIP(진행 중 작업) 제한.
  • 주요 사용 상황: 지원 팀, 유지보수 팀, 비즈니스 작업에 적합.

3. 린 소프트웨어 개발 (Lean Software Development)

린 개발은 린 제조의 원칙을 소프트웨어 개발에 적용한 방법론입니다. 낭비를 줄이고 가치 창출에 집중하는 것이 목표입니다.

  • 특징: 낭비 제거, 품질 향상, 학습 및 개선을 위한 피드백.
  • 구성 요소: 가치에 집중, 작업을 최적화, 빠른 피드백 루프, 개선 문화.
  • 주요 사용 상황: 스타트업 및 자원 효율성을 중시하는 팀.

4. 익스트림 프로그래밍 (XP, Extreme Programming)

익스트림 프로그래밍은 코드 품질과 유연성을 높이기 위해 짧은 개발 주기와 지속적인 피드백을 중시하는 방법론입니다. 프로그래머가 협업하여 고품질의 소프트웨어를 개발하도록 지원합니다.

  • 특징: 페어 프로그래밍, 지속적 통합(CI), 테스트 주도 개발(TDD).
  • 구성 요소: 스탠드업 미팅, 피드백 루프, 페어 프로그래밍, CI/CD 파이프라인.
  • 주요 사용 상황: 빠르게 변화하는 요구사항에 맞춰 유연하게 대응할 필요가 있는 프로젝트.

5. 크리스탈 (Crystal)

크리스탈 방법론은 프로젝트의 특성, 팀의 크기, 중요도에 따라 적절한 프로세스를 선택하는 방식입니다. 크리스탈 방법론은 팀이 상황에 맞게 유연하게 조정할 수 있는 구조를 제공합니다.

  • 특징: 유연한 프레임워크, 팀과 프로젝트 특성에 따라 조정.
  • 구성 요소: 개방형 의사소통, 팀 내 자유로운 상호작용.
  • 주요 사용 상황: 비슷한 성격의 프로젝트가 반복되지 않는 경우.

6. DSDM (Dynamic Systems Development Method)

DSDM은 명확한 목표와 일정 관리가 중요한 프로젝트에 적합한 방법론입니다. DSDM은 타임박스와 반복적인 개발을 활용하여 신속하게 가치를 전달할 수 있도록 합니다.

  • 특징: 비즈니스 요구사항에 초점을 맞춘 개발, 명확한 목표 설정, 반복적이며 점진적 접근.
  • 구성 요소: 비즈니스 중심, 피드백 주기, 명확한 문서화.
  • 주요 사용 상황: 비즈니스 프로세스 개선과 같은 복잡한 시스템 구축.

7. 기능 중심 개발 (FDD, Feature-Driven Development)

기능 중심 개발은 복잡한 프로젝트를 작고 관리하기 쉬운 기능 단위로 나누어 개발하는 방법입니다. 이 방법론은 짧은 시간 안에 기능 단위로 가치를 제공하는 데 중점을 둡니다.

  • 특징: 명확한 기능 정의, 기능 단위로 개발, 반복적 피드백.
  • 구성 요소: 모델링, 기능 단위로의 계획, 설계 및 빌드 반복.
  • 주요 사용 상황: 대규모 프로젝트, 고객 요구사항이 상세히 정의된 프로젝트.

Schedulers

Notion

Jira

  • refer : [youtube - 성장하는 조직의 프로젝트 관리 노하우
  • Jira 클라우드 활용법](https://www.youtube.com/live/rfvHEWe8cu0?feature=share)
  • 협업 기반 중요 업무에 집중할 수 있도록 도와주고 팀 효율성을 향상시키는 프로젝트 관리 가능 https://semiengineering.com/hidden-costs-of-shifting-left/
    • Impact of Shift left on hardware/software development. Source: Semiconductor Engineering • 업무 계획을 수립해서 우선순위를 정하고 실제 업무를 진행해서 완료하는 전체 라이프 사이클에 기여 • 프로젝트 보드와 리포트, 대시보드 기능을 통한 업무별 가시성 확보 • 팀 커뮤니케이션 향상 기여 • 애자일 프로젝트 시스템 도구로 지원
    • Atlassian DevOps tool chains