JavaRush /Blog Java /Random-VI /Các phương pháp phát triển phần mềm
Миха Писаренко
Mức độ
Киев

Các phương pháp phát triển phần mềm

Xuất bản trong nhóm
Xin chào. Ở hai cuộc phỏng vấn gần đây nhất, tôi đã được hỏi về phương pháp luận. Đây không phải là câu hỏi quan trọng hay khó nhất, nhưng sẽ rất tuyệt nếu có một bảng ghi chú để trả lời. Trong bài viết này, tôi sẽ cố gắng đưa ra ý tưởng về phương pháp phát triển là gì và so sánh những phương pháp mà cá nhân tôi đã gặp hoặc được hỏi. Phương pháp phát triển phần mềm - 1Phương pháp phát triển phần mềm là một quá trình mô tả cách phát triển một sản phẩm cụ thể, tức là một trong những cách tổ chức phát triển nhóm. Có nhiều mô hình khác nhau về một quy trình như vậy, mỗi mô hình mô tả cách tiếp cận riêng của nó và không thể nói rằng trong số đó có một mô hình nên được sử dụng trong mỗi dự án, mọi thứ hoàn toàn chỉ mang tính tình huống. Tôi đề nghị xem xét ba trong số chúng chi tiết hơn.

thác nước

Thác nước (thác, thác nước) là một trong những phương pháp lâu đời nhất và ngụ ý việc thực hiện tuần tự nghiêm ngặt tất cả các giai đoạn, mỗi giai đoạn phải được hoàn thành trước khi bắt đầu giai đoạn tiếp theo. Nghĩa là, việc chuyển sang giai đoạn tiếp theo có nghĩa là hoàn thành hoàn thành công việc ở giai đoạn trước. Hình ảnh cho thấy rằng đầu tiên chúng tôi phân tích nhiệm vụ (ghi chép nhiệm vụ, thảo luận về những khó khăn), sau đó thực hiện thiết kế (ở giai đoạn này cấu trúc dự án được hình thành), sau đó mã hóa và thử nghiệm. Không có hoàn lại tiền cho các giai đoạn tiếp theo. Nên sử dụng hệ thống như vậy trong các dự án nhỏ nơi các yêu cầu đã được biết trước và có rất ít khả năng chúng sẽ thay đổi. Phương pháp phát triển phần mềm - 2Thuận lợi:
  • Tài liệu đầy đủ và nhất quán ở mọi giai đoạn;
  • Dễ sử dụng;
  • Yêu cầu ổn định.
  • Ngân sách và thời hạn được xác định trước
Sai sót:
  • Một lượng lớn tài liệu;
  • Không phải là một hệ thống rất linh hoạt;
  • Khách hàng không thể xem phiên bản demo của sản phẩm;
  • Không có cách nào để quay trở lại một bước.

Scrum

Scrum là một hệ thống phát triển phần mềm dựa trên việc chia toàn bộ quy trình thành các lần lặp, khi kết thúc mỗi lần, nhóm sẵn sàng cung cấp phiên bản demo của sản phẩm. Hình ảnh cho thấy nhóm trải qua tất cả các giai đoạn phát triển song song, điều này cho phép chúng tôi hoàn thành một phần của dự án vào cuối mỗi lần lặp. Phương pháp phát triển phần mềm - 3Tôi sẽ cố gắng giải thích ngắn gọn bằng những từ ngữ đơn giản về bản chất của phương pháp luận, nhưng ở đây có rất nhiều thuật ngữ. Tôi nghĩ điều quan trọng nhất là phải hiểu bản chất và các thuật ngữ sẽ được ghi nhớ bằng kinh nghiệm. Tất cả quá trình phát triển được chia thành các lần chạy nước rút (thường là 2-3 tuần). Có một tồn đọng (danh sách các nhiệm vụ) cho toàn bộ giai đoạn phát triển và cho từng lần chạy nước rút riêng biệt. Mỗi nhiệm vụ đều có điểm câu chuyện riêng (đánh giá độ khó). Mỗi người tham gia vào quá trình này có một vai trò:
  • Nhóm Scrum là một nhóm làm việc trong một dự án (nhà phát triển, người thử nghiệm, nhà thiết kế).
  • Scrum Master là người đảm bảo rằng các nguyên tắc của Scrum được tuân thủ.
  • Chủ sở hữu sản phẩm – khách hàng.
Vì hệ thống này tập trung vào giao tiếp nên có một số lượng lớn các cuộc biểu tình:
  • Stand-up là một cuộc họp ngắn, được tổ chức hàng ngày, tất cả các thành viên trong nhóm đều tham gia và mỗi người tham gia trả lời 3 câu hỏi: bạn đã làm gì? Nó sẽ làm gì? Và các trình chặn là gì?
  • Lập kế hoạch – được tổ chức khi bắt đầu chạy nước rút và tại cuộc họp này, nó sẽ xác định những nhiệm vụ nào cần hoàn thành trong lần chạy nước rút tiếp theo.
  • Quá trình hồi tưởng được tổ chức vào cuối giai đoạn chạy nước rút và bản chất của nó là tìm ra những gì đã được thực hiện tốt và những gì có thể được cải thiện.
Thuận lợi:
  • Khách hàng có thể quan sát kết quả trong quá trình phát triển.
  • Kiểm soát hàng ngày quá trình phát triển.
  • Khả năng điều chỉnh trong quá trình phát triển.
  • Giao tiếp được thiết lập tốt với tất cả các thành viên trong nhóm.
  • Một lượng nhỏ tài liệu.
Sai sót:
  • Khó ước tính lao động và chi phí cần thiết để phát triển
  • Rất khó để xác định những trở ngại lớn nhất trước khi bắt đầu phát triển.
  • Sự cần thiết phải lôi kéo mọi người vào sự phát triển của các thành viên khác trong nhóm.

Kanban

Kanban là một hệ thống được xây dựng dựa trên việc trực quan hóa quá trình hoàn thành nhiệm vụ của nhóm. Ý tưởng chính của hệ thống này là giảm số lượng nhiệm vụ hiện đang được thực hiện (trong cột “đang tiến hành”). Trong Scrum, nhóm tập trung vào việc hoàn thành thành công các lần chạy nước rút; trong Kanban, nhiệm vụ được ưu tiên hàng đầu. Tốt cho các dự án đang trong giai đoạn hỗ trợ, trong đó chức năng chính đã được phát triển và vẫn còn những cải tiến và sửa lỗi tối thiểu. Trong Kanban, các nhiệm vụ được gửi riêng lẻ. Nhiệm vụ, bất kể các nhiệm vụ khác, đều trải qua tất cả các giai đoạn trên bảng và ngay sau khi hoàn thành, nó có thể được hiển thị cho khách hàng. Bảng Kanban bao gồm các cột, mỗi cột thể hiện một quá trình phát triển riêng biệt. Một số cột (ví dụ: đang tiến hành) áp đặt các hạn chế về số lượng nhiệm vụ có thể có ở đó. Điều này giúp dễ dàng và nhanh chóng tìm ra các khu vực có vấn đề trong việc phân bổ nhiệm vụ. Hình ảnh cho thấy một ví dụ về một bảng đơn giản như vậy. Số lượng cột và tên có thể khác nhau nhưng tôi sẽ nêu tên những cột phổ biến nhất: Phương pháp phát triển phần mềm - 4
  • Việc cần làm - danh sách các công việc cần thực hiện
  • Đang tiến hành – các nhiệm vụ hiện đang được thực hiện
  • Đánh giá mã - các nhiệm vụ đã được hoàn thành và gửi để xem xét
  • Đang thử nghiệm – nhiệm vụ đã sẵn sàng để thử nghiệm
  • Done – nhiệm vụ đã hoàn thành.
Thuận lợi:
  • Dễ sử dụng.
  • Trực quan hóa (giúp tìm ra điểm nghẽn, đơn giản hóa sự hiểu biết)
  • Sự tham gia của nhóm cao vào chính quá trình này.
  • Tính linh hoạt cao trong phát triển.
Sai sót:
  • Danh sách nhiệm vụ không ổn định.
  • Khó sử dụng trong các dự án dài hạn.
  • Không có thời hạn cứng.

Tóm tắt về phương pháp phát triển phần mềm

Theo tôi, những người nắm giữ vị trí quản lý hoặc mong muốn đạt được vị trí đó cần phải có sự hiểu biết thấu đáo về các phương pháp phát triển phần mềm, nhưng khuyến khích mọi người ít nhất phải hiểu những điều cơ bản. Đây là một phần không thể thiếu trong quá trình phát triển và không chỉ được sử dụng trong lĩnh vực CNTT. Cảm ơn bạn đã dành thời gian đọc bài viết của tôi, tôi hy vọng bạn thấy nó hữu ích. Tôi đã cố gắng chỉ mô tả những điểm chính một cách rõ ràng và ngắn gọn nhất có thể nên bài viết không đầy đủ. Tôi sẽ rất vui khi nghe ý kiến ​​​​của bạn về nó và trả lời câu hỏi của bạn. Mọi điều tốt đẹp nhất!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION