Mô hình nhanh nhẹn
Phương pháp linh hoạt (Agile) giúp giảm rủi ro trong quá trình phát triển phần mềm bằng cách chuyển quy trình làm việc thành nhiều chu kỳ nhỏ. Các chu kỳ này được gọi là lặp lại và thường kéo dài từ hai đến ba tuần.
Lặp lại giống như một dự án phần mềm nhỏ bao gồm các tác vụ, mỗi tác vụ cải thiện chức năng. Chúng bao gồm: lập kế hoạch, đánh giá các yêu cầu, đồng ý về một dự án, viết mã, thử nghiệm và tạo tài liệu kỹ thuật.
Một lần lặp lại thường không đủ cho một bản phát hành phần mềm chính thức. Tuy nhiên, điểm hay của Agile là các phần nhỏ của dự án đã sẵn sàng để đánh giá vào cuối mỗi lần lặp lại. Điều này cho phép các thành viên trong nhóm thay đổi mức độ ưu tiên cho công việc tiếp theo mà không cần đợi bản phát hành cuối cùng.
Áp dụng phương pháp phát triển “nhanh nhẹn”, bạn có thể thấy kết quả cụ thể sau mỗi lần lặp lại. Nghĩa là, nhà phát triển có thể hiểu liệu kết quả công việc của mình có đáp ứng yêu cầu hay không. Đây là một trong những ưu điểm quan trọng của mô hình linh hoạt.
Về nhược điểm, khi sử dụng Agile, đôi khi rất khó để ước tính chi phí nguồn nhân lực và ngân sách của dự án. Nếu chúng ta đưa ra các tùy chọn cho ứng dụng thực tế của mô hình linh hoạt, thì nổi tiếng nhất trong số đó là Lập trình cực đoan (XP).
XP dựa trên các cuộc họp ngắn của các thành viên trong nhóm diễn ra hàng ngày và các cuộc họp định kỳ (mỗi tuần một lần hoặc ít hơn). Tại các cuộc biểu tình hàng ngày (đứng lên hàng ngày) thường được thảo luận:
- kết quả công việc hiện tại;
- danh sách các nhiệm vụ cần hoàn thành của từng thành viên trong nhóm;
- những khó khăn gặp phải và cách giải quyết.
Tuyên ngôn
Agile là một hướng phát triển toàn diện, vì vậy các quy tắc để làm việc với nó được nêu trong một tài liệu đặc biệt - Tuyên ngôn Agile. Điều này bao gồm cả thực tiễn và nguyên tắc mà nhóm nên làm việc.
Agile Manifesto bao gồm 4 ý tưởng cơ bản và 12 nguyên tắc.
Ý tưởng chính:
- sự hợp tác giữa các nhà phát triển quan trọng hơn các công cụ;
- phiên bản làm việc của sản phẩm được ưu tiên hơn tài liệu;
- sự hiểu biết lẫn nhau giữa nhóm và khách hàng quan trọng hơn các điều khoản của hợp đồng;
- Kế hoạch ban đầu luôn có thể được thay đổi nếu cần thiết.
Đối với 12 nguyên tắc của Agile, đây là:
- ưu tiên chính là sự tuân thủ của chương trình đã hoàn thành với mong đợi của khách hàng;
- cho phép thay đổi các điều kiện ở bất kỳ giai đoạn nào, ngay cả ở giai đoạn phát triển cuối cùng (nếu điều này có thể cải thiện chất lượng và khả năng cạnh tranh của phần mềm);
- cung cấp thường xuyên các phiên bản làm việc của sản phẩm phần mềm (14 ngày, tháng hoặc quý);
- chìa khóa thành công là sự tương tác thường xuyên giữa khách hàng và nhà phát triển (tốt nhất là hàng ngày);
- các dự án nên được xây dựng giữa những người quan tâm đến chúng, những người như vậy phải được cung cấp các điều kiện cần thiết cho công việc và mọi hình thức hỗ trợ;
- cách tốt nhất để chia sẻ thông tin trong một nhóm là một cuộc họp cá nhân;
- phiên bản làm việc của phần mềm là chỉ báo tốt nhất về tiến độ;
- tất cả các bên liên quan phải có khả năng duy trì nhịp độ công việc mong muốn trong suốt quá trình phát triển phần mềm;
- cải tiến kỹ thuật và thiết kế tốt nâng cao tính linh hoạt;
- điều quan trọng là giữ cho nó đơn giản và không quá sáng tạo;
- kết quả tốt nhất thu được từ những nhóm có khả năng tự tổ chức;
- các thành viên trong nhóm nên thường xuyên suy nghĩ về các cách để cải thiện hiệu quả của họ bằng cách thay đổi quy trình làm việc.
Theo tuyên ngôn Agile, một quy trình phát triển phần mềm tốt phụ thuộc trực tiếp vào những người tham gia vào quy trình này. Để làm điều này, bạn cần tổ chức sự tương tác của họ một cách hiệu quả nhất có thể, tạo ra một nhóm có tổ chức nhất.
phương pháp luận
Ngoài ra còn có một số phương pháp trong Tuyên ngôn Agile giải thích các giá trị và nguyên tắc:
- Mô hình hóa nhanh nhẹn;
- Quy trình Thống nhất Agile;
- Phương pháp dữ liệu linh hoạt
- Phát triển ứng dụng nhanh (DSDM);
- Quá trình hợp nhất thiết yếu;
- lập trình cực đoan;
- phát triển theo định hướng tính năng;
- Bắt Thật;
- Mở ra;
- cặn bã.
Mô hình hóa Agile là tập hợp các nguyên tắc, thuật ngữ và thực tiễn giúp tăng tốc và đơn giản hóa việc phát triển các mô hình và tài liệu phần mềm.
Mục tiêu của Mô hình hóa Agile là cải thiện mô hình hóa và tài liệu. Điều quan trọng cần lưu ý là điều này không bao gồm mã hóa, thử nghiệm hoặc các vấn đề liên quan đến kiểm soát, triển khai và hỗ trợ dự án. Tuy nhiên, phương pháp này bao gồm xem xét mã.
Agile Unified Process là một phương pháp giúp người dùng dễ dàng ước lượng (mô hình). Thường được sử dụng để phát triển phần mềm thương mại.
Phương pháp dữ liệu linh hoạt - một số phương pháp tương tự trong đó các điều kiện của khách hàng đạt được thông qua sự hợp tác của một số nhóm.
DSDM - cách tiếp cận này khác với các phương pháp khác ở chỗ, cùng với các nhà phát triển, người dùng sản phẩm trong tương lai tham gia tích cực vào nó.
Phát triển theo hướng tính năng là một phương pháp phát triển có giới hạn thời gian: “mỗi tính năng phải được triển khai không quá hai tuần”.
Điều đáng xem xét là nếu trường hợp sử dụng nhỏ, nó có thể được coi là một tính năng. Nếu nó quan trọng, thì nó phải được chia thành nhiều chức năng.
Bắt thực là một phương pháp lặp đi lặp lại trong đó giao diện chương trình được phát triển trước và chỉ sau đó chức năng của nó mới được phát triển.
OpenUP là một phương pháp phát triển chia chu kỳ dự án thành bốn giai đoạn: khởi động, sàng lọc, xây dựng và bàn giao.
Theo các nguyên tắc của Agile, bất kể thời lượng của công việc là bao nhiêu, cần phải cung cấp cho tất cả các bên liên quan và các thành viên trong nhóm cách làm quen và đưa ra quyết định. Nhờ đó, có thể kiểm soát hiệu quả tình hình và đánh giá kết quả trung gian kịp thời. Kế hoạch dự án xác định vòng đời và kết quả cuối cùng phải được coi là bản phát hành ổn định của ứng dụng.
Đối với Scrum, nó quy định các quy tắc để quản lý quá trình phát triển và cho phép bạn áp dụng các thực hành viết mã hiện có với khả năng điều chỉnh các điều kiện hoặc thực hiện các thay đổi. Sử dụng phương pháp này cho phép bạn xem và loại bỏ những sai lệch so với kết quả mong đợi trong giai đoạn phát triển ban đầu.
Chúng ta hãy xem xét điều này chi tiết hơn một chút ...