これは私が計画したよりも長いことが判明しました(コメントとして開始されました)が、追加された長さ/詳細が役立つことを望み、それらが正当化されることを見つけます。
アジャイルはCRUDアプリに固有のものではありません
アジャイルに関する文献のほとんどは、ユーザーが舞台裏で何が起こっているかをかなり認識しているCRUDタイプのビジネスアプリケーションに偏っているようです。(書かれているコードのほとんどはおそらくこのクラスに属しているため、それは問題ありません。)
これは、このタイプのわかりやすいサンプルを作成する方が簡単だからだと思いますが、方法論がそうした種類のシステムを対象にしているからではありません。それほど簡単ではない例を作成すると、読者がアジャイルの概念について読者に教えることになっているときに、読者が例を理解しようとして動けなくなる危険があります。
ユーザーストーリー!=要件
このタイプのアプリケーションでは、ユーザーストーリー(要件)と開発タスクの関係はほとんど単純です。ユーザーストーリーをいくつかのタスクに分割するだけです。
ユーザーストーリーは要件と同じではありません。確かに、要件がどの程度「高レベル」であるかに応じて、いくつかの重複がありますが、一般的には同じではありません。私は以前のマネージャーの多くが陥った同じ落とし穴に陥っているという印象を受けます。ユーザーストーリーを単に「要件」の同義語として考えることです。 SVNの観点から考える。(それらは、悪い開始前提のために問題に遭遇します。)
私見、要件とユーザーストーリーの主な違いは、要件が特定のシステムコンポーネントの動作方法を詳細に指定することです。それらは、入力、出力、仮定/前提条件、発生する可能性のある例外などを含む仕様です。システムが何をするかに焦点を当てています。
OTOH、ユーザーストーリーは、システムコンポーネントの詳細な動作仕様を作成しようとせずに、エンドユーザーに期待される結果に焦点を当てています。期待されるユーザーエクスペリエンスに焦点を当てています。
かつてこれが私のチームが採用したプラクティスでしたが、ユーザーストーリーをタスクに分解することでした。あなたのタスクはあなたが望む/必要とする特定または曖昧なものかもしれませんが、それらはストーリーを完了状態にするために行われた実際の作業の進行状況を示すためのものでした。
例
チームの全員が作業の重複を避けるためにどのTCに取り組んでいるかを認識できるように、ユーザーがテストケースを自己割り当てする必要があった数年前に働いていた米国を大まかに思い出します。UIは(n内部)Webアプリケーションでした。ユーザーはボタンを見ただけですが、ストーリーはいくつかのタスクに分割され、いくつかの技術的な実装の詳細などが含まれていました。
ユーザーの可視性
しかし、ほとんどのコードがユーザーに直接見えない複雑な処理を処理しなければならない別のタイプのアプリケーションがあります。
何らかの方法でユーザーに見えるようにすることは可能ですか?
GPSを検討してください。ターンを逃した場合、実際のルートの再計算プロセスは表示されませんが、ユーザーには有用なフィードバック(「再計算中...」など)が表示されます。
コンパイラは、警告またはエラーを表示したり、ユーザーに新しいものが追加されたことを確認するためにGUIに新しい設定/オプションを含めることができます。コンパイラのユーザーはプログラマーになると思いますか?新しい標準のサポートが追加されないでしょうか?
新しい標準をサポートすることはありそうになりながら、機能レベルとユーザーストーリーに分解する必要があるでしょう、あなたが作っていてください、少なくともいくつかのケースでは、あなたがあなたの代わりに機能を使用しなければならないときの話を使用しようとしていない、ということ?
自動車での画像分析は、自動車事故で終わる可能性が減少したことをユーザーに知らせる方法で表現できます。例えば:
自動運転車の乗客として、認識されていない物体に衝突して事故を引き起こす可能性ができるだけゼロに近くなるように、私はより安全に旅行できるようにする必要があります。
その米国は、セキュリティ、安全性などを含む機能要件と非機能要件の組み合わせを使用して、通常指定しなければならないものを高レベルでキャプチャします。
ただし、要件はシステムに関するものである場合があります。例えば:
abc
コンポーネントの関数A
は、ゆっくりと動くオブジェクトをより適切に検出するために、画像比較アルゴリズムで許容しきい値を小さくする必要があります。
私にとって、これは簡単だろうタスク何かのよう題した私は上記のユーザーストーリーの下で、:機能の低下の許容A.abc
し、それに他の関連する詳細情報が含まれています。
流体シミュレーションシステムの場合、理にかなっている場合は、システムが実行しているバックグラウンドタスクに関するフィードバックを提供するプログレスバーを使用することもできます。(ユーザーに何かを知らせる方法は常にありますが、スパムにならないようにしたい場合があります。)
あなたが言及した特定のドメインについて十分に知らないので、より良いおよび/またはより現実的な例を考え出すことができますが、ここでテイクアウトがある場合は、目に見えないものについてユーザーフィードバックを提供するさまざまな方法を使用できることですシステムが実行している可能性があります。つまり、見えないものをもう少し見えるようにする方法があるかもしれません。(たとえあなたの努力などによってシステムのパフォーマンスがどれだけ速くなったかを文書化した一連のリリースノートを書くことに要約したとしても)
ストーリーとタスクの関係
ここでは、タスクとユーザーストーリーを関連付けるのが非常に難しくなる可能性があります。
私たちのアプローチは、ユーザーのストーリーを、リクエストが何であるか、なぜ行われたのか、米国を「完了」と見なすために真実である必要があるものに焦点を当て続けることでした。どのようには常に米国の除外と開発者(複数可)に残っていました。
開発者は、米国で説明されている問題を、彼らが取り組む一連のタスクに分解します。
これは、ほとんどの場合、バックエンドのサーバー側のプログラミングを行った人としてこれを言っています。
何をする必要があるかにもよりますが、AJAXを使用して単純な「読み込み中...」のアニメーション/ gifを表示し、ユーザーが間違った印象を与えずに他の何かが完了するまで少し待つ必要があることを認識しました。時にはそれはこれほど簡単でした。このためのタスクが適切です。
異なるパラダイム、実践、および経験
この問題を克服するためのテクニックはありますか、それを受け入れてそれを最大限に活用しなければならないのでしょうか?
パラダイムシフトを受け入れ、練習し、経験を積んだだけでなく、おそらく言うまでもありません。私はよく、プロセスを通してショートカットをとろうとしている人を見ました。特にあなたが始めているならば、私はそれに対してアドバイスをしたい。経験を積むにつれて、ある程度の柔軟性を持たせることができますが、自分自身を損なうことは避けてください。
以前の言い回しを考えると、あなたはまだ物語を「改名された要件」であるかのように考えていますが、これは間違った仮定だと思います。これは、アジャイルと非アジャイルのアプローチの根本的な違いに関するより深い問題の症状だと思います。
第二に、アジャイルはウォーターフォールと比較してパラダイムシフトであるということを受け入れるべきだと思います。つまり、プロセスには同様の目標がありますが、それらは非常に異なる方法で実行されます。(SVN対Gitを考えてください。それが役立つ場合。)
要件とユーザーストーリーの概念的な違いについての現在の理解を改善し、それらが同じものではないことを受け入れてください。
スプリントから学ぶ-回顧
私が十分に強調できないのは、各スプリントの終わりにスクラムマスターと開発者が回顧することです。それは彼らが正直に/透明な方法で「うまく行った」または「うまくいかなかった」ことを議論する場所であり、「うまくいかなかった」ポイントに対処するために次のスプリントにどのような実行可能な変更が実装されるか。
これにより、お互いの経験から適応し、学ぶことさえできました。それを知る前に、チームの速度の一般的な一貫性によって測定されるように、大幅に改善しました。