충분히 쌓여가는
Agile 애자일 본문
Agile 방법론
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경령 개발 방법론
- 개발 시간이 짧고 신속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적으로 개발할 수 있음
더보기
폭포수 모델: 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델
애자일 방법론 등장 배경
- 기존 개발방법론의 한계를 극복하기 위해 등장함
등장 배경 | 설명 |
소프트웨어 개발 환경의 변화 | - 소프트웨어 개발 트렌드가 모바일 환경으로 변화 - 시장 적시성과 잦은 배포의 중요성 부각 |
기본 개발방법론의 한계 | - 전통적 방법론은 문서 및 절차 위주로 변화에 신속한 대응이 어려움 - 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성 증가 |
애자일 방법론 유형
- eXtreme Programming(XP), SCRUM, LEAN
XP
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 1~3주의 반복(Iteration) 개발 주기
- 5가지 가치와 12개의 실천항목 존재
5가지 가치 | 설명 |
용기 (Courage) |
용기를 가지고 자신감 있게 개발(코드를 작성하기 전에 테스트, 빠르게 피드백, 테스트에 부합하지 못하는 코드를 리팩토링할 수 있는 용기) |
단순성 (Simplicity) |
필요한 것만 하고 그 이상의 것들은 하지 않음 |
의사소통 (Communication) |
개발자, 관리자, 고객 간의 원활한 소통 |
피드백 (Feedback) |
의사소통에 대한 빠른 피드백 |
존중 (Respect) |
팀원 간의 상호 존중 |
12가지 기본원리 | 설명 |
짝 프로그래밍 (Pair Programming) |
개발자 둘이서 짝으로 코딩하는 원리 |
공동 코드 소유 (Collective Ownership) |
시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리 |
지속적인 통합 (CI: Continuous Integration) |
매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리 |
계획 세우기 (Planning Process) |
고객이 요구하는 비즈니스 가치를 정희하고, 개발자가 필요한 것은 무서이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리 |
작은 릴리즈 (Small Release) |
작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리 |
메타포어 (Metaphor) |
공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리 |
간단한 디자인 (Simple Design) |
현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리 |
테스트 기반 개발 (TDD: Test Driven Develop) |
작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리 |
리팩토링 (Refactoring) |
프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성한다는 원리 |
40시간 작업 (40-Hour Work) |
개발자가 피곤으로 인해 실수하지 않다록 일주일에 40시간 이상을 일하지 말아야 한다는 원리 |
고객 상주 (On Site Customer) |
개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리 |
코드 표준 (Coding Standard) |
효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리 |
SCRUM
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
주요 개념 | 설명 |
백로그 (Backlog) |
제품과 프로젝트에 대한 요구사항 |
스프린트 (Sprint) |
2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상 |
스크럼 미팅 (Scrum Meeting) |
- 매일 15분 정도 미팅으로 To-Do List 계획 수립 - 데일리 미팅(Daily Meeting)이라고도 함 |
스크럼 마스터 (Scrum Master) |
프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람 |
스프린트 회고 (Sprint Retrospective) |
- 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록 - 해당 스프린트가 끝난 시점이나 일정 주기로 시행 |
번 다운 차트 (Burn Down Chart) |
- 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트 - 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치 |
LEAN
- 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- JIT(Just In Time), 칸반(Kanban) 보드 사용
7가지 원칙 |
낭비 제거 / 품질 내재화 / 지식 창출 / 늦은 확정 / 빠른 인도 / 사람 존중 / 전체 최적화 |
애자일과 전통적 방법론 비교
비교 대상 | 애자일 방법론 | 전통적 방법론 |
계획 수립 | 유동적 범위 설정 | 확정적 범위 설정 |
업무 수행 | 팀 중심 업무 수행 | 관리자 주도적 명령과 통제, 개인 단위로 업무수행 |
개발/검증 | 반복 주기 단위로 소프트웨어 개발/검증 | 분석 / 설게 / 구현 / 테스트를 순차적으로 수행 |
팀관리 | 업무 몰입, 팀 평가 | 경쟁, 개별 평가 |
문서화 | 문서화보다는 코드 강조 | 상세한 문서화를 강조 |
성공요소 | 고객 가치 전달 | 계획/일정 준수 |
유형 | XP, SCRUM, LEAN | 폭포수, 프로토타입, 나선형 |
참고자료
수제비 정보처리기사 실기 1-5 ~ 1-7
'IT > Computer Science' 카테고리의 다른 글
GET방식 / POST 방식 (0) | 2023.02.03 |
---|---|
Normalization 정규화 (1) | 2023.02.02 |
Test Driven Develop(TDD) (0) | 2023.01.31 |
DB Index (0) | 2023.01.30 |
Clean Code / Refactoring (0) | 2023.01.25 |