Tại sao chúng ta cần Prototyping Ném đi?


9

Mô hình tạo mẫu vứt bỏ trong công nghệ phần mềm là gì và tại sao chúng ta cần nó? Làm thế nào để nó khác biệt với Prototyping tiến hóa?


5
Có một trò đùa / hướng dẫn cũ rằng tất cả các phần mềm đều hút cho đến phiên bản 3. Phiên bản đầu tiên là tìm ra thứ bạn cần, thứ hai là tìm ra cách để làm điều đó (tốt).
Telastyn

2
Bạn có thể đọc thêm về nó trong một cuốn sách gọi là "Phát triển nhanh", Steve McConnell. Và có thể là "Tháng huyền thoại" nếu lịch sử phát triển phần mềm làm bạn quan tâm.
andrew.fox

2
@ andrew.fox "Build Một để Throw Away" là hữu ích để có trong ngữ cảnh ( wired.com/2010/07/ff_fred_brooks ) - "Khi tôi lần đầu tiên viết The Mythical Man-Month vào năm 1975, tôi khuyên các lập trình viên để“ném đầu tiên Phiên bản đi, sau đó xây dựng một cái thứ hai. "

@MichaelT, vâng, theo như tôi nhớ, nó nằm trong phần phụ lục của cuốn sách (phiên bản mới nhất).
andrew.fox

1
@Telastyn Tôi không nghĩ đó là một trò đùa.
RubberDuck

Câu trả lời:


21

Tạo mẫu vứt đi

Tạo mẫu bỏ đi là tạo ra, càng nhanh càng tốt, một phần của ứng dụng trong tương lai để đảm bảo tính năng khả thi về mặt kỹ thuật hoặc hiển thị tính năng này cho các bên liên quan hoặc người dùng tiềm năng để thu thập phản hồi từ họ.

Vì mã nguồn của nguyên mẫu này không được sử dụng lại sau này khi phát triển ứng dụng, nên nó biến nó thành một nguyên mẫu bỏ đi. Biết rằng đó là mã vứt đi giúp tập trung vào tính năng thực tế, đồng thời bỏ qua các khía cạnh như khả năng duy trì mã, kiểu dáng, mẫu thiết kế hoặc thử nghiệm. Điều này làm cho nó có thể hoàn thành nguyên mẫu rất nhanh, mà không ảnh hưởng tiêu cực đến nợ kỹ thuật của sản phẩm cuối cùng.

Tạo mẫu ném đi khác với phác thảo . Phác thảo là đồ họa nhiều hơn và hướng đến giao diện người dùng và trải nghiệm người dùng, và không bao gồm viết mã lập trình. Tạo mẫu bỏ đi thường được sử dụng khi phác thảo là không đủ (ví dụ: khi bạn cần hiển thị cách một tính năng sẽ hoạt động trên các điện thoại thông minh khác nhau hoặc khi bạn cần hiển thị hiệu suất và khả năng đáp ứng thực tế).

Tạo mẫu bỏ đi có thể gặp rủi ro khi giao dịch với các bên liên quan mà không có nền tảng kỹ thuật và trong bối cảnh thời hạn chặt chẽ và nguồn lực rất hạn chế: các bên liên quan có thể cố gắng thuyết phục bạn sử dụng lại trong sản phẩm cuối cùng mã nguồn từ nguyên mẫu. Thật tự nhiên khi tin rằng nó sẽ rút ngắn thời gian cần thiết để phát hành sản phẩm, nhưng thực tế, nó sẽ chỉ trì hoãn ngày giao hàng. Một cách để ngăn chặn điều này là sử dụng cho nguyên mẫu một ngôn ngữ không thể sử dụng trong sản xuất (ví dụ: sử dụng C # khi bạn biết rằng sản phẩm cuối cùng sẽ được lưu trữ trên các máy chủ Linux chỉ cài đặt Python).

nhập mô tả hình ảnh ở đây

Hình 1: Tạo mẫu và phác thảo vứt bỏ : các nguyên mẫu giúp thu thập phản hồi sớm trước khi bắt đầu phát triển tính năng thực tế.

Tạo mẫu tiến hóa

Tạo mẫu tiến hóa bao gồm xây dựng một nguyên mẫu sau đó được tinh chỉnh dựa trên phản hồi thường xuyên từ các bên liên quan hoặc người dùng tiềm năng.

Ở đây, khả năng duy trì của mã, kiểu dáng, mẫu thiết kế hoặc số lượng thử nghiệm ngay từ đầu, điều này cho phép phát triển nguyên mẫu thành một sản phẩm cấp doanh nghiệp đầy đủ tính năng. Các bước trước của nguyên mẫu chỉ chứa phần cốt lõi của sản phẩm trong tương lai và sau đó, các tính năng được thêm dần dần.

nhập mô tả hình ảnh ở đây

Hình 2: Tạo mẫu tiến hóa : các tính năng được tổng hợp theo nguyên mẫu để xây dựng sản phẩm cuối cùng.

Tạo mẫu tiến hóa khác với tạo mẫu gia tăng . Tạo mẫu tăng dần bao gồm xây dựng một số nguyên mẫu, mỗi nguyên mẫu đại diện cho một phần của hệ thống tương lai, sau đó kết hợp chúng. Tạo mẫu tiến hóa gần với Agile hơn: thông thường, bạn sẽ có thể sớm có được một sản phẩm hoạt động với các tính năng hạn chế và mở rộng cho đến khi các bên liên quan có tiền. Mặt khác, tạo mẫu tăng dần, phù hợp hơn cho các dự án lớn với nhiều nhóm đóng góp, mỗi nhóm làm việc trên một nguyên mẫu riêng biệt.

nhập mô tả hình ảnh ở đây

Hình 3: Tạo mẫu tăng dần : một số nguyên mẫu được kết hợp để tạo thành sản phẩm cuối cùng.

Tạo mẫu tiến hóa khác với các phương pháp Agile . Agile là về các công việc lặp lại và các cột mốc thường xuyên trong đó một sản phẩm đầy đủ chức năng có thể được phát hành để sản xuất. Nếu bạn có một sản phẩm làm việc vào mỗi thứ năm, bạn đang làm Agile. Trong nguyên mẫu tiến hóa, bạn mở rộng nguyên mẫu, nhưng không có gì buộc bạn phải có một sản phẩm đầy đủ chức năng thường xuyên. Bạn có thể dành hai tháng để tạo nguyên mẫu đầu tiên, hơn là mở rộng nó với một vài tính năng tương ứng hai và ba ngày, sau đó dành ba tháng cho một tính năng khác. Bạn không thể có loại mô hình bất thường này trong Agile.

Các phương pháp Agile cụ thể thực thi các quy tắc bổ sung. Ví dụ: nếu bạn không thực hiện lập trình cặp, bạn không thể khẳng định rằng bạn đang thực hiện Lập trình cực đoan. Nếu nhóm của bạn không có các cuộc họp hàng ngày, bạn sẽ không thực hiện Scrum.


Vì vậy, sự khác biệt chính giữa tạo mẫu nhanh và tiến hóa là trong các nguyên mẫu nhanh theo chu kỳ phát hành với một chiều dài cố định?
Giorgio

@Giorgio: như tôi đã giải thích trong câu trả lời của mình, sự khác biệt là: (1) chu kỳ phát hành với độ dài cố định, (2) lần lặp ngắn, (3) sản phẩm đầy đủ chức năng ở cuối mỗi lần lặp và (4) quy tắc bổ sung cho phương pháp Agile cụ thể. IMO, không có sự khác biệt "chính" giữa bốn người đó.
Arseni Mourzenko

Do các quy tắc bổ sung chỉ áp dụng cho các phương pháp Agile cụ thể, (4) không mô tả Agile. Ví dụ, lập trình cặp không đặc trưng cho Agile. Hơn nữa, với tôi (1) dường như ngụ ý (3): nếu bạn phát hành thứ gì đó thì đó phải là một sản phẩm đầy đủ chức năng, hoặc có thể phát hành một nguyên mẫu không đầy đủ chức năng trong tạo mẫu tiến hóa? (2) cũng rất quan trọng: các lần lặp nên ngắn trong khi tôi đoán trong tạo mẫu tiến hóa có quyền tự do lựa chọn các lần lặp dài hoặc ngắn. Vì vậy, dường như với tôi rằng (1) và (2) đặc trưng cho Agile (tôi đã quên (2) trong nhận xét trước đây của tôi).
Giorgio

Nhưng có lẽ tôi sai vì tôi đã giải thích (3) và (4) sai cách.
Giorgio

@Giorgio: "nếu bạn phát hành thứ gì đó thì đó phải là một sản phẩm đầy đủ chức năng" Không nhất thiết phải như vậy. Khi bạn phát hành một nguyên mẫu, nó không phải là một sản phẩm đầy đủ chức năng, vì một số tính năng thực sự có sẵn cho người dùng cuối có thể bị hỏng hoàn toàn. Đối với (4), tôi đồng ý với bạn, nó không đặc trưng cho chính Agile.
Arseni Mourzenko

4

Prototyping được sử dụng vì nhiều lý do. Có thể bạn muốn đánh giá trải nghiệm người dùng với một ứng dụng mới để ước tính liệu nó có đáng để xây dựng hay không mà không phải chịu chi phí thực sự xây dựng nó. Có thể bạn cần một cái gì đó nói chuyện với một chương trình hiện có qua mạng để thực hiện kiểm tra tích hợp hoặc tải trên mạng của bạn, trước khi bạn có thời gian để hoàn thành phần mềm thực tế đang chạy trên nút của mình. Có lẽ bạn cần cho các nhà đầu tư của mình thấy một cái gì đó trông giống như một chương trình đã hoàn thành để họ sẵn sàng đưa ra khoản đầu tư cần thiết để thực sựkết thúc chương trình (Điều này không liên quan gì đến sự lừa dối. Người dùng và người quản lý chỉ đánh giá phần mềm bằng giao diện của nó, vì vậy điều quan trọng là phải trình bày cho họ một giao diện tốt để họ tin rằng dự án sẽ đi xa như thực tế.)

Một nguyên mẫu vứt bỏ chỉ đơn giản là một nguyên mẫu sẽ không được chuyển đổi dần dần thành giải pháp thực tế, mà được thay thế bằng một mẫu mới được viết. Rõ ràng có một số lãng phí liên quan đến việc vứt bỏ mã đã thực hiện ít nhất một số thứ bạn muốn, nhưng tính toàn vẹn kiến ​​trúc tốt hơn của mã phù hợp có thể dễ dàng bù đắp nhược điểm đó.

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.