티스토리 뷰
개발 프로젝트를 진행할 때 아무런 계획 없이 진행하면 기한내에 완성 못하고 실패하기 쉽습니다. 특히 팀 프로젝트를 할 경우 더 그렇습니다. 아이디어를 모으는데 시간이 많이 걸리고 다양한 의견들 사이에서 타협점을 찾는 것이 쉽지 않습니다. 의견을 모았다고 해도 프로젝트를 진행하는 과정에서 많은 차질이 생깁니다. 진행과정에서 갑자기 다른 의견을 내는 팀원도 있고 가끔 어떤 팀원들은 방향성 자체를 흔들기도 합니다. 초기 계획에 너무 많은 시간과 비용이 들고 개발 과정이 길어져 결과물이 안나오거나 잘못된 결과가 나오는 문제가 발생하는 것입니다. 개발 프로젝트의 이런 문제점들을 해결하고자 사용되는 방법론 중 하나가 애자일입니다.
<그림 1> 애자일 개발 프로세스
애자일(Agile)이란?
애자일 개발 프로세스는 개발에 대한 개념적 방법론으로, 개발 프로젝트 기간을 짧은 주기로 나눠 반복적인 개발을 하는 것이 특징입니다. 소프트웨어 개발자들 사이에서 먼저 유행했고, 현재는 다른 분야에서도 애자일을 많이 사용하고 있습니다. 애자일이 어떤 목적으로 만들어졌는지는 아래 애자일 선언문을 보면 짐작할 수 있습니다.
애자일로 진행하는 법에 대해 간단히 설명드리면 아래와 같습니다.
1. 개발 프로젝트의 큰 목표를 작은 단위로 나눕니다.
2. 그 중 가장 기본이 되는 목표부터 해결합니다.
3. 기본 목표가 완료되면 고객에게 보여줍니다.
4. 그 다음 부수적인 목표들을 해결합니다.
5. 목표가 해결될 때마다 고객에게 보여줍니다.
이 과정을 진행하기 위해 다음과 같이 행동합니다.
1. 프로젝트 전체 개발 기간을 짧은 기간으로 여러개 나눕니다.
2. 그 짧은 개발 기간은 정해진 목표만 이룰 수 있는 기간이 좋습니다.
3. 개발 기간동안 목표를 이루기 위한 행동만 합니다. 옆으로 빠져 다른 것을 만들지 않습니다.
4. 매일 업무 시작 전 미팅을 가집니다. 이 시간 동안 자신의 개발 상황과 오늘 할 일등을 공유합니다. 개발 하면서 느끼는 어려움들을 토로해도 됩니다. 매일 매일 상황을 공유하면 목표를 이루기 위해 어느 단계까지 왔는지 쉽게 알 수 있습니다. 자기 할일을 빨리 끝낸 팀원도 있고 그렇지 않은 팀원도 있습니다. 그럴 경우 개인별 업무량을 조절할 수도 있습니다.
이런 개발 방법을 생각하지 않고 그냥 진행할 경우 많은 경우 프로젝트 막바지에 밤을 세게 될 경우가 많습니다. 그렇게 되면 프로제트가 실패하거나 제품이 나오더라도 질이 떨어진 제품이 나오기 쉽습니다. 애자일을 적용할 경우 매일매일 진행상황을 확인해가며 프로젝트 완성도를 쉽게 알 수 있으므로 막바지에 밤을 세지 않아도 됩니다.
예제
그럼 간단한 예제로 자동으로 문이 열리고 닫히는 스마트 사물함을 제작해 보겠습니다. 우선 핵심 기능을 선정하고 제작합니다.
1. 핵심기능 제작: 사람이 근처로 가면 문이 열리고, 물건을 넣으면 자동으로 문이 닫히는 사물함
핵심기능이 완성되면 고객(예: 사물함을 사용할 학생들, 선생님들)에게 보여줍니다. 그리고 의견을 듣고 추가할 기능들을 선정합니다. 이 추가 기능은 하나가 될 수도 있고 여러개가 될 수도 있습니다. 추가기능이 완성될 때마다 고객에게 보여주고 의견을 듣는 것을 반복합니다.
2. 추가기능 제작: 스마트 폰으로 사물함 문을 잠글 수 있게 한다.
고객 의견을 들으면 추가기능뿐 아니라 빼거나 수정해야할 기능들도 알 수 있습니다. 제작에 들어간 시간이 아깝지만 그런 기능은 과감히 바꿔줍니다.
3. 기능 수정: 사물함을 열고 싶지 않아도 사람이 지나가기만 하면 문이 열린다. 문을 여는 것은 스위치로 수정한다.
이상 애자일 개발 프로세스를 간단히 설명 드렸습니다. 만약 이런 단계를 거치지 않으면 기능은 많은데 고객이 원하는 것은 없고 그나마 있는 것도 불편한 사태가 발생할 수 있습니다. 애자일을 진행하는 방법이 많은데, 위에서 설명드린 것은 애자일 중에서 스크럼 방식을 위주로 설명 드렸습니다.
<그림 2> 스크럼 방식 소개
- Product Backlog : 개발 프로젝트에서 완성해야할 요구사항들
- Sprint Backlog : Sprint기간 중 완성해야 할 요구사항들(이 요구사항들은 작동하는 단위로 정해야 합니다. Sprint가 끝난 후 완성된 기능을 시연해야 되기 때문입니다.)
- Sprint : 짧은 기간동안 목표한 기능을 개발하는 과정(일반적으로 30일을 하나 프로젝트 규모에 따라서 조절합니다.)
- 24h : 30일 Sprint가 진행되는 동안 매일 하루동안의 진행상황과 문제점등을 공유합니다.
- Working Increment of the software : 작동하는 기능을 담은 시제품
'기타' 카테고리의 다른 글
엑셀로 프로젝트 일정 관리(간트 차트) (5) | 2019.01.30 |
---|---|
코딩 중 자꾸 다른 것도 만들고 싶다면: YAGNI (2) | 2019.01.01 |
- Total
- Today
- Yesterday
- 시리얼 모니터
- 태양광 공유
- 온도
- dht
- 애자일
- solar
- dc 모터
- 초음파센서
- DHT22
- Stepper Motor
- 4 원칙
- 아두이노
- 습도
- 릴레이
- Arduino
- Step Motor
- Scrum
- LED
- 서보모터
- Solar Sharing
- Renewable
- Fading LED
- agile
- Solar Panel
- DC Motor
- 코딩
- relay
- 스크럼
- Potentiometer
- 태양광
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |