Vòng đời phát hành phần mềm

Một vòng đời phát hành phần mềm là một sự tổng hợp các pha phát triển phần mềm từ giai đoạn sơ khai cho đến giai đoạn hoàn chỉnh, và cuối cùng là công bố phần mềm đó hoặc phiên bản nâng cấp mới. Việc chia thành nhiều giai đoạn như vậy giúp cho việc quản lý, sửa lỗi và bảo trì phần mềm dễ dàng hơn.

Người dùng máy tính rất có thể đã quen với giai đoạn beta, vì các sản phẩm phần mềm đôi khi được quảng cáo công khai là đang ở dạng beta để giảm kỳ vọng của người dùng về độ tin cậy của chúng.

== Các giai đoạn trong phát triển ==
=== Tiền alpha ===
Đây là giai đoạn sơ khai nhất, bao gồm những hoạt động được thực hiện trước khi vào giai đoạn kiểm thử phần mềm. Những hoạt động trong giai đoạn này gồm có phân tích yêu cầu, thiết kế phần mềm, phát triển phần mềm, kiểm thử đơn vị ("unit testing").

=== Alpha ===
Giai đoạn này là pha đầu tiên bắt đầu kiểm thử phần mềm trong vòng đời phát hành ("alpha" là ký tự đầu tiên trong bảng chữ cái Hy Lạp, được sử dụng như số 1). Các kĩ thuật kiểm thử chủ yếu là hộp trắng ("white box testing"). Việc phê duyệt ("validation") (nếu có) bằng các kĩ thuật hộp đen hoặc hộp xám sẽ được tiến hành bởi những đội ngũ kiểm thử khác.

Các phần mềm trong giai đoạn này đều chưa hoàn chỉnh và có thể gây ra mất dữ liệu hoặc crash, nên những phiên bản phần mềm như vậy thường không được công bố rộng rãi mà chỉ khuyến khích bộ phận kiểm thử hay những người tình nguyện kiểm thử sử dụng nhằm tìm kiếm lỗi. Tuy nhiên, đối với những phần mềm mã nguồn mở thì có thể có một chút khác biệt. Những phiên bản alpha của chúng thường được phân phối công khai và thường kèm theo mã nguồn của phần mềm đó.

Giai đoạn alpha luôn luôn được kết thúc bằng việc không bổ sung thêm chức năng nào nữa ("feature freeze"), như vậy có thể nói phần mềm sau giai đoạn này là "đã hoàn chỉnh về chức năng" ("feature complete").

=== Beta ===
Trong hệ thống bảng chữ cái Hy Lạp thì "Beta" đứng liền sau "Alpha" nên được xem là pha tiếp theo sau giai đoạn hoàn chỉnh các chức năng. Từ giai đoạn này trờ đi, các chức năng sẽ không được thêm mới vào nữa, và những chức năng mới được đề xuất bổ sung sẽ được đưa vào vòng đời mới sau khi kết thúc vòng đời hiện tại. Phần mềm trong pha này vẫn còn nhiều lỗi ("bugs"), cũng như các vấn đề về hiệu năng.

Khác với giai đoạn alpha, phần mềm ở pha này được xem là đủ ổn định (tuy vẫn chưa thể ổn định để sử dụng hằng ngày hoặc trong môi trường công việc) để công bố rộng rãi, người dùng có thể truy cập công khai và sử dụng nếu muốn. Những người sử dụng phần mềm beta với mục đích kiểm tra phát hiện lỗi và báo cáo lỗi cho nhà phát triển được gọi là "beta testers".

Một số thuật ngữ khác thường được dùng để chỉ giai đoạn beta như preview, prototype, techical preview (TP), hoặc early access.

==== Open và closed beta ====
Các nhà phát triển có thể phát hành ""'<nowiki>'bản beta đóng"</nowiki> ("closed beta)", còn được gọi là <nowiki>"</nowiki>bản beta riêng tư<nowiki>"</nowiki> ("private beta)" hoặc <nowiki>"bản beta mở"</nowiki> ("open beta)", còn được gọi là <nowiki>"bản beta công khai"</nowiki> ("public beta)"; phiên bản beta kín được phát hành cho một nhóm cá nhân bị hạn chế để người dùng thử nghiệm theo lời mời, trong khi những người thử nghiệm beta mở thuộc một nhóm lớn hơn hoặc bất kỳ ai quan tâm. Bản beta riêng tư có thể phù hợp với phần mềm có khả năng mang lại giá trị, nhưng chưa sẵn sàng để mọi người sử dụng do các vấn đề về quy mô, thiếu tài liệu hoặc vẫn còn thiếu các tính năng quan trọng. Người kiểm tra báo cáo bất kỳ lỗi nào mà họ tìm thấy và đôi khi đề xuất các tính năng bổ sung mà họ cho rằng nên có trong phiên bản cuối cùng.

Các bản beta mở phục vụ với mục đích kép là giới thiệu sản phẩm cho người dùng tiềm năng và thử nghiệm giữa một lượng lớn người dùng có khả năng dẫn đến các lỗi nhẹ mà nhóm thử nghiệm nhỏ hơn nhiều có thể không tìm thấy

=== Release Candidate ===
"Release Candidate" hay thường được viết tắt là RC là giai đoạn hậu beta, trong đó phần mềm sau khi trải qua các hoạt động phát hiện lỗi và sửa lỗi ở beta đã trở nên ổn định hơn, và có thể chuyển sang giai đoạn phát hành ("release/final") nếu không phát hiện thêm lỗi nghiêm trọng nào nữa. Về mặt kĩ thuật, phần mềm RC được xem như đã có những thiết kế đầy đủ về các tính năng, đã hoàn thành việc viết mã và đã được áp dụng các kĩ thuật kiểm thử khác nhau, nên sẽ không có sự thay đổi nào về mã nguồn, tài liệu hay dữ liệu trừ việc sửa lỗi.

Nhiều phần mềm có thể được dự đoán trước phiên bản cuối cùng của phần mềm khi phát hành nhờ vào sự chuyển tiếp từ RC sang "Final" (từ phiên bản phần mềm hiện tại của RC nếu không có sự thay đổi về mã nguồn nào thì đó cũng chính là phiên bản được phát hành vào thời điểm được định trong kế hoạch).

=== Bản phát hành ổn định ===
Còn được gọi là "bản phát hành sản xuất", "bản phát hành ổn định" là "Release Candidate" cuối cùng ("RC") sau khi đã vượt qua tất cả các xác minh/thử nghiệm. Các lỗi còn lại được coi là có thể chấp nhận. Bản phát hành này sẽ được đưa vào sản xuất. Một số miền (ví dụ: Bản phân phối Linux), có hai loại bản phát hành ổn định: bản phát hành bình thường hoặc ổn định và bản phát hành hỗ trợ dài hạn (LTS) được duy trì trong một khoảng thời gian dài hơn.

== Phát hành ==
Sau khi phát hành, phần mềm thường được gọi là "bản phát hành ổn định". Thuật ngữ chính thức thường phụ thuộc vào phương thức phát hành: phương tiện vật lý, phát hành trực tuyến hoặc ứng dụng web.

=== Release to manufacturing (RTM) ===
Thuật ngữ phát hành để sản xuất ("release to manufacturing"-viết tắt là RTM), còn được gọi là "going gold", là một thuật ngữ được sử dụng khi một sản phẩm phần mềm đã sẵn sàng để giao. Bản dựng này có thể được ký điện tử, cho phép người dùng cuối xác minh tính toàn vẹn và tính xác thực của giao dịch mua phần mềm. Một bản sao của bản dựng RTM gọi là "gold master" hoặc GM được gửi đi để sao chép hàng loạt hoặc sao ra băng đĩa nếu có. Thuật ngữ này được lấy từ ngành công nghiệp ghi âm, cụ thể là quá trình làm chủ. RTM đi trước tính khả dụng chung (GA) khi sản phẩm phát hành ra công chúng. Bản dựng tổng thể vàng (GM) thường là bản dựng cuối cùng của một phần mềm trong giai đoạn beta dành cho các nhà phát triển. Thông thường, đối với iOS, đây là bản dựng cuối cùng trước khi phát hành chính, tuy nhiên, vẫn có một vài ngoại lệ.

Nó thường sử dụng trong một số bối cảnh phần mềm sản xuất hàng loạt bán lẻ—trái ngược với sản xuất hoặc dự án phần mềm chuyên dụng trong sản xuất và phân phối thương mại hoặc chính phủ—nơi phần mềm được bán như một phần của gói trong một đợt bán phần cứng máy tính có liên quan, và thường là ở nơi phần mềm và phần cứng có liên quan cuối cùng phải được cung cấp và bán đại trà/công khai tại các cửa hàng bán lẻ để chỉ ra rằng phần mềm đã đáp ứng một mức chất lượng xác định và sẵn sàng để phân phối bán lẻ hàng loạt. RTM cũng có thể có nghĩa là trong các ngữ cảnh khác rằng phần mềm đã được phân phối hoặc phát hành cho khách hàng hoặc người dùng để cài đặt hoặc phân phối tới các máy tính hoặc máy người dùng cuối phần cứng có liên quan. Thuật ngữ này "không" xác định cơ chế hoặc khối lượng giao hàng; nó chỉ nói lên chất lượng đủ để phân phối đại trà. Có thể phân phối từ tổ chức kỹ thuật thường ở dạng phương tiện chủ vàng được sử dụng để nhân bản hoặc tạo hình ảnh cho web.

=== General availability (GA) ===
Có hiệu lực chung ("General availability"-viết tắt là GA) là giai đoạn tiếp thị mà tại đó tất cả các hoạt động thương mại hóa cần thiết đã hoàn thành và sản phẩm phần mềm đã có sẵn để có thể mua, tuy nhiên vẫn phải tùy thuộc vào ngôn ngữ, khu vực, tính khả dụng của phương tiện điện tử và phương tiện truyền thông. Các hoạt động thương mại hóa có thể bao gồm kiểm tra tính tuân thủ và bảo mật, cũng như nội địa hóa và tính khả dụng trên toàn thế giới. Thời gian giữa RTM và GA có thể từ một tuần đến vài tháng trong một số trường hợp trước khi có thể công bố một bản phát hành chung có sẵn do cần có thời gian để hoàn thành tất cả các hoạt động thương mại hóa theo yêu cầu của GA. Ở giai đoạn này, phần mềm đã "hoạt động".

=== Release to the Web (RTW) ===
Phát hành lên web ("Release to the We"b-viết tắt là RTW) hoặc Web release là một phương tiện phân phối phần mềm sử dụng Internet để phân phối. Nhà sản xuất không sản xuất phương tiện vật lý nào trong loại cơ chế phát hành này. Các bản phát hành web đang trở nên phổ biến hơn khi việc sử dụng Internet ngày càng tăng.

== Xem thêm==
- Quy trình phát triển phần mềm
- Tự động hóa phát hành ứng dụng
- Triển khai phần mềm

== Liên kết ngoài ==
- Free Software Project Management HOWTO
- Software Release Decisions
- A Methodology to Support Software Release Decisions
- Software Testing Life Cycle
- Semantic versioning

== Tham khảo thư loại ==
- "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation" by Jez Humble, David Farley;