CS 지식

[정보처리기사] 에자일 방법론 개념 및 유형

싯타마 2021. 5. 24. 17:53

1. 에자일(Agile) 방법론이란?

 

 

 에자일(Agile) 방법론은 소프트 웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법인 소프트웨어 개발 방법론 중 하나이며, 기존에 쓰이던 폭포수 모델의 단점을 극복하기 위한 방법이다. 폭포수 모델은 소프트웨어 개발 계획을 정해두고 각각의 단계를 순차적으로 개발을 진행하는 형태의 개발 방법론인 반면에 에자일 방법론은 개발과 함께 즉시 피드백을 받아 보다 더 신속하고 유동적으로 개발을 할 수 있는 방법론이다.

 

2. 에자일 방법론 장점

 

- 절차보다 사람이 중심이 된다.

- 변화에 유연하고 신속하게 반응할 수 있다.

- 즉시 피드백을 받아 유동적으로 개발할 수 있다.

 

3. 에자일 방법론 유형

 

1) 익스트림프로그래밍(XP)

 

 에자일 방법론의 대표적인 예이며, 사용자와 함께 1~3주 정도  반복 개발을 하고 원활한 의사소통을 통해 피드백을 받으며 소프트웨어의 품질을 높일 수 있다는 특징이 있다. 5가지의 가치와 12가지 기본원리를 지닌다.

 

- XP 5가지 가치 

  • 용기(Courage):  용기를 가지고 자신감 있게 개발
  • 단순성(Simplicity): 필요한 것만 하여 단순화한다.
  • 의사소통(Communication): 주체 간의 원활한 의사소통이 가능하다.
  • 피드백(Feedback): 신속한 피드백을 할 수 있다.
  • 존중(Respect): 팀원 간의 상호 존중이 필요하다.

- XP 12가지 실천사항(기본 원리)

  • 짝 프로그래밍(Pair Programing): 개발자 둘이서 짝으로 코딩한다.
  • 공동 코드 소유(Collective Ownership): 모든 코드는 개발자들이 공동으로 소유하며 누구든지 수정할 수 있다.
  • 지속적인 통합(Continous Integration): 매번 여러 번씩 소프트웨어를 통합하고 빌드한다.
  • 작은 릴리즈(Small Release): 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다.
  • 메타포어(Metaphor, 상징): 공통적인 이름의 체계를 갖고 공통적인 시스템 서술서를 통하여, 개발자와 고객 간의 의사소통을 돕는다.
  • 계획 세우기(Planing Process): 고객이 원하는 비즈니스 가치를 정의하고 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다.
  • 간단한 디자인(Simple Design): 요구사항에 적합하고 가장 단순화한 시스템을 설계해야 한다.
  • 테스트 기반 개발(TDD, Test Driven Develop): 작성해야 하는 프로그램에 대한 테스트를 먼저 수행한 다음 코드를 작성하고 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성해야 한다.
  • 리펙토링(Refactoring): 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다.
  • 코드 표준(Coding Standard): 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다.
  • 고객 상주(On Site Customer):  의사소통을 향상하기 위하여 개발자들의 질문에 즉각 대답 가능한 고객을 프로젝트에 풀타임으로 상주시켜야 한다. 
  • 40시간 작업(40-Hour Work): 주 40시간 이상을 일하지 말아야 한다.(효율성을 위하여)

2) 스크럼(Scrum)

 

 스크럼은 프로텍트 관리를 위해 상호, 점진적인 개발 방법론이며 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 개발 방법론이다.

 

- 스크럼 주요 진행 과정제품 백로그 -> 스프린트 -> 스프린트 계획 회의 -> 스프린트 백로그 -> 일일 스크럼 회의 -> 실행 가능한 제품 개발

 

- 스크럼 용어 개념

  • 제품 백로그(Product Backlog): 개발한 제품에 대한 요구 사항 목록이다.
  • 스프린트(Sprint): 반복적인 개발 주기, 2~4주 정도 짧은 개발 기간으로 개발 품질을 향상한다.
  • 일일 스크럼 회의(Scrum Meeting): 매일 15분 정도 진행되는 스크럼 회의, Daily meeting이라고도 한다.
  • 스크럼 마스터(Scrum Master): 스크럼 프로젝트의 리더, 스크럼 진행 중 문제들을 인지하고 해결하는 역할이다.
  •  스프린트 회고(Sprint Retrospective): 스프린트 주기를 되돌아보며 정해놓은 규칙을 잘 지켰는지 확인하고 개선점을 확인 및 기록하는 것을 말한다. 스프린트가 끝난 시점이나 일정 주기로 시행한다.
  • 번 다운 차트(Burn Down Chart): 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트이다.

3) 린(LEAN)

 

 도요타의 린 시스템 품질기법을 소프트웨어 개발에 적용한 것, 낭비 요소를 제거하여 품질을 향상한다.

JIT(Just In Time), 칸반(Kanban) 보드를 사용한다.

 

- 7가지 원칙

  • 낭비의 제거(Eliminate waste): 불필요한 코드나 기능 불분명한 요구사항 등 품질의 영향을 미치지 않는 것들을 제거한다.
  • 품질 내재화(Build Integrity in , 통합성 구축):  개발 초기부터 품질을 향상하도록 모듈화 한다.
  • 지식의 창출(Amplify Learning): 학습을 하고 지식을 창출한다.
  • 늦은 확정(Defer Commitment): 중요한 문제에 대한 의사결정을 최대한 미룬다.
  • 빠른 인도(Deliver Fast): 최대한 빨리 결과물을 인도한다.
  • 사람 존중
  • 전체 최적화(Optimize the whole): 요구사항 수집부터 제품을 릴리스하는 시점까지 모든 프로세스를 최적화한다.