애자일

개념

종류

  1. Scrum
    • 상호, 점진적 개발방법론
    • 기능/개선점에 대한 우선 순위를 부여
    • 개발 주기마다 실제 동작할 수 있는 결과를 제공
  2. Kanban board
    • 작업 관리
    • 시각적 표시
  3. XP (Extreme Programming)
    • 비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법
    • 개발 문서 보다는 소스 코드를, 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점

Scrum

scrum_framework

scrum_framework

  1. 제품 백로그

    agile-product-backlog-def

    theme-epic-story-task

    sprint-epic

  2. 스크럼 팀 구성

    agile-scrum-team-def

  3. 스크럼 팀 주요 업무

    agile-scrum-roles-def

Kanban Board

kanban_board

Extreme Programming

programming

programming

핵심가치 설명
용기(Courage) 고객의 요구사항 변화에 능동적인 대처
단순성(Simplicity) 부가적 기능, 사용되지 않는 구조와 알고리즘 배제
커뮤니케이션(Communication) 개발자, 관리자, 고객 간의 원활한 의사소통
피드백(Feedback) 지속적인 테스트와 반복적 결함 수정, 빠른 피드백
존중(Respect) 모든 프로젝트 관리자는 팀원의 기여를 존중

programming

구분 구분 설명
Fine scale feedback Pair Programming 개발 머신 당 두 명의 개발자. 상호 보완 체계 구현
  Planning game 개발 계획을 위한 실천 방법. 릴리스 / iteration 계획으로 나뉨
  TDD 구현 전 단위 test driver의 작성을 통한 validation
  Whole Team 고객 역시 개발 팀의 일원
Continuous Process Continuous Integration 개발은 누구에게나 최신 버전에서 수행되도록(이후 통합으로 인해 지연을 야기하지 않도록)
  Refactoring (성능 및 유지보수성 모두에서) 최적화된 코드 유지
  Small Release 작고도 자주 수행되는 릴리스를 통한 신뢰도 향상
Shared understanding Coding Standards 팀원 모두에게 적용되는 일관된 코딩 규칙을 통한 코드 품질 제고
  Collective code ownership 모든 코드는 개발 팀원 모두의 책임임
  Simple design Refactoring과 함께 언제나 단순성을 최대한 유지하도록
  System metaphor 구현 대상 시스템의 동작 방법을 개발자-고객 모두가 알 수 있는 언어로 표현하도록(코드에서도)
Programmer welfare Sustainable pace 40시간 이상의 초과 작업은 금물. 이는 전체 생산성을 떨어뜨림
구분 내용
관리측면 결정은 분산화, 코칭 / 트래킹 / 조정
계획측면 팀이 개발한 SW의 가치를 최대화
  가능한 적게 투자하고, 빠르게, 가장 가치 있는 기능 부여
설계측면 의사소통 통해 설계, 중복된 코드가 없을 것 -> 단순하게 개발
  가능한 클래스와 메소드 들은 적게 만들 것 -> 변경에 유연
개발측면 지속적인 통합, 수정, 테스트, 배포
  복잡한 코드 제거, Pair 프로그램으로 완벽한 코딩
테스트측면 각 테스트는 다른 부분과 관련이 없어야 함
  테스트 자동화 테스트 프로그램 만드는 주체는 프로그래머
기타 계획세우기, 작은시스템 릴리즈, 12가지 실천사항 병행