The Principles of Agile Methods
포스트 난이도: HOO_Junior
# The Principles of Agile Methods
애자일 방법론에는 지켜야 할 원칙 또는 원리가 있다. 세부적으로 분류하여 10개 이상의 원칙을 제시하는 경우가 있거나 대표적으로 5가지 또는 6가지 원칙을 애자일 방법론의 원칙으로 제시하기도 한다. 이번 포스트에서는 대표적인 5가지 애자일 방법론 원칙에 대해서 살펴볼 예정이다. 5가지 원칙이라고는 했지만 사실상 세부적인 원칙들이 이 5가지에 포함되어 있기 때문에 기본적으로 애자일 기반 소프트웨어 개발을 한다고 했을 때 기본적으로 알아두기에 좋을 것으로 보인다.
# Maintain Simplicity
필자가 Bro들에게 항상 강조하는 부분이 바로 유지관리성, 즉 Maintainability이다. 우리는 항상 현실 속에서 소프트웨어 개발을 하고 있기 때문에 유지 관리성 측면을 배제할 수가 없다. 애자일 방법론으로 소프트웨어 개발을 한다고 하더라도 유지 관리성을 항상 중요하게 판단되는 지표인 셈이다. 애자일 방법론 원칙에서 중요한 것 중 하나가 바로 유지 관리의 심플함이다. 애자일 방법론은 소프트웨어 개발과 개발 프로세스의 심플함을 중점적으로 고려한다. 따라서 실질적으로 소프트웨어 작동에 문제가 없다면 최대한 심플하게 구현한다. 한마디로 최대한 복잡하거나 불필요한 부분은 시스템에서 제거하는 것이 애자일 방법론의 원칙 중 하나이다.
#People Not Process
애자일 방법론에 대해서 이야기할 때 No Document, Yes Coding이라고 한 줄로 설명한다. 애자일 방법론은 Plan-driven 모델처럼 정해진 규정 내에서 소프트웨어 개발이 이루이지지 않는다. 소프트웨어 개발이 신속하고 정확하게 개발만 될 수 있다면 각 개발자들이 자신이 원하는 개발 방식, 코드 등을 활용하여 개발이 이루어진다. 한마디로 개발자들은 정해진 틀 내에서 작업을 하는 것이 아니라 최종적인 목적을 두고 원하는 방식으로 목적을 이루는 것이다. 좀 더 쉽게 말해서 과정보다 결과를 중요시한다고 보면 될 것이다. 하지만 그렇다고 무작정 마음대로 소프트웨어 개발하는 것은 애자일 방법론의 원칙은 아니다. 여기서 중요한 점은 개발자들 모두가 서로를 잘 이해하고 있다는 것이다. 계획이 중요하지 않다는 게 혼동 속의 작업이 아니라 실질적인 요소를 중시한다고 이해하면 된다. 예를 들어서 각 개발자들이 자신이 잘하는 것과 어떤 스킬을 보유하고 있는지를 정확하게 파악하고 활용하는 것을 People not prcess에 해당한다.
# Incremental delivery
애자일 모델로 소프트웨어 개발을 한다면 당연한 이야기일 수도 있다. 애자일 방법론은 Incremental 방식을 채택한 개발 방식이다. Incremental 방식을 채택한 가장 중요한 이유는 고객 또는 사용자의 Needs를 확인하기 위해서이다. 소프트웨어 개발을 할때 한 번에 뚝딱 만들어지는 것이 아니다. 각각의 단계별 개발 과정이 존재한다. 예를 들어, specicfication -> development -> validation -> evloution도 개발 과정에 단계가 존재한다는 걸 알 수가 있다. 애자일은 항상 사용자 또는 고객의 requirements를 중요하게 생각하다 보니 개발 단계별 그들의 생각을 고려하고 적용할 수 있도록 Incremental delivery 원칙을 따른다.
# Customer involvement
앞서 이야기한 Incremental develivery 원칙을 따르는 이유가 여기에 있다. 애자일 방법론은 직접적으로 사용자나 고객을 개발에 참여시킨다. 그래야 직접적으로 빠르고 정확하게 그들의 니즈를 확인할 수 있기 때문이다. 그들이 생각한 니즈가 바뀔 수도 있지만 인간이라는 존재는 각자 생각하는 내용이 다르다보니 니즈를 정확하게 인지하지 못하는 경우도 종종 있다. 사용자나 고객을 개발 과정에 직접 참여시킬 경우 requirments를 확인하고 소프트웨어 평가를 다시 하는 반복적인 과정을 채택할 수 있다는 점에서 애자일 방법론은 customer involvement를 원칙을 삼는다.
#Embrace change
애자일 방법론의 장점이자 중요한 특징은 항상 고객 또는 사용자의 기준에서 이해하면 된다. 고객 또는 사용자를 개발에 직접적으로 참여 시킨다는 것은 빠른 피드백을 통한 소프트웨어를 개발하는 것이다. 그렇다 보니 개발 과정이나 또는 최종 평가 과정에서 소프트웨어를 수정하거나 보완해야 되는 부분이 자주 발생한다. 애자일 방법론을 채택하여 개발한다면 이러한 점을 항상 인지하고 준비하고 있어야 한다. 따라서 앞서 이야기한 유지 관리가 심플해야 소프트웨어를 변경하는 과정도 신속하고 정확할 수 있다.
#In conclusion
- 5가지 이외에도 세부적을 살펴보면 애자일 방법론을 채택할때 알아두어야 할 원칙들이 여러 개 존재한다. 예를 들어 Cooperation
Autonomy and motivation
Better communication
Working software
Stable work environments
등등....
다양한 세부적인 원칙들이 존재하지만 앞의 5가지는 모두를 대표하는 원칙이라고 생각하면 된다. 이 원칙들을 살펴보다 보면 공통적으로 드는 생각이 있는데 바로 연결성 또는 결합성이다. 각 원칙들은 독립적으로 작용하는 게 아니라 서로가 연결되어 있다. 유지 관리를 심플하게 하는 이유가 그저 편하기 위해서가 아니라 다른 원칙들을 지켜야 할 때 필요한 것이기 때문이다. 이 점을 이해한다면 굳이 외우지 않더라도 애자일 방법론 원칙을 이해하기 쉬울 것이다.
# In conclusion, 3줄 요약
1. 애자일 방법론에는 원칙들이 있다.
2. 대표적인 5가지 원칙을 알아보았다.
(Customer involvment, Incremental delivery, Embrace change, People not process, Maintain simplicity)
3. 원칙들은 서로 연결이 되어 있다.
'Computer Science' 카테고리의 다른 글
[Programming] Use Case Diagrams(UML)이란? (0) | 2021.09.28 |
---|---|
[Programming] XP 방식: Extreme Programming Practices (0) | 2021.09.28 |
[Programming] COTS System이란? (0) | 2021.09.27 |
[Programming] 소프트웨어 개발자란? (0) | 2021.09.27 |
[Programming] 좋은 소프트웨어란?, 소프트웨어 개발의 기본 개념 (0) | 2021.09.26 |
댓글