Phát triển phần mềm Agile có thể được sử dụng trong các dự án được xác định bởi hợp đồng không?


14

Gần đây tôi đã có một cuộc trò chuyện với một nhà phát triển đồng nghiệp về Phát triển phần mềm Agile. Trong khi tôi hiểu nguyên tắc, có vẻ như các yêu cầu thay đổi liên tục tạo ra tiềm năng cho dự án tiếp tục mãi mãi. Nhưng, ít nhất là nơi tôi làm việc, các dự án cần phải hoàn thành vì đó là hợp đồng.

Đó là, lần lặp đầu tiên có thể mất vài tháng, vì đối với một số dự án, khách hàng không thể sử dụng một ứng dụng chưa hoàn chỉnh. Đối với một số dự án, tôi nghĩ bạn cần xác định xong trước, sau đó bạn có thể chia nó thành các lần lặp và tinh chỉnh định nghĩa của bạn sau mỗi lần lặp. Nhưng bạn phải luôn có định nghĩa này.

Nếu Phát triển phần mềm Agile chấp nhận các yêu cầu thay đổi, làm thế nào để bạn biết nó kết thúc ở đâu? Làm thế nào bạn có thể lập ngân sách cho một dự án khi kết quả cuối cùng luôn thay đổi?

Phát triển phần mềm Agile có liên quan nhiều đến một quy trình nhanh, hơn là một sản phẩm nhanh không?


nó kết thúc khi bạn cần thực sự cung cấp một cái gì đó hoạt động, chứ không phải là tinker xung quanh. Tại thời điểm đó, bạn phải bắt đầu áp đặt cấu trúc, lập kế hoạch, sửa chữa các yêu cầu và thời hạn, và bắt đầu làm việc thay vì đánh lừa xung quanh.
jwenting

Mỗi lần lặp nhanh dẫn đến một sản phẩm có thể giao được mà khách hàng có thể sử dụng và học hỏi thêm từ đó. Điều này diễn ra cho đến khi họ hài lòng, điều này thường xảy ra sớm hơn dự định ban đầu. Điều này đảm bảo rằng sản phẩm luôn hoạt động và có tính đến thực tế là phần mềm không bao giờ được hoàn thành mà chỉ phát triển mãi mãi hoặc chết. Chỉ cần chọn một thời điểm khi bạn nghĩ rằng sản phẩm là đủ tốt và dừng lại ở đó (bây giờ).
Martin Wickman

@Martin Wickman: Tôi hiểu điều này, nhưng "một sản phẩm có thể giao được mà khách hàng có thể sử dụng" là vấn đề ở đây. Nếu đây là trường hợp, lần lặp đầu tiên có thể mất vài tháng, bởi vì đối với một số dự án, khách hàng không thể sử dụng một ứng dụng không hoàn chỉnh. Đối với một số dự án, tôi nghĩ bạn cần xác định xong trước, sau đó bạn có thể chia nó thành các lần lặp và tinh chỉnh định nghĩa của bạn sau mỗi lần lặp. Nhưng bạn PHẢI LUÔN có định nghĩa này.
Verax

@Verax: Bản tuyên ngôn nhanh được tạo ra để quản lý các thay đổi. Nếu dự án của bạn không có thay đổi, thì agile không dành cho bạn. Kết thúc câu chuyện.
Martin Wickman

2
@Verax: Bạn nên làm rõ câu hỏi của bạn và thêm bối cảnh cho nó. Nhận xét của bạn cho thấy có nhiều câu hỏi hơn. Điều này cũng rõ ràng từ phiếu bầu dựa trên câu trả lời và câu trả lời được chấp nhận không liên quan đến văn bản câu hỏi thực tế (và thậm chí nói "từ các bình luận của OP ...").
Martin Wickman

Câu trả lời:


7

Từ Nhận xét của OP có vẻ như anh ấy thích tôi làm việc cho một cửa hàng Tư vấn, nơi chúng tôi cung cấp dịch vụ phát triển cho khách hàng của mình ... Tôi nghĩ bởi vì trong khung suy nghĩ này đang gây ra sự nhầm lẫn của anh ấy / cô ấy ... Vì vậy tôi sẽ Nhà nước cũng biết nhưng không bao giờ nêu thực tế.

Agile không tương thích với phát triển phần mềm được xác định bởi hợp đồng.

  • Hợp đồng cần phải cứng, Bạn trả X chúng tôi làm Y. Bạn muốn X + M bạn trả cho chúng tôi Y + (M * N)
  • Hợp đồng PHẢI phải thỏa đáng, (IE không mở kết thúc) nếu không chúng không phải là liên hệ pháp lý. (Khi có liên hệ, bạn phải thực hiện quy trình kiểm soát thay đổi nghiêm ngặt.)

Nhiều cửa hàng tư vấn tuyên bố với Agile, họ đang nói dối. Họ chỉ nói rằng vì Agile đã đạt được trạng thái từ Buzz.

Agile hoạt động tốt nhất cho sự phát triển nội bộ nơi các lập trình viên làm việc toàn thời gian và ít nói về ngân sách. Chỉ cần khung thời gian và tính năng.


Khi tôi tìm hiểu thêm về điều này, tôi đi đến kết luận tương tự. Câu cuối cùng của bạn dường như là hoàn toàn chính xác. Tôi đã từng làm việc cho chính phủ và khách hàng của tôi là cơ quan tôi làm việc và các chương trình phải được duy trì trong nhiều năm và miễn là có nhân viên sử dụng chúng. Tôi có thể thấy nhanh nhẹn làm việc ở đó. Bây giờ tôi phát triển các hệ thống nhúng. Dự án kết thúc khi máy hoạt động (tất cả hoặc không có gì). Nếu máy hoạt động một phần, nó không thể được bán - dự án thất bại.
Verax

2
Trên thực tế, một cửa hàng tư vấn mà tôi đã làm việc vài năm trước đây thực sự có một bài báo được viết bởi một người tuân thủ nhanh nhẹn mô tả làm thế nào nhanh nhẹn có thể được trang bị trong một mô hình dịch vụ giá cố định.
đánh dấu

2
Tôi phải không đồng ý với câu trả lời này. Lý do là nếu bạn có một hợp đồng không kết thúc mở, điều đó có nghĩa là bạn không muốn quản lý creep scope (điều này hầu như luôn xảy ra). Các hợp đồng tôi từng thấy bắt đầu bằng: Bạn trả X, chúng tôi làm Y. Sau đó, họ có một điều khoản quy định rằng mọi thay đổi phạm vi đều đi kèm với một mức giá bổ sung. Miễn là bạn còn rất sớm về creep scope scope (yêu cầu thêm tài nguyên và thời gian) thì những khách hàng trước đó có thể phản ứng với những thay đổi (nhận được sự chấp thuận và ngân sách từ quản lý cấp trên, v.v.). Sau đó, quá trình quản lý tự nó trở nên nhanh nhẹn.
Spoike

Điều này không tương thích nếu hợp đồng dành cho dịch vụ (viết mã) trái ngược với sản phẩm (phần mềm đã hoàn thành). Agile cho phép ước tính những gì sẽ được thực hiện theo ngân sách nào, nếu yêu cầu thay đổi, ngân sách cũng phải thay đổi. Bạn muốn một tính năng khác? Bạn phải ký hợp đồng 500 giờ nữa. Creep tính năng cũng là creep giá, hoàn toàn thỏa đáng cho các nhà phát triển, và nếu khách hàng sẵn sàng trả tiền, chúng ta là ai để hỏi điều đó?
SF.

2
Có những hợp đồng nhanh nhẹn , vì vậy rõ ràng câu trả lời này là sai theo định nghĩa.
Martin Wickman

20

Nếu bạn đang tập trung vào làm (điều bạn tin là) những thứ quan trọng nhất trước tiên, thì dự án sẽ kết thúc khi:

  • Bạn đã tiêu số tiền bạn dự trù.
  • Bạn đã trôi qua thời gian bạn dự trù kinh phí.
  • Bạn không còn muốn thêm hoặc thay đổi bất cứ điều gì.
  • Lô thay đổi ưu tiên cao nhất tiếp theo của bạn không xứng đáng với giá mà chúng sẽ phải trả.

5
1. Không còn tiền - Khách hàng đã tiêu hết tiền vào một sản phẩm vô dụng không hoàn chỉnh. 2. Không còn thời gian nữa - Khách hàng vẫn có một sản phẩm vô dụng không hoàn chỉnh. 3. Không có gì để thêm - Đúng rồi! 4. Không đáng - Khách hàng chỉ từ bỏ dự án. --- Tôi còn thiếu gì? Điều này không có ý nghĩa với tôi.
Verax

7
Cho 1 và 2: Nếu bạn làm những việc quan trọng nhất trước tiên, thì khi bạn hết tiền, bạn sẽ có những thứ quan trọng nhất bạn có thể nhận được tiền. Tương tự cho thời gian. Tôi thừa nhận 3 là hiếm. Đối với 4: Dừng lại không nhất thiết có nghĩa là khách hàng đã bỏ cuộc. Điều đó có nghĩa là họ có những thứ quan trọng nhất họ muốn từ việc này, và bây giờ thà làm những việc khác bằng tiền của họ. Làm thế nào để bạn quyết định khi kết thúc các dự án khác? Bất cứ tiêu chí nào bạn sử dụng bây giờ vẫn có sẵn cho các dự án nhanh.
Dale Emery

1
Dale, cảm ơn bạn đã suy nghĩ của bạn. Tôi nghĩ rằng điều này chỉ hoạt động nếu khách hàng trả tiền cho mỗi lần lặp riêng lẻ và định giá mỗi lần lặp như một sản phẩm. Tôi không thấy làm thế nào điều này có thể hoạt động tốt cho các sản phẩm hoặc sản phẩm có chi phí cố định đòi hỏi tất cả hoặc không có gì.
Verax

5
@Verax: Không có sản phẩm nào yêu cầu "tất cả hoặc không có gì". Luôn có những tính năng chỉ đơn thuần là "đẹp để có" và các lỗi là mỹ phẩm hơn là chức năng. Một dự án có chi phí cố định là một thành công nếu tất cả chỉ còn lại khi hết tiền. Các phương pháp nhanh nhẹn cố gắng tối đa hóa khả năng đó.
Michael Borgwardt

1
Tất nhiên có một chi phí để thay đổi các yêu cầu. Nếu bạn xây dựng một cái gì đó trong một lần lặp, sau đó thay đổi các yêu cầu cho nội dung đó trong lần tiếp theo, sẽ có chi phí cho việc đó. Agile giảm chi phí. Nó không loại bỏ nó. Nếu bạn có ngân sách, bạn sẽ ghi nhớ ngân sách khi quyết định nên thêm một tính năng mới hoặc thay đổi một tính năng hiện có, biết rằng bạn luôn giao dịch với nhau. Bạn học cách ưu tiên và ưu tiên lại, và bạn học được hậu quả.
Dale Emery

14

Bạn dừng lại khi doanh nghiệp quyết định họ không muốn thực hiện thêm bất kỳ lần lặp nào nữa. Bạn sẽ hy vọng rằng đây là sau khi một lượng giá trị đáng kể đã được phân phối nhưng trước khi bạn đi quá xa vào vương quốc của lợi nhuận giảm dần.

Nó phải luôn được thúc đẩy bởi "doanh nghiệp" bất cứ điều gì có nghĩa là trong hoàn cảnh của bạn. Đó có thể là quản lý cấp cao của một cửa hàng phát triển phần mềm hoặc các nhà tài trợ kinh doanh thực tế trong môi trường phát triển nội bộ. Họ sẽ quyết định khi chi phí của lần lặp tiếp theo lớn hơn lợi ích của các tính năng sẽ được cung cấp trong lần lặp tiếp theo.


5

Không bao giờ, và đó là vẻ đẹp của nó.

Dự án không bao giờ kết thúc . Bạn đã đạt được một bản phát hành khác, một cột mốc khác, nhưng miễn là tiền đang chảy, luôn có thêm một tính năng để thêm, thêm một phần để làm cho tốt hơn, thêm một lỗi để sửa. Dự án sẽ chết khi không còn cần thiết, nhưng nó sẽ không bao giờ kết thúc. Trái ngược với mô hình Waterfall với yêu cầu-> dự án-> sản phẩm-> kết thúc, đây là một vòng lặp có thể quay mãi mãi - miễn là bạn được trả tiền.

Không phải là một tính năng kinh doanh thường xuyên được đề cập của công nghệ này, phải không?


2
Các dự án thác nước chưa bao giờ hoàn thành, chỉ có khả năng được giao mang đi hoặc bỏ lại với các tính năng quan trọng bị thiếu, làm cho một dự án mới, đắt tiền trở nên cần thiết.
Michael Borgwardt

4

Có một quan niệm sai lầm ở đây: Agile không khuyến khích các yêu cầu của dự án thay đổi. Nó thay vào đó cho phép thay đổi mà không lãng phí công việc, hoặc hy sinh các lĩnh vực phát triển quan trọng.

Có bốn hạn chế cơ bản cho bất kỳ dự án kỹ thuật nào; phạm vi, chi phí, thời gian và chất lượng. Thác giả định rằng những điều này sẽ là tĩnh. Đó là một giả định không chính xác; một hoặc nhiều trong số những LUÔN LUÔN thay đổi. Creep phạm vi, ngân sách bị cắt giảm và các "ẩn số chưa biết" khác LUÔN LUÔN can thiệp vào một dự án, thay đổi các ràng buộc. Thác nước không lường trước được điều này, vì vậy khi nó xảy ra, dự án thay đổi theo những cách không mong muốn; các tính năng quan trọng chưa được thêm vào sẽ bị mất đi hoặc nhanh chóng được thực hiện hoặc phải giải phóng bản phát hành hoặc chi phí bóng bay khi Thủ tướng ném tiền vào các nhà phát triển mới để tham gia và giúp hoàn thành công việc.

Agile, ngược lại, cho phép các ràng buộc thay đổi, và thực sự mong đợi nó. Nó thực hiện điều này bằng cách thực hiện công việc trong các phần nhỏ, có thể sử dụng được, theo các ưu tiên của chủ sở hữu, và do đó các phần này là lý tưởng ngay lập tức hữu ích cho chủ dự án. Do đó, giảm tiếp xúc với những điều chưa biết bằng cách không thực hiện các kế hoạch lớn trong một khung thời gian mà những điều chưa biết là lớn. Nếu dòng thời gian thay đổi, các nhóm có thể được thêm hoặc các tính năng ít quan trọng hơn "khử phạm vi" và hệ thống mà nhóm đã xây dựng không bị ảnh hưởng.

Nó cũng cung cấp các ước tính tốt hơn về thời gian và chi phí cần thiết để sản xuất phạm vi nhất định với chất lượng yêu cầu. Mọi người nổi tiếng là xấu khi ước tính công việc lớn; phải mất rất nhiều kinh nghiệm và tính toán trả trước nhiều hơn để thực hiện đúng. Ngược lại, mọi người thường là những người đánh giá tốt về những gì họ có thể hoàn thành trong một ngày, hoặc một hoặc hai tuần. Điều đó nhanh chóng tạo ra trạng thái ổn định nơi bạn có thể ngoại suy thời gian và chi phí công việc còn lại phải hoàn thành dựa trên tốc độ lịch sử của bạn, với độ chính xác hợp lý.

Đối với việc xác định điểm cuối, bạn đúng; một dự án Agile CÓ THỂ tiếp tục mãi mãi. Tuy nhiên, SLDC truyền thống cũng vậy; khách hàng thường quay lại với nhiều tiền hơn và một danh sách mong muốn nâng cấp. Sự khác biệt là không có một ranh giới rõ ràng giữa "phân tích", "thiết kế", "phát triển" và "bảo trì" khi nhìn tổng thể dự án; tất cả xảy ra từng viên gạch, chạy nước rút bằng nước rút. Nếu tại bất kỳ thời điểm nào, chủ sở hữu muốn gọi dự án là "đã hoàn thành", họ có thể và họ sẽ có tổng số "viên gạch" mà họ đã trả trong một "bức tường" vững chắc; nó có thể không cao hoặc kéo dài như dự định ban đầu, nhưng nó chắc chắn, thực hiện công việc và có thể được thêm vào một ngày sau đó với mức tối thiểu bị phá vỡ.


Xin lỗi nhưng "Thay vào đó, nó cho phép thay đổi mà không lãng phí công việc", là một lời ngụy biện hèn hạ được sử dụng để thuyết phục ban quản lý về việc nó tuyệt vời như thế nào. Không tái cấu trúc và / hoặc thiết kế lại hệ thống để chứa các thay đổi bất ngờ được tính là lãng phí công việc? Trong trại thác nước, dường như không phải trong trại nhanh nhẹn. Ngoài ra, nếu khách hàng chỉ muốn một công việc mất 2 tuần để hoàn thành thì việc sử dụng phương pháp nào không quan trọng, mọi người có thể đưa ra ước tính tốt. Điều khách hàng thực sự muốn là bao lâu trước khi tôi có sản phẩm đầy đủ, nơi nhanh nhẹn không tốt hơn các phương pháp ước tính khác.
Dunk

1
Ngoài ra, bạn làm cho nó có vẻ như là một điều tốt mà chủ sở hữu có thể gọi được thực hiện bất cứ lúc nào và những gì bạn đã hoàn thành là những gì anh ta nhận được. IME, nói chung, khách hàng muốn biết rằng đô la X của mình sẽ cung cấp một bộ tính năng nhất định trước khi anh ta rút tiền. Tôi không thấy đó là một lợi ích mà khách hàng đã chi một đống tiền mặt và chỉ nhận được một nửa các tính năng mà họ mong đợi. Tôi coi đó là một thất bại đối với các công ty đang phát triển mặc dù họ có thể đã giao một thứ gì đó mà họ gọi là hoạt động ....
Dunk

2
Điều gì sẽ xảy ra nếu một khách hàng ký hợp đồng mua nhà nhưng tiền đã hết trước khi mái nhà được đưa vào? Trại nhanh nhẹn vẫn gọi đó là một thành công. Không ai khác sẽ làm; đặc biệt là khách hàng.
Dunk

1
Đối với việc ước tính, nhóm ước tính những gì họ có thể làm trong một lần chạy nước rút và điều đó được ngoại suy để tạo ra một dòng thời gian cho toàn bộ dự án. Một lần nữa, nó giúp bảo vệ cả nhà phát triển và khách hàng. Bạn có thể đặt bất cứ điều gì bạn muốn trong một hợp đồng, bao gồm số tiền và ngày "không vượt quá". Nó có thể thương lượng. Agile vẫn giúp, bằng cách hiển thị cả hai mặt rất nhanh xem các ràng buộc có khả thi hay không. Hai tuần sau, nếu không có vẻ như sẽ hoàn thành kịp thời gian để kiếm tiền, các đội có thể được thêm vào, các tính năng được bỏ qua hoặc lịch trình được mở rộng.
KeithS

1
Điều gì xảy ra nếu nó đã làm điều tương tự trong SLDC thác nước? Quá trình phát triển sẽ dừng lại và khách hàng có thể nhận được một cơ sở mã với các lỗ hổng chức năng nghiêm trọng hoặc dự đoán sự thiếu hụt tiền / thời gian, lịch trình còn lại sẽ được nhồi nhét vào thời gian còn lại. Rằng LUÔN hy sinh chất lượng, và khi kết thúc một dự án như vậy, nhóm phát triển bị xào xáo. Ngoài ra, rất nhiều chi phí vượt mức xảy ra do một thác nước truyền thống không tạo ra sản phẩm cho đến khi quá trình phát triển hoàn tất; điều đó hạn chế khả năng khách hàng nói "đó không phải là điều tôi muốn".
KeithS

1

Nó kết thúc khi tất cả các tính năng được triển khai và tất cả các lỗi đã được sửa.

Nếu thời hạn là cố định và các yêu cầu cũng được cố định. Sau đó, đây sẽ không phải là một vấn đề. Nhưng nếu thời hạn là cố định, nhưng các yêu cầu đang thay đổi, thì có một số việc bạn nên làm để tiến hành dự án thành công.

Giá cố định phần 1, có gì tệ?

Đã sửa giá phần 2, Sửa nó nhanh!


Thật khó để biết khi nào tất cả các lỗi đã được sửa.
Martin Wickman

Có lẽ "khi tất cả các lỗi đã biết đáng sửa đã được sửa"?
Dan Ray

@CharithJ, liên kết của bạn bị hỏng. Họ vẫn còn có sẵn ở đâu đó? Cảm ơn.
TwainJ

1

Giả định lớn đằng sau sự phát triển nhanh là các yêu cầu luôn thay đổi, bất kể bạn sử dụng phương pháp nào. Bây giờ, tất nhiên bạn có thể xây dựng một tài liệu yêu cầu, xây dựng một kế hoạch để thực hiện nó và phân phối vào cuối, và có vẻ như các yêu cầu của bạn đã không thay đổi. Họ có thể không thay đổi trong kế hoạch của bạn, nhưng với những thay đổi của thị trường và bạn và khách hàng của bạn hiểu rõ hơn về sản phẩm, các yêu cầu về những gì khách hàng muốn sẽ thay đổi. Agile đến và đề xuất một quy trình không che giấu những thay đổi này thông qua một lịch trình cố định, mà thay vào đó, các bản dựng đáp ứng với những thay đổi không thể tránh khỏi trong quy trình.

Khi bạn hoàn thành, bây giờ chuyển từ hoàn thành một lịch trình cố định sang khi sản phẩm của bạn ở nơi bạn có thể cung cấp đủ giá trị kinh doanh nơi khách hàng của bạn có thể giao hàng và tiếp thị phần mềm ở trạng thái hiện tại. Hoàn thành được gắn chặt hơn nhiều với giá trị bạn đang cung cấp thay vì cách bạn tuân thủ lịch trình.


1
Những người đề xướng Agile đưa ra giả định rất sai lầm rằng trong thế giới thác nước, các nhà phát triển biến mất sau khi một hợp đồng được ký kết và không bao giờ được nghe lại cho đến khi một sản phẩm bật ra khỏi cửa. Cách thức hoạt động trong cuộc sống thực là có một số lượng lớn các điểm kiểm tra và nhiều đánh giá mà khách hàng có thể tham gia với bao nhiêu tùy thích. Nếu họ không thích phương hướng hay quyết định, họ có thể yêu cầu thay đổi. Vào thời điểm một sản phẩm được giao, nó sẽ là những gì khách hàng muốn đến mức mà khách hàng chọn tham gia. Agile không cải thiện điều này cho nhiều dự án.
Dunk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.