Agaile 방법론 정리

안희수·2021년 3월 8일
0

내용을 정리하기 전에 앞서
정보처리기사 암기만을 위해서라면 블로그에 적어서 남기는 것보다는
무식하게 외우고 단어 단위로 어거지로 외우는 것이 더 효율적인 공부 방법이겠지만 공부의 목적도 결국은 제대로 알고 현업에 적용하기 위함이므로
블로그에 중점적으로 기록하여 남겨 나중에라도 다시 볼 수 있게 하고자 함이다.

등장배경

- 사용자의 요구사항이 빈번하게 변경됨에 따라 새로운 방법론이 필요해짐
- 계획이 없는 개발 방법의 경우, 선행 작업을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있음.
- 계획이 지나치게 많은 개발 방법론의 경우, 형식적인 절차를 따르는 비용과 전체적인 개발의 흐름을 느리게 하는 단점을 가지고 있음.
- 애자일은 개발 과정의 어려움을 극복하기 위해 적극적으로 모색한 방법론이다.


애자일 방법론의 정의

  • 요구사항, 설계, 구현, 시험의 단계를 통해 개발하는 방법론이다.
  • 소프트웨어 개발 방법에 있어서 계획이 없거나 계획이 지나치게 많은 개발 방법론 사이에서 타협점을 찾은 방법론이다.
  • 소프트웨어 개발 단계의 변화에 신속하게 대응하기 위하여 요구사항을 지속적으로 분석하고 반녕하여 시간 지연을 최소화 하는 방법론이다.

애자일 방법론의 특징

  • 프로세스와 도구 중심이 아닌 개발 과정의 소통을 중요하게 생각하는 소프트웨어 개발 방법론으로 반복적인 개발을 통한 잦은 출시를 목표로 한다.
  • 기존 모형(폭포수 모형, 프로토타입 모형, 나선형 모형)의 문제점을 보완한 모형이다.

폭포수 모형(Waterfall Model)

[현재 단계에서 끝맺음 없이는 다음 단계로 넘어가지 않고
한번 넘어간 단계에서 이전 단계로 돌아가지 않음
구조적 개발 방법론에서 사용되는 모델 ]

프로토타임 모형(Prototype Model)

[시스템 개발 초기에 사용자의 요구 기능을 시제품으로 만들어
사용자로 하여금 기능과 사용성 등에 대해 검증시켜 가면서
시스템을 개발하는 기법이다 ]

나선형 모형(Spiral Model)

[폭포수 모형과 프로토 타임 모형의 장점을 살린 모형
사용자 요구 확인의 의한 시스템 개발이 가능함
나선형 모형은 위험 분석을 해나가면서 시스템을 개발한다 ]

  • 소프트웨어를 집중적으로 개발한다.
  • 출시 주기를 짧게 하여 다양한 요구 변화에 대응한다.
  • 고객과 개발팀과의 소통, 개발팀원 간의 소통 협역을 극대화 한다.
  • 인간의 수행 능력을 높이기 위한 현실적인 방법을 제시한다.
  • 가볍고 실용적인 소프트웨어 개발 방법론이다.
  • 애자일 방법론을 소프트웨어 개발 방법론의 방법론이라고 한다.

애자일 방법론의 선언문

  1. 개인과 상호 작용을 프로세스와 도구보다 중시한다.
  2. 동작하는 소프트웨어를 포괄적인 문서보다 중시한다.
  3. 고객과의 협력을 계약의 협상보다 중시한다.
  4. 변화의 대응을 계획의 수행보다 중시한다.

애자일 방법론의 원칙

  1. 소통한다. → 알기 쉬운 차트, 정보 공유, 회의
  2. 협력한다. → 개발팀 협조, 고객과의 대화로 문제 해결
  3. 적응한다. → 변화 수용, 융통성 발휘
  4. 지속한다. → 검증을 반복, 점증 개발
  5. 가치를 전달한다. → 위험도 높은 작업 우선, 비용 감소
  6. 피드백 한다. → 자주 출시, 고객 평가

애자일 방법론의 5가지 가치

  1. 의사소통 : 개발팀이 발전적인 방향으로 존속하는데 있어서 가장 중요한 가치이다.
  2. 용기 : 모르는 것을 모른다고 말하는 용기, 먼저 도움을 주거나 요청할 수 있는 용기로 소프트웨어 개발 시 커다란 미지의 두려움에 마주할 때 필요한 가치이다.
  3. 피드백 : 소프트웨어 개발 밎 의사소통의 핵심으로 지속적이고 빠른 피드백을 통해 의사소통과 좋은 분위기를 이어갈 수 있다.
  4. 단순함 : 복잡한 방식으로 개발하는 것이 아닌 간결하고 단순하게 개발하여 어려움을 해소하고자 하는 것이다.
  5. 존경 : 위의 모든 가치를 추구하는 과정에서 유지되어야 하는 가치이다.




1 차적으로 정리하면서 맺는 말

애자일 방법론의 종류는 
익스트림 프로그래밍, 스크럼, 린, DSDM, FDD 등 
여러가지가 있지만 하나의 글에 모든 것을 담아내면
가독성이 떨어지므로 다음 블로그 글에서 마저 정리하고자 한다

요지는 애자일이 뭔지 
애자일의 기본적인 원칙과 가치 선언등을 통해서
앞으로 어떤 식으로 개발을 해야 할치 
혹은 개발을 하게 되는 와중에 마음을 다잡을 때 
찾아서 다시 읽어보기 위함이며

지금까지 일해왔던 분야에서는 애자일 보다는 
구조적 방법론 방식의 폭포수형 모델로 개발을 해왔다고 보는게 맞다.

그도 그럴 것이 기간이 정해진 단기 프로젝트를 
여러건을 동시에 진행함도 있고 
스마트 팩토리 관련 정부 사업 산출물이나 요구 문서에서도 볼 수 있듯이 

- 타당성 검토 
- 계획 수립 
- 고객사 요구사항 분석 
- 시스템 설계
(여기에는 화면 설계나 기능 설계 등도 포함 되어 있었다.)
- 시스템 구현
- 테스트(단위 / 통합 테스트 포함)
- 운영지원 밎 시스템 안정화 

단계를 거쳐왔다.

그래서 전형적인 폭포수 모델 처럼 
도중에 다시 이전 단계로 회귀할 수 없었고 
도중에 잘못되더라도 바꿀 수 없었다. 

사용자의 요구사항 역시 이 단계에서는 구현할 수 없었다.

나중에 애자일을 적용한 업체에서 개발을 하게 된다면 달라지겠지만
아직은 애자일을 경험한 적이 없고 

또한 많은 개발사들이 면접 때 
애자일을 경험한 적이 있는지 물어 보았었지만 
애자일을 정확하게 실현하고 있는 회사인지 역시 들어가 봐야 알 것 같다.
profile
9년차 소프트웨어 개발자 (2024년 재 개편 예정입니다)

0개의 댓글