コードは完璧な場合もあれば、まったく役に立たない場合もあります。要件を正しく理解することは、要件が正しく実装されていることを確認することと同じくらい重要です。
作業中のコードがユーザーの要件に対応していることをどのように確認しますか?
コードは完璧な場合もあれば、まったく役に立たない場合もあります。要件を正しく理解することは、要件が正しく実装されていることを確認することと同じくらい重要です。
作業中のコードがユーザーの要件に対応していることをどのように確認しますか?
できるだけ早く、できるだけ頻繁にユーザーに表示します。
彼らが求めているものは、実際には彼らが望んでいるものではない可能性があります - そしてそれを発見する最善の方法は、完成する前であっても、あなたが持っているものを彼らに見せることです.
編集: はい、これは StackOverflow に関する質問に回答するためのアプローチでもあります:)
ユーザーが必要とする動作が存在することをアサートするテストを作成します。また、別の回答で述べたように、ユーザーから早い段階で頻繁にフィードバックを得ることができます。
AlbertoPLは正しいです:「ほとんどの場合、ユーザーでさえ彼らが何を望んでいるのかわからないのです!」
そして、彼らが知っている場合、彼らは解決策を念頭に置いており、単に問題を伝えるのではなく、その解決策の側面を指定します。
そして、彼らがあなたに問題を言った場合、彼らは共通の原因または共通の解決策を持っていることによってこれらが関連していることに気付かずに他の問題を抱えているかもしれません。
したがって、モックアップとプロトタイプを実装する前に、顧客がすでに持っているものの使用、またはスタッフがまだ手作業で行っていることを確認してください。
可能であれば、ユーザーに受け入れテストを書いてもらいます。これは、アプリケーションが正しく機能することの意味を理解するのに役立ちます。開発を、相互に構築する小さな増分に分割します。他の人が言っているように、これらを早い段階で(そして頻繁に)顧客に公開し、使用してもらいますが、受け入れテストも実行してもらいます。これらも、テスト対象のコードと並行して開発する必要があります。テストに合格したからといって、要件を完全に満たしているわけではありませんが(テスト自体が不足している可能性があります)、あなたと顧客はあなたが正しい方向に進んでいるという自信を得ることができます。
これは、コードを開発するときに顧客との大量のやり取りが報われる一例にすぎません。適切なコードを開発していることを最大限に保証する方法は、顧客に開発作業に参加してもらうことです。
ペルソナを試すことができます。システムを使用するサンプルユーザーのコホート。
彼らのニーズ、ウォンツを定量化し、彼らにとって重要なもののシナリオを作り上げます。そして、彼らがソフトウェアで成し遂げるために必要なこと。
最も重要なのは、ユーザー(ペルソナ)の目標が達成されていることを確認することです。
これが私が書いた投稿で、それをより詳細に説明しています。
作業中のコードがユーザーの要件に対応していることをどのように確認しますか?
このフォームに入力された質問の答えは「できません」です。
最良の方法は、最初の日からユーザーと協力し、プロトタイプを示し、フィードバックを継続的に取り入れることです。
それでも、最終的には、最初に議論され合意されたものに似たものは何もないでしょう。
彼らはまだ幸せではありませんが、あなたはできる限りのことをしたでしょう。
彼らが承認したドキュメントにない機能は、追加料金を請求できる変更要求と見なすことができます。あなたの責任を制限するために、あなたが見せるものすべてに署名してもらいます
多くの場合、実装と要件の間の調整を制御する開発方法を使用します。私にとって最善の方法は、「専門家の顧客」を巻き込んで、できるだけ頻繁に実装をインタラクティブに検証およびテストすることです.... そうしないと、あなたが言ったように、非常に美しいソフトは完全に役に立たない....
要件をサポートする回答を期待する単体テストを作成します。要件が一連の数値を合計することである場合、次のように記述します。
testSumInvoice()
{
// create invoice of 3 lines of $1, $2, $3 respectively
Invoice myInvoice = new Invoice().addLine(1).addLine(2).addLine(3);
assertTrue(myInvoice.getSum(), 6);
}
単体テストが失敗した場合は、コードが間違っているか、他の要件のためにコードが変更された可能性があります。これで、解決する必要がある 2 つのケースの間に矛盾があることがわかりました。テスト コードを更新するという単純な場合もあれば、要件でカバーされていない新たに発見されたエッジ ケースを顧客に返すという複雑な場合もあります。
単体テストを書くことの利点は、単体テストを書くのに問題がある場合は、要件を再検討する必要があるように、プログラムが何をすべきかを理解することを強制することです。
私は、コードが完璧であることに同意しません...しかし、それは実際の問題ではありません。設計やコーディングを行う前に、ユーザーが望んでいることを確認する必要があります。ユーザーに、「成功はどのように見えるか」、「システムが完成したらどうなると思いますか」、「それをどのように使用する予定ですか」と尋ねます。 '...そして、応答をビデオに録画したり、マインドマップを作成したり、ワイヤーフレームを作成したりして、彼らと一緒にレビューを行い、最も重要な側面を確実に捉えることができます. これらのアイテムを使用して、反復配信を検証することができます...ユーザーが時間の経過とともに心/ニーズを変更し、「それを手にした」(IKIWISI - 見ればわかる)...そして同じ方法で変更要求を記録します。
ユーザーと話し合ってすべてを正しく理解したとしても、ユーザーが間違っている可能性があります。ソフトウェアを使用するまで、彼らが求めていたものを望んでいなかったことはわかりません。最も確実な方法は、コードを書く前にユーザーが「試してみる」ことができるように、いくつかのプロトタイプを作成することです。ペーパープロトタイピングのようなものを試すことができます