wordpress stats

ソフトウェア品質基準

Synergix Technologiesでは、開発するシステムが可能な限り最高の品質基準を満たすよう、常に最善を尽くしています。各部門において、品質を適切に管理・維持するために「ビヘイビア駆動開発(BDD)」プロセスを導入しています。

成熟した一般的なBDDプロセスは、主に以下の活動で構成されています。

  • ビジネス目標の理解
  • 機能の定義と図解
  • 実行可能な仕様書に基づく実例の作成
  • シナリオの自動化
  • 納品

これは直線的なプロセスではなく、プロジェクト全体を通して繰り返されるサイクルです。成熟したチームでは、各スプリント内のさまざまなタイミングで、これらの活動が並行して行われているのを目にすることでしょう。」

1 ビジネス目標の理解

ビヘイビア駆動開発(BDD)は、ビジネス上の利益と技術的な知見の両方を管理するソフトウェア開発プロセスです。顧客が具体的なシナリオを例に挙げてビジネスについて語ることは、ビジネスニーズを明確にし、不適切な仮説を特定し、あらゆる側面が網羅されているかを確認するための効果的な手法となります。これにより、その後のプロセス全体における欠陥や手戻りを防ぐことができます。また、要件定義(リクイアメント・ディスカバリー)の段階でユーザーエクスペリエンス(UX)の専門家が加わることで、将来的にシステムを利用するユーザーへの理解をより深めることが可能になります。

2 機能の定義と図解

SA(システムアドバイザー)、DEV(開発)、QA(品質保証)の各チームは、ビジネス要件を「機能」という形で表現します。その際、各機能の背後にあるビジネス上の価値や動機を深く理解すること(そしてチーム全体で共有すること)を特に重視しています。以下のように、シナリオ形式のストーリーを用いることで、ビジネス要件と提供すべき価値を明確にしていきます。

4a 300x111 - ソフトウェア品質基準

このような形式の機能定義は、通常、BA(ビジネスアナリスト)が顧客や開発チームと協力して作成します。作成された機能定義は、ドキュメントとしてプロダクトバックログに登録されます。

3 逆算によるアウトプットの把握

まず何よりも、その機能が最終的にどのように動作すべきかという点に注力します。例えば、オンラインで休暇申請を行う機能の場合、想定されるアウトプットは以下のようになります。


• 休暇申請フォームが人事部に提出される。<
• 休暇日数と休暇の種類が、メールで人事部またはチームリーダーに通知される。
• 該当する休暇種別の残日数が差し引かれる。

アウトプット(成果物)を明確にすることで、機能を確実に動作させるための取り組みに集中できます。このプロセスにより、開発フェーズの開始時に設定された条件を、当社のソフトウェアが常に満たしていることを保証します。

4 ビジネスプロセスとフローの探索・マッピング

アウトプットが明確になったら、チームはストーリーマッピングやプロセスマッピングなどの手法を用いて、システム内のフローを把握します。これにより、実用的な機能を最も迅速に提供する方法を特定し、重要なステップの見落としがないことを確実にします。

オンライン休暇申請機能のシンプルなフロー例は、以下のようになります。

4aa - ソフトウェア品質基準

フロー内の各アクティビティ(活動)ごとに、バリエーションや代替フロー、あるいは特殊なケースについての議論が行われます。例えば「休暇種類の確認」というステップについて掘り下げると、そのチェックが従業員区分(正社員、契約社員など)に関連していることや、産休などの特殊な休暇制度が紐付いていることなどが明らかになります。

4ab - ソフトウェア品質基準

5 Gherkin言語による機能の定義

特定の機能やストーリーを担当するチームメンバーが集まり、詳細な要件について協議します。この場には、通常、少なくともビジネス担当者(BA)、開発者、テスターが参加します。このセッションの目的は、チームメンバー全員が**ビジネスルールと機能の受入基準(Acceptance Criteria)を深く理解することです。また、後の開発作業を停滞させる原因となるような、それまで見落とされていた複雑性やリスクを能動的に洗い出す場でもあります。

受入基準を表現する際、多くのチームは以下のような有名な**「Given-When-Then(前提・操作・結果)」**形式を採用しています。

機能:オンラインでの休暇申請フォームの提出
事務作業を省き、時間を節約するため、
オフィスワーカーとしてオンラインで休暇申請を提出できるようにしたい。

シナリオ:十分な休暇残日数がある従業員
Given(前提): ジェイコブの「有給休暇」の残日数が21日である
When(操作): ジェイコブが5日間の休暇申請を作成する
Then(結果): 有給休暇の残日数が16日になる

6 自動テスト

ステップ5で作成された「実行可能な仕様書」に基づき、テストの準備が整います。この自動テストは、エンジニアや開発者、あるいはその両者が協力して実施します。いずれの場合も、自動化の作業は開発フェーズの可能な限り早い段階で開始され、通常は開発作業と並行して、あるいはその直後に実行されます。

7 納品 (Deliver)

ビヘイビア駆動開発(BDD)の実践における最終的な目標は、より価値の高い機能を、より早く、かつ頻繁なペースでビジネス現場に提供することです。BDDと自動化された受入基準を組み合わせることで、チームは「実際に納品され、動作が検証されたアウトプット」と「初期段階で議論された要件」との間に、明確な**トレーサビリティ(追跡可能性)**を確立できます。

8 受入基準の完了

受入基準(アクセプタンス・クライテリア)に定められた要件が満たされていることを証明するためには、自動テストの実施が不可欠です。言い換えれば、ソフトウェアがテストされ、受入基準をクリアするまでは、開発は「完了」したとはみなされません。
このように明確な目標に基づいた計画とテストを行うことで、スプリント終了後に修正が必要となる欠陥(バグ)の数を最小限に抑えることができます。その結果、開発者は新しい機能の実装に全力を注ぐことが可能になります。

9 回帰テスト(レジッションテスト)

回帰テストスイートとは、ソフトウェアに変更や修正を加えた後も、システム全体の正確性と正当性が維持されていることを確認するために設計されたテストセットです。
この回帰テストスイートは「機能」や「性能」ごとに体系化されているため、単なるテストコードに留まりません。システムが「何を行うのか」だけでなく、「どのようなビジネス目標を達成しようとしているのか」を記述した、生きた機能ドキュメント(仕様書)としての役割も果たします。