TOP

Software release life cycle

軟體發布生命週期


軟體發布生命週期

軟體發布生命週期是開發、測試和分發軟體產品(例如作業系統)的過程。在最終版本(或「黃金版本」)向公眾發布之前,它通常由幾個階段組成,例如 pre-alpha、alpha、beta 和候選版本。

基本軟體發佈生命週期的範例

Pre-alpha 指的是開發的早期階段,此時軟體仍在設計和建置中。 Alpha 測試是正式測試的第一階段,在此期間使用白盒技術對軟體進行內部測試。 Beta 測試是下一階段,其中軟體由更多的使用者進行測試,通常是在開發該軟體的組織之外。測試階段的重點是減少對使用者的影響,並可能包括可用性測試。

Beta 測試之後,軟體可能會經歷一個或多個候選版本階段,在最終版本發布之前,軟體會經過進一步的改進和測試。

一些軟體,特別是互聯網和技術行業的軟體,以永久測試狀態發布,這意味著它正在不斷更新和改進,並且永遠不會被認為是完全完成的產品。這種方法允許更敏捷的開發過程,並使軟體能夠在開發週期的早期被使用者發布和使用。

發展階段

預測試版

Pre-alpha 是指在正式測試之前軟體專案期間執行的所有活動。這些活動可以包括需求分析、軟體設計、軟體開發和單元測試。在典型的開源開發中,有幾種類型的 pre-alpha 版本。里程碑版本包括特定的功能集,並在功能完成後立即發布。

阿爾法

發布生命週期的 alpha 階段是軟體測試的第一階段(alpha 是希臘字母表的第一個字母,用作數字 1)。在此階段,開發人員通常會使用白盒技術來測試軟體。然後由另一個測試團隊使用黑盒或灰盒技術進行額外的驗證。在組織內部進行黑盒測試稱為 alpha 版本。

Alpha 軟體在發布給客戶之前並未經過開發人員的徹底測試。 Alpha 軟體可能包含嚴重錯誤,任何由此產生的不穩定都可能導致崩潰或資料遺失。 Alpha 軟體可能不包含所有最終版本計畫的功能。一般來說,對於專有軟體來說,外部可用的 alpha 軟體並不常見,而開源軟體通常有公開可用的 alpha 版本。 alpha 階段通常以功能凍結結束,表示不會為軟體添加更多功能。此時,該軟體據說功能已完成。 Beta 測試是在供應商站點進行驗收測試(Alpha 測試)之後、軟體作為產品全面發布之前進行的。 功能齊全

軟體的功能完整 (FC) 版本已實現所有計劃或主要功能,但由於錯誤、效能或穩定性問題尚未最終確定。這發生在開發中的 alpha 測試結束時。

通常,功能完整的軟體仍需要經過 Beta 測試和錯誤修復,以及效能或穩定性增強,然後才能進入候選版本,並最終獲得黃金狀態。

測試版

「測試版」重新導向至此。關於 2016 年的電影,請見“Beta 測試(電影)”。有關 2021 年上映的電影,請參閱 Beta 測試。

另請參閱:軟體測試 § Beta 測試

Beta,以希臘字母的第二個字母命名,是繼 alpha 之後的軟體開發階段。當軟體功能完整但可能包含幾個已知或未知的錯誤時,測試階段通常會開始。處於測試階段的軟體通常比已完成的軟體有更多的錯誤以及速度或效能問題,並且仍然可能導致崩潰或資料遺失。 Beta 測試的重點是減少對使用者的影響,通常包含可用性測試。提供使用者測試版的過程稱為測試版,通常是該軟體首次在開發該軟體的組織之外使用。軟體測試版可以是開放的,也可以是封閉的,這取決於它們是公開可用還是僅向有限的受眾開放。 Beta 版軟體通常可用於組織內以及潛在客戶的簡報和預覽。一些開發人員將此階段稱為預覽、預覽版本、原型、技術預覽或技術預覽 (TP),[8] 或早期存取。

Beta 測試人員是積極報告 Beta 軟體問題的人員。他們通常是開發軟體的組織的客戶或潛在客戶的代表。 Beta 測試人員傾向於免費提供服務,但經常會收到他們測試的產品版本、發布版本的折扣或其他獎勵。

永久測試版

主詞條:永久測試版

一些軟體保留在所謂的永久測試版中,新功能不斷添加到軟體中,但沒有建立最終的「穩定」版本。由於網路促進了軟體的快速且廉價的分發,公司已經開始對 beta 這個詞的使用採取更寬鬆的態度。

公開測試版與封閉測試版

開發者可以發布封閉測試版或公開測試版;封閉測試版透過邀請發布給有限的一組人進行使用者測試,而公開測試版測試人員來自更大的群體或任何有興趣的人。私人測試版可能適合能夠提供價值但由於擴展問題、缺乏文件或仍然缺少重要功能而尚未準備好供所有人使用的軟體。測試人員會報告他們發現的任何錯誤,有時會建議他們認為最終版本中應該提供的附加功能。

公開測試版具有向潛在消費者展示產品的雙重目的,並且在廣泛的用戶群中進行測試可能會發現規模小得多的測試團隊可能無法發現的模糊錯誤。

候選版本

候選發布版 (RC),也稱為伽瑪測試或“走向白銀”,是一個具有成為穩定產品潛力的測試版本,除非出現重大錯誤,否則就可以發布。在產品穩定的此階段,所有產品功能已通過一個或多個測試週期進行設計、編碼和測試,沒有已知的重大缺陷。當開發團隊同意不會將全新的原始程式碼新增至此版本時,該版本稱為程式碼完成。仍然可能會更改原始程式碼來修復缺陷、更改文件和資料檔案以及測試案例或實用程式的外圍程式碼。 Beta 測試人員(如果是私人挑選的)通常會因為使用候選版本而獲得讚譽,就好像它是成品一樣。 Beta 測試在客戶或客戶所在地進行,從使用者的角度測試軟體。

穩定版本

穩定版本也稱為生產版本,是已通過所有階段的驗證和測試的最後一個候選版本 (RC)。任何已知的剩餘錯誤都被認為是可以接受的。此版本已投入生產。

一些軟體產品(例如 Debian 等 Linux 發行版)也有長期支援 (LTS) 版本,這些版本基於已經嘗試和測試的完整版本,並且僅接收安全性更新。這使得開發人員可以將更多時間分配給產品開發,而不是更新程式碼或尋找和修復由於對所使用的系統、語言或底層程式庫的過時假設而導致的新引入的錯誤。

發布

一旦發布,該軟體通常被稱為“穩定版本”。正式術語通常取決於發布方式:實體媒體、線上發布或網路應用程式。

發佈到製造 (RTM)

微軟的薩蒂亞·納德拉 (Satya Nadella) 擁有《戰爭機器 4》黃金母盤

術語“發佈到製造”(RTM) 也稱為“走向黃金”,是在軟體產品準備好交付時使用的術語。該版本可以進行數位簽名,從而允許最終用戶驗證所購買軟體的完整性和真實性。如果適用,將發送稱為「gold master」或 GM[13] 的 RTM 版本副本以進行大規模複製或光碟複製。該術語取自音頻唱片製作行業,特別是母帶製作過程。當產品向公眾發佈時,RTM 優先於一般可用性 (GA)。黃金主版本 (GM) 通常是開發人員處於測試階段的軟體的最終版本。通常,對於 iOS 來說,這是主要版本之前的最終版本,但也有一些例外。

RTM 通常用於某些零售大規模生產軟體環境,而不是商業或政府生產和分發中的專門軟體生產或項目,其中軟體作為相關電腦硬體銷售中的捆綁包的一部分進行銷售,並且通常在軟體和相關硬體最終將在零售商店大規模/公開銷售,以表明該軟體已達到規定的品質水平並準備好進行大規模零售分銷。 RTM 在其他上下文中也可能意味著軟體已交付或發佈給客戶或顧客以安裝或分發到相關硬體最終用戶電腦或機器。該術語沒有定義輸送機製或體積;它僅表明質量足以進行大規模分發。工程組織的交付成果通常採用黃金母版媒體的形式,用於複製或產生網路影像。

全面上市 (GA)

產品生命週期的里程碑:全面上市 (GA)、停產公告 (EOLA)、最後訂購日期 (LOD) 和停產 (EOL)

普遍可用性 (GA) 是行銷階段,在此階段所有必要的商業化活動均已完成,且軟體產品可供購買,但取決於語言、區域以及電子與媒體可用性。商業化活動可能包括安全性和合規性測試,以及在地化和全球可用性。由於完成 GA 所需的所有商業化活動需要時間,因此在宣布正式發布之前,RTM 和 GA 之間的時間可能需要幾天到幾個月的時間。在此階段,該軟體已「上線」。

發佈到網路 (RTW)

Web 發佈 (RTW) 或 Web 發佈是一種利用 Internet 進行分發的軟體交付方式。製造商在這種類型的發布機制中不生產任何實體媒體。隨著網路使用的成長,網路發布變得越來越普遍。

支持

在其支援的生命週期內,軟體有時會受到服務版本、修補程式或服務包的影響,有時也稱為「臨時版本」或「維護版本」(MR)。例如,微軟為 32 位元版本的 Windows XP 發布了三個主要服務包,為 64 位元版本發布了兩個服務包。此類服務版本包含一系列更新、修復和增強功能,以單一可安裝套件的形式提供。他們還可能實現新功能。某些軟體在發佈時期望獲得定期支援。通常需要長期支援的軟體類別包括防毒套件和大型多人線上遊戲。繼續以 Windows XP 為例,微軟確實在擴充支援結束後的五年內提供了付費更新。這意味著支援已於 2019 年 4 月 8 日結束。

生命終結

另請參閱:報廢產品和廢棄軟體

當軟體不再銷售或不再受支援時,該產品被認為已達到生命週期終點,即已停產、退役、棄用、廢棄或過時,但用戶忠誠度可能會繼續存在一段時間,甚至在其終止很久以後。

在生命週期結束日期之後,開發人員通常不會實現任何新功能,修復現有的缺陷、錯誤或漏洞(無論是否在該日期之前已知),或為產品提供任何支援。如果開發者願意,他們可以發布原始程式碼,這樣平台就會重新活起來,並由志願者維護,如果開發者不願意,那麼當它成為廢棄軟體時,它可能會被逆向工程。

歷史

「alpha/beta」測試術語的使用起源於 IBM。「A」測試是新產品在公開發布之前的驗證。「B」測試是發布要製造的產品之前的驗證。"C"測試是產品全面上市之前的最終測試。隨著軟體成為IBM產品的重要組成部分,alpha測試術語被用來表示預先發布的測試,而 beta 測試則被用來顯示產品是否已準備好全面上市。IBM 一個早期軟體專案的經理 Martin Belsky 聲稱發明了這個術語。IBM在20世紀60年代放棄了alpha/beta術語,但那時它已經受到相當廣泛的關注。IBM並未使用「beta測試」來指客戶完成的測試。相反,IBM使用了術語「現場測試」​​。

隨後開發了主要的公開測試版,早期客戶以49.95美元的價格購買了用於IBM PC的WordVision文字處理器的「先鋒版」。

1984年,史蒂芬·馬內斯(Stephen Manes) 寫道,「布魯斯和詹姆斯計畫出版商在一次出色的行銷策略中成功地讓人們為測試產品的特權付費。」[19] 2000 年9 月,蘋果Mac OS X 公共版的盒裝版問世。 2005 年 9 月至 2006 年 5 月期間,Microsoft 發布了 Windows Vista 的社群技術預覽版 (CTP)。從 2009 年到 2011 年,《我的世界》處於公開測試階段。

2005 年 2 月,ZDNet 發表了一篇文章,討論了 beta 版本經常停留數年並像生產等級一樣使用的現象。例如,它指出,Gmail 和 Google 新聞雖然被廣泛使用,但仍處於測試階段很長時間; Google 新聞於 2006 年 1 月結束測試版,隨後 Google Apps(現更名為 Google Workspace),包括 Gmail,於 2009 年 7 月結束。自從 Windows 8 推出以來,微軟將預發佈軟體稱為預覽版,而不是測試版。透過 2014 年啟動的 Windows Insider 計畫發布的所有預發布版本都稱為「Insider Preview 版本」。 「Beta」也可能表示更像是候選版本,或作為一種限時演示或行銷技術的形式。

Software release life cycle

The software release life cycle is the process of developing, testing, and distributing a software product (e.g., an operating system). It typically consists of several stages, such as pre-alpha, alpha, beta, and release candidate, before the final version, or "gold", is released to the public.

An example of a basic software release life cycle

Pre-alpha refers to the early stages of development, when the software is still being designed and built. Alpha testing is the first phase of formal testing, during which the software is tested internally using white-box techniques. Beta testing is the next phase, in which the software is tested by a larger group of users, typically outside of the organization that developed it. The beta phase is focused on reducing impacts on users and may include usability testing.

After beta testing, the software may go through one or more release candidate phases, in which it is refined and tested further, before the final version is released.

Some software, particularly in the internet and technology industries, is released in a perpetual beta state, meaning that it is continuously being updated and improved, and is never considered to be a fully completed product. This approach allows for a more agile development process and enables the software to be released and used by users earlier in the development cycle.

Stages of development

Pre-alpha

Pre-alpha refers to all activities performed during the software project before formal testing. These activities can include requirements analysis, software design, software development, and unit testing. In typical open source development, there are several types of pre-alpha versions. Milestone versions include specific sets of functions and are released as soon as the feature is complete.[citation needed]

Alpha

The alpha phase of the release life cycle is the first phase of software testing (alpha is the first letter of the Greek alphabet, used as the number 1). In this phase, developers generally test the software using white-box techniques. Additional validation is then performed using black-box or gray-box techniques, by another testing team. Moving to black-box testing inside the organization is known as alpha release.[1][2]

Alpha software is not thoroughly tested by the developer before it is released to customers. Alpha software may contain serious errors, and any resulting instability could cause crashes or data loss.[3] Alpha software may not contain all of the features that are planned for the final version.[4] In general, external availability of alpha software is uncommon for proprietary software, while open source software often has publicly available alpha versions. The alpha phase usually ends with a feature freeze, indicating that no more features will be added to the software. At this time, the software is said to be feature-complete. A beta test is carried out following acceptance testing at the supplier's site (the alpha test) and immediately before the general release of the software as a product.[5] Feature-complete

A feature-complete (FC) version of a piece of software has all of its planned or primary features implemented but is not yet final due to bugs, performance or stability issues.[6] This occurs at the end of alpha testing in development.

Usually, feature-complete software still has to undergo beta testing and bug fixing, as well as performance or stability enhancement before it can go to release candidate, and finally gold status.

Beta

"Beta test" redirects here. For the 2016 film, see Beta Test (film). For the 2021 film, see The Beta Test.

See also: Software testing § Beta testing

Beta, named after the second letter of the Greek alphabet, is the software development phase following alpha. A beta phase generally begins when the software is feature-complete but likely to contain several known or unknown bugs.[7] Software in the beta phase will generally have many more bugs in it than completed software and speed or performance issues, and may still cause crashes or data loss. The focus of beta testing is reducing impacts on users, often incorporating usability testing. The process of delivering a beta version to the users is called beta release and is typically the first time that the software is available outside of the organization that developed it. Software beta releases can be either open or closed, depending on whether they are openly available or only available to a limited audience. Beta version software is often useful for demonstrations and previews within an organization and to prospective customers. Some developers refer to this stage as a preview, preview release, prototype, technical preview or technology preview (TP),[8] or early access.

Beta testers are people who actively report issues with beta software. They are usually customers or representatives of prospective customers of the organization that develops the software. Beta testers tend to volunteer their services free of charge but often receive versions of the product they test, discounts on the release version, or other incentives.[9][10]

Perpetual beta

Main article: Perpetual beta

Some software is kept in so-called perpetual beta, where new features are continually added to the software without establishing a final "stable" release. As the Internet has facilitated the rapid and inexpensive distribution of software, companies have begun to take a looser approach to the use of the word beta.[11]

Open and closed beta

Developers may release either a closed beta, or an open beta; closed beta versions are released to a restricted group of individuals for a user test by invitation, while open beta testers are from a larger group, or anyone interested. Private beta could be suitable for the software that is capable of delivering value but is not ready to be used by everyone either due to scaling issues, lack of documentation or still missing vital features. The testers report any bugs that they find, and sometimes suggest additional features they think should be available in the final version.

Open betas serve the dual purpose of demonstrating a product to potential consumers, and testing among a wide user base is likely to bring to light obscure errors that a much smaller testing team might not find.

Release candidate

A release candidate (RC), also known as gamma testing or "going silver", is a beta version with the potential to be a stable product, which is ready to release unless significant bugs emerge. In this stage of product stabilization, all product features have been designed, coded, and tested through one or more beta cycles with no known showstopper-class bugs. A release is called code complete when the development team agrees that no entirely new source code will be added to this release. There could still be source code changes to fix defects, changes to documentation and data files, and peripheral code for test cases or utilities. Beta testers, if privately selected, will often be credited for using the release candidate as though it were a finished product. Beta testing is conducted in a client's or customer's location and to test the software from a user's perspective.[citation needed]

Stable release

Also called production release, the stable release is the last release candidate (RC) which has passed all stages of verification and tests. Any known remaining bugs are considered acceptable. This release goes to production.

Some software products (e.g. Linux distributions like Debian) also have long-term support (LTS) releases which are based on full releases that have already been tried and tested and receive only security updates. This allows developers to allocate more time toward product development instead of updating code or finding and fixing newly introduced bugs due to outdated assumptions about the used system, language, or underlying libraries.[citation needed]

Release

Once released, the software is generally known as a "stable release". The formal term often depends on the method of release: physical media, online release, or a web application.[12]

Release to manufacturing (RTM)

Satya Nadella of Microsoft with the gold master disc of Gears of War 4

The term "release to manufacturing" (RTM), also known as "going gold", is a term used when a software product is ready to be delivered. This build may be digitally signed, allowing the end user to verify the integrity and authenticity of the software purchase. A copy of the RTM build known as the "gold master" or GM[13] is sent for mass duplication or disc replication if applicable. The terminology is taken from the audio record-making industry, specifically the process of mastering. RTM precedes general availability (GA) when the product is released to the public. A golden master build (GM) is typically the final build of a piece of software in the beta stages for developers. Typically, for iOS, it is the final build before a major release, however, there have been a few exceptions.

RTM is typically used in certain retail mass-production software contexts—as opposed to a specialized software production or project in a commercial or government production and distribution—where the software is sold as part of a bundle in a related computer hardware sale and typically where the software and related hardware is ultimately to be available and sold on mass/public basis at retail stores to indicate that the software has met a defined quality level and is ready for mass retail distribution. RTM could also mean in other contexts that the software has been delivered or released to a client or customer for installation or distribution to the related hardware end user computers or machines. The term does not define the delivery mechanism or volume; it only states that the quality is sufficient for mass distribution. The deliverable from the engineering organization is frequently in the form of a golden master media used for duplication or to produce the image for the web.

General availability (GA)

Milestones in a product life cycle: general availability (GA), end of life announcement (EOLA), last order date (LOD), and end-of-life (EOL)

General availability (GA) is the marketing stage at which all necessary commercialization activities have been completed and a software product is available for purchase, depending, however, on language, region, and electronic vs. media availability.[14] Commercialization activities could include security and compliance tests, as well as localization and worldwide availability. The time between RTM and GA can take from days to months before a generally available release can be declared, due to the time needed to complete all commercialization activities required by GA. At this stage, the software has "gone live".

Release to the Web (RTW)

Release to the Web (RTW) or Web release is a means of software delivery that utilizes the Internet for distribution. No physical media are produced in this type of release mechanism by the manufacturer. Web releases have become more common as Internet usage grew.[citation needed]

Support

During its supported lifetime, the software is sometimes subjected to service releases, patches or service packs, sometimes also called "interim releases" or "maintenance releases" (MR). For example, Microsoft released three major service packs for the 32-bit editions of Windows XP and two service packs for the 64-bit editions.[15] Such service releases contain a collection of updates, fixes, and enhancements, delivered in the form of a single installable package. They may also implement new features. Some software is released with the expectation of regular support. Classes of software that generally involve protracted support as the norm include anti-virus suites and massively multiplayer online games. Continuing with this Windows XP example, Microsoft did offer paid updates for five more years after the end of extended support. This means that support ended on April 8, 2019.[16]

End-of-life

See also: End-of-life product and Abandonware

When software is no longer sold or supported, the product is said to have reached end-of-life, to be discontinued, retired, deprecated, abandoned, or obsolete, but user loyalty may continue its existence for some time, even long after its platform is obsolete—e.g., the Common Desktop Environment[17] and Sinclair ZX Spectrum.[18]

After the end-of-life date, the developer will usually not implement any new features, fix existing defects, bugs, or vulnerabilities (whether known before that date or not), or provide any support for the product. If the developer wishes, they may release the source code, so the platform will live again, and be maintained by volunteers, and if not, it may be reverse-engineered later when it becomes abandonware.

History

Usage of the "alpha/beta" test terminology originated at IBM.[citation needed] Similar terminologies for IBM's software development were used by people involved with IBM from at least the 1950s (and probably earlier). "A" test was the verification of a new product before the public announcement. The "B" test was the verification before releasing the product to be manufactured. The "C" test was the final test before the general availability of the product. As software became a significant part of IBM's offerings, the alpha test terminology was used to denote the pre-announcement test and the beta test was used to show product readiness for general availability. Martin Belsky, a manager on some of IBM's earlier software projects claimed to have invented the terminology. IBM dropped the alpha/beta terminology during the 1960s, but by then it had received fairly wide notice. The usage of "beta test" to refer to testing done by customers was not done in IBM. Rather, IBM used the term "field test".

Major public betas developed afterward, with early customers having purchased a "pioneer edition" of the WordVision word processor for the IBM PC for $49.95. In 1984, Stephen Manes wrote that "in a brilliant marketing coup, Bruce and James Program Publishers managed to get people to pay for the privilege of testing the product."[19] In September 2000, a boxed version of Apple's Mac OS X Public Beta operating system was released.[20] Between September 2005 and May 2006, Microsoft released community technology previews (CTPs) for Windows Vista.[21] From 2009 to 2011, Minecraft was in public beta.

In February 2005, ZDNet published an article about the phenomenon of a beta version often staying for years and being used as if it were at the production level.[22] It noted that Gmail and Google News, for example, had been in beta for a long time although widely used; Google News left beta in January 2006, followed by Google Apps (now named Google Workspace), including Gmail, in July 2009.[12] Since the introduction of Windows 8, Microsoft has called pre-release software a preview rather than beta. All pre-release builds released through the Windows Insider Program launched in 2014 are termed "Insider Preview builds". "Beta" may also indicate something more like a release candidate, or as a form of time-limited demo, or marketing technique.[23]