ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 애자일 방법론(Agile Method)
    Computer Science 2020. 11. 3. 23:48

    현재까지 가장 애용되어온 소프트웨어 개발 방법론에 대해 설명해보라고 하면 

    크게 두 가지를 꼽을 수 있을 것이다.

    하나는 전통적으로 사용되어온 방법론 중 하나인 폭포수 모델일 것이고,

    다른 하나는 최근에 비교적으로 중요성이 대두되는 애자일 방법론이다.

     

    폭포수 모델(Waterfall Model)

    출처:위키백과

    적어도 컴퓨터공학을 전공해본 사람이라면 한 번쯤은 들어본 단어일 것이다.

    소프트웨어 개발 프로세스의 하나로, 초기부터 완성까지 순차적인 단계를 거치는 모습이 폭포수같다고 하여 폭포수 모델이라고 이름 붙여졌다.

    폭포수모델에 따라 소프트웨어를 개발하기 위해서는 각 단계를 순차적으로 거쳐가야 하며,

    한 단계를 완료하기 전까지는 다음 단계로 나아갈 수 없다.

     

    개인적으로 팀 단위로 개발 경험이 많지 않았던 때에 ,의도한 적은 없었을 지라도 

    대부분의 프로젝트 진행형태가 이러한 형태와 비슷했던 것으로 기억한다.

    절차를 순차적으로 따라간다는 점에 있어서 프로젝트가 계획적으로 진행되어 간다는 느낌을 많이 받았던 것 같다.

    But, 순차적으로 진행되다보니 중간 과정에서 발생하는 환경적 변수를 통제하기 어려웠고, 데드라인이 계획했던 것보다 늘어지는 경우가 잦았다.

    정말 저 순서도대로 진행된다면 이상적이지만, 실제 개발에 들어가는 경우 저러한 형태를 엄격하게 지키기란 꽤나 어려운 일이다.

     

    애자일 방법론(Agile Method)

    기존에 사용되던 폭포수 모델에 대응하여 2001년부터 등장한 방법론으로,

    소규모 소프트웨어 개발자 그룹이 애자일 선언문을 발표한 것으로부터 시작한다.

    선언문의 내용은 다음과 같다.

    agilemanifesto.org/iso/ko/manifesto.html

     

    애자일 소프트웨어 개발 선언

    애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게

    agilemanifesto.org

    우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을
    도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고있다.

    이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다:

    공정과 도구보다 개인과 상호작용을
    포괄적인 문서보다 작동하는 소프트웨어를
    계약 협상보다 고객과의 협력을
    계획을 따르기보다 변화에 대응하기를

    가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만,
    우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.

     

    위 선언문을 읽어보고 느낀 첫 생각은 당혹스러움이었다.

    사회에 첫발을 내딘 초보 개발자인 나로서는 좀 뜬금없는 감이 없지 않았다.

    "난 개발을 하고 싶은 거고, 좀 더 효과적인 개발 방법론을 알고 싶은 건데 저게 무슨 뚱딴지 같은 소리지?"

    폭포수 모델과는 달리 막상 애자일 방법론을 처음 시작하면 그 정의에 대해서는 물음표가 띄워지는 것 같다.

    이게 끝일리는 없다는 생각을 가지고 애자일 방법론에 대하여 좀 더 알아보고 내린 결론은,

    애자일 방법론이라는 명칭은 하나의 소프트웨어 개발에 대한 구체적인 방법이라기 보다는

    소프트웨어를 어떤 방식으로 개발할 것인가에 대한 방향성을 제시해주는 하나의 철학이라는 것이다.

    이 철학을 조금이나마 간략하게 요약하자면 이렇게 될 것 같다.

    "소통을 긴밀히 유지하면서, 계획에 엄격하게 따르기보단 피드백을 자주하면서

    변화에 유연하게 대처해가며 만들자!"

     

    다시 말해 폭포수 모델이 가지고 있던 변화에 대처하기 어렵다는 점을 보완하여 유연한 개발을 진행하자는 뜻으로 보면 될 것 같다.

    그러나 이렇게 말해도 역시 의뭉스러운 것은 마찬가지이다.

    현장에서는 이러한 애자일 방법론의 철학을 그대로 반영한 여러가지 방법론들이 있다.

    그나마 많이 알려져 유명한 것들만 추려보자면 다음과 같다.

    • 스크럼(Scrum)
    • 익스트림 프로그래밍(Xtreme Programming)
    • TDD(Test Driven Development)

     

    업무 현장에서 실제로 사용되는 애자일이라고 함은 이런 것들을 주로 이야기한다고 보면 될 것이다.

    위의 세가지 업무 진행방식 경험은 최근 기업들의 채용 우대조건에서도 자주 찾아볼 수 있다.

    애자일 방식에 따른 개발 경험을 어떻게 적용할 지가 앞으로의 주요 목표가 될 것 같다.

    'Computer Science' 카테고리의 다른 글

    [CS] 이진 탐색(Binary Search)  (0) 2020.12.05
    [CS]계수 정렬(Counting Sort)  (0) 2020.12.05
    [CS] 병합 정렬(Merge Sort)  (0) 2020.12.02
    [CS] 퀵 정렬(Quick Sorting)  (0) 2020.11.20
Designed by Tistory.