Saya telah diberi tahu "Kisah Pengguna bukan persyaratan, itu hanya pengingat apa yang diinginkan pelanggan, Anda tidak bisa memasukkan persyaratan dalam sebuah cerita". Tapi mari kita ambil contoh bahwa pelanggan menginginkan pemrosesan berbeda untuk kartu kredit yang berbeda. Ada persyaratan ketat yang harus diterapkan dan diketahui sehingga kasus uji dapat ditulis. Ke mana harus pergi persyaratan jika tidak dalam cerita pengguna?
Bagaimana pengembang dapat berkembang dari sebuah cerita jika tidak ada persyaratan yang lebih rendah? Bagaimana penguji dapat menulis kasus uji (yang rinci) berdasarkan kisah pengguna? Di mana persyaratan seperti batasan DB, validasi bidang, dll. Tinggal di luar kisah pengguna?
agile
scrum
requirements
pengguna144171
sumber
sumber
Jawaban:
Jawaban ini akan fokus pada bagaimana bekerja dengan Cerita Pengguna dan persyaratan tingkat yang lebih rendah. Saya tidak akan membahas kebajikan, atau ketiadaan, tentang Scrum atau Agile. Saya tidak akan berbicara tentang guru juga.
Jawaban ini mengasumsikan Anda setuju dengan Scrum tetapi belum menemukan cara untuk membuatnya bekerja untuk Anda.
Seperti yang telah disebutkan orang lain, Cerita Pengguna dimaksudkan untuk membahas bagaimana Pengguna menginginkan perangkat lunak menjadi. Karena Pengguna tidak peduli tentang hal-hal implementasi tingkat rendah seperti tabel basis data, batasan, pola arsitektur, dll, Anda tidak akan menemukan detail seperti itu di Kisah Pengguna.
Namun, itu tidak berarti detail ini tidak boleh direkam di mana pun.
Ketika pengembang mengimplementasikan Cerita Pengguna, mereka perlu mengetahui detail level yang lebih rendah yang biasanya tidak akan diketahui Pengguna. Informasi ini dapat berasal dari UKM, BA, Pemilik Produk, arsitek Anda, atau ahli lain atau orang yang berpikiran teknis.
Apakah ini berarti rincian tingkat rendah harus dicatat dalam Cerita Pengguna? Tidak (dan ya).
Di beberapa titik antara waktu cerita itu dibuat dan diimplementasikan, seseorang perlu memikirkan bagaimana cara mengimplementasikannya. Ini biasanya berupa percakapan dengan orang-orang yang terlibat dalam Story (Pengguna, arsitek, pengembang, dll). Percakapan ini harus menghasilkan Kriteria Penerimaan yang tidak ambigu yang dengan jelas menggambarkan ruang lingkup penerapan Kisah Pengguna. Rincian ini perlu direkam di suatu tempat dan di mana itu benar-benar terserah Anda. Kuncinya di sini adalah bahwa detail ini didapat setelah Kisah Pengguna dibuat. Saya pikir inilah yang gurumu coba tekankan.
Sebagai pengembang, jelas bahwa Anda akan membutuhkan cara untuk mengaitkan persyaratan yang lebih spesifik dengan Kisah Pengguna Anda. Hanya bagaimana Anda melakukannya sepenuhnya terserah tim Anda.
Jika orang-orang di tim Anda ingin menyimpan detail ini dari Cerita Pengguna maka Anda mungkin perlu menghormatinya. Ada manfaat untuk menjaga Cerita Pengguna tingkat tinggi Anda bebas dari detail implementasi. Itu membuat mereka tetap ramping dan jaminan simpanan Anda dapat dibaca sebagai riwayat apa yang diinginkan Pengguna dan Pemilik Produk Anda. Jadikan saja kebutuhan Anda sebagai pengembang yang dikenal juga. Anda harus bisa membuat kompromi di mana hanya dengan menautkan ke Kisah Pengguna membuat semua orang senang.
sumber
Yup, BS-nya. Dan Scrum tidak tangkas.
Saya benci kekakuan yang disebut praktisi gesit yang menelpon Anda bahwa ada satu cara untuk melakukan gesit dan bahwa Anda harus mengikuti semua aturan yang tercantum dalam tulisan suci dari metodologi 'gesit' mana pun yang mereka gunakan. Itu semua BS.
Agile adalah tentang menjadi gesit.
Agile adalah tentang menyelesaikan sesuatu dengan biaya minimum. Ini tidak berarti "tidak ada dokumentasi" karena Anda biasanya berakhir lebih banyak mendokumentasikan dalam peran lincah, Anda hanya melanjutkan dengan mendokumentasikan tanpa harus merencanakan proses untuk melakukan dokumentasi. Demikian pula dengan pengkodean, pengujian dan penangkapan persyaratan. Satu-satunya hal yang penting dalam proses gesit adalah hal-hal yang membantu Anda menyelesaikan pekerjaan Anda, dengan cepat dan efisien tanpa BS.
Jadi dalam hal ini, jika memasukkan persyaratan pengguna dalam kartu membantu Anda menulis, menguji, mendokumentasikan, dan mendemonstrasikan kode yang diperlukan ... masukkan persyaratan pada kartu dan beri tahu guru bahwa tim selalu benar.
Apa yang dipikirkan oleh tim dev Anda yang lain? Dalam metodologi yang benar-benar tangkas, jika mereka semua berpikir bahwa persyaratan harus dituliskan di depan tanpa 'percakapan pengguna', maka itu harusnya, Anda melakukan apa yang menurut tim paling berhasil bagi mereka untuk melakukan pekerjaan mereka. Jika tim berpikir bahwa percakapan pengguna adalah hal yang baik, maka dengarkan mereka dan pahami mengapa mereka memikirkan hal ini dan bawa diri Anda ke dalam cara mereka bekerja.
sumber
Hanya saja jangan sebut ini sebagai Kisah Pengguna dan semua orang akan senang.
Saya pikir jawabannya adalah, Anda dapat menuliskan ini di mana pun Anda inginkan.
Secara umum, implementasi spesifik tidak termasuk dalam cerita pengguna karena beberapa alasan:
Tidak ada aturan yang menghilangkan dokumen tambahan bila perlu. Mungkin klien membutuhkan akses ke sana dan mungkin tidak. Jika Anda berharap untuk menghasilkan semacam kontrak antara Anda dan klien pada implementasi spesifik seolah-olah Anda bisa mengikutinya dan ketika tidak berhasil menyalahkan klien untuk menyetujuinya, Anda salah. Jika klien memahami rincian teknis pemrosesan kartu kredit, Anda harus membagikan dokumen ini dengan mereka dan mungkin menjadikannya bagian dari percakapan.
sumber
Saya pikir jika yang dikatakan oleh konsultan Scrum Anda adalah bahwa Scrum tidak memerlukan persyaratan, maka Anda memiliki beberapa konsultan yang sangat buruk. Mereka bahkan salah untuk memberi tahu Anda bahwa cerita pengguna sebenarnya bukan persyaratan sama sekali, mereka hanya menjadi salah satu jenis persyaratan.
Apa sajakah jenis persyaratan perangkat lunak?
Persyaratan Bisnis
Ini umumnya merupakan kebutuhan bisnis tingkat tinggi, sesuatu yang umumnya akan berjumlah semacam pernyataan gaya eksekutif tentang suatu sistem. Ini sengaja tingkat tinggi dan luas dan dengan sendirinya tidak dapat diimplementasikan tanpa jauh lebih detail.
Persyaratan Pengguna
Ini adalah persyaratan Kisah Pengguna yang Anda kenal. Mereka umumnya dapat ditampung pada catatan tempel.
Persyaratan Fungsional atau Sistem
Ini sepertinya bagian yang hilang dari puzzle Anda. Didorong dari persyaratan tingkat pengguna, persyaratan fungsional mendefinisikan aktor dan properti tingkat sistem, serta perilaku dan fungsi sistem. Ini juga bisa dilakukan dalam format cerita dan dimasukkan ke dalam simpanan Anda. Barang-barang ini harus berdiri sendiri dan dapat diimplementasikan secara independen dari persyaratan satu pengguna.
Persyaratan fungsional menentukan solusi Anda yang kedengarannya seperti apa yang Anda gambarkan sebagai kesenjangan dalam proses Anda.
Jenis persyaratan penting yang perlu disebutkan tetapi tidak penting untuk pertanyaan Anda: Persyaratan Non-Fungsional, Persyaratan Teknis, dll ...
sumber
a non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors
. Perilaku itu sendiri adalah fungsi dari suatu sistem . Kisah pengguna membandingkan keduanya dengan mendefinisikan kebutuhan pengguna. The Fungsi pengguna adalah bukan apa yang kita ketahui sebagai Use Case dan bukan persyaratan fungsional.A User Story adalah salah satu jenis artefak khusus dengan tujuan untuk mendeskripsikan antarmuka yang diharapkan pengguna dari sistem dan itulah sebabnya detail level rendah tidak seharusnya ada di sana. Jika Anda meletakkannya di sana, Anda mengubah maksud artefak dan itu tidak lagi sesuai dengan definisi AS.
Gunakan bentuk spesifikasi lain untuk menangkap persyaratan tingkat bawah dan keputusan desain. Tepatnya apa bentuk-bentuk lain ini adalah sesuatu yang harus diselesaikan di organisasi Anda dan disesuaikan dengan lingkungan spesifik Anda.
Pertanyaan Anda terdengar sangat mirip dengan sesuatu seperti
Hormati pemisahan kekhawatiran dan kohesi artefak Anda, baik yang ada di kode Anda maupun yang ada di proses Anda.
sumber
Saya pikir tujuan dari pendekatan ini bukan untuk membatasi cerita pengguna, tetapi untuk mencegah persyaratan yang buruk.
Dalam pengalaman saya, pengguna umumnya tidak mampu menulis persyaratan. Pengembang pada umumnya tidak memiliki persyaratan penulisan. Heck, mari kita akui saja: persyaratan sulit untuk ditulis!
Saya pikir itu akan valid bagi pengguna untuk menulis sesuatu dalam istilah persyaratan sebagai bagian dari cerita penggunaan. Namun, hal itu seharusnya tidak secara otomatis menjadikannya persyaratan. Memiliki dua kisah penggunaan yang saling bertentangan adalah masalah kecil; memiliki dua persyaratan yang saling bertentangan adalah masalah utama dalam pemutusan kontrak. Tidak ada gunanya mempromosikan satu sama lain sebelum waktunya.
Saya pikir sudut pandang kejam datang dari pengakuan sifat manusia. Jika orang mulai berpikir tentang cerita pengguna sebagai tempat untuk mengajukan persyaratan, mereka akan mulai melakukannya. Keuntungan sebenarnya dari menggunakan cerita daripada cara lain untuk mengumpulkan persyaratan seperti informasi adalah bahwa kata-kata itu dituliskan dalam kata-kata dan notasi alami pengguna. Ini membuatnya lebih mungkin bahwa pengembang berpikir dari perspektif pelanggan. Di dunia yang sempurna, istilah persyaratan yang dingin bisa juga ada di sana. Pada kenyataannya, kata-kata seperti itu cenderung menyebabkan pengembang menempel pada persyaratan yang mudah dipahami dan melewatkan kata-kata halus dan nuansa pengembangan tangkas ingin menggali menggunakan cerita yang digunakan.
sumber
Buat keputusan sendiri
Jawaban untuk 'Jadi, bagaimana sebenarnya pengembang dapat mengembangkan cerita jika tidak ada persyaratan yang lebih rendah?' sangat sederhana - persyaratan terperinci yang ortogonal dengan kebutuhan pengguna akhir (mis. kendala DB, validasi bidang, dll) sebenarnya tidak penting bagi pengguna. Jika kebutuhan pengguna dapat dipenuhi oleh validasi bidang yang sangat berbeda, struktur DB sangat berbeda atau bahkan mungkin tidak ada DB tradisional sama sekali, maka akan kontraproduktif jika pengguna membuat informasi seperti itu dengan implementasi tertentu dalam pikiran, yang mungkin sangat berbeda dengan bagaimana sistem diimplementasikan pada akhirnya.
Anda adalah pengembang profesional, jadi buat keputusan profesional sejauh kemampuan Anda tentang detail implementasi. Seorang pengguna yang menginginkan sebuah meja dapat memberi tahu seorang tukang kayu jenis kayu apa yang mereka inginkan, tetapi si tukang kayu diharapkan memutuskan seberapa tebal kaki-kaki meja itu untuk menangani beban yang masuk akal. Jika Anda kekurangan informasi untuk membuat keputusan yang berarti, maka itu perlu didiskusikan dengan pengguna, tetapi sekitar 90% konten untuk dokumen persyaratan terperinci sebenarnya tidak memerlukan informasi apa pun selain dari kisah-kisah pengguna yang tidak jelas akal sehat dan praktik terbaik industri .
Semua perincian itu tidak sewenang-wenang - ada pilihan yang buruk dan pilihan yang lebih baik, dan mereka harus didokumentasikan karena mempengaruhi bagian lain dari implementasi, tetapi pada akhirnya mereka masih detail implementasi yang dapat dan harus diputuskan oleh tim pelaksana sesuai untuk kebutuhan pengguna dan praktik terbaik.
Analogi mobil standar - jika pelanggan menginginkan mobil dicat merah, maka klarifikasi yang sesuai untuk kisah pengguna adalah menanyakan warna merah mana yang lebih baik, tetapi bukan komposisi kimia cat; namun diharapkan mereka tidak akan memilih untuk mengecat mobil dengan cat air yang akan luntur saat hujan, karena itu praktik terbaik untuk tidak melakukannya.
sumber
TL; DR
Kisah pengguna adalah untuk mendokumentasikan nilai apa yang harus ditambahkan ke produk, dan mengapa. Detail implementasi (misalnya bagaimana nilai harus ditambahkan, diuji, diukur, atau divalidasi) dibatasi oleh cerita, tetapi tidak terkandung di dalamnya. Mereka sengaja dibiarkan sebagai artefak terpisah untuk mempertahankan fleksibilitas dan kelincahan dalam kerangka kerja.
Spesifikasi dan perincian implementasi paling sering ditangkap dalam artefak lain seperti Pengembangan Penerimaan-Didorong Tes (ATDD), Pengembangan Didorong Uji (TDD), dan skrip dan skenario Pengembangan Perilaku Berbasis Driven (BDD). Artefak khusus ini tidak diamanatkan oleh kerangka kerja Scrum, tetapi mereka pasti akan memberi Anda titik awal yang baik jika Anda belum memiliki kontrol proses efektif lainnya.
Cerita Pengguna Bukan Spesifikasi
Poster asli (OP) menanyakan pertanyaan berikut :
Kisah pengguna adalah fitur yang memberikan nilai , menyediakan beberapa konteks untuk memandu percakapan tentang implementasi, dan sudut pandang yang terkait dengan konsumen nilai yang akan mendapat manfaat dari nilai yang disampaikan oleh fitur.
Seluruh titik dari cerita pengguna adalah bahwa rincian pelaksanaan tidak preskriptif. Tim bebas untuk mengimplementasikan fitur dengan cara apa pun yang memberikan nilai yang diidentifikasi kepada konsumen nilai dalam konteks yang sesuai.
Contoh yang Dikerjakan
Contoh Kisah Pengguna
Ini lebih mudah untuk dijelaskan jika Anda mulai dengan serangkaian cerita pengguna yang kurang ambigu. Karena OP tidak memberikan kisah pengguna yang dapat ditindaklanjuti yang mengikuti mnemonik INVEST , saya akan menciptakan satu demi contoh. Pertimbangkan kisah berikut:
Ini menyediakan fitur konkret, menyediakan beberapa konteks yang dapat memandu keputusan implementasi yang harus dibuat oleh tim, dan mengidentifikasi konsumen nilai sebagai pelanggan pemilik kartu Discover. Itu bukan seperangkat spesifikasi, tapi itu yang Anda butuhkan untuk memiliki percakapan yang tepat dengan pelanggan dan dengan tim tentang cara terbaik untuk mengimplementasikan cerita selama iterasi pembangunan.
Analisis dan Implementasi
Implementasi aktual tergantung pada tim. Tim harus melakukan beberapa analisis untuk menentukan:
Salah satu prinsip inti dari Agile Manifesto adalah kolaborasi pelanggan. Tim lintas-fungsi, pengorganisasian diri diharapkan dapat berkolaborasi dengan pelanggan untuk mengerjakan rincian implementasi dalam pedoman yang disediakan oleh kisah pengguna.
Jika cerita pengguna Anda tidak ditulis dengan baik, atau jika tim tidak memiliki keterampilan atau kematangan proses untuk melakukan analisis yang cukup yang diperlukan oleh kerangka kerja tangkas mereka, maka ini jelas akan jauh lebih sulit daripada yang seharusnya. Seluruh buku telah ditulis tentang bagaimana membuat cerita pengguna yang baik pada tingkat rincian yang tepat; sayangnya tidak ada peluru perak, tetapi itu adalah keterampilan yang bisa dipelajari untuk tim tangkas.
Desain yang Didorong oleh Tes dan Perilaku-Didorong
Cara terbaik untuk memastikan bahwa analisisnya masuk akal, dan bahwa implementasinya baik dan mendukung adalah melalui penggunaan praktik TDD dan BDD. Misalnya, mengingat cerita di atas, tim harus menangkap implementasi yang direncanakan melalui artefak seperti:
Fitur mentimun dengan skenario yang dapat diuji.
Ini paling berguna untuk mendorong pengembangan tes penerimaan, dan untuk mendokumentasikan ekspektasi pengguna terhadap perilaku aplikasi. Misalnya, kisah pengguna harus memiliki satu atau lebih fitur Mentimun terkait yang menjelaskan bagaimana pengguna dapat memeriksa dengan kartu Discover, dan seperti apa proses itu bagi pengguna.
RSpec menguji yang memvalidasi perilaku (bukan detail implementasi internal) fitur kode baru.
Ini paling berguna untuk mendokumentasikan dan memvalidasi perilaku fitur yang dimaksud dalam aplikasi. Sebagai contoh, kisah pengguna akan mendorong pembuatan unit dan tes integrasi yang memastikan bahwa menggunakan kartu Discover memunculkan perilaku spesifik kartu apa pun yang diperlukan aplikasi untuk mengesahkan penjualan melalui gateway pembayaran.
Alat khusus tidak penting. Jika Anda tidak menyukai Mentimun atau RSpec, gunakan alat atau metodologi apa pun yang paling cocok untuk tim Anda. Namun, intinya adalah bahwa detail implementasi didasarkan pada kisah pengguna , tetapi tidak ditentukan olehnya . Sebaliknya, implementasi (atau spesifikasinya, jika Anda mau) adalah detail yang harus dikerjakan selama pengembangan fitur secara kolaboratif.
sumber
Banyak jawaban bagus di sini. Semoga saya bisa menambahkan beberapa nilai dengan yang lain ...
Saya pikir salah satu hang up tim Anda mungkin bermigrasi dari metodologi non-Agile.
Itu biasanya beberapa bentuk metodologi air terjun dan, dalam praktiknya, yang biasanya melibatkan upaya mendokumentasikan semua persyaratan teknis sebelum garis kode ditulis.
Tapi itu tidak selalu berhasil. Seringkali itu tidak berhasil. Alasannya? Karena persyaratan jarang selaras dengan kenyataan. Banyak hal berubah. Oleh karena itu pindah ke Agile.
Dengan Agile, Kisah Pengguna adalah hal yang paling diperhatikan pengguna. Mereka ingin mendapatkan formulir titik A ke titik B. Cara menuju ke sana dalam hal implementasi ada di tangan Anda. Jika Anda sedang menunggu seseorang memberi tahu Anda persyaratan teknis, maka itu tidak benar-benar Agile. Jika Anda memiliki pertanyaan, tanyakan. Jika Anda membutuhkan dokumentasi, dokumentasikan, tetapi Anda tidak ingin pelanggan membuat semua keputusan ini untuk Anda. Mereka mungkin memiliki pendapat, tetapi dalam lingkungan Agile pendapat itu harus (seperti yang disarankan oleh guru Anda) dalam percakapan.
Mungkin terasa bahwa ini adalah beban bagi tim Anda, tetapi menganggapnya sebagai barang mewah. Tim Anda sekarang memiliki banyak suara dalam solusi - yang belum tentu terjadi dalam model air terjun.
sumber