2. 소프트웨어 공학/소프트웨어개발방법론
Agile방법론
SWExpert
2022. 10. 13. 20:03
I. 절차보다 사람 중심, Agile 방법론 개요
-. 프로세스보다 사람 중ㅅ미이 되어 요구사항 변경에 대해 유연하고 신속하게 적응하면서 시스템을 개발할 수 있는 반복적 방법론
-. 효율적인 제품, SW 개발을 위해 절차보다 사람과 제품에 집중, 낭비를 제거, 고객의 요구사항을 유연하고 신속하게 반영하기 위한 방법론
-. 애자일(기만한, 좋은 것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 말함
-. 특징: 가변적 요구대응, 고객만족, 개발자 동기부여, Sweet Spots
특징 | 설명 |
애자일에 적합한 환경 | 고객 요구사항이 자주 변경되는 경우 애자일 방법론이 적합 |
고객 참여도 | 고객 프로세스에 협력하기 때문에 고객과 신속한 피드백이 가능 |
업무 효율화 | 프로젝트를 여러 부분으로 나누어 점진적으로 개발하여 신속하고 반복된 주기로 수행 |
소규모에 적합 | 요구사하잉 명확하지 않을 경우 또는 소규모 개발에 적합한 소프트웨어 방법론 |
II. Agile 가치 및 원칙
가. Agile 가치
가치 | 지향 | 설명 |
개인과 상호작용 | 소통중시 | 공정과 도구보다 개인과 상호작용을 강조 |
작동하는 소프트웨어 | 실무적 관점 | 포괄적인 문서보다 작동하는 소프트웨어에 가치를 둠 |
고객과의 협력 | 협동 중시 | 계약 협상보다 고객과의 협력에 가치를 둠 |
변화에 대응 | 유연성 | 계획을 따르기 보다 변화에 대응하는 것에 가치를 둠 |
나. Agile 원칙
구분 | 12가지 원칙 | 설명 |
고객가치 | 고객만족 추구 | 빠른 배포와 피드백 반영, 고객의 만족도 향상 |
요구사항 변경 수용 | 고객 요구 변경 인정 및 대응을 위한 유연성 | |
짧은 배포 간격 | 도구 등을 통해 빠른 배포, 고객 피드백 반영 | |
소통 | 현업-개발자간 일일 의사소통 | 담당자와 개발자 간의 소통을 통한 업무 효율화 |
동기부여된 사람들 중용/지원 | 동기 부여된 팀원을 중용 및 환경 지원 | |
면대면 대화 | Daily Meeting 등을 통한 면대면 대화 | |
개발 | 작동하는 소프트웨어로 진도 측정 | 직접 SW 기능/비기능적 요소 및 진행 관리 |
지속 가능한 개발 장려 | 지속가능한 개발 및 프로젝트 진행 장려 | |
좋은 기술, 설계 관심 | 우수한 기술, 아키텍쳐 중시 및 공유 | |
추구 | 단순성 추구 | 목표 업무와 연관없는 일들을 최소화 |
자기 조직화 팀 | 책임감 부여, 생산성 향상을 위한 자기조직적 팀 | |
정기적 효율성 제고 | 스프린트 리뷰를 통해 다음 스프린트에 반영할 수 있는 요소 적용 |
III. Agile 조직 및 회의 체계
가. Agile 조직
조직 | 구성 | 역할 |
TEAM | PO(Project Owner) | 업무의 우선순위를 정하고 백로그 관리 |
SM(Scrum Manager) | 팀의 사람 관리를 하며 실제 팀의 실행을 리딩 | |
Developer | 개발자 | |
Designer | 디자이너 | |
COP | PO COP | 비즈니스 목표와 의존성에 대해 논의 |
SM COP | 실행시 팀 간 의존성이 있는 업무에 대해 확인 및 개선 | |
Design COP | 디자인 가이드, 시안 리뷰 및 피드백 | |
Tech COP | 기술적 Practice 공유 |
나. Agile 회의체계
구분 | 회의체계 | 설명 |
주기적 진행 | Agile COP(Community of Practice) Meeting | -. 구성: 같은 스킬을 가지고 있는 유사 직군 멤버들의 가상 조직, 주기적 모임진행 -. 역할 및 특징: 각 직군의 팀 리더들이 기술적인 스킬, 문제점, 표준/가이드화 논의 -. 각 팀의 Best Practice 공유 -. Tech Cop, PO COP, SM COP, Design COP 등이 운영 |
임시 조직 | Agile Circle | -. 구성: 팀 업무 이외에 별도의 이슈/목적을 가지고 업무 수행이 필요한 경우 임시적으로 구성되는 조직 -. 역할및특징: Cross-Function한 이슈 중심의 팀으로 팀 구성시 목적을 분명히 하고 정기적/부정기적으로 모임을 가진다, 단 목적이 달성되면 해당 Circle은 해체 |
Agile 조직 | -. Cross-Function팀:팀 목적을 달성하기 위해 조직되고 목적 달성하면 해체 -. 팀장이 없음, 보고하는 대상이 없이 팀이 Daily Scrum을 통해 업무 공유 -. 제한인원(9명): 구성원이 많아지면 Comm.이 어렵고 관료화 가능성 높음 -. QA 조직 없음: 제품의 품질은 Agile팀 내에서 책임을 지고 준수 |
IV. Agile 방법론의 종류
종류 | 특징 |
XP | -. 의사소통 개선, 즉각적인 피드백에 의해 단순 코딩하여 소프트웨어의 품질을 높이기 위한 방법 -. 개발 조직이 기반이 되는 중소규모 팀에 적합한 경량화된 개발방식 -. 협업, 빠른 소프트웨어 구현, 매우 기술적인 개발 방식을 강조하는 방법론 -. 테스트 강조, 4가지 가치와 12개의 실천항목 -. 1~3주 단위의 반복 -. 가장 주목받음, 개발관점 - 의사소통 개선, 즉각적 피드백, 단순, 품질향상 |
SCRUM | -. 사용자의 요구사항을 만족시키기 위해 프로토타입을 반복, 점진적으로 개발하는 Agile 방법론 -. 프로젝트 관리를 위한 애자일 방법론으로서 스프린트(Sprint)라는 통상 4~6 주 정도의 잘 정의된 개발주기를 가지며 개발 효율성을 극대화할 수 있는 환경 제공 -. 투명성(Transparency), 타임박싱, 커뮤니케이션 중심, 경험주의 모델 -. 프로젝트를 스프린트(30일 단위 반복)로 분리, 팀은 매일 스크림(15분 정도) 미팅으로 계획 수립 -. 팀구원원이 어떻게 활동해야 하는가에 초점 -. 통합 및 인수테스트가 상세하지 않음 -. Iteration 계획과 Tracking에 중점 -. Backlog, Sprint 단위로 짧은 기간 -. 3가지 산출물, 미팅, 역할자 |
Kanban | -. 적시개발(just-in-time)을 지원하는 방법론으로 매우 적은 규칙을 가지고 있는 Agile 방법론 -. 칸반보드를 통해 개발 공정을 시각화하고 개발제안(WIP)을 이용해 Workflow상의 공정을 관리하고 최적화하여 적시개발(just-in time development)를 지원하는 Agile 방법론 -. workflow 시각화, wip, 제한, 소요시간 측정 및 최적화 -. 워크플로우 가시화를 통한 적시 개발, 작업제한(WIP) 적용 |
Lean | -. TPS(Toyota Production System),을 벤치마킹하여 재정립한 경영방법론을 소프트웨어 개발에 적용한 개발 방법론 -. 80년 도요타 시스템의 린 생산방식을 소프트웨어 개발에 적용 -. 파레토 법칙에 의거하여 개발에 정말 중요한 20%에 집중하고 낭비되는 요소(가외기능, 혼란, 경계 넘어가기)를 제거 -. 개발 조직 전반에 걸친 법칙과 실천 방법론 다룸 |
Crystal | -. 프로젝트 상황에 따라 알맞은 방법론을 적용할 수 있도록 다양한 방법론 제시 -. Tailoring하는 원칙 제공 -. 프로젝트 중요도와 크기에 따른 메소드 방법 제시 |
RUP | -. 완전한 SW 개발 모델 제시 -. 비주얼 모델링 도구 지원 -. Agility 성격 강조 |
FDD | -. Feature Driven Development -. 기능 모델, 설계와 구현, 수해으이 3단계 사이클 -. 짧은 Iteration(2주)과 5단계 프로세스 -. 설계와 구축 프로세스의 반복 |
ASD | -. Adaptive Software Development -. 폭포수 사이클을 추측, 협동, 학습 단계로 대체 |
V. Agile 방법론 문제점 및 해결방안
가. Agile 방법론 문제점
나. Agile 방법론 문제점 해결방안
문제점 | 해결방안 | 설명 |
규모의 한계 | 단위별 적용 | 전체 프로젝트는 폭포수 모델로 진행하며 워킹그룹 단위로 애자일 적용 |
개발중심 계획부재 | PMO 관리 | 분할발주 등을 통한 설계와 개발의 공정분리 PMO를 통한 사업관리 |
산출물 부재 | 3가치 산출물 작성 | 감리 대응을 위한 기본 설계 분석 산출물 작성 Burndown chart 및 아키텍쳐 산출물 준비 |
관리통제 상실 | 기준선 관리 | 폭포수 등의 전통적 방식과 융합을 통한 마일스톤 수립 단기 목표 및 필수 산출물 설정을 통한 기준선 관리 |
요구사항의 변경 | CCB 운영 | 요구사항은 변경은 일정 및 자원의 투입을 초래함 인지 요구사항 변경관리를 위한 CCB 운영 |
고객 의존성 | 요구사항 명확화 | 요구공학 및 요구사항 명확화, 가시화를 위한 분석 |
VI. Agile 과 전통적 개발 방법론 비교
구분 | 애자일 개발 방법론 | 전통적인 개발 방법론 |
계획 수립 | - 유동적인 범위 및 상세 요구사항 조정 - 주기적인 상세계획 |
- 확정된 범위, 초기에 상세 요구사항 확정, 초기 일정계획 수립 |
개발 및 테스트 | - 이터레이션 단위로 실행 소프트웨어를 전달(적시설계/개발) | - 분석/설계/구현/테스트를 순차적으로 수행 |
프로세스 View | - 유연하고 간소함 - 프로젝트 상황에 따라 주기적 조정 |
- 정형화되고 상세화됨 |
업무 수행 형태 | - Self-Organizing 팀 - 팀 중심 업무 수행(Collective Ownership) |
- 관리자 주도적 명령과 통제 - 개인단위로 업무 수행 |
조직 | - Cross-Functional Team - 전문가가 다기능을 수행 |
- Functional Team - 분업화되고 역할이 한정 |
팀관리 | - 업무몰입 및 코칭, 팀평가 | - 지시 및 감시, 경쟁, 개별 평가 |
문서화 | - 경량 프로세스 및 문서화보다 코드 강조 | - 중량 프로세스, 상세한 문서화 강조 |
성공요소 | - 고객 가치 전달 | - 계획 준수 |