의견.png

"애자일"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
1번째 줄: 1번째 줄:
'''애자일'''(agile)은 ‘기민한’, ‘날렵한’, ‘민첩한’이라는 뜻 을 가진 형용사로서, 사전에 정해진 단계와 절차에 따라 개발을 진행하는 [[폭포수 모델|폭포수]](Waterfall) 개발방법론과 달리, 변화하는 상황에 맞게 유연하게 대응하는 소프트웨어 [[개발방법론]](SDM)을 말한다. [[스크럼]](Scrum) 방법을 사용한다.
+
'''애자일'''(agile)은 ‘기민한’, ‘날렵한’, ‘민첩한’이라는 뜻 을 가진 형용사로서, 사전에 정해진 단계와 절차에 따라 개발을 진행하는 [[폭포수 모델|폭포수]](Waterfall) 개발방법론과 달리, 변화하는 상황에 맞게 유연하게 대응하는 소프트웨어 [[개발방법론]](SDM)을 말한다.
 +
애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다.<ref name="wiki">위키백과, <[https://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C 애자일 소프트웨어 개발]>, <<위키백과>>, 2020-07-20 </ref>
 +
[[파일:Agile.png|300픽셀|섬네일|오른쪽|애자일]]
  
 
==개념==
 
==개념==
'''애자일 방법론'''은 일정한 주기를 가지고 끊임없이 [[프로토타입]]을 만들어내며 필요한 요구사항을 추가 및 수정을 통해 소프트웨어를 개발하는 것이다. 애자일 개발 프로세스는 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제하에 합리적인 답을 내도록하는 것이다.<ref>위키백과, <[https://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C 애자일 소프트웨어 개발]>, <<위키백과>>, 2020-07-20 </ref>
+
애자일 개발 방법론은 [[소프트웨어 개발 방법론]]]에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다.
 +
계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있다.
 +
반대로 계획에 의존하는 경우 형식적인 절차에 따르는데 필요한 시간과 비용을 무시할 수 없으며 전체적인 개발의 흐름을 느리게 하는 단점을 가지고 있다.
 +
그러므로 애자일 개발 방법론은 계획을 통해 주도하는 과거의 방법론과 달리 앞을 예측하며 개발하지 않고, 일정한 주기를 가지고 끊임없이 [[프로토타입]]을 만들어내며 필요한 요구사항을 추가 및 수정을 통해 소프트웨어를 개발하는 것이다.  
 +
애자일 개발 방법론은 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제하에 합리적인 답을 내도록하는 것이다.<ref name="wiki"></ref>
 +
 
 +
==개발 배경==
 +
애자일 개발 방법론 배경에는 소프트웨어 개발 자체가 다른 공학적인 방법론과는 큰 차이가 있음을 인지하는 데에서 부터 시작되었다. 이는 소프트웨어 위기의 원인과 해결방안을 찾는 데에서 부터 시작되었다.
 +
90년대 후반까지의 소프트웨어 공학과 개발방법론은 장기간에 걸쳐 많은 사람들을 투입하고 충분한 비용을 투입하여 진행하는 다른 공학의 프로세스와 비슷한 맥락에서 진행되었다.그러나 소프트웨어는 유동적이고 개방적이다. 또한, 요구사항의 변경에 따른 작업량을 예측하기 힘들다. 그래서 이미 고전적인 소프트웨어 공학이나 관리 기법만으로는 대처할 수 없게 되었다.
 +
이런 문제에 대한 기술적인 해결책으로 객체지향이 있다. 객체지향 기술은 그동안의 개발 문제를 적절하게 대처해 주었다. 그리고 객체지향 개발을 하기 위해서는 그에 적합한 개발 프로세스가 필요했다. 그래서 수많은 애자일 개발 프로세스가 이러한 필요에 따라 만들어졌다.
 +
따라서 애자일 개발 방법론의 상당수는 객체지향 기술을 기반으로 한다.애자일 개발 방법론는 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제를 가진다. 그리고 그 전제 아래에서 합리적인 답을 내도록 하는 것이 애자일 개발 방법론이다.<ref name="wiki"></ref>
 +
 
 +
==애자일 개발 방법론과 전통적인 개발 방법론==
 +
전톨적인 개발 방법론들은 [[폭포수 모델]]과 계획 기반 개발을 따르지만 애자일 개발 프로세스는 전통적인 개발 방법론에 반한다는 점이 큰 차이를 가진다.
 +
전통적인 개발 방법론들은 계획적 개발을 기반으로 개발을 진행한다. 이는 이해와 사용이 쉬운 바람적인 기법이지만 계획대로 진행되지 않을 때 가장 큰 부작용이 발생하게 된다는 단점이 있다. <ref name="wiki"></ref>
 +
 
  
 
==종류==
 
==종류==
 
아래의 개발 방법론에는 서로 다른 특징과 적용범위가 있으며, 조합도 가능하다.
 
아래의 개발 방법론에는 서로 다른 특징과 적용범위가 있으며, 조합도 가능하다.
  
* [[익스트림 프로그래밍]](Extreme Programming, XP)
+
===[[익스트림 프로그래밍]](Extreme Programming, XP)===
* [[스크럼]]
+
애자일 개발 프로세스의 대표적인 개발 방법론으로 애자일 개발 방법론 보급에 큰 역할을 담당했다. 이 방법론은 클라이언트와 함께 2주 정도의 반복개발은 하고 테스트 우선 개발(TDD)을 특징으로 하는 명시적인 기술과 방법을 가지고 있다.
* [[크리스털 패밀리]]
+
 
* [[Feature-Driven Development]]
+
===[[스크럼]]===
* [[Adaptive Software Development]]
+
30일마다 동작 가능한 제품을 제공하는 스프린트(Sprint)를 중심으로 하는 개발 방법론이다. 매일 정해진 시간과 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론이다.
* [[익스트림 모델링]]
+
 
 +
===[[크리스털 패밀리]]===
 +
프로젝트의 규모와 영향의 크기에 따라 여러 종류의 방법론을 제공한다. 그 중 가장 소규모 팀에 적용하는 크리스털 클리어는 익스트림 프로그래밍만큼 엄격하지도 않고 효율이 높지 않지만, 프로젝트에 적용하기 쉬운 개발 방법론이다.
 +
 
 +
===[[Feature-Driven Development]]===
 +
Feature-Driven Development는 feature마다 2주 정도의 반복 개발을 진행한다. Peter Coad가 제창하는 방법론으로, UML을 이용한 설계 기법과도 밀접한 관련을 가진다.
 +
 
 +
===[[Adaptive Software Development]]===
 +
Adaptive Software Development는 소프트웨어 개발을 혼란으로 규정하고 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론이다. 내용적으로는 다른 방법론들과 유사하지만 합동 애플리케이션(Joint Application Development, 사용자나 고객이 설계에 참가하는 개발 방법론)을 사용하는 것이 다른다.
 +
 
 +
===[[익스트림 모델링]]===
 +
익스트림 모델링은 UML을 이용한 모델링 중심 방법론이다. 다른 모델링 방법들과는 달리 언제나 실행과 검증할 수 있는 모델을 작성하는 공정을 반복해서, 최종적으로 모델로부터 자동적으로 제품을 생성하게 한다.
 +
 
 +
 
 +
==애자일 소프트웨어 개발 선언==
 +
우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다:
 +
 
 +
공정과 도구보다 '''개인과 상호작용'''을
 +
포괄적인 문서보다 '''작동하는 소프트웨어'''를
 +
계약 협상보다 '''고객과의 협력'''을
 +
계획을 따르기보다 '''변화에 대응하기'''를
 +
 
 +
가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.
 +
<ref>agilemanifesto,<[https://agilemanifesto.org/iso/ko/manifesto.html 애자일 소프트웨어 개발 선언]>, <<agilemanifesto>>, 2001 </ref>
  
 
{{각주}}
 
{{각주}}
18번째 줄: 58번째 줄:
 
==참고자료==
 
==참고자료==
 
* 위키백과, <[https://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C 애자일 소프트웨어 개발]>, <<위키백과>>, 2020-07-20
 
* 위키백과, <[https://ko.wikipedia.org/wiki/%EC%95%A0%EC%9E%90%EC%9D%BC_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B0%9C%EB%B0%9C 애자일 소프트웨어 개발]>, <<위키백과>>, 2020-07-20
 +
* agilemanifesto, <[https://agilemanifesto.org/iso/ko/manifesto.html 애자일 소프트웨어 개발 선언]>, <<agilemanifesto>>, 2001
  
 
==같이 보기==
 
==같이 보기==

2020년 9월 1일 (화) 11:21 판

애자일(agile)은 ‘기민한’, ‘날렵한’, ‘민첩한’이라는 뜻 을 가진 형용사로서, 사전에 정해진 단계와 절차에 따라 개발을 진행하는 폭포수(Waterfall) 개발방법론과 달리, 변화하는 상황에 맞게 유연하게 대응하는 소프트웨어 개발방법론(SDM)을 말한다. 애자일 개발 프로세스는 소프트웨어 엔지니어링에 대한 개념적인 얼개로, 프로젝트의 생명주기동안 반복적인 개발을 촉진한다.[1]

애자일

개념

애자일 개발 방법론은 소프트웨어 개발 방법론]에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있다. 반대로 계획에 의존하는 경우 형식적인 절차에 따르는데 필요한 시간과 비용을 무시할 수 없으며 전체적인 개발의 흐름을 느리게 하는 단점을 가지고 있다. 그러므로 애자일 개발 방법론은 계획을 통해 주도하는 과거의 방법론과 달리 앞을 예측하며 개발하지 않고, 일정한 주기를 가지고 끊임없이 프로토타입을 만들어내며 필요한 요구사항을 추가 및 수정을 통해 소프트웨어를 개발하는 것이다. 애자일 개발 방법론은 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제하에 합리적인 답을 내도록하는 것이다.[1]

개발 배경

애자일 개발 방법론 배경에는 소프트웨어 개발 자체가 다른 공학적인 방법론과는 큰 차이가 있음을 인지하는 데에서 부터 시작되었다. 이는 소프트웨어 위기의 원인과 해결방안을 찾는 데에서 부터 시작되었다. 90년대 후반까지의 소프트웨어 공학과 개발방법론은 장기간에 걸쳐 많은 사람들을 투입하고 충분한 비용을 투입하여 진행하는 다른 공학의 프로세스와 비슷한 맥락에서 진행되었다.그러나 소프트웨어는 유동적이고 개방적이다. 또한, 요구사항의 변경에 따른 작업량을 예측하기 힘들다. 그래서 이미 고전적인 소프트웨어 공학이나 관리 기법만으로는 대처할 수 없게 되었다. 이런 문제에 대한 기술적인 해결책으로 객체지향이 있다. 객체지향 기술은 그동안의 개발 문제를 적절하게 대처해 주었다. 그리고 객체지향 개발을 하기 위해서는 그에 적합한 개발 프로세스가 필요했다. 그래서 수많은 애자일 개발 프로세스가 이러한 필요에 따라 만들어졌다. 따라서 애자일 개발 방법론의 상당수는 객체지향 기술을 기반으로 한다.애자일 개발 방법론는 제한된 시간과 비용 안에서 정보는 불완전하고 예측은 불가능하다는 전제를 가진다. 그리고 그 전제 아래에서 합리적인 답을 내도록 하는 것이 애자일 개발 방법론이다.[1]

애자일 개발 방법론과 전통적인 개발 방법론

전톨적인 개발 방법론들은 폭포수 모델과 계획 기반 개발을 따르지만 애자일 개발 프로세스는 전통적인 개발 방법론에 반한다는 점이 큰 차이를 가진다. 전통적인 개발 방법론들은 계획적 개발을 기반으로 개발을 진행한다. 이는 이해와 사용이 쉬운 바람적인 기법이지만 계획대로 진행되지 않을 때 가장 큰 부작용이 발생하게 된다는 단점이 있다. [1]


종류

아래의 개발 방법론에는 서로 다른 특징과 적용범위가 있으며, 조합도 가능하다.

익스트림 프로그래밍(Extreme Programming, XP)

애자일 개발 프로세스의 대표적인 개발 방법론으로 애자일 개발 방법론 보급에 큰 역할을 담당했다. 이 방법론은 클라이언트와 함께 2주 정도의 반복개발은 하고 테스트 우선 개발(TDD)을 특징으로 하는 명시적인 기술과 방법을 가지고 있다.

스크럼

30일마다 동작 가능한 제품을 제공하는 스프린트(Sprint)를 중심으로 하는 개발 방법론이다. 매일 정해진 시간과 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론이다.

크리스털 패밀리

프로젝트의 규모와 영향의 크기에 따라 여러 종류의 방법론을 제공한다. 그 중 가장 소규모 팀에 적용하는 크리스털 클리어는 익스트림 프로그래밍만큼 엄격하지도 않고 효율이 높지 않지만, 프로젝트에 적용하기 쉬운 개발 방법론이다.

Feature-Driven Development

Feature-Driven Development는 feature마다 2주 정도의 반복 개발을 진행한다. Peter Coad가 제창하는 방법론으로, UML을 이용한 설계 기법과도 밀접한 관련을 가진다.

Adaptive Software Development

Adaptive Software Development는 소프트웨어 개발을 혼란으로 규정하고 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론이다. 내용적으로는 다른 방법론들과 유사하지만 합동 애플리케이션(Joint Application Development, 사용자나 고객이 설계에 참가하는 개발 방법론)을 사용하는 것이 다른다.

익스트림 모델링

익스트림 모델링은 UML을 이용한 모델링 중심 방법론이다. 다른 모델링 방법들과는 달리 언제나 실행과 검증할 수 있는 모델을 작성하는 공정을 반복해서, 최종적으로 모델로부터 자동적으로 제품을 생성하게 한다.


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

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

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

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

각주

  1. 1.0 1.1 1.2 1.3 위키백과, <애자일 소프트웨어 개발>, <<위키백과>>, 2020-07-20
  2. agilemanifesto,<애자일 소프트웨어 개발 선언>, <<agilemanifesto>>, 2001

참고자료

같이 보기


  의견.png 이 애자일 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.