リリースエンジニアリング( RE 、あるいは短縮形のRelengとも呼ばれる)は、ソフトウェアエンジニアリングにおけるサブ分野の一つで、ソースコードをコンパイル、アセンブリ、そして完成品やその他のソフトウェアコンポーネントとして提供することに関わる。ソフトウェアリリースライフサイクルに関連して、Google社のボリス・デビック氏[ 1 ] [ 2 ]は、リリースエンジニアリングとソフトウェアエンジニアリングの関係は、製造業と工業プロセスの関係に似ていると 述べた。
リリースエンジニアリングとは、小規模チームやスタートアップでソフトウェアを製造することと、反復可能で予測可能な結果をもたらし、拡張性に優れた工業的な方法でソフトウェアを製造することの違いです。こうした工業的な手法は、企業の成長に貢献するだけでなく、成長を可能にする重要な要素でもあります。
テクノロジー企業の成長を可能にするリリースエンジニアリングの重要性は、ジョン・オドゥイン[ 3 ]とブラム・アダムス[ 4 ]によって繰り返し主張されてきました。プロセスのオーバーレイによってソフトウェア開発を妨げることがリリースエンジニアリングの目的ではありませんが、組織的および開発的な成熟度の兆候と見なされることがよくあります。
現代のリリース エンジニアリングは、ソフトウェア制作のいくつかの側面に関係しています。
- 識別可能性
- 特定のリリースを構成するソース、ツール、環境、およびその他のコンポーネントをすべて識別できること。
- 再現性
- 運用の安定性を保証するために、ソフトウェア システムのソース、サードパーティ コンポーネント、データ、およびデプロイメント外部を統合する機能。
- 一貫性
- ソフトウェア コンポーネントの開発、展開、監査、説明責任のための安定したフレームワークを提供するという使命。
- 敏捷性
- 継続的インテグレーションやグリーンイニシアチブの推進など、現代のソフトウェアエンジニアリングの実践がソフトウェアサイクルの生産性にどのような影響を与えるかについての継続的な研究。
リリースエンジニアリングは、開発、製品管理、品質保証、そしてDevOpsとも呼ばれるその他のエンジニアリング活動の交差点に位置する、より複雑なソフトウェア開発チームの統合ハブとなることがよくあります。リリースエンジニアリングチームは、特定の重要な製品においてゲートキーパーのような役割を担うことが多く(Facebook、Google、Microsoftなど)、その判断は本番リリース(プッシュ)に関する責任と権限の並行線を形成します。
多くの場合、構成管理システムやリビジョン管理システムにおける変更の追跡は、リリースエンジニアの担当領域です。ソフトウェアにバージョン番号付けスキームを作成して適用し、その番号が適用される特定のソースファイルまで遡って追跡する責任は、多くの場合リリースエンジニアに課せられます。ソフトウェア開発における自動化の実現または改善は、通常、リリースエンジニアの目標です。特定のソフトウェアの開発と構築に必要なすべてのツールを収集、追跡、提供することは、顧客への最初のリリースから数年経ってもソフトウェアを確実に再現または保守するために、リリースエンジニアリングのタスクとなる場合があります。
ほとんどのソフトウェアエンジニア、あるいはソフトウェア開発者は、上記の多く、あるいはすべてを業務の一環として行っていますが、大規模な組織では、リリースエンジニアの専門性を活かして、分散したソースツリー、プロジェクト、チーム、コンポーネントの調整を行うことができます。これにより、開発者はソフトウェアの機能実装に専念でき、品質保証エンジニアは作成されたソフトウェアをより広範かつ深くテストできるようになります。
リリースエンジニアは、ソフトウェアエンジニアリングチームやソフトウェア品質保証チームにソフトウェア、サービス、またはその両方を提供する場合があります。提供されるソフトウェアには、コンパイル出力を事前定義されたツリー構造に配置するツール、アセンブリ、その他の再編成スクリプトの作成、さらにはテストチームやソフトウェアの最終消費者が使用するインストーラーの作成や作成が含まれる場合があります。提供されるサービスには、ソフトウェアビルド(コンパイル)の自動化、自動テストの統合、結果レポート、電子メディア(CD、DVD)や電子ソフトウェア配布メカニズムなどのソフトウェア配信システムの作成または準備が含まれる場合があります。
関連分野
- アプリケーションリリースの自動化
- アプリケーションライフサイクル管理
- ビルド自動化
- 継続的インテグレーション
- 変更管理
- パッケージングと展開
- 移植-製品ライン エンジニアリングには、ソフトウェア製品をあるプラットフォームから別のプラットフォームに移植することが含まれます。
- リリース管理
- ソフトウェア構成管理- リリース エンジニアリングはソフトウェア構成管理の一部と見なされることもありますが、ソフトウェア構成管理はリリース エンジニアが使用するツールまたはプロセスであり、実際には一般的なリリース エンジニアの役割と責任のサブセットです。
- ソフトウェアの展開
- ソフトウェアリリースライフサイクル
- ソフトウェアのバージョン管理
参考文献
- ^ Adams, Bellomo, Bird, Marshall-Keim, Khomh, Moir (2015年3月). 「リリースエンジニアリングの実践と将来」 . IEEEソフトウェア. 32 (2). IEEEコンピュータソサエティ: 46. doi : 10.1109/ms.2015.52 .
- ^ 「舞台裏 - 制作の進捗」 2009年3月11日。
- ^ John O'Duinn. 2015. 「リリースエンジニアリングは力の増幅装置となる」第3回国際リリースエンジニアリングワークショップ(RELENG '15)議事録. IEEE Press, Piscataway, NJ, USA, 1-1.
- ^ 2013. 第1回リリースエンジニアリング国際ワークショップ議事録。IEEE Press、米国ニュージャージー州ピスカタウェイ。
さらに読む
- 「ソフトウェアリリース方法論」マイケル・E・ベイズ著、ISBN 0-13-636564-7。
- 「ソフトウェア構成管理」H.ロナルド・バーラック著、ISBN 0-471-53049-2。
- H. Sassenburg著「ソフトウェアリリースの意思決定を支援する方法論の設計」ISBN 90-367-2424-4。
- 「継続的デリバリー:ビルド、テスト、デプロイメントの自動化による信頼性の高いソフトウェアリリース」Jez Humble、David Farley著、ISBN 0-321-60191-2