成功するプロジェクトは管理が優れています。プロジェクトを効率的に管理するには、管理者や開発チームはさまざまなソフトウェア開発手法を検討して、着手するプロジェクトに最適な手法を選択する必要があります。すべての手法にはそれぞれ異なる長所と短所があり、存在する理由も異なります。以下では、最も一般的に用いられているソフトウェア開発手法およびさまざまな手法が存在する理由について概要を説明します。
ウォーターフォール型開発手法は伝統的なソフトウェア開発手法とされています。順次的なフェーズ(要件定義、設計、実装、検証、保守)で構成される厳格な線形モデルにより、フェーズごとに異なる目標を達成します。各フェーズが100%完了するまで次のフェーズを開始することはできず、後戻りしてプロジェクトや方針を変更するプロセスは従来存在していません。
長所:線形の性質を持つこの手法は、理解および管理がしやすいという利点があります。目標が明確で要件が安定しているプロジェクトには、ウォーターフォール型の手法が最適です。プロジェクトマネージャーやプロジェクト・チームの経験が浅い場合、およびチームメンバーが頻繁に変わる場合には、ウォーターフォール型開発手法が最もメリットが大きいといえます。
短所:体制が硬直的で管理が厳密なため、時間とコストがかかる傾向があります。こうした短所はウォーターフォール型手法の利用者が他のソフトウェア開発手法を検討する要因になっています。
ラピッド・アプリケーション・デベロップメント(RAD)は、高品質なシステムを低投資コストで実現する凝縮された開発プロセスです。最近の『Forbes』の記事で、UM Technologies社の社長兼CEOのスコット・スタイナー氏は「このRADプロセスにより、急ペースで常に変化する市場における要件の変化に当社の開発チームは迅速に対応することが可能になっています。」と語っています。迅速に対応する能力がこのような低投資コストを可能にしています。RAD手法には4つのフェーズ(要件計画、ユーザー設計、作成、カットオーバー)があります。ユーザー設計と作成のフェーズは、製品がすべての要件を満たしていることをユーザーが確認するまで反復されます。
長所:RADは、ビジネス目標とユーザーグループの定義が明確で、処理が複雑ではないプロジェクトにおいて最も効果を発揮します。時間的制約がある中小規模のプロジェクトの場合に特に有効です。
短所:技術力の高い開発者を集めた安定したチーム構成とアプリケーションの領域に関するユーザーの深い知識が求められます。凝縮された開発スケジュールで作成フェーズの後に毎回承認を必要とする場合には、高度な知識が不可欠です。以上の要件を満たしていない場合、RADでは大きな成果が得られない可能性があります。
アジャイル開発手法にはスクラム、クリスタル、エクストリームプログラミング(XP)、機能駆動開発(FDD)などのさまざまな形態があります。
長所:アジャイル手法では、新機能の追加に際して、新しい機能を少しずつ追加しながらソフトウェア開発を進めていくことによりリスク(バグ、コスト超過、要件変更など)を最小化することを目指します。何度も反復するメリットは、不具合や要望との不一致を早期に発見して修正することにより効率が向上する点にあります。
短所:リアルタイムのコミュニケーションに依存するアジャイル手法では、新規ユーザーに最新情報を記述したドキュメントを提供することが困難です。ユーザーも多くの時間を割かれ、開発者は反復のたびに機能を完成させてユーザーの承認を得なければならないため、多大な労力が必要とされます。一方で、反復により少しずつ機能を追加していくため、ユーザーは早くからソフトウェアの利点を認識します。アジャイル手法はRADと似ていて、大規模な組織では非効率になる場合があります。ウォーターフォール型手法に慣れているプログラマー、管理者、組織はアジャイルへの対応に苦労することがあります。そうしたケースでは、多くの場合、ハイブリッド方式が有効です。
DevOpsの導入は、開発ライフサイクルの異なるセグメント(開発、品質保証、運用など)を担当する部門間の協働を深める組織変更が中心になります。
長所:DevOpsは市場投入までに要する期間の短縮、新規リリース時の故障率の低減、修正間のリードタイムの短縮、システムの中断の最小化/高信頼性の優先に焦点を当てます。この目標を実現するため、DevOpsでは継続的なデプロイを自動化して万事をスムーズかつ確実に進めることを目指します。DevOpsを採用している企業には、市場投入までに要する期間の大幅な短縮と顧客満足、製品品質、従業員の生産性・効率の向上によるメリットがあります。
短所:こうした利点がある一方で、DevOpsには次のような短所もあります。
以上の4つのソフトウェア開発手法はソフトウェア開発の現場で最も広く利用されています。各手法に特有の長所と短所があり、それぞれ状況に応じて効果も異なります。ここでご紹介した情報を開発手法の選択に役立てていただけます。