機能豊富なアプリケーションの開発では、機能仕様の策定にもかなりの時間がかかる。特に、画面にたくさんのボタンが置かれていたり、いくつもの画面を並行して操作できるような、操作性の複雑なアプリケーションになると、ユーザインターフェースの機能仕様をまとめるだけでも、極めて大変な作業となる。 顧客からの要求仕様では、画面のレイアウトと、基本的な操作の手順が示される。開発者は更に、顧客が想定していなかった例外的な操作や、いくつかの機能を組み合わせた複合的な操作をした時の挙動についても、明確に洗い出して、機能仕様としてまとめなくてはならない。 考えうるユーザ操作の組み合わせは膨大な数に上るため、機能仕様の策定には時間がかかる上、思考も混乱しがちだ。たとえあらゆるケースを想定して挙動を定めたつもりでも、矛盾や洩れのある仕様になってしまうことも多い。このような不備は、テストになってから不可思議な動作をするこ