ソフトウェアリリースライフサイクル

ソフトウェア・リリース・ライフサイクル (英: Software release life cycle) は、コンピュータソフトウェアの開発段階からリリース後に成熟する段階までの総称。サイクルは、最初の開発から最終的なリリースまでが範囲であり、ソフトウェアの改善やソフトウェアにまだ存在するバグ修正を行う、更新プログラムまでが含まれる。
ソフトウェア製品は、テスト段階でのユーザーの信頼性に対する期待値を下げるためにベータ版として公に宣伝されることがあり、コンピューター業界では"ベータ版"の段階で製品にアクセスしているユーザーが最も多い。 
歴史.
「アルファ/ベータ」テスト用語は IBMに由来する。 IBMのソフトウェア開発に関する同様の用語は、少なくとも1950年代（そしておそらくそれ以前）からIBMに関係者が使用していた。 「A」テストは、公表前の新製品の検証だった。 「B」テストは、製造する製品をリリースする前の検証だった。 「C」テストは、製品が一般に発売される前の最終テストだった。ソフトウェアがIBMの製品の重要な部分になると、アルファテストの用語は発表前のテストを示すために使用され、ベータテストは製品の一般提供の準備状況を示すために使用された。 IBMの初期のソフトウェアプロジェクトのいくつかのマネージャーであるMartin Belskyは、この用語を発明したと主張しました。 IBMは1960年代にアルファ/ベータの用語の利用をやめたが、それまでにかなり幅広い注目を集めていた。お客様が行ったテストを指す「ベータテスト」の使用は、IBMでは行われませんでした。むしろ、IBMは「フィールドテスト」という用語を使用した。
開発段階.
プレアルファ版.
プレアルファとは、正式なテストの前にソフトウェアプロジェクト中に実行されるすべての活動を指す。これらの活動には、要求分析、ソフトウェア設計、ソフトウェア開発、および単体テストが含まれる。典型的なオープンソース開発では、いくつかのタイプのプレアルファバージョンがあります。"マイルストーン"バージョンには特定の機能セットが含まれており、機能が完了するとすぐにリリースされる。
アルファ版.
リリースライフサイクルのアルファフェーズは、ソフトウェアテストの最初のフェーズである（アルファはギリシア文字の最初の文字で、数字の1として使用されます）。このフェーズでは、開発者は通常、ホワイトボックステストの手法を使用してソフトウェアをテストする。次に、別のテストチームが、ブラックボックステストまたはグレーボックステストの手法を使用して追加の検証を実行する。組織内のブラックボックステストへの移行は、"アルファリリース"として知られている。
アルファソフトウェアは、顧客にリリースされる前に開発者によって徹底的にテストされていない。 アルファソフトウェアには重大なエラーが含まれている可能性があり、その結果不安定になるとクラッシュやデータ損失が発生する可能性がある 。 アルファソフトウェアには、最終バージョンで計画されているすべての機能が含まれているとは限らない。 一般に、プロプライエタリソフトウェアではアルファソフトウェアの外部利用はまれだが、オープンソースソフトウェアには多くの場合、公開されているアルファバージョンがある。アルファフェーズは通常、機能フリーズで終了する。これは、ソフトウェアに機能が追加されないことを示す。現時点では、ソフトウェアはフィーチャー・コンプリートであると言われている。ベータテストは、サプライヤのサイトでの受け入れテスト（アルファテスト）の後、製品としてのソフトウェアの一般リリースの直前に実行される。 
ベータ版.
ギリシャ語のアルファベットの2番目の文字にちなんで名付けられたベータ版は、アルファ版に続くソフトウェア開発フェーズである。ベータ段階のソフトウェアは、ベータウェアとも呼ばれる。 ベータフェーズは通常、ソフトウェアが機能を完了したときに開始されるが、既知または未知のバグが多数含まれている可能性がある。 ベータ段階のソフトウェアには、通常、完成したソフトウェア、速度、またはパフォーマンスの問題よりもはるかに多くのバグがあり、それでもクラッシュやデータ損失を引き起こす可能性がある。ベータテストの焦点は、ユーザーへの影響を減らすことであり、多くの場合、ユーザビリティテストが組み込まれている。ベータ版をユーザーに提供するプロセスは"ベータリリース"と呼ばれ、通常、ソフトウェアを開発した組織の外部でソフトウェアを利用できるのはこれが初めてである。ソフトウェアベータリリースは、公開されているか、限られた対象者のみが利用できるかに応じて、公開または非公開のいずれかになる。ベータ版ソフトウェアは、多くの場合、組織内のデモンストレーションやプレビュー、および見込み客に役立つ。一部の開発者は、この段階を"プレビュー"、"プレビューリリース"、"プロトタイプ"、"テクニカルプレビュー"/"テクノロジープレビュー"("TP")、 または"早期アクセスと"呼んでいる。 Windows 8の導入以来、 マイクロソフトはプレリリースソフトウェアを"ベータ版"ではなく"プレビュー"版と呼んでいる。 2014年にリリースされたWindows Insider Programを通じてリリースされたすべてのプレリリースビルドは、「Insider Previewビルド」と呼ばれる。「ベータ」は、リリース候補のようなもの、または期間限定のデモ、またはマーケティング手法の形式を示す場合もある。 
"ベータテスター"は、ベータソフトウェアの問題を積極的に報告する人々である。彼らは通常、ソフトウェアを開発する組織の顧客または見込み顧客の代表者である。ベータテスターは無料でサービスを提供する傾向があるが、テストする製品のバージョン、リリースバージョンの割引、またはその他のインセンティブを受け取ることがよくある。
パーペチュアルベータ.
一部のソフトウェアは、いわゆる"パーペチュアルベータ版"に保持されており、最終的な「安定した」リリースを確立することなく、新しい機能がソフトウェアに継続的に追加される。インターネットがソフトウェアの迅速で安価な配布を促進するにつれて、企業は「ベータ」という言葉の使用に対してより緩いアプローチを取り始めた。 2005年2月、 ZDNetは、ベータ版が何年も留まり、実稼働レベルであるかのように使用されるという現象についての記事を公開した。 たとえば、 GmailとGoogle ニュースは、広く使用されているものの、長い間ベータ版であったと述べている。Googleニュースは2006年1月にベータ版を終了し、続いて2009年7月にGmailを含むGoogleアプリがリリースされた。 この手法により、開発者は残りの問題に対する完全なサポートと責任の提供を遅らせることができる。
公開ベータ版と非公開ベータ版.
開発者は、"プライベートベータ"とも呼ばれる"クローズドベータ"、または"パブリックベータ"とも呼ばれる"オープンベータの"いずれかをリリースできる。クローズドベータ版は、招待によるユーザーテストのために制限された個人グループにリリースされるが、オープンベータテスターは、より大きなグループまたは関心のある人からのものである。プライベートベータは、価値を提供できるソフトウェアに適している可能性があるが、スケーリングの問題、ドキュメントの不足、または重要な機能の欠如のために、誰もが使用する準備ができていない。テスターは、見つけたバグを報告し、最終バージョンで利用できるはずだと思う追加機能を提案することもある。主要なパブリックベータテストの例は次のとおりである。
オープンベータは、潜在的な消費者に製品をデモンストレーションするという2つの目的と、はるかに小規模なテストチームでは見つけられない可能性のあるあいまいなエラーを明らかにする可能性のある非常に幅広いユーザーベースでのテストの2つの目的を果たす。
リリース候補版.
「ゴーイングシルバー」としても知られる"リリース候補"（Release Candidate, RC) は、安定した製品になる可能性のあるベータバージョンであり、重大なバグが発生しない限り、すぐにリリースできる。製品安定化のこの段階では、すべての製品機能が1つ以上のベータサイクルを通じて設計、コーディング、およびテストされており、既知のショートッパークラスのバグはない。開発チームがこのリリースにまったく新しいソースコードが追加されないことに同意"した"場合、リリースは"コード完了"と呼ばれる。欠陥を修正するためのソースコードの変更、ドキュメントとデータファイルの変更、およびテストケースやユーティリティの周辺コードがまだ存在する可能性がある。ベータテスターは、個人的に選択された場合、リリース候補を完成品であるかのように使用したことでクレジットされることがよくありる。ベータテストは、クライアントまたは顧客の場所で、ユーザーの観点からソフトウェアをテストするために実施される。
安定リリース.
"プロダクションリリース"とも呼ばれる"安定版リリース"は、すべての検証/テストに合格した最後の"リリース候補"("RC")である。残りのバグは許容できると見なされる。このリリースは本番環境に移行する。一部のドメイン（ Linuxディストリビューションなど）には、通常リリースまたは安定リリースと、長期間維持される長期サポート（LTS）リリースの2種類の安定リリースがある。
出荷.
リリース (出荷) されると、ソフトウェアは一般に「安定版リリース」として知られている。正式な用語は、多くの場合、リリースの方法（物理メディア、オンラインリリース、またはWebアプリケーション）によって異なる。
製造工程へのリリース（RTM）.
「ゴーイングゴールド」とも呼ばれる製造へのリリース（Release to manufacturing, RTM）という用語は、ソフトウェア製品を提供する準備ができたときに使用される用語である。このビルドはデジタル署名されている場合があり、エンドユーザーはソフトウェア購入の整合性と信頼性を検証できる。「ゴールドマスター」またはGM として知られるRTMビルドのコピーは、大量複製またはディスク複製のために出荷される。この用語は、オーディオレコード作成業界、特にマスタリングのプロセスから取られている。 RTMは、製品が一般にリリースされるときに一般提供（GA）に先行する。ゴールデンマスタービルド（GM）は通常、開発者向けのベータ段階にあるソフトウェアの最終ビルドである。通常、 iOSの場合、これはメジャーリリース前の最終ビルドだが、いくつかの例外がある。
これは通常、特定の小売りの大量生産ソフトウェアのコンテキストで使用される。これは、商用または政府の生産および配布における特殊なソフトウェアの生産またはプロジェクトとは対照的に、関連するコンピューターハードウェアの販売でバンドルの一部としてソフトウェアが販売される場合である。ソフトウェアおよび関連するハードウェアは、最終的には小売店で大量/公開ベースで入手および販売され、ソフトウェアが定義された品質レベルを満たし、大量小売販売の準備ができていることを示す。 RTMは、他のコンテキストでは、関連するハードウェアエンドユーザーのコンピューターまたはマシンにインストールまたは配布するために、ソフトウェアがクライアントまたは顧客に配信またはリリースされたことを意味する場合もある。この用語は、配信メカニズムやボリュームを定義するものではない。品質が大量配布に十分であると述べているだけである。エンジニアリング組織からの成果物は、複製やWeb用の画像の作成に使用されるゴールデンマスターメディアの形式であることがよくある。
一般提供開始.
一般提供開始 (General Availability, GA)は、必要なすべての商品化活動が完了し、ソフトウェア製品を購入できるマーケティング段階である。ただし、言語、地域、電子機器とメディアの可用性によって異なる。 商業化活動には、セキュリティとコンプライアンスのテスト、およびローカリゼーションと世界的な可用性が含まれる可能性がある。 GAが必要とするすべての商品化活動を完了するために必要な時間のため、RTMとGAの間の時間は、一般に利用可能なリリースが宣言されるまでに1週間から数か月かかる場合がある。この段階で、ソフトウェアは「稼働」している。
Webへのリリース（RTW）.
Webへのリリース（Release to the Web, RTW）またはWebリリースは、配布にインターネットを利用するソフトウェア配信の手段である。このタイプのリリースメカニズムでは、製造元によって物理メディアは作成されない。インターネットの使用が増えるにつれて、Webリリースはより一般的になりつつある。
サポート.
サポートされている存続期間中、ソフトウェアはサービスリリース、パッチ、またはサービスパックの対象となることがあり、「暫定リリース」または「メンテナンスリリース」（MR）とも呼ばれる。たとえば、マイクロソフトは、 Windows XPの32ビット版用に3つの主要なサービスパックをリリースし、 64ビット版用に2つのサービスパックをリリースした。このようなサービスリリースには、単一のインストール可能なパッケージの形式で提供される更新、修正、および拡張機能のコレクションが含まれている。また、新しい機能を実装する場合もある。一部のソフトウェアは、定期的なサポートを期待してリリースされている。通常、アンチウイルスソフトウェアや大規模マルチプレイヤーオンラインゲームなど、一般的に長期にわたるサポートを伴うソフトウェアのクラスがある。このWindows XPの例を続けると、マイクロソフトは、拡張サポートの終了後、さらに5年間有料アップデートを提供した。これは、サポートが2019年4月8日に終了したことを意味する。
保守終了.
ソフトウェアの販売またはサポートが終了すると、製品はサポート終了、廃止、廃版と言われるが、ユーザーの忠誠心は、その後もしばらくの間、時にはAtari STやSinclair ZX Spectrumのようにプラットフォームの廃止よりも長く存在し続ける可能性がある。
開発者は通常、サポート終了日以降、新しい機能を実装したり、既存の欠陥、バグ、または脆弱性を修正したり（その日付より前にわかっているかどうかに関係なく）、製品のサポートを提供しない。開発者が望む場合は、ソースコードをリリースして、プラットフォームが再び稼働し、ボランティアによって保守されるようにすることができる。