ソフトウェア開発の主な手法
開発手法の中でよく使われている3タイプの開発手法について見ていきましょう。どの種類の開発法も異なった個性がありますので、行う開発の種類に応じて使用する手法が変動します。まずはその差を理解しておきましょう。
ウォーターフォール型開発
ウォーターフォール型開発とは、その名の通り『水が上から下へ流れていくような』形の開発です。システムの要件定義から設計、製造、テストといった流れで、各開発フェーズを段階的に進めます。
前の工程には戻らない前提で行いますので、開発の最初の段階で仕様などの重要な決定をします。工程が終わるごとに成果を承認した上で文書化されるので、ガントチャートで管理がしやすいのが特徴です。デメリットとしては、後になってからの仕様変更が起こってしまうと変更することが難しく、納期遅延や予算超過に繋がってしまうことが挙げられます。
プロトタイプ型開発
ウォーターフォール型開発とは対極にあたるのが、『プロトタイプ型開発』です。実際に動作する試作品(プロトタイプ)を開発の早期に作成し、実際の挙動を見ながらユーザーが確認、評価していく開発手法です。早い段階で完成品のイメージを共有することが出来るので、要件漏れを防ぎ、仕様の精度が向上します。もともと手戻りする前提で作られているので、柔軟な対応が可能なのもプロトタイプ型開発の特徴です。
こちらにもデメリットはあります。仕様変更や機能追加は随時行われるので、開発コストがかかります。さらに、作業進捗管理に慣れていない人が上にいると、難易度が高い作業計画や作業見積りに手間取ってしまう可能性もあります。
アジャイル型開発
最後に紹介する『アジャイル型開発』は、比較的新たな開発手法のひとつです。少しずつ現場での採用率も上がっている、今注目の手法です。アジャイル(=俊敏)型開発では、まずはおおよその仕様を決め、反復(イテレーション)と呼ばれる短い期間単位で『実装→テスト実行』を繰り返します。
小単位で実装とテスト実行を繰り返すため、プロトタイプ型開発以上に全体のスケジュールや進捗が把握しづらくなってしまうのが難点です。アジャイル開発を選択するならば、柔軟な対応力や、高いコミュニケーション能力が必要です。開発手法のトレンド
ソフトウェア開発のトレンドを敏感に察知するのもエンジニアとして必要な能力です。開発手法のトレンドを把握しておけば、プロジェクトに応じて最適な方法を選ぶことができるでしょう。
アジャイル開発への移行
アジャイル型開発の登場により、従来の開発スタイルは大きく変化しています。ウォーターフォール型開発は確実性が高く、エンジニアの中でも慣れ親しんだ手法です。今でもこの手法を採用しているところは多いですが、一方で変化の早いソフトウェア開発には適さないのも事実です。
仕様変更やバグが発生すると、大きな手戻りを強いられることも少なくありません。アジャイル型開発は、ウォーターフォール型開発よりも手戻りの手間がかからず、プロトタイプ開発よりもコスト面で優れている、一挙両得な手法なのです。
そして最近では、アジャイルの新しい取り組みとして『DevOps』が注目を集めています。
アジャイルとDevOpsについて理解しよう
DevOpsは『Development』と『Operations』を略したもので、開発チームと運用チームの協調関係を示しています。DevOpsは、ほかの開発手法ではなく、アジャイル型開発を取り入れることによって成立します。
開発担当は小単位でテストを行い、運用担当のフィードバックを受けます。これを繰り返すアジャイル型開発によって、開発から運用までの時間を短縮できるのです。DevOpsの目的やメリット
2009年にO’Reillyが開催した『Velocity 2009』というイベント以降、注目を集め続けているのがDevOpsです。ではなぜ今、システム開発にDevOpsが必要とされているのでしょうか。DevOpsについて、目的やメリット、主な手法を紹介します。
DevOpsの目的
DevOpsの目的は、リリースまでの時間を短くした柔軟かつスピーディーなシステム開発と、その継続的な運用を実現することにあります。 そして何より、「新しいサービスやシステムを導入していきたい」開発チームと「現在の仕様のまま安定的な運用を続けていきたい」運用チームのスタンスの違いを解消することができるのです。 アジャイル開発のようなウォーターフォールモデルで小規模なデプロイを繰り返すことにより、スムーズな運用が可能となります。DevOpsのメリット
今まで人間が行なっていた作業を、ツールによって自動化します。フィードバックがしやすくなることでこれまで起こっていたヒューマンエラーを防ぐだけでなく、作業の生産性を向上させることも可能です。
開発担当、運用担当、品質管理担当が協調してサービスを管理できるので、高い品質を維持できます。システムの円滑なシステム運用を実現するためには、導入して損はないツールなのです。
DevOpsの主な手法
前述のアジャイル型開発に加えて、バグを早期に発見して対処する『継続的インテグレーション』や、継続的インテグレーションを拡張し、コードを修正する度に自動的にビルドが行われる『継続的デリバリー』などがあります。
まとめ
開発スタイルは、プロジェクトの進行に大きな影響を及ぼします。DevOpsの効果を上げられるよう、開発担当と運用担当がスムーズなコミュニケーションをとることも、プロジェクト成功には必要不可欠です。
DevOpsは厳密な定義がないためにアジャイルそのものと思われることや、他の開発方法と間違えられることも少なくありません。正しく理解し、その時々のプロジェクトに合わせ、最適なスタイルを見つけましょう。