계약으로 정의 된 프로젝트에서 애자일 소프트웨어 개발을 사용할 수 있습니까?


14

최근에 Agile Software Development에 관해 동료 개발자와 대화를 나누었습니다. 원칙을 이해하고 있지만 지속적으로 변화하는 요구 사항으로 인해 프로젝트가 영원히 지속될 가능성이있는 것 같습니다. 그러나 적어도 내가 일하는 곳에서는 프로젝트가 계약이기 때문에 완료에 도달해야합니다.

즉, 일부 프로젝트의 경우 고객이 불완전한 응용 프로그램을 사용할 수 없기 때문에 첫 번째 반복에는 몇 개월이 걸릴 수 있습니다. 일부 프로젝트의 경우 완료를 먼저 정의한 다음 반복으로 나누고 각 반복 후에 정의를 세분화 할 수 있다고 생각합니다. 그러나 항상 이 정의가 있어야합니다 .

애자일 소프트웨어 개발이 변화하는 요구 사항을 수용한다면 그것이 어디에서 끝나는 지 어떻게 알 수 있습니까? 최종 결과가 항상 변할 때 어떻게 프로젝트 예산을 책정 할 수 있습니까?

애자일 소프트웨어 개발은 ​​애자일 제품보다 애자일 프로세스에 관한 것입니까?


실제로 어설프게 작동하지 않고 작동하는 것을 제공해야 할 때 끝납니다. 이 시점에서 구조를 강요하고 계획을 세우고 요구 사항과 마감일을 수정하고 장난하기보다는 작업을 시작해야합니다.
jwenting

각 민첩한 반복은 클라이언트가 사용하고 더 많은 것을 배울 수있는 작동 가능한 전달 가능한 제품을 만듭니다. 이것은 원래의 계획보다 일찍 발생하는 만족할 때까지 계속됩니다. 이를 통해 제품이 항상 작동하고 소프트웨어가 끝나지 않고 영원히 진화하거나 죽는다 사실을 고려합니다 . 제품이 충분히 좋다고 생각할 시점을 정하고 거기서 멈추십시오 (현재).
Martin Wickman

@Martin Wickman : 이것을 이해하지만 "클라이언트가 사용할 수있는 제품"이 문제입니다. 이 경우 일부 프로젝트의 경우 고객이 불완전한 응용 프로그램을 사용할 수 없기 때문에 첫 번째 반복에는 몇 개월이 걸릴 수 있습니다. 일부 프로젝트의 경우 완료를 먼저 정의한 다음 반복으로 나누고 각 반복 후에 정의를 세분화 할 수 있다고 생각합니다. 그러나 항상이 정의가 있어야합니다.
Verax

@Verax : 민첩한 선언문은 변경 사항을 관리하기 위해 만들어졌습니다. 프로젝트에 변경 사항이 없으면 민첩하지 않은 것입니다. 이야기의 끝.
Martin Wickman

2
@Verax : 질문을 명확히하고 문맥을 더 많이 추가해야합니다. 귀하의 의견은 질문에 더 많은 것이 있음을 보여줍니다. 이것은 또한 답변에 대한 투표 수와 명백한 답변이 실제 질문 텍스트와 관련이 없음을 알 수 있습니다 (그리고 "OPs 의견에서 ..."라고도 함).
Martin Wickman

답변:


7

OP의 의견에서 그는 고객을 위해 개발 서비스를 제공하는 컨설팅 상점에서 일하는 것처럼 보입니다 ... 나는 혼란을 일으키는이 사고 방식 때문에 생각합니다. 잘 알고 있지만 언급하지 않은 사실을 진술하십시오.

애자일은 계약에 의해 정의 된 소프트웨어 개발과 호환되지 않습니다.

  • 계약은 딱딱해야하고 X는 Y를 지불해야합니다. X + M을 원하면 Y + (M * N)
  • 계약은 반드시 만족할 수 있어야하며, 그렇지 않으면 법적 접촉이 아닙니다. (연락처가 관련된 경우 엄격한 변경 관리 프로세스를 거쳐야합니다.)

많은 컨설팅 상점들이 애자일을 주장하며 거짓말을하고 있습니다. 그들은 애자일이 버즈 단어 상태에 도달했기 때문에 말합니다.

애자일은 프로그래머가 풀 타임이고 예산에 대한 이야기가 거의없는 내부 개발에 가장 적합합니다. 타임 프레임과 기능.


이것에 대해 더 많이 배우면서 같은 결론을 내립니다. 마지막 문장이 절대적으로 올바른 것 같습니다. 나는 정부에서 일 했었고 고객은 내가 일했던 대행사였으며 직원들이 사용하는 한 몇 년과 몇 년 동안 프로그램을 유지해야했습니다. 민첩한 작업을 볼 수 있습니다. 이제 임베디드 시스템을 개발합니다. 기계가 작동하면 프로젝트가 끝납니다. 기계가 부분적으로 작동하면 판매 할 수 없습니다-프로젝트가 실패했습니다.
Verax

2
실제로 2 년 전에 일했던 컨설팅 업체는 실제로 민첩한 고정 서비스 모델에 민첩성을 어떻게 적용 할 수 있는지를 설명하는 민첩한 지원자가 작성한 논문을 가지고있었습니다.
mcottle

2
이 답변에 동의하지 않아야합니다. 그 이유는 개방형 계약이 아닌 계약이있는 경우 스코프 크리프 (거의 항상 발생 함)를 관리하고 싶지 않기 때문입니다. 내가 보았던 계약은 다음과 같이 시작합니다. X를 지불하고 Y를합니다. 그러면 범위 변경에 추가 가격이 따른다는 조항이 있습니다. 만큼 당신과 마찬가지로 초기 (추가 자원과 시간이 필요합니다) notifyng 범위 크리프에 대한 다음 이전 고객은 (등 고위 경영진에서 승인 및 예산을 받고)의 변화에 반응 할 수 있습니다. 그러면 관리 프로세스 자체가 민첩 해집니다.
Spoike

제품 (완료된 소프트웨어)이 아닌 서비스 계약 (코드 작성)을위한 계약 인 경우에는 호환되지 않습니다. 애자일은 예산, 요구 사항이 변경되거나 예산도 변경해야 할 예산에 따라 수행 할 작업을 추정 할 수 있습니다. 다른 기능을 원하십니까? 추가로 500 시간을 계약해야합니다. 기능 크리프는 가격 크리프이며 개발자에게 완전히 만족 스럽습니다. 고객이 기꺼이 지불하려는 경우 누구에게 의문을 제기해야합니까?
SF.

2
있다 민첩한 계약은 너무 분명이 답변이 정의에 의해 잘못된 것입니다.
Martin Wickman

20

가장 중요한 일을 먼저 수행하는 데 집중한다면 다음과 같은 경우 프로젝트가 완료됩니다.

  • 당신은 당신이 예산을 돈을 보냈다.
  • 예산이 책정 된 시간이 지났습니다.
  • 더 이상 아무것도 추가하거나 변경하고 싶지 않습니다.
  • 우선 순위가 가장 높은 다음 변경은 비용이 들지 않습니다.

5
1. 더 이상 돈이 없음-고객은 불완전한 쓸모없는 제품에 모든 돈을 소비했습니다. 2. 더 이상 시간이 없습니다. 고객에게 여전히 불완전한 쓸모없는 제품이 있습니다. 3. 추가 할 사항이 없습니다-예! 4. 가치가 없음-고객은 프로젝트를 포기했습니다. --- 내가 무엇을 놓치고 있습니까? 이것은 나에게 이해가되지 않습니다.
Verax

7
1과 2의 경우 : 가장 중요한 일을 먼저하고 돈이 떨어지면 가장 중요한 일을 할 수 있습니다. 시간이 비슷합니다. 나는 3이 드물다는 것을 인정한다. 4 : 중지가 반드시 고객이 포기한 것은 아닙니다. 그것은 그들이 원하는 가장 중요한 것들을 가지고 있음을 의미하며, 이제는 돈으로 다른 일을 할 것입니다. 다른 프로젝트를 종료 할 시점을 어떻게 결정합니까? 현재 어떤 기준을 사용하든 민첩한 프로젝트에서 계속 사용할 수 있습니다.
Dale Emery

1
데일, 당신의 생각에 감사합니다. 고객이 각 반복에 대해 개별적으로 비용을 지불하고 각 반복을 제품 자체로 평가하는 경우에만 작동한다고 생각합니다. 고정 비용 제품 또는 전체 또는 전혀 필요하지 않은 제품에 이것이 어떻게 잘 작동하는지 알 수 없습니다.
Verax

5
@Verax : "모두 또는 아무것도"필요로하는 제품은 없습니다. 항상 "좋은"기능과 기능보다는 외관상의 버그가 있습니다. 고정 비용 프로젝트는 돈이 다 ​​떨어지면 남은 것이면 성공합니다. 민첩한 방법으로 그 가능성을 극대화하려고합니다.
Michael Borgwardt

1
물론 요구 사항을 변경하려면 비용이 발생합니다. 한 번의 반복으로 무언가를 만들면 다음에 그 물건의 요구 사항을 변경하면 비용이 발생합니다. 민첩한 비용 절감 그것을 제거하지 않습니다. 예산이있는 경우 항상 새로운 기능을 추가 할 것인지 기존 기능을 변경할 것인지 결정할 때 예산을 염두에 두어야합니다. 우선 순위를 정하고 우선 순위를 정하는 법을 배우고 그 결과를 배웁니다.
데일 에머리

14

비즈니스에서 더 이상 반복하지 않기로 결정하면 중지합니다. 당신은 이것이 상당한 금액의 가치가 전달 된 후에, 그러나 당신이 수익을 감소시키는 영역으로 너무 멀어지기를 희망합니다.

그것은 항상 귀하의 상황에서 의미하는 것이 무엇이든 "사업"에 의해 주도되어야합니다. 사내 개발 환경에서 소프트웨어 개발 상점 또는 실제 비즈니스 스폰서의 고위 관리자 일 수 있습니다. 다음 반복 비용이 다음 반복에서 제공 할 수있는 기능의 이점을 능가하는 시점을 결정합니다.


5

절대 그게 아름다움입니다.

이 프로젝트는 결코 완성하지 않습니다 . 또 다른 릴리스, 또 하나의 이정표에 도달했지만 돈이 흘러가는 한 항상 추가 할 기능이 하나 더 있고 더 나은 조각을 하나 더 만들고 버그를 하나 더 수정합니다. 더 이상 필요하지 않으면 프로젝트가 종료되지만 완료되지는 않습니다. 요구 사항-> 프로젝트-> 제품-> 끝이있는 Waterfall 모델과 달리, 이것은 지불을받는 한 영원히 회전 할 수있는 루프입니다.

이 기술에서 자주 언급되는 비즈니스 기능이 아닌가?


2
워터 폴 프로젝트는 아직 완료되지 않았으며 중요한 기능이 누락되어 테이크 아웃 또는 테이크 아웃 될 가능성이 높으며 새롭고 비싼 프로젝트가 필요합니다.
Michael Borgwardt

4

여기에는 오해가 있습니다. 애자일은 프로젝트 요구 사항을 변경하도록 권장하지 않습니다. 대신 작업을 낭비하거나 중요한 개발 영역을 희생하지 않고도 변경이 가능합니다.

모든 엔지니어링 프로젝트에는 네 가지 기본 제약이 있습니다. 범위, 비용, 시간 및 품질. Waterfall은 이것이 정적 인 것으로 가정합니다. 그것은 잘못된 가정입니다. 이 중 하나 이상이 항상 변경됩니다. 스코프 크립, 슬래시 예산 및 기타 "알 수없는 미지수"는 항상 프로젝트를 방해하여 제약 조건을 변경합니다. Waterfall은이를 예상하지 못하므로 프로젝트가 발생하면 바람직하지 않은 방식으로 프로젝트가 변경됩니다. 아직 추가되지 않은 중요한 기능은 사라지거나 빠르게 완료되거나 릴리스가 취소되거나 PM이 새로운 개발자에게 돈을 던져서 모든 것이 올바르게 완료되도록 도와 주므로 비용이 많이 든다.

반대로 애자일 (Agile)은 제약 조건이 변경 될 수 있도록하며 실제로는이를 예상합니다. 소유자의 우선 순위에 따라 작고 사용 가능한 청크에서 작업을 수행하므로 청크는 프로젝트 소유자에게 즉시 유용합니다. 따라서 미지수가 큰 시간대에 큰 계획을 세우지 않음으로써 미지에 대한 노출을 줄입니다. 타임 라인이 변경되면 팀을 추가하거나 덜 중요한 기능을 "범위를 벗어난"상태로 만들 수 있으며 팀이 이미 구축 한 시스템에는 영향을 미치지 않습니다.

또한 필요한 품질로 지정된 범위를 생성하는 데 필요한 시간과 비용을 더 잘 추정 할 수 있습니다. 사람들은 큰 일자리를 추정하는 데 악명이 높다. 제대로하려면 많은 경험과 선불 계산이 필요합니다. 대조적으로, 사람들은 일반적으로 하루, 또는 일주일 또는 이틀 안에 무엇을 할 수 있는지 잘 판단합니다. 이렇게하면 안정적인 속도로 역사적인 속도를 기반으로 남은 작업 시간과 비용을 추정 할 수있는 정상 상태를 빠르게 생성합니다.

엔드 포인트를 정의하는 것은 옳습니다. 애자일 프로젝트는 영원히 지속될 수 있습니다. 그러나 기존 SLDC도 마찬가지입니다. 고객은 종종 더 많은 돈과 업그레이드 희망 목록으로 돌아옵니다. 차이점은 프로젝트 전체를 볼 때 "분석", "디자인", "개발"및 "유지 관리"사이에 명확한 선이 없다는 것입니다. 그것은 모두 벽돌에 의해, 스프린트에 의해 스프린트가 발생합니다. 어느 시점에서든 소유자는 프로젝트를 "완료"라고 부르고 싶을 수 있으며, 그들이 지불 한 "벽돌"의 총계는 견고한 "벽"으로됩니다. 원래 계획했던 것만 큼 높거나 확장되지는 않았지만 제대로 제자리에 있고 작업을 수행하며 나중에 최소한으로 해체 할 수 있습니다.


죄송하지만 "일을 낭비하지 않고 변화를 허용합니다"는 경영진이 얼마나 큰지를 설득하는 데 사용되는 엄청난 오류입니다. 예기치 않은 변경을 수용하기 위해 시스템을 리팩토링 및 / 또는 재 설계하지 않아도 낭비되는 것으로 간주됩니까? 폭포 캠프에서는 애자일 캠프가 아닌 것 같습니다. 또한 고객이 완료하는 데 2 ​​주가 걸리는 작업 만 원한다면 어떤 방법론을 사용하든 상관없이 사람들은 적절한 견적을 제공 할 수 있습니다. 고객이 진정으로 원하는 것은 전체 제품을 구입하기까지 얼마나 걸리는가인데, 여기서는 다른 방법으로 추정 할 수 있습니다.
덩크

1
또한, 당신은 소유자가 언제라도 전화를 걸 수있는 좋은 것으로 들리며, 당신이 끝내는 것은 그가 얻는 것입니다. IME, 일반적으로 고객은 자신의 X 달러가 현금을 버리기 전에 특정 기능 세트를 제공 할 것임을 알고 싶어합니다. 나는 고객이 많은 돈을 썼고 기대했던 기능의 절반 만 얻는 이점으로 보지 않습니다. 나는 그들이 일한다고 부르는 것을 전달했을지라도 개발 도상국이 실패한 것으로 생각한다 ....
Dunk

2
고객이 집을 계약했지만 지붕을 씌우기 전에 돈이 다 ​​떨어지면 어떻게 되나요? 민첩한 수용소는 여전히 그것을 성공이라고 부릅니다. 다른 사람은 없습니다. 특히 고객.
덩크

1
추정과 관련하여 팀은 스프린트에서 수행 할 수있는 작업을 추정하며 전체 프로젝트에 대한 타임 라인을 생성하기 위해 추정됩니다. 다시 말하지만 개발자와 클라이언트를 모두 보호합니다. 금액을 초과하지 않는 금액과 날짜를 포함하여 계약서에 원하는 것을 넣을 수 있습니다. 협상이 가능합니다. 애자일은 제약 조건이 실현 가능한지 여부를 매우 빠르게 보여줌으로써 여전히 도움이됩니다. 2 주 안에 돈을 벌기 위해 제 시간에 끝나지 않는 것처럼 보이면 팀을 추가하거나 기능을 설명하거나 일정을 연장 할 수 있습니다.
KeithS

1
폭포 SLDC에서 동일한 작업을 수행 한 경우 어떻게됩니까? 개발이 중단되고 클라이언트가 심각한 기능상의 문제가 있거나 코드 / 시간 부족이 예상되는 코드베이스를 얻을 수있는 경우 남은 일정이 남은 시간에 밀려납니다. 그것은 항상 품질을 희생시키고, 그러한 프로젝트의 끝에서 개발 팀은 볶습니다. 또한 전통적인 폭포수는 개발이 완료 될 때까지 제품을 생산하지 않기 때문에 많은 비용이 발생합니다. 이는 고객이 "원하는 것이 아닙니다"라고 말하는 능력을 제한합니다.
KeithS

1

모든 기능이 구현되고 모든 버그가 수정되면 종료됩니다.

마감일이 확정되고 요구 사항도 수정 된 경우 그러면 이것은 문제가되지 않습니다. 그러나 마감 기한이 정해졌지만 요구 사항이 변경되면 프로젝트를 성공적으로 진행하기 위해해야 ​​할 일이 있습니다.

고정 가격 파트 1, 그렇게 나쁜 이유는 무엇입니까?

고정 가격 부분 2, 민첩하게 고정하십시오!


모든 버그가 수정 된시기를 알기는 어렵습니다.
Martin Wickman

어쩌면 "고칠 가치가있는 모든 알려진 버그가 수정되었을 때"?
Dan Ray

@CharithJ, 링크가 깨졌습니다. 여전히 어딘가에 있습니까? 감사.
TwainJ

1

민첩한 개발의 큰 가정은 사용하는 방법론에 관계없이 요구 사항이 항상 변경된다는 것입니다. 물론 요구 사항 문서를 작성하고, 실행 계획을 수립하고, 최종적으로 제공 할 수 있으며 요구 사항이 변경되지 않은 것처럼 보일 수 있습니다. 계획이 변경되지 않았을 수도 있지만 시장 변화와 고객에 대한 제품에 대한 이해가 높아지면 고객이 원하는 것에 대한 요구 사항이 바뀔 것입니다. 애자일은 이러한 일정을 고정 된 일정으로 숨기지 않고 대신 불가피한 프로세스 변경에 대응하는 프로세스를 제안합니다.

완료되면 고정 일정 완료에서 제품이 고객이 소프트웨어를 현재 상태로 배송 및 마케팅 할 수있는 충분한 비즈니스 가치를 제공 할 수있는 장소로 전환됩니다. 행해지는 것은 일정을 지키는 방식이 아니라 제공하는 가치에 훨씬 더 묶여 있습니다.


1
민첩한 지지자들은 폭포 세계에서 계약이 체결 된 후 개발자가 사라지고 제품이 문을 열 때까지 다시는 듣지 않는다는 매우 잘못된 가정을합니다. 실생활에서 작동하는 방식은 고객이 원하는만큼 참여할 수있는 많은 체크 포인트와 리뷰가 있다는 것입니다. 지시 나 결정이 마음에 들지 않으면 변경을 요청할 수 있습니다. 제품이 배송 될 때까지 고객이 선택한 범위 내에서 고객이 원하는 것이어야합니다. 애자일은 많은 프로젝트에서이를 개선하지 않습니다.
덩크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.