Saya punya dua cerita (saya tahu mereka kehilangan bagian manfaatnya)
- Sebagai Pengguna Manajemen Kredit, saya dapat melihat perbedaan penggajian saat ini dan sebelumnya untuk Kantor.
- Sebagai Pengguna Manajemen Kredit, saya dapat menerima email yang berisi PDF dari perbedaan gaji saat ini dan sebelumnya untuk Kantor.
Keduanya terkait karena mereka akan memiliki kriteria Permintaan / Filter yang sama. Satu-satunya perbedaan adalah bahwa dalam cerita "Tampilan", hasilnya ditampilkan kepada Pengguna dan dalam cerita "Email", hasilnya ditulis ke PDF yang diemailkan ke Pengguna.
Saya berjuang dengan pemisahan aspek umum dari dua cerita ini atau jika saya harus melakukannya.
Misalnya, keduanya akan memiliki kueri yang sama, apa yang mereka lakukan dengan hasil berbeda.
Haruskah saya memisahkan pertanyaan menjadi cerita lain yang murni teknis?
Pembuatan PDF dan pengiriman email harus dilakukan secara offline, haruskah itu menjadi cerita teknis?
Saya bisa melihat memecah dua cerita menjadi 2 cerita fungsional dan 2 cerita teknis.
Sebagai Sistem, saya dapat menghitung perbedaan gaji saat ini dan sebelumnya untuk Kantor.
Sebagai Pengguna Manajemen Kredit, saya dapat melihat perbedaan gaji saat ini dan sebelumnya untuk Kantor.
Sebagai Sistem, saya dapat membuat dokumen PDF tentang perbedaan gaji saat ini dan sebelumnya untuk Kantor.
Sebagai Pengguna Manajemen Kredit, saya dapat meminta untuk menerima email yang berisi PDF tentang perbedaan gaji saat ini dan sebelumnya untuk Kantor.
Masalahnya saya terus kembali ke adalah bahwa 4 cerita tidak independen dan tidak "mengiris kue".
Jadi saya tidak yakin bagaimana menghadapi keduanya.
sumber
Jawaban:
Cerita Pengguna bukan spesifikasi sistem atau persyaratan fungsional. Sebaliknya, mereka adalah awal dari percakapan yang dapat mengarah pada spesifikasi atau persyaratan tersebut.
Oleh karena itu, saya berharap ada tumpang tindih dalam implementasi sistem. Cerita Pengguna tidak dimaksudkan untuk menggambarkan tumpang tindih fungsional atau untuk menghilangkannya. Tujuan dari User Stories adalah untuk menangkap harapan fungsional dari sudut pandang pengguna, bukan untuk menggambarkan detail implementasi.
sumber
Jangan: Coba dan pisahkan ceritanya, Lakukan satu cerita lalu yang lain.
Lakukan: Pastikan tim pengembang menyadari cerita kedua.
Masalah dengan mencoba merencanakan tugas-tugas terperinci dan menyusun model generik yang dapat menangani keduanya dengan cara yang elegan adalah sulit.
Tujuan dari cerita pengguna adalah untuk menyelesaikan sesuatu. Elegan adalah tujuan sekunder dan harus diserahkan pada refactoring.
Jelas itu sangat menjengkelkan jika Anda mengambil ini secara maksimal dan tidak memberi tahu siapa pun tentang sepuluh tugas serupa lainnya yang perlu dilakukan, tetapi juga benar-benar dapat dibayangkan bahwa tugas kedua atau ketiga tidak terpikirkan sampai yang pertama selesai. Jika Anda ingin merencanakan semuanya, pergilah dengan air terjun.
sumber
Dalam perjanjian kekerasan dengan Robert Harvey, tujuan cerita pengguna adalah untuk memahami apa yang harus dapat dilakukan oleh pengguna. Saat Anda melakukan perawatan, pelanggan memahami dan peduli tentang kisah pengguna, tetapi pengembang sedikit lebih peduli. Setelah Anda mengajukan cukup pertanyaan untuk memahami dan memperkirakan pekerjaan, Anda dapat membuat tugas untuk mendukungnya.
Dalam kasus khusus ini, Anda bisa membuat tugas yang memungkinkan inti dari kedua cerita pengguna yang akan dilakukan bersama dengan apa pun yang Anda atasi terlebih dahulu.
Hal-hal penting untuk ditambahkan ke kisah pengguna adalah:
sumber
Sebenarnya, User Stories adalah janji percakapan untuk memahami hasil yang diinginkan.
Misalnya, mengambil kisah pengguna kedua Anda
Pikirkan hal-hal berikut:
Saat mendekati pemisahan cerita, ingat kriteria INVEST Anda jika memungkinkan.
Tidak masalah untuk memiliki cerita yang memiliki urutan alami. Pertimbangkan itu - biasanya cerita pertama lebih besar karena membawa fungsi yang diperlukan dan cerita kedua dibangun di atasnya.
Saya akan menantang kisah-kisah "teknis", karena umumnya kisah-kisah itu kemungkinan besar merupakan tugas untuk membantu mendukung penerapan cerita yang berfokus pada hasil pengguna.
sumber
TL; DR
Dengan asumsi kedua cerita pengguna ditarik ke dalam lingkup dalam iterasi yang sama, itu adalah tugas tim untuk menguraikan cerita menjadi rencana implementasi dan tugas yang menyertainya. Cerita pengguna memberikan konteks dan ruang lingkup; mereka bukan implementasi, spesifikasi, atau item daftar punch.
Cerita Harus Diuraikan untuk Tugas Iterasi
Apakah Anda mengikuti Scrum atau metodologi gesit lainnya, itu adalah kesalahan umum untuk melewati fase perencanaan iterasi. Di Scrum, ketika Item Tumpukan Produk (tidak perlu cerita pengguna, secara tegas) ditarik ke dalam Sprint saat ini, tim kemudian harus menggunakan bagian dari Perencanaan Sprint untuk memfaktorkan kesamaan antara item pekerjaan, mengidentifikasi dependensi, dan kemudian kembangkan Sprint Backlog untuk menangkap pekerjaan tingkat tugas.
Seperti yang Anda tunjukkan dalam posting Anda, itu tidak biasa (dan sebenarnya diinginkan) untuk iterasi yang gesit untuk memuat cerita pengguna yang terkait erat. Dalam Scrum, ini muncul melalui penggunaan Sprint Goal. Di luar kerangka Scrum, sering kali masih masuk akal untuk menarik cerita terkait karena tujuan bersama atau ketergantungan bersama. Dengan mengekstraksi dan kemudian mengerjakan dependensi bersama dalam satu iterasi tunggal, tim sering kali dapat menghindari perlunya refactor atau beralih pada kode untuk fitur yang serupa-tetapi-tidak-identik di masa depan.
Tugas Melaksanakan Cerita
Berikut cara lain untuk berpikir tentang perencanaan ketergantungan untuk cerita pengguna. Secara umum:
Memperlakukan cerita pengguna sebagai rencana implementasi atau daftar tugas dianggap oleh sebagian besar praktisi sebagai anti-pola lincah. Apa pun yang Anda pilih untuk memanggilnya, jangan lewatkan fase perencanaan tepat waktu dari kerangka kerja tangkas Anda, dan pastikan untuk melacak dependensi dan berbagi detail implementasi di suatu tempat dalam proses tim Anda.
sumber