アジャイル開発の品質管理技法(前編)
開発プロセスの特徴

2020年2月6日公開

"新技術の登場"や"市場の要求"が激しく変化する現在、ICTは情報システム部門だけのものではなくなってきています。
「技術や市場への機敏な反応が高収益やビジネス成功の条件である」と判断した事業部門が自らICTを企画、開発、運用する状況が進行しているためです。

アジャイル開発の特長

アジャイル開発の品質管理技法を考えるには、アジャイル開発の特長や(品質管理技法が確立されているとされている)ウォーターフォール開発との違いを踏まえておく必要があります。

まずは、アジャイル開発の特長について見てみましょう。




テクノロジーコラム「アジャイル開発とは(前編)」でご紹介したように、反復増加型開発であるアジャイル開発には以下の特長があります。

・より速いスピードでの提供
~ 正味現在価値の視点
・要求の変化に柔軟な対応が可能
~ 変動対応性の視点
・品質と顧客満足度の向上
~ リスク早期検知の視点
・開発者やチームの成長を促進
~ 学習の視点

これらの特長は、テクノロジーコラム「アジャイル開発とは(後編)」の最後に述べたように規模の経済からスピードの経済への変革、すなわち、変化を受入れるためのリードタイム短縮を目指すことによって得られるものです。

より速いスピードでの提供 ~ 正味現在価値の視点統計と統計的品質管理





短サイクルの反復増加型開発によって、要望の高い機能が反復ごとにリリースされます。要望から提供のスピードが速いため、利用したい機能をタイムリーに利用できます。提供ごとに機能を利用できるため価値の総和が最大化されます。

ウォーターフォール開発では機能が利用可能になるのは開発終了時ですが、アジャイル開発では開発中であっても段階的に機能を利用できます。このためアジャイル開発は、価値(機能の利用による便益の享受)の総量を最大化できます。
ウォーターフォール開発とアジャイル開発で、全ての機能を開発する工数が同じであれば、これは生産性の向上を意味します。

要求の変化に柔軟な対応が可能 ~ 変動対応性の視点





反復ごとに開発対象の機能を決定します。確定していない要望や変更の可能性が高い機能は、次回以降の反復で開発するかどうかが決定されるため、要求の変化に柔軟に対応できます。また、不必要な機能をつくることもありません。

品質と顧客満足度の向上 ~ リスク早期検知の視点





機能を一つ一つ順に利用可能な状態まで完成させます。要望の誤解、技術的な実現可能性や品質の検証が早期に実施されるため、故障も少なく満足度の高いソフトウェアが提供されます。

開発者やチームの成長を促進 ~ 学習の視点




機能を一つ一つ開発することにより設計、実装、テストのサイクルを繰り返します。また実装専任やテスト専任などの役割分担がありません。多様な作業を何度も体験することができるため“多能工化”、“技術力向上”、“士気の向上”など「開発者の成長」 を促すとともに、“プロセスの改善”、“マネジメント力の向上”など「チームの成長、学習」を促します。 また、学習の効果は開発者つまりつくり手だけにとどまりません。新しいつくり方のほかに新しいつかい方を見つける機会も増加します。そして、つくり手つかい手相互のインタラクションの増加を促します。

SoE領域からSoR領域へと広がるアジャイル開発

アジャイル開発は前述の特長によるメリット、その魅力によって広範に展開を続けてきました。
スピードが要求されるSoE領域からはじまり、そのSoEとの連携融合が進むSoR領域にも、SoEのスピードに追従する必要からアジャイル開発が展開しつつあります。




アジャイル開発の品質

しかし、アジャイル開発の展開が進みつつある中で、アジャイル開発の品質について不信や不安もあるようです。

  • アジャイルは速いが品質は悪い
  • 品質説明が出来ない

などの評判が品質不安を誘い、特に、可用性や高信頼性が強く求められるSoR領域への進展は遅れています。

発生しつつあるビジネス上の問題

品質不安からアジャイルの進展が遅れてしまうと、冒頭に述べたメリットを享受できなくなります。
そしてその結果、競合他社との競争優位性を得られなくなってしまうのです。




このような評判や不安を引き起こしてしまっているのはなぜでしょうか?
アジャイル開発の品質はどのように管理されているのでしょうか?

品質管理

では、品質管理とはどのようなものかを見てみましょう。あわせて品質保証も。

学習とインタラクション

下の図は、さきほど提示したアジャイルの特質の1つ「学習」です。




反復増加型開発によるつくり手とつかい手のインタラクションは、品質を高めるきっかけです。




品質管理と品質保証、さらには品質マネジメントと、ISOに明確な定義はあるようですが、定義が広かったり被っている日本流の概念も古くから存在します。

品質管理と品質保証

ここでは、品質管理と品質保証を分けて考えます。

  • 品質管理は、出来栄えをみながらつくり方を微調整すること、それを繰り返すこと。
  • 品質保証は、お客様や市場の求める品質を会社として請け合うこと。
    (ですから、品質保証にはバグが無いこと以外に、求められているものを提供するということも含みます)
品質管理(QC:Quality Control) 品質保証(QA:Quality Assurance)

ソフトウェアを目標の品質にするための諸々の活動のこと

以下の活動を反復的に実施することによって実現される。

  1. ソフトウェアの開発(および改修)
  2. ソフトウェア開発メトリクスの測定
  3. 試験等による品質特性の測定
  4. ソフトウェア開発プロセスの微調整(1.へフィードバック)

お客様の求める品質を会社として請け合うための諸々の活動のこと

以下の活動を反復的に実施することによって実現される。

  1. 目標の品質(=お客様が求めるであろう品質)を設定
  2. 品質管理をともなったソフトウェア開発
  3. 品質保証部門の検証により、お客様、市場への提供可否判断
  4. ソフトウェアをお客様、市場へ提供、反応を採取(1.へフィードバック)

ウォーターフォール開発の品質管理と品質保証




ウォーターフォール開発の場合は、凍結された要求の正確な実装・提供を狙うので、初期要求との乖離を縮小する手段がなく、本質的に乖離を生みやすいといえます。
顧客から開発への要求伝達時にも、正確な伝達が困難です。
また、仕様凍結されているので、品質保証の活動チャンスが少ないといえます。
結果的に、ウォーターフォール開発の品質保証は品質管理の領域とほぼ同一になってしまいそうです。

アジャイル開発の品質管理と品質保証




アジャイル開発の場合には、少なくとも反復ごとには要求の調整が可能です。このため要求の提供のギャップを最小化するためのチャンスが幾度かあります。また、最小化のための反復である。ともいえそうです。

続いて、中編では、アジャイルソフトウェア開発の品質管理技法について(上図の左側の領域を中心に)述べます。

   

執筆

  • 坂田 晶紀(さかた あきのり)

    株式会社富士通ソフトウェアテクノロジーズ Agile⁺開発センター
    ソフトウェア開発者、中小企業診断士(Registered Management Consultant)

    メインフレームOS、主にシステム資源最適化プログラムの開発に従事。
    その後、WEBアプリケーション開発業務に携わり、2002年からアジャイル開発を実践。
    アジャイルソフトウェア開発の品質管理、開発管理、組織マネジメントを中心に、約1,000の職場をコンサルティング。

   

テクノロジーコラム一覧

ページの先頭へ


前編Top
前編メインビジュアル NEW
前編 SoE領域からSoR領域へと広がるアジャイル開発
前編 アジャイル開発の品質
前編 アジャイル開発の品質管理と品質保証
前編 ウォーターフォール開発の品質管理と品質保証
前編 より速いスピードでの提供 ~ 正味現在価値の視点
前編 品質と顧客満足度の向上 ~ リスク早期検知の視点
前編 学習とインタラクション 1/2
前編 学習とインタラクション 2/2
前編 発生しつつあるビジネス上の問題
前編 要求の変化に柔軟な対応が可能 ~ 変動対応性の視点
前編 開発者やチームの成長を促進 ~ 学習の視点