개발 방식은 여러가지가 있겠지만 일단 Agile 방식과 Waterfall 방식에 대하여 알아보겠습니다.
Agile 방식이란?
Agile 개발 방식은 소프트웨어 개발 과정에서 요구사항이나 변경사항에 유연하게 대처하기 위해 만들어진 방법론입니다. 기존의 Waterfall 모델과 같은 전통적인 방식과는 달리, 개발자, 고객, 테스터 등 모든 관계자들이 함께 일하며 지속적인 개선과 빠른 반응성을 추구하는 방식입니다.
Agile 방식 세 가지 핵심 원칙
1. 개인과 상호작용을 중시합니다.
Agile 방식에서는 고객과 팀원들이 지속적으로 소통하고, 일정한 주기로 결과물을 검토하며 피드백을 주고받습니다. 이를 통해 고객 요구사항에 대한 이해를 높이고, 빠른 의사결정을 할 수 있습니다.
2. 작동하는 소프트웨어를 우선합니다.
Agile 방식에서는 기능 개발보다는 작동하는 소프트웨어를 우선시합니다. 이를 통해 초기에 문제를 파악하고 빠른 수정을 할 수 있으며, 기능 개발보다는 소프트웨어 전체적인 완성도를 높일 수 있습니다.
3. 변화에 대한 대응을 강조합니다.
Agile 방식에서는 요구사항의 변화에 대한 대응이 중요합니다. 개발과정에서 필요한 변경사항을 빠르게 반영할 수 있으며, 이를 통해 개발 기간을 단축하고 결과물의 품질을 높일 수 있습니다.
Agile 방식은 스크럼, 칸반, 익스트림 프로그래밍 등 다양한 방식으로 구성됩니다. 이를 통해 개발자들은 일정한 주기로 일정량의 작업을 수행하고, 지속적으로 피드백을 주고받으며, 이를 통해 빠르고 유연한 개발을 할 수 있습니다.
조금 더 자세한 설명이 필요한 것 같아서 예시? 같은 느낌을 알아보도록 하죠. 위에 있는 스크럼, 칸반, 익스트림 프로그래밍 에 대하여 알아보겠습니다.
Scrum
Scrum은 Agile 방식 중 가장 널리 사용되는 프레임워크 중 하나입니다. Scrum에서는 작은 주기로 개발을 진행하며, 이를 스프린트(Sprint)라고 합니다. 스프린트는 보통 1주일에서 4주 사이의 기간으로 설정되며, 각 스프린트에서는 작업 목록인 백로그(Backlog)에서 우선순위가 높은 작업을 선택하고, 해당 작업을 완료할 수 있는 기간을 정해 일정을 계획합니다. 그리고 매일 짧은 회의를 통해 진행 상황을 공유하고 문제점을 해결합니다.
Extreme Programming(XP)
Extreme Programming(XP)은 Agile 방식 중에서도 프로그래밍 방식 자체에 초점을 맞춘 방법론입니다. XP는 빠른 개발과 높은 품질을 동시에 달성하기 위해, 고객과 함께하는 짧은 개발 주기를 강조하며, 테스트 주도 개발(Test-driven Development)과 지속적인 통합(Continuous Integration), 쌍방향 피드백 등의 방법을 사용합니다.
Kanban
Kanban은 Agile 방식 중에서도 진행 상황을 시각적으로 표현하여 관리하는 방법론입니다. Kanban에서는 작업 목록을 시각적인 보드에 표시하고, 해당 작업이 어느 단계에 있는지(예: 할 일, 진행 중, 완료)를 표시합니다. 이를 통해 팀 내에서 진행 상황을 투명하게 공유하고, 작업 우선순위를 지속적으로 조정하여 개발 진행을 최적화합니다.
-> notion이나 trello를 이용하여 진행 상황을 확인하는 예시가 있습니다.
Waterfall 방식이란?
Waterfall 방식은 소프트웨어 개발 방법론 중 하나로, 개발 생명주기를 일련의 단계로 나누어 순차적으로 진행하는 방법입니다. 이 방법론에서는 각 단계에서 이전 단계에서의 결과물을 바탕으로 다음 단계를 진행합니다. 이러한 방법론은 소프트웨어 개발의 초기에 주로 사용되었습니다.
Waterfall 방식 단계
1. 요구사항 분석 단계: 고객의 요구사항을 수집하고 분석합니다.
2. 설계 단계: 요구사항을 바탕으로 소프트웨어를 설계합니다.
3. 구현 단계: 설계서를 바탕으로 소프트웨어를 개발합니다.
4. 테스트 단계: 개발된 소프트웨어를 테스트하여 결함을 찾고 수정합니다.
5. 유지보수 단계: 소프트웨어를 운영하며 필요한 유지보수 작업을 수행합니다.
Waterfall 방식은 각 단계에서 이전 단계의 결과물을 전달하고 받아야 하기 때문에, 한 단계에서 문제가 발생하면 이후 단계에서도 영향을 미치게 됩니다. 또한, 요구사항 분석 단계에서의 변경사항을 수용하기 어려우며, 전체 개발 과정에서 프로젝트의 요구사항이 변경되는 경우 대응하기 어려운 점이 있습니다.
따라서, 요구사항이 정확히 파악되고 변경될 가능성이 적은 경우에 적합한 방법론으로 사용됩니다.
waferfall방식은 아주 튼튼하게 성장을 하지만 속도가 너무 늦어질 수 있다는 단점이 있다고 생각합니다.
Agile 방식과 Waferfall 방식의 차이점
Agile 방식과 Waterfall 방식은 소프트웨어 개발 방법론에서 크게 다른 두 가지 접근 방법입니다.
개발 접근 방식
Agile 방식은 반복적이고 점진적인 방식으로 개발을 수행하고, Waterfall 방식은 일련의 단계를 순차적으로 진행하는 방식으로 개발을 수행합니다. 즉, Agile 방식에서는 작은 주기로 개발을 진행하며 필요한 경우에는 계획을 변경하고, Waterfall 방식에서는 한 번에 전체 계획을 수립하고 그에 따라 개발을 진행합니다.
요구사항 수용성
Agile 방식은 요구사항 변경을 수용하기 쉽습니다. Agile 방식에서는 개발 주기가 짧기 때문에 적극적으로 고객의 피드백을 받고, 변경사항을 반영하면서 개발을 진행할 수 있습니다. 반면에 Waterfall 방식에서는 개발 과정에서 요구사항이 변경될 경우, 그 변경사항이 이전 단계에 영향을 미치기 때문에 전체 계획을 수정해야 하는 등 대처하기 어려운 경우가 있습니다.
따라서, Agile 방식은 비교적 복잡하고 빠르게 변화하는 프로젝트나 고객의 요구사항이 불확실한 프로젝트에서 유용하며, Waterfall 방식은 요구사항이 명확하고 변경이 적은 프로젝트에서 적합합니다.
소감
개발은 많이 경험해보지는 못했지만, 프로그램을 개발하다보면 새로운 기능을 추가로 넣거나 수정해야할 것들이 잔뜩 생겼던 기억이 납니다. 그래서 개발 시 Agile방법을 이용하여 유동적으로 계획을 조금씩 변경하면서 진행하는 것이 개발할 때 수월하다고 생각되더라고요.
뭐 모든 정답이라는 것은 없지만 그 때에 맞는 방법을 사용하여 목표에 도달한다면 그럼 되지 않겠습니까. 각자 상황에 맞는 방식을 찾아 개발하면 좋은 작품이 나올 것이라고 생각됩니다.
'코딩 개발' 카테고리의 다른 글
DB 정규화 (3) | 2023.05.03 |
---|---|
Macbook 에서 AWS EC2 Window 원격 제어 (0) | 2023.05.02 |
다이나믹 프로그래밍 (2) | 2023.03.04 |
TDD 테스트 주도 개발 (0) | 2023.03.02 |
IT 5분 잡학 사전 EP39~EP45 (0) | 2023.03.02 |