テスト駆動開発は、プログラム仕様を定義するためのテストを記述することです
仕様を定義するためのテストを記述しないでください。テストの説明、ユーザーストーリー、機能の説明は、「枯れ木」の意味での仕様です。
復習すると、TDDプロセスの概要は次のとおりです。
- 機能の観点からプロジェクトを定義する
- ユーザーストーリーを使用して、各機能の利害関係者、行動、目標を説明する
- テストの説明を使用して、ユーザーストーリーに関連付けられた予想される条件、トリガーイベント/条件、および動作/結果を指定します[これで「仕様」が完成します]
- 反復ごとに一連の機能を選択します。反復は短くする必要があります[簡潔にするため、計画と推定のステップは省略しています]
- 機能のテストをコーディングします(失敗しますが、テストをコーディングするためにAPIを決定する必要がありました)。
- テストに合格するために十分な機能を実装する
- 必要に応じてコードをリファクタリングする
- 機能が完了するまで次のテストを繰り返します
- 反復が完了するまで次の機能で繰り返します
- プロジェクトが完了するまで次の反復で繰り返す
設計、アーキテクチャ、サポートドキュメントなど、どれを選択するかはTDDの一部ではありません。あなたが読むことができるいくつかの実用的な「ベストプラクティス」がありますが、それらはあなたのものではなく、他の誰かのワークショップでの「ベスト」プラクティスであることを覚えておいてください。
重要なのは、相互理解のために、顧客と開発者が機能を考え出し、ストーリーとテストの説明を一緒に書くことです。
だから、それが邪魔にならないで、元の質問は:
TDDにおけるソフトウェアアーキテクトの役割は何ですか?
そして短い答えは:
今までと同じ、今までと同じ。-デビッド・バーン
編集:長い答えは次のとおりです。建築家は、必要に応じて、プロセス全体を通じて通常の先見の明のある/調査官/刺激/サポート/バックストップの役割を果たします。
編集2:申し訳ありませんが、サブ質問のポイントを逃しました!誰もが仕様を書く責任があります。必要に応じてアーキテクトを含むすべての開発者と顧客。開発者はテストもコーディングします。