これからは、コレ!旬なIT技術やこれから主流となりつつあるIT技術に関する情報をご紹介します。

2010年11月01日

刻々と変化するシステムへの要求を受け入れながら、迅速なソフトウェア開発を実現するアジャイル開発

アジャイル開発とは

アジャイル開発とは、迅速・俊敏にソフトウェアを開発するための方法論の総称です。アジャイル開発では、短期間の繰り返し開発を何度も行うことで、リスクを最小化します。そして、システムへの要求の変化や顧客からのフィードバックを受け入れることに対しても、柔軟に対応していく考え方です。

従来の開発方法との比較

従来より標準的に利用されてたウォーターフォール型の開発プロセスでは、プロジェクトの計画を重視します。分析(要件定義)・設計・開発・テストといった各フェーズにおいて、成果物を明確に定義し、その成果物に基づいて後工程の作業を順次行っていきます。
それに対してアジャイル開発では、繰り返し(イテレーション)という単位で、ソフトウェアの開発を短期間に何度も繰り返しを行うことで、リスクを最小化します。実際に動くソフトウェアを出来るだけ早い段階から作成し、顧客と一緒になり評価することにより、要求の変化に対しても、迅速に適応していく事を前提とした開発手法です(図1参照)。

図1:ウォーターフォール型開発とアジャイル開発の比較
図1:ウォーターフォール型開発とアジャイル開発の比較

アジャイル開発の手法

アジャイル開発の手法には複数の開発手法があり、それぞれに特徴があります(表1参照)。

表1.代表的なアジャイル開発手法
XP(eXtreme Programming) ・ソフトウェア開発に注目した方法論
・エンジニアリング手法としてのプラクティスが中心
・人同士のコミュニケーションに注目している
スクラム ・プロジェクトマネジメントに特化した方法論
・特定のエンジニアリング手法は含まれていない
・実装予定の機能や改善点のリスト(バックログ)を作成し、短期間の開発サイクル(スプリント)をチームで回す
リーンソフトウェア開発 ・ビジネス価値に注目した方法論
・製造業を中心に展開されているリーン生産方式の考え方をソフトウェア開発に適用
・ムダの排除を中心とした原則と、原則を具現化するための思考ツールからなる

これらの開発手法には、アジャイル開発を実現するためのプラクティス(実践方法)が提唱されています。

【アジャイル開発のプラクティスの例】

  • 繰り返し開発、スプリント【XP、スクラム】
    短期的プロジェクトの目標を明確化して共有することにより、プロジェクトメンバーの集中力を維持
    繰り返しを行いながら目標を修正することにより、プロジェクトのリスクを回避
  • バックログ【スクラム】
    プロダクトバックログ
    製品開発に必要なタスク一覧を作成し、優先順位をつけることで、仕様や要求の変化に追従する
    スプリントバックログ
    決められた一定の期間(スプリント)で行うタスク一覧を作成し、スプリント期間中は変更を受け入れないことで、タスクの遂行に注力し、生産性を高める
  • テストファースト、テスト駆動開発【XP】
    プログラムとして動くテスト・コードをあらかじめ作ることにより、開発・テストのリズムを作ると共に、開発者の生産性、コードの品質を高める
  • 常時結合(継続的インテグレーション)【XP】
    プロジェクトの早い段階から、システム全体の統合テストを継続的に繰り返すことにより、手戻りをなくす

さらに、テスト駆動開発や常時結合などプラクティスを実現する際には、開発ツールをチーム全体で活用することで、さらに効率的にアジャイル開発へ取り組むことが出来ます。例えば、アジャイル開発を支援する開発環境として、テスト駆動開発をサポートする単体テストツールや常時結合を実現するサーバーがあります。

アジャイル開発の適用について

ウォーターフォール型の開発のプロジェクトにおいても、アジャイル開発のプラクティスを導入することが可能です。システム開発の特性に合わせて、効果の出やすいプラクティスを選択して取り入れる事により、プロジェクトのなるべく早い段階でリスクを回避し、より効率的な開発を行うことが出来ます。
ただし、アジャイル開発を大規模開発プロジェクトへ全面適用することの難しさや、開発期間に変更を受け入れることを前提とした受発注側双方でメリットのある契約か可能かどうかについては、今後の課題とされています。

 

2010年11月
 

ITの可能性が満載のメルマガを、お客様への想いと共にお届けします!

Kobelco Systems Letter を購読