ビヘイビア駆動開発-はじめに
ビヘイビア駆動開発(BDD)は、もともとテスト駆動開発(TDD)から生まれたソフトウェア開発プロセスです。
BDDの進化を担当するDanNorth氏によると、「BDDは複数のレベルの例を使用して、重要なソフトウェアを提供するための共通の理解と表面的な不確実性を生み出しています。」
BDDは、例を使用して、開発に関与するすべての人が読みやすく理解できる言語で記述されたシステムの動作を説明します。これらの例には以下が含まれます-
実行可能な仕様に変換されます。
受け入れテストとして使用されます。
BDD –主な機能
ビヘイビア駆動開発は-に焦点を当てています
ビジネス価値のある製品を提供することを目的として、ソフトウェア開発者、ビジネスアナリスト、および利害関係者にソフトウェア開発で協力するためのコミュニケーションを促進する共有プロセスと共有ツールを提供します。
システムがどのように実装されるべきかではなく、システムが何をすべきか。
読みやすさと視認性を向上させます。
ソフトウェアの動作だけでなく、顧客の期待を満たしていることも確認します。
BDDの起源
欠陥が適切なタイミングで検出されず、検出された時点で修正されない場合、欠陥を修正するためのコストは何倍にも増加します。次の例を考えてみましょう。
これは、要件が正しく取得されない限り、後の段階で要件を誤解したことに起因する欠陥を修正するのに費用がかかることを示しています。さらに、最終製品は顧客の期待に応えられない可能性があります。
時間の必要性は、次のような開発アプローチです。
要件に基づいています。
開発全体の要件に焦点を当てています。
要件が満たされていることを確認します。
上記の要件に対応できる開発アプローチはBDDです。したがって、行動主導型開発-
システムのさまざまな予想される動作の例を導き出します。
ビジネスドメインの用語を使用した言語で例を記述できるため、顧客を含む開発に携わるすべての人が簡単に理解できます。
会話を通じて、顧客と随時承認された例を取得します。
開発全体を通して、顧客の要件(例)に焦点を当てます。
受け入れテストとして例を使用します。
BDDプラクティス
BDDの2つの主な慣行は次のとおりです。
例による仕様(SbE)
テスト駆動開発(TDD)
例による仕様
例による仕様(SbE)は、会話の例を使用して、ビジネスルールと構築するソフトウェアの動作を示します。
例による仕様により、製品の所有者、ビジネスアナリスト、テスター、および開発者は、ビジネス要件に関する一般的な誤解を排除できます。
テスト駆動開発
テスト駆動開発は、BDDのコンテキストで、例を人間が読める実行可能な仕様に変換します。
開発者は、これらの仕様をガイドとして使用して、新しい機能の増分を実装します。これにより、無駄のないコードベースと一連の自動回帰テストが実現し、ソフトウェアの存続期間を通じてメンテナンスコストを低く抑えることができます。
アジャイルBDD
アジャイルソフトウェア開発では、保留中の仕様について共通の理解を得るためにBDDメソッドが使用されます。
次の手順はアジャイルBDDで実行されます-
開発者と製品所有者は、プレーンテキストエディタで保留中の仕様を共同で作成します。
製品の所有者は、システムに期待する動作を指定します。
開発者
これらの動作の詳細を仕様に入力します。
システムの理解に基づいて質問します。
現在のシステムの動作は、新しい機能が既存の機能のいずれかを壊すかどうかを確認するために考慮されます。
アジャイルマニフェストとBDD
アジャイルマニフェストは次のように述べています-
私たちは、ソフトウェアを開発し、他の人がそれを行うのを助けることによって、ソフトウェアを開発するより良い方法を発見しています。この仕事を通して、私たちは価値に到達しました-
Individuals and interactions −プロセスとツールについて
Working software −包括的なドキュメント
Customer collaboration −契約交渉について
Responding to change −計画に従うこと
つまり、右側のアイテムには価値がありますが、左側のアイテムには価値があります。
BDDは、次のようにアジャイルマニフェストに合わせます。
アジャイルマニフェスト | BDDアライメント |
---|---|
プロセスとツールを介した個人と相互作用。 | BDDは会話をすることです。 |
包括的なドキュメント上で動作するソフトウェア。 | BDDは、ビジネス価値のあるソフトウェアを簡単に作成できるようにすることに重点を置いています。 |
契約交渉をめぐる顧客のコラボレーション。 | BDDは、開発が進むにつれて顧客と継続的にコミュニケーションをとるアイデアに基づくシナリオに焦点を合わせています。それはいかなる約束にも基づいていません。 |
計画に従った切り替えへの対応。 | BDDは、変化の吸収を促進する継続的なコミュニケーションとコラボレーションに重点を置いています。 |