CodeGym /Blog Java /Ngẫu nhiên /Mọi thứ bạn cần biết về phương pháp phát triển phần mềm: ...
John Squirrels
Mức độ
San Francisco

Mọi thứ bạn cần biết về phương pháp phát triển phần mềm: xu hướng, nguyên tắc và cạm bẫy cho người mới bắt đầu

Xuất bản trong nhóm
Phát triển phần mềm là một quá trình kinh doanh phức tạp. Điều này có nghĩa là các chuyên gia CNTT cần nói ngôn ngữ tối ưu hóa, lập kế hoạch và tính chi phí. Sự hiểu biết về các khái niệm quản lý mang lại cho cả nhà tuyển dụng và nhà phát triển một lợi thế lớn và giúp đưa sự hợp tác lên một tầm cao mới. Mọi thứ bạn cần biết về phương pháp phát triển phần mềm: xu hướng, nguyên tắc và cạm bẫy cho người mới bắt đầu - 1

Chú ý, người mới bắt đầu! Các mô hình, phương pháp và sự nhầm lẫn chung

Để bắt đầu, chúng ta cần làm rõ một điều quan trọng: các mô hình phát triển phần mềm và các phương pháp luận phát triển phần mềm là riêng biệt và khác biệt. Các mô hình dự đoán cách một hệ thống sẽ hoạt động. Các phương pháp được yêu cầu để hệ thống hoạt động như bình thường. Các mô hình và phương pháp phát triển phần mềm gây nhầm lẫn là quy trình hoạt động tiêu chuẩn cho mọi người mới làm quen với CNTT, vì vậy đây không được coi là một sai lầm lớn. Một ví dụ về mô hình là mô hình thác nước cổ điển , với tiến trình tuyến tính, xác định mục tiêu rõ ràng cho từng giai đoạn và kiểm soát chặt chẽ thời hạn. Một mô hình khác là mô hình xoắn ốc, với trọng tâm là phát hiện sớm và giảm thiểu rủi ro dự án. Sự phát triển xoắn ốc bắt đầu từ quy mô nhỏ, đầu tiên giải quyết các vấn đề cục bộ, sau đó tiến tới những vấn đề phức tạp hơn. Cuối cùng, một mô hình khác là phát triển lặp và tăng dần (IID) , trong đó vòng đời dự án được chia thành một loạt các lần lặp lại, mỗi lần giống như một "dự án nhỏ". Nói chung, một mô hình là một mô tả về quy trình phát triển phần mềm . Nhưng phương pháp luận là hệ thống kiểm soát, đánh giá và giám sát công việc đối với các nhiệm vụ được giao. Các phương pháp luận là cây gậy và củ cà rốt của thời hiện đại, cần thiết để kiểm soát từng bước trong quá trình phát triển. Chúng được chọn dựa trên định hướng của dự án, ngân sách của dự án và thời hạn thực hiện sản phẩm cuối cùng. Hơn nữa, các phương pháp có thể được lựa chọn dựa trên tính khí của người lãnh đạo dự án và nhóm của họ. Thậm chí dựa trên triết lý của công ty hoặc khách hàng. Chúng ta hãy xem xét các phương pháp phổ biến nhất.

1. Scrum

Scrum là một phương pháp quản lý dự án linh hoạt. Nó dựa trên "chạy nước rút", hoặc các lần lặp lại ngắn, bị giới hạn nghiêm ngặt về thời gian (thường là 2-4 tuần). Điều này giảm thiểu thời lượng của các cuộc họp, nhưng tăng tần suất của chúng. Mỗi lần chạy nước rút bao gồm một danh sách các nhiệm vụ sẽ được hoàn thành vào cuối vòng lặp và mỗi nhiệm vụ đều có "trọng số" riêng. Trong các cuộc họp, nhóm thảo luận về những gì các thành viên trong nhóm đã làm, những gì họ dự định làm và những vấn đề còn tồn tại. Scrum sử dụng backlog để lập kế hoạch. Theo cách tiếp cận này, các đội thường có một scrum master. Người này giúp nhóm làm việc không bị gián đoạn và tạo ra một môi trường thoải mái cho nhóm. Dự án cũng sẽ có người đóng vai trò là chủ sở hữu sản phẩm. Người này là trưởng bộ phận phát triển, giám sát sản phẩm và đóng vai trò là mối liên kết chính giữa những gì khách hàng yêu cầu và những gì nhóm sản xuất.

Ưu điểm:

  • khả năng khởi động nhanh một dự án với ngân sách thấp nhất có thể;
  • theo dõi tiến độ hàng ngày, demo dự án thường xuyên;
  • khả năng điều chỉnh trong quá trình thực hiện dự án.

Nhược điểm:

  • khó ký kết hợp đồng do thiếu kinh phí cố định;
  • không làm việc cho một nhóm thiếu kinh nghiệm hoặc khi thời hạn hoặc ngân sách bị thiếu;
  • khả năng liên tục thực hiện các thay đổi giữa các lần chạy nước rút có thể tạo ra sự nhầm lẫn.

Nó dành cho ai?

Một hệ thống như thế này phù hợp cho các dự án có tối đa mười người, cho dù độc lập hay tồn tại trong các công ty lớn. Điều này thuận tiện nếu nhóm có khối lượng công việc lớn và vòng đời dài buộc họ phải thay đổi và thích nghi với các điều kiện thị trường mới.

2. Kanban

Tính năng quan trọng nhất của Kanban là trực quan hóa vòng đời dự án. Các cột để thực hiện các hạng mục công việc được tạo. Các hạng mục công việc được giải quyết riêng lẻ. Các cột được đánh dấu bằng các trạng thái như: Việc cần làm, Đang tiến hành, Đánh giá mã, Đang thử nghiệm, Đã hoàn thành (tất nhiên, tên các cột có thể khác nhau). Mục tiêu của mỗi thành viên trong nhóm là giảm số lượng mục công việc trong cột đầu tiên. Cách tiếp cận của Kanban là trực quan và giúp bạn hiểu vấn đề nằm ở đâu. Cấu trúc của Kanban không cố định hoàn toàn và không thể thay đổi: tùy thuộc vào chi tiết cụ thể của dự án, bạn có thể thêm các cột ngẫu hứng. Ví dụ: một số nhóm sử dụng hệ thống trong đó bạn cần xác định các quy tắc đã hoàn thành cho một hạng mục công việc trước khi thực hiện nó. Trong trường hợp này, hai cột được thêm vào: Chỉ định (chỉ định các tham số) và Thực hiện (bắt đầu làm việc).

Ưu điểm:

  • linh hoạt trong quy hoạch. Nhóm chỉ tập trung vào công việc hiện tại, mức độ ưu tiên của một nhiệm vụ cũng được xác định;
  • hiển thị. Khi tất cả những người tham gia có quyền truy cập dữ liệu, các vấn đề toàn cầu sẽ dễ dàng được phát hiện hơn;
  • tham gia cao vào quá trình phát triển. Hình dung các quy trình làm tăng khả năng tự tổ chức và tự kiểm soát.

Nhược điểm:

  • không làm việc với nhóm hơn năm người;
  • không dành cho kế hoạch dài hạn;
  • không thích hợp cho một đội không có động lực. Kanban không có thời hạn cho mọi hạng mục công việc. Phương pháp cũng không quy định hình phạt cho sự chậm trễ.

Nó dành cho ai?

Kanban hoạt động hiệu quả trong các công ty nơi nhóm được thúc đẩy để phát triển và đạt được kết quả. Điều này đã quá rõ ràng rồi - đây là dành cho một nhóm nhỏ. Có lẽ thậm chí là một đội hoặc một phần của đội.

3. Quy trình hợp nhất hợp lý (RUP)

Phương pháp RUP sử dụng một mô hình phát triển lặp đi lặp lại. Vào cuối mỗi lần lặp lại (mất từ ​​2 đến 6 tuần), nhóm sẽ đạt được các mục tiêu đã hoạch định và có được một phiên bản hoạt động, mặc dù là tạm thời, của dự án. RUP kêu gọi chia dự án thành bốn giai đoạn . Trong mỗi giai đoạn, công việc trên thế hệ tiếp theo của sản phẩm được thực hiện: khởi tạo, xây dựng, xây dựng và chuyển tiếp. Khi kết thúc một giai đoạn, một cột mốc quan trọng của dự án đã đạt được. Thời điểm nhóm đánh giá kết quả của mình có thể được coi là một cột mốc quan trọng của dự án. Điều này có nghĩa là phương pháp này ngụ ý rằng các tính năng chính được phát hành trong giai đoạn đầu tiên và các tính năng bổ sung sẽ được thêm vào trong các giai đoạn tiếp theo.

Ưu điểm:

  • làm cho nó có thể đối phó với các nhiệm vụ thay đổi, cả từ khách hàng và những thay đổi phát sinh trong quá trình làm việc;
  • đảm bảo cải tiến liên tục sản phẩm. Trong quá trình lặp lại, bạn có thể đánh giá dự án một cách cẩn thận;
  • giúp xác định và loại bỏ rủi ro trong giai đoạn đầu của công việc, cũng như kiểm soát hiệu quả chất lượng phát triển.

Nhược điểm:

  • Phương pháp này khá phức tạp và khó thực hiện trong một nhóm hoặc công ty nhỏ;
  • phụ thuộc vào khả năng đặt nhiệm vụ của chuyên gia;
  • cần quá nhiều tài liệu về các yêu cầu.

Nó dành cho ai?

Các dự án lớn với các yêu cầu và rủi ro được thiết lập rõ ràng, khi sản phẩm cần được phát hành càng nhanh càng tốt. Ngay cả khi phải trả giá bằng chức năng, để nhanh chóng chiếm lĩnh thị trường ngách của bạn và chỉ sau đó mới thêm các bước hoàn thiện.

Có nhiều phương pháp, nhưng một xu hướng

Ngoài scrum và Kanban, không thể phủ nhận là phổ biến và dựa trên các nguyên tắc nhanh nhẹn , cũng như phương pháp RUP lặp đi lặp lại, bền bỉ, các công ty sử dụng nhiều phương pháp khác nhau. Một công ty có thể tiến gần hơn đến lập trình cực đoan và đưa ra quyết định nhanh nhất và đơn giản nhất. Một cách khác có thể gần hơn với sự phát triển dựa trên thử nghiệm. Một số khác vẫn có thể thích phát triển ứng dụng nhanh (RAD). Điều đó nói rằng, có một xu hướng mạnh mẽ, không thể nghi ngờ đối với việc sử dụng đồng thời nhiều phương pháp. Hoặc thậm chí kết hợp các mô hình và phương pháp thành một hệ thống quản lý duy nhất. Các công ty ngày nay cố gắng loại bỏ các rào cản quan liêu và tạo ra bầu không khí làm việc theo nhóm thống nhất trong tổ chức mà không chuyển đổi trách nhiệm giữa các phòng ban và đơn vị tổ chức. Theo Liên minh Scrum, 70% công ty CNTT sử dụng scrum. Trong số đó có những gã khổng lồ như Google, Amazon, Salesforce, Microsoft và Adobe. Các công ty khởi nghiệp và các dự án trẻ có xu hướng sử dụng Kanban nhiều hơn, nhưng Toyota và, chẳng hạn như các game thủ tại Wargaming, cũng sử dụng nó. Scrum là một công cụ lập kế hoạch, trong khi Kanban là để theo dõi tiến độ. Đối với RUP, nó thường được sử dụng bởi các công ty phương Tây có 50-200 nhân viên và doanh thu từ 1-10 triệu USD. Tuy nhiên, IBM đã sửa đổi RUP để tiến gần hơn tới các nguyên tắc linh hoạt, phát hành phương pháp OpenUP (RUP, nhưng linh hoạt). Phương pháp nhanh nhẹn được ca ngợi này hiện đang thúc đẩy thế giới CNTT . Đây không chỉ là một mốt nhất thời - nó vẫn mang tính đổi mới và trên thực tế, nó được sử dụng tại nhiều công ty lớn. Agile được sử dụng ở Thung lũng Silicon. Facebook và Uber sử dụng nó.

Điểm mấu chốt

Mỗi dự án có phương pháp phát triển phần mềm riêng, phụ thuộc vào nhóm, kinh phí, thời hạn và yêu cầu của khách hàng. Không có kỹ thuật quản lý chung: ngay cả phương pháp nhanh nhẹn cực kỳ phổ biến cũng không thể đảm bảo cách tiếp cận tốt nhất cho quy trình phát triển. Kết quả là, các phương pháp được lựa chọn cẩn thận, thậm chí đôi khi dựa trên nguyên tắc. Nhiều đến mức chúng ta có thể rút ra kết luận về bản thân công ty hoặc về khách hàng của công ty đó bằng cách xem xét phương pháp luận của công ty đó. Các phương pháp được trộn lẫn, bổ sung với các mô hình và điều chỉnh. Nhiều đến mức họ tạo ra những cách tiếp cận mới. Điều đó nói rằng, lĩnh vực quản lý cuối cùng vẫn nằm trong tay của scrum và Kanban, với các yếu tố bất ngờ của mô hình thác nước hoặc phương pháp RUP lặp lại.
Đọc thêm:
Trang web: Sách:
  • Andrew Stelman, Jennifer Greene: "Học nhanh nhẹn";
  • Per Kroll, Bruce MacIsaac: «Sự linh hoạt và kỷ luật trở nên dễ dàng: Các bài thực hành từ OpenUP và RUP";
  • Mike Cohn: "Thành công với Agile: Phát triển phần mềm bằng Scrum";
  • Robert C. Martin: "Phát triển phần mềm linh hoạt: Nguyên tắc, Mô hình, Thực hành";
  • Marcus Hammarberg, Joakim Sunden: "Hành động Kanban";
  • I. Jacobson, G. Booch, J. Rumbaugh: "Quy trình phát triển phần mềm hợp nhất".
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION