💁‍♀️

駆動開発の様々な種類を言えますか?

2023/02/13に公開

概要

TDDやDDDは自分に馴染みがあったが、
その他の駆動開発にどんな種類があるかのか知らなかったのでまとめてみます。

そもそも駆動開発って何

起点 を明示した開発手法

TDD テスト駆動開発

テスト駆動開発 (てすとくどうかいはつ、英: test-driven development; TDD) とは、プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実装をとりあえず行なった後、コードを洗練させる、という短い工程を繰り返すスタイルである。
https://ja.wikipedia.org/wiki/テスト駆動開発

簡単に言うと、
先にテストを用意してから開発をすること。

BDD ビヘイビア駆動開発

ビヘイビア駆動開発とは、プログラム開発手法の一種で、テスト駆動開発から派生した物である
これから作成しようとするプログラムに期待される「振る舞い」や「制約条件」、つまり「要求仕様」に近い形で、自然言語を併記しながらテストコードを記述する。テストフレームワークのメソッド名も自然言語(英語など)に近い形をとっている。
https://ja.wikipedia.org/wiki/ビヘイビア駆動開発

簡単に言うと、
BDDはTDDを拡張した手法のことで、根本的にTDDとBDDは違わない。
TDDで伝わりににくい部分を言い換えたり、テンプレートを与えることでハードルを下げたのがBDD。

FDD ユーザー機能駆動開発

FDDは業界におけるいくつかのベストプラクティスを混合したものである。それらは全て、顧客にとっての機能価値(feature)という観点で駆動される。その主な目的は、実際に動作するソフトウェアを繰り返し、適切な間隔で提供することである。
https://ja.wikipedia.org/wiki/ユーザー機能駆動開発

簡単に言うと、
ユーザが使う機能を中心に設計や開発をすること。

MDD モデル駆動型開発

設計とアーキテクチャがそれぞれ独立して変更するための開発手法。ドメイン固有言語(domain-specific languag; DSL)を使ってシステムに依存しない設計を行い、プラットフォームに特化したモデルに変換する。

簡単に言うと、
ドメイン固有言語(DSL)で設計してから開発をすること。

DDD ドメイン駆動型開発

ドメインの専門家からの入力に従ってドメインに一致するようにソフトウェアをモデル化することに焦点を当てるソフトウェア設計手法である[1][2]。オブジェクト指向プログラミングに関しては、ソースコード(クラス名・クラスメソッド・クラス変数)の構造と名称がビジネスドメインと一致させる必要があることを意味する。
https://ja.wikipedia.org/wiki/ドメイン駆動設計

簡単に言うと、
ソフトウェア化する対象を抽出してから開発をすること。

まとめ

マイナーなものもあるかもしれませんが、様々な駆動開発が存在しますね。
気になったものを是非調べてみてください。

参照

https://atmarkit.itmedia.co.jp/ait/articles/1403/25/news033.html
https://qiita.com/muson0110/items/c15d6a0ba0582da204e1

Discussion