システムやソフトウエア開発は、従来のウォーターフォールモデルのほか、2000年代以降、agileモデルが導入されています。
agileモデルは、ひとつずつ工程を完了して次に進むウォーターフォールモデルと違って、短い開発単位で実装からテストなどの工程を反復し、徐々に進めるという方法です。
従来の開発方法と比べて、大幅に開発期間が短くできる取り組みが近年注目されており、競争が激しい分野では採用する例が増えています。
そこで今回は、agileループを導入することで得るリスクの最小化や概要についてご紹介いたします。
agileとは
agile(以下「アジャイル」と記載します)とは、システムやソフトウエア開発手法のひとつで、素早い・機敏と表現されます。
2001年にまとめられた「アジャイルソフトウエア開発宣言」は、ソフトウエア開発とそれに基づく12の原則を定義しており、アジャイル開発の公式文書として有名です。
アジャイルは、仕様や設計の変更があるという前提で、初めに厳密な仕様は決めずにおおよその仕様書をもとに開始し、小単位で実装とテストを重ねる手法です。
顧客に対して早い段階で経過途中の成果を継続的にリリースし、必要な工程を実施することで、仕様の見直しや追加・変更を繰り返します。
アジャイルは機能別に実装とテストを繰り返し、効率的で素早く柔軟性があるため、近年注目を集めています。
アジャイル開発の流れ
アジャイルの色々な開始方法の中から、期間短縮を可能にする流れを確認します。
リリース
リリース計画は、新しいソフトウエアや新しい機能の実装に取り組むとき、おおよその仕様と要件を定義することです。
顧客とエンジニアの少数精鋭でチームを作り、計画時におおよその仕様と要件を決めます。
計画段階では厳密に仕様を決めないので、不具合などの問題に迅速に対応することで、柔軟に顧客の要望に応えることが可能です。
全体を2週間程度で処理が可能な範囲に区分し、優先順位や着手範囲を決め、2週間の期間内で決められた範囲の実装とテスト、リリースを行います。
リリースできた機能と業務プロセスで残っている範囲を考慮し、次に着手する区分の優先順位を決め、実装・テストを繰り返し全体の完成度を高めます。
イテレーション
アジャイル開発で、イテレーションとは反復と表現され、リスクを最小化する手法のひとつです。
リリースでおおよその仕様と要件を決め、優先度の高い順に実装・テストを反復しリリースします。
小さく区切った範囲のイテレーションを1~2週間ごとにリリースと反復を実施し、不具合の修正やテストなど、細かい工程を繰り返し行います。
開発プロセスをイテレーションごとに区切るため、基準をクリアするスピードが速く、柔軟性の高い対応が可能になるのです。
アジャイル開発のメリット・デメリット
アジャイル開発のメリットやデメリットも、工程や課題を理解するために必要です。
メリット
アジャイル開発のメリットは、不測の事態が発生しても迅速かつ柔軟に対応できるため、仕様要件の変更が必要な場合でも、開発スピードを落とさずにすみます。
小さい枠組みで計画から実装・テストがループするので、問題発生時は一定範囲内を戻るだけで、修正にかかる工程が小さくすみコストカットできます。
計画段階では、おおよその仕様と要件が決定するので、開発途中に顧客の要望に応じて仕様の見直しや、改善をすることが可能です。
リリース計画とイテレーションで構成されたアジャイルは、俊敏かつ柔軟にニーズに対応できるため、高い顧客満足度が得られます。
デメリット
アジャイル開発のデメリットは、厳密に仕様や要件を決めないため、方向性のブレや進捗状況の把握、コントロールが難しくなることです。
計画途中に行われる見直しや改善の繰り返し、実装・テストのループで変更や追加可能な状態は、当初の構想からズレが生じる可能性も否めません。
最初に設計や計画スケジュールを決定する従来の方法と異なり、アジャイルは仕様や要件ごとにおおよそ決めるため、管理が難しいという問題が生じます。
チームごとに小さい区分でアジャイルループを導入することは、全体を把握できない要因につながり、納期に間に合わなくなるという事態もあり得ます。
問題回避するには、高い技術スキルと全体像を掌握できる対応力、コミュニケーション能力が必要です。
まとめ
市場競争と共に様々な技術が登場している昨今、常に新しい方法を模索し、検証する必要があります。
アジャイルループの導入は、仕様の変更・追加に対して柔軟かつ迅速に対応できるという利点があり、変更が多く発生する可能性があるプロジェクトに適しています。
短いスパイラルで段階的に優先すべき箇所から始め、効果を確認しつつより良い機能を追求できるので、これまでとは違った展開が可能です。
システムやソフトウエア開発は、従来の方法や注目度が高いアジャイル、それぞれのメリットやデメリットを理解することで、業務効率化が図れるでしょう。