Những tranh cãi về Lập trình cực hạn (Extreme Programming-XP) như Lập trình ôm ( pair programming) và Thiết kế liên lục vẫn luôn thu hút được nhiều phê bình gay gắt từ những người như Mc Breen hay Boehm và Turner. Tuy vậy, cũng có nhiều nhà thực hành linh hoạt lại tin rằng những phê bình ấy là hiểu lầm về phát triển linh hoạt.
Cụ thể, theo những phê bình của Matt Stephens và Doug Rosenberg trong Extreme Programming Refactored. Những phê bình này gồm :
- Việc phát triển linh hoạt được dùng như một công cụ để moi tiền khách hàng do thiếu những định nghĩa về sản phẩm thỏa thuận
- Thiếu những cấu trúc và những tài liệu hướng dẫn cần thiết - Chỉ làm việc với những nhà lập trình cao cấp
- Hội tụđủ các thiết kế phần mềm
- Đòi hỏi những hội thảo với chi phí lớn gây lãng phí cho khách hàng - Đòi hỏi quá nhiều những thay đổi trong văn hóa để thích nghi
- Có thể dẫn đến những thỏa thuận hợp đồng phức tạp hơn
- Có thể không hiệu quả nếu những yêu cầu cho một mẫu code thay đổi trong quá trình trao đổi qua lại, một chương trình như vậy có thể cần được làm đi làm lại nhiều lần, trong khi đó, nếu còn 1 kế hoạch nữa theo sau thì 1 mẫu code có thể phải viết lại một lần nữa.
- Không thểđánh giá được giá trị của công sức bỏ ra vì ngay từ khi bắt đầu dự án , không ai biết được toàn bộ yêu cầu dự án.
- Có thể làm tăng khả năng nguy cơ kéo dài thời hạn vì thiếu những tài liệu về yêu cầu chi tiết.
Những phê bình đánh giá về thết kế phần mềm và việc thiếu những tài liệu hướng dẫn đã được chỉ ra trong phương pháp lập mẫu linh hoạt (Agile Modeling method), cái mà có thểđược dễ dàng thiết kế trong các tiến trình linh hoạt.
Phát triển phần mềm linh hoạt bị phê bình vì nó không mang lại những lợi ích nhưđã nêu với người lập trình ở mức độ trung bình.
V. Kết luận
Các nghiên cứu đã chỉ ra rằng, phương pháp luận phát triển phần mềm hướng dự
án theo cách truyền thống không được sử dụng trong thực tiễn và nó cũng quá máy móc. Kết quả là, các nhà phát triển phần mềm trong công nghiệp đã tỏ ra hoài nghi về những giải pháp mới cái mà rất khó khăn để tìm ra và do vậy vẫn chưa được sử
dụng. Các phương pháp phát triển phần mềm linh hoạt chính thức được bắt đầu với sự công bố bản tuyên ngôn về vấn đề linh hoạt, và chúng cũng tạo được những cố
gắng trong việc mang đến mô hình chuyển đổi trong lĩnh vực kĩ nghệ phần mềm. Các phương pháp linh hoạt yêu cầu hướng trọng tâm đến con người, đến sự tương tác, đến làm việc phần mềm, đến sự cộng tác với khách hàng và sụ thay đổi hơn là các quy trình, công cụ, các hợp đồng hay kế hoạch. Có một số hệ phương pháp luận mới ra đời yêu cầu sự tương thích với các nguyên tắc linh hoạt cũng đang được giới
thiệu tuy nhiên vẫn chưa có được những quan điểm mang tính hệ thống nào về
phương pháp linh hoạt.
Tài liệu này viết ra với 3 mục đích :
Đầu tiên là tổng hợp những tư tài liệu hiện thời về những gì thức sự có ý nghĩa là “linh hoạt” bằng cách đặt câu hỏi “Cái gì đã biến 1 phương pháp phát triển thành 1 phương pháp linh hoạt?”, và kết luận rằng việc phát triển phần mềm phải đạt được những yêu cầu sau:
- Phát triển nhanh (các phần mềm nhỏđược hoàn thành nhanh chóng với những chu kì nhanh)
- Có tính hợp tác (khách hàng và nhà phát triển hợp tác với nhau với 1 cách thân thiện gần gũi)
- Đơn giản (bản thân phương pháp phải dễ dàng được áp dụng, sửa, và có các tài liệu hỗ trợ tôt)
- Có tính thích ứng (có khả năng thích ứng với những thay đổi)
Thứ hai, dựa trên cơ sởđịnh nghĩa này, mỗi phương pháp lại được mô tả bằng những thuật ngữ về quy trình, vai trò, nhiệm vụ, thực hành, triển khai , rút kinh nghiệm cùng với những nghiên cứu hiện tại.
Thứ ba, cho phép lựa chọn các tiêu chí để so sánh các phương pháp và đưa ra những điểm giống và khác nhau của các phương pháp, từđó thấy rằng tuy rằng các phương pháp có những điểm chung nhưng vẫn có vài phương pháp nổi bật hơn các phương pháp kia, ví dụ như chúng hỗ trợ các bước khác nhau trong phát triển phần mềm ở nhiều cấp độ. Những điểm khác nhau này cũng được thấy trong những thực tế khi mà những phương pháp này được áp dụng.
Ví dụ như ASD thì hầu như tập trung vào các nguyên tắc hưuớng dẫn phát triển phần mềm trong khi XP lại đặt trọng tâm vào việc thực hành phát triển.
Những cơ sở luận chứng nhỏ cũng đã gợi ra rằng các phương pháp linh hoạt khá hệu quả và phù hợp trong nhiều môi trường và trong nhiều tình huống, tuy vậy, hiện tại, có rất ít những nghiên cứu xác đáng mang tính kinh nghiệm hỗ trợ cho luận
điểm này, những luận chứng hiện nay chỉ bao gồm phần lớn là những thành công của các chuyên gia thực hành. Mặc dù những luận chứng ấy cũng cung cấp những thông tin khá giá trị về những ứng dụng mang tính thực nghiệm, tuy vậy vẫn cần có thêm những nghiên cứu mang tính kinh nghiệm để đánh giá được hiệu quả và khả
năng của việc sử dụng những phương pháp phát triển phần mềm linh hoạt. Hơn nữa, việc cho ra đời thường xuyên các phương pháp linh hoạt thì lại hầu như làm
tình hình rắc rối hơn, mỗi phương pháp lại sử dụng những thuật ngữ, những công nghệ riêng mà không chú trọng đến việc thống nhất trong cách trình bày quan điểm. Cái đang vô cùng cấp thiết hiện nay (hơn cả những mô hình mới) chính là sự thực hiện theo hay chọn lựa những phương pháp để sử dụng cho những người thực hành. Mục tiêu của việc này là cho phép các chuyên gia phần mềm, các dự án,các tổ chức có thể chọn và áp dụng được đúng phương pháp và đúng thời điểm. Chúng ta cũng mong rằng những nghiên cứu mang tính kinh nghiệm hoặc những kinh nghiệm sẽ
tạo cho chúng ta môi trường tiềm năng cho xu hướng phát triển này.
Tóm lại, suy nghĩ linh hoạt là xem con người là trọng tâm của phát triển phần mềm. Chiến lược lấy con người làm trọng tâm này đã được xem như là một trong những ưu thế sống còn bởi vì không giống như công nghệ, giá cả, hay phát triển sản phẩm mới, chiến lược con người khá khó để triển khai (Pfeffer 1998; Miller and Lee 2001). Tuy nhiên đây không phải là việc mới mẻ, vào năm 1990, trong một đề tài của những nhà lập trình Mỹ (Ed Yourdon’s Software Journal, Vol. 3, No. 7-8) các nhà biên tập đã bình luận về vấn đềđặc biệt này như sau “Mọi người đều biết cách tốt nhất để phát triển phần mềm về số lượng cũng như chất lượng chính là đặt con người làm trọng tâm”. Do vậy, ý tưởng về các phương pháp linh hoạt không phải là quá mới mẻ, mặc dù vậy,chúng ta vẫn luôn tin rằng những phương pháp phát triển phần mềm linh hoạt sẽ đem lại cho chúng ta một giải pháp nào đó trong việc tiếp cận các vấn đề của kĩ nghệ phần mềm .