Technical Information

品質重視のアジャイル開発
~品質向上支援の取り組み~

hero_agile06.jpg

昨今、アジャイル開発への取り組みは、欧米のみならず日本においても一般的となりつつあります。一方、アジャイル開発特有のイテレーション(スプリント)単位でのリリースにおいては、品質面に対する配慮や担保まで手が回らず、従来型のウォーターフォール開発と比べてソフトウェア品質の低下を懸念する声も増えています。
本講演では、アジャイル開発における品質支援をテーマに、「品質向上」を考える上で重要な考え方などを交え、当社の支援事例を紹介します。


※この記事は、『ベリサーブ アカデミック イニシアティブ 2023』の講演内容を基にした内容です。

藤曲 勇貴

株式会社ベリサーブ
ITシステム事業部
エンタープライズ第二課
藤曲 勇貴 

アジャイル開発のプロセス

■アジャイル開発の特徴

アジャイル開発とウォーターフォール開発の違いで顕著なのは、そのプロセスです。ウォーターフォール開発では、一度進めた工程(企画→分析→設計→実装→テスト→リリース)は戻ることはありません。それに対しアジャイル開発では、システムの機能ごとに細かく工程を分けて実装していき、早期にリリースするとともに、その後も同様のプロセスを反復しながら開発を進めます(図表1)。他にも、「短時間で修正が可能になる」、「密なコミュニケーションによるフィードバックが得られる」といった特徴がアジャイル開発にはあります。

ウォーターフォール開発とアジャイル開発の違い

図表1:短期間のスプリントで要件定義→設計→開発→テスト→リリースを繰り返していく

これらの特徴からアジャイル開発は、いち早くリリースが求められ、また開発途中に仕様変更や追加機能が予想されるプロジェクト(例えばモバイルアプリなど)に適していると考えられます。逆に、あらかじめ実装機能が決まっており追加機能がない(リリース後の開発をしない)ようなプロジェクトはウォーターフォール開発が適していると言えます。ただし後者のようなプロジェクトであっても、工夫をすることでアジャイル開発を行うことは可能です。そして、この工夫を施したアジャイル開発を行える企業こそが、今後の世の中をリードしていくのではないかと考えています。

アジャイル開発における品質の考え方

アジャイル開発で品質保証活動をしていく中で、求められるマインドとはどのようなものでしょうか。

アジャイル開発に対する誤解は多く、「品質が上がる」、「ウォーターフォール開発の問題を全て解決できる」、「仕様書などのドキュメントを作らなくていい」、「大規模開発には向いていない」、「コストが抑えられる」といった認識は、いずれも早計と言わねばなりません。これらを勘違いしたまま開発を進めると、アジャイル開発、ウォーターフォール開発のどちらでもない開発プロセスに陥り、誰も幸せになれません。

またアジャイル開発を採用する理由として、「開発を迅速化したい」、「リリース速度を上げたい」、「コストを抑えたい」といった声をよく聞きますが、会社や組織内のスピードを上げること自体が目的となっている(ユーザー利益に直結していない)のであれば、それはアジャイル開発の本質から外れています。

システム開発に関わるメンバー全員が「より良いものをユーザーに提供すること」を常に意識することが、アジャイル開発ではより重要となってきます。

アジャイル開発における当社のテストプロセス例

■ベリサーブの関わり方

次に、事例をもとに、アジャイル開発における当社=ベリサーブの関わり方を紹介します。

一般的なアジャイル開発におけるプラクティスでは、QAエンジニアは開発と同等レベルのスキルを要求されます(例えば、開発者はデザインやQAも担当する)。そのため、当社のような第三者検証会社がアジャイル開発でのテスト工程に参画する場合、これまでとは異なる新たなテストプロセスが必要と考えます。そして当社は全ての工程をカバーするのではなく、あくまでも品質保証(主にテスト活動)を支援していきます。

図表2は、これまでのテストプロセスとアジャイル開発におけるテストプロセスをイメージ図にしたものです。

アジャイル開発における当社のテストプロセス例

図表2:アジャイル開発では、各フェーズを開発者とレビューを行いながら進めていく

既存のテストプロセスでは、テストの依頼を受けてから、計画、分析、設計、実行、報告、振り返りまでを時間をかけて、段階的に実施します。
アジャイル開発では、テスト実行している間に次の開発が進んでいきます。そこで、アジャイル開発でのテストでは、各フェーズを開発者とレビューをしながら進めていきます。いわゆるシフトレフト※1です。このプロセスで実施することにより、テストは約1カ月で完了します。また、慣れてきた現場であれば、キックオフからテスト実行までを最短3日で実行することも可能です。

※1 シフトレフトとは、ソフトウェア開発プロセスにおいて、品質保証やテスト活動を開発サイクルの早い段階から始める手法です。

■段階的な支援方法

ただし、それは「アジャイル開発なら3日でできる」という意味ではありません。テスト実行までを3日で達成するには、あくまでも下記(図表3)のフェーズを、お客様と共に段階的に支援することが条件となります。

テストプロセス支援におけるフェーズ

図表3:フェーズ1からいきなりフェーズ4に進むのではなく、段階的に行っていくことが大切

フェーズ1

ベリサーブの参画前です。開発チームが片手間にテストをしており、テストプロセスが存在せず、品質に不安がある組織です。

フェーズ2

立上期です。ベリサーブが参画し、最初はウォーターフォール型でテスト活動を行い、開発チームとテストチームを切り分け、開発者が開発に集中する環境を作ります。

フェーズ3

成長期です。フェーズ2までに実施したテストから、その組織に合ったテストプロセスを標準化し、ルールやインフラを整備します。このフェーズに至ると、初めてアジャイル開発でのテストプロセスで活動できるようになり、テストプロセスは1~2週間まで短縮できます。

フェーズ4

成熟期です。フェーズ3で標準化したテストプロセスやルール、インフラを強化し、より高い品質保証活動を行えます。この段階になると、テストプロセスは最短3日に短縮できます。

上記フェーズを段階的に実施していくことが大切であり、フェーズ1からいきなりフェーズ4を実施しようとすると、多くの場合は失敗することになります。

また、各フェーズ間の矢印部分では、開発チームとテストチームのコミュニケーションが重要となります。それは、この部分に課題が数多く存在するからです。コミュニケーションを密に取りながら、押さえるべきポイントを押さえ、推進することが成功する上で大切になります。

■支援効果 ~品質の成長曲線~

フェーズ1から4へと段階的支援を行うことで、アジャイル開発における品質は図表4のようなステップを踏んで向上できます。

段階的な支援の効果と品質の成長曲線

図表4:3つの段階を踏んで品質を成長させていくことができる

立上期では「品質の可視化」を行います。現在の品質レベルを確認し、今後どのような施策をするのかを明確にしていきます。成長期では、立上期で明確にした課題などに対して、どのようなプロセスで品質保証活動をするのかを決めます。その中で、バグトラッキングシステムやテスト管理ツールなどを用いて品質保証活動を効率的に行い、品質を向上させます。最後に成熟期では、さらなる品質向上の施策化を行います。

アジャイル開発における品質保証事例のご紹介

ここからは、当社のテストプロセスを使った品質保証事例を紹介しましょう。

■事例1 建設現場における施工管理システム

  1. ベリサーブ参画前の状況・課題
  2. 開発者による簡単な動作確認程度のテストのみ実施
  3. どうやってテストすれば良いのか分からない
  4. テストに関する文化やプロセスが存在しない

この案件では2つの異なるプロジェクトが同時並行で進んでおり(図表5)、テストチームが横断的に関与する体制が必要でした。さらに、テストが途切れることなく常に動いていたため、より効率的かつ生産性を意識したテスト活動を実施する必要がありました。

ベリサーブ参画前の状況

図表5:アジャイル開発で進行している2つのシステムを同時並行で検証していた

そこで、ベリサーブの参画時にテスト活動についてヒアリングを行い、開発者が行っていたテストをベリサーブの担当するフェーズ1からフェーズ2までの施策をまず行いました。

改善施策とフェーズ(事例1)

図表6:最初はウォーターフォール型でテストを行い、アジャイル開発でのテストプロセスを行うフェーズ3へ移行

改善施策の効果としては、テスト実行頻度の向上と、テスト対象システムの品質向上が挙げられます。フェーズ2の段階では月1回のテスト活動しか行っていない状態でしたが、段階的な支援によりフェーズ3に到達し、週1回のテスト活動を行えるようになりました。これにより、これまで以上の頻度(4倍)で不具合検出と改修を行うことが可能になり、テスト対象システムの品質向上を実現しました。

  1. 改善施策と効果
  2. テスト実行頻度の向上
  3. 参画直後:月1回のテスト活動
  4. 参画後期:週1回のテスト活動
  5. テスト対象システムの品質向上
  6. 実行頻度の向上に伴い、不具合検出度が向上

■事例2 銀行における勘定系システム

  1. ベリサーブ参画前の状況・課題
  2. 大規模開発かつ国内外多拠点・多言語でのプロジェクト
  3. 組織内に複数のQAチームが存在しており、各チームの得意分野別にQA活動を実施
  4. その中の勘定系システムは、これまで検証プロセスがなかった

こちらは銀行業務システムの案件になります。大規模開発かつ国内外多拠点・多言語のプロジェクトで、文化やロールの違いから決まったプロセスもなく、複数あるQAチームにそれぞれのQAプロセスがある状態でした。こうした体制の中、勘定系システムにおいて新規にQAチームを立ち上げることになりました。また、開発側がアジャイル開発を採用しているため、そのスピード感でテストを行うことが求められました。

改善施策とフェーズ(事例2)

図表7:フェーズ2から参画し、開発チームと共に品質プロセスを作り上げた

ヒアリング実施後、まず当社が得意とするウォーターフォール型の品質プロセスにより、フェーズ2で参画。そこからフェーズ3に進めるために、開発とワンチームで日々改善活動を実施しながら、この組織に合った品質プロセスを作り上げました。

改善効果としては、大規模アジャイルでのスピード感のある組織に対し、一緒に作り上げたプロセスでQA側もSoS(スクラムオブスクラム)※2を実施、スピード感をもった品質保証活動を行い、不具合を検出し、品質向上に寄与できました。また、プロジェクト管理ツールであるConfluenceやJiraを活用し、ステークホルダーにリアルタイムでプロジェクトの状況が閲覧できる環境を構築、情報の即時共有も仕組み化しました。

次に、日々のQA活動を遂行する中で培ったノウハウやナレッジをドキュメントとして明文化させ、開発チームや他のQAチームにも情報連携するなどの活動を行い、組織全体のQA文化の醸成にも貢献しました。結果として、自チームに閉じない、組織全体の品質向上につながりました。

  1. 改善施策と効果
  2. 大規模アジャイルでスピード感をもったQA活動を実現
  3. QAチーム内でもSoSを実施し、絶えず変化が続くテストへの要求に柔軟に対応
  4. プロジェクト管理ツール活用で、リアルタイムにテスト進捗を可視化し透明性を実現

おわりに

アジャイル開発における品質保証プロセスの重要性は日増しに高まっています。また、アジャイル開発においてはウォーターフォール開発とは品質保証プロセスが異なることから、各組織のアジャイル開発に適した品質保証プロセスが必要となります。当社では、今後もこれまで培ってきた品質保証のノウハウや事例から、各組織に合った品質保証プロセスを提案し、品質重視のアジャイル開発へのご支援を行っていきます。

この記事をシェアする

Facebook  Twiter