Kisah Pengguna menangkap apa yang ingin dilakukan pengguna dengan sistem pada tingkat tinggi. Saya mengerti bahwa kisah pengguna selanjutnya akan mendorong sejumlah persyaratan tingkat rendah. Apakah cerita pengguna sama dengan persyaratan tingkat tinggi untuk sistem?
requirements
user-story
requirements-management
Punter Vicky
sumber
sumber
Jawaban:
Sejujurnya, setelah menghabiskan hampir dua tahun terbenam dalam pengembangan Agile, saya masih berpikir "kisah pengguna" hanyalah istilah yang bagus untuk "persyaratan fungsional".
Ini berbeda pada tingkat yang dangkal , misalnya selalu mengambil bentuk tertentu ( "sebagai X, saya ingin Y sehingga Z ..." ), tetapi elemen kunci - mengidentifikasi pemangku kepentingan dan alasannya - juga melekat dalam well- persyaratan fungsional tertulis. Sangat mudah untuk menulis cerita pengguna yang buruk seperti halnya menulis persyaratan yang buruk ( "seperti [nama perusahaan kami], saya ingin [fitur samar] sehingga saya dapat [melakukan sesuatu yang jelas merupakan bagian dari pekerjaan saya, seperti 'jual lebih banyak ke pelanggan'] " ).
Yang menurut cerita pengguna hampir tidak pernah ditangkap, adalah persyaratan non-fungsional seperti kinerja dan keamanan. Jenis-jenis persyaratan ini sangat sulit untuk ditulis dengan benar dan format cerita pengguna tidak begitu baik untuk menangkapnya, karena mereka lebih tentang kualitas produk umum dan mengurangi (tetapi tidak menghilangkan) risiko daripada bertemu dengan pengguna tertentu perlu.
Jadi, saya benar-benar menganggap cerita pengguna sebagai bagian dari persyaratan, dengan formula tertentu, dan masih menggunakan istilah-istilah itu secara bergantian.
Salah satu keuntungan utama yang dimiliki oleh pengguna dibandingkan dengan persyaratan adalah bahwa kata "persyaratan" menunjukkan bahwa suatu fitur diperlukan di tempat yang sering diinginkan . Secara teori pengguna cerita dapat diprioritaskan dan ditempatkan untuk setiap rilis, sedangkan persyaratan tampaknya menjadi prasyarat untuk setiap rilis.
Tentu saja, untuk perbedaan yang disebutkan di atas menjadi masalah, pelanggan dan / atau manajemen senior Anda harus menerimanya; tidak ada gunanya sama sekali jika Anda memiliki 30 cerita pengguna semua dikelompokkan menjadi "proyek" yang semuanya harus diselesaikan pada saat yang sama. Anda mungkin juga memanggil mereka "persyaratan" dalam kasus itu karena mereka sebenarnya diperlukan.
sumber
Ron Jeffries sudah lama menulis tentang 3C kisah pengguna ( http://xprogramming.com/articles/expcardconversationconfirmation/ ) dengan penekanan pada kartu (deskripsi singkat), percakapan antara pelanggan dan tim pengiriman setelah cerita pengguna menjadi ditindaklanjuti, dan konfirmasi cerita yang disepakati setelah percakapan itu.
pada dasarnya, sebelum percakapan, cerita pengguna hanyalah ruang lingkup yang direncanakan - ide kasar tentang apa yang mungkin kita lakukan. setelah percakapan, Anda harus memiliki cara untuk mengonfirmasi bahwa cerita sudah lengkap. Jadi tergantung pada waktu ketika Anda melihat cerita di timeline ini, sebuah cerita mungkin hanya gagasan luas tentang ruang lingkup, atau persyaratan terperinci.
hari ini, makna "cerita pengguna" tampaknya dipersempit menjadi hanya "kartu" bagian dari 3Cs Jeffries. dalam hal itu, cerita pengguna bukan persyaratan tetapi janji untuk mengadakan percakapan tentang persyaratan tersebut.
Anda dapat menemukan banyak sekali nugget emas tentang cerita pengguna di c2 wiki ( http://xp.c2.com/UserStory.html )
sumber
Cerita dan persyaratan pengguna adalah binatang yang sangat berbeda.
Persyaratan
Persyaratan mengandaikan bahwa desain aplikasi dilakukan sebelumnya, dan pengembangan itu adalah implementasi dari desain itu. Oleh karena itu persyaratan berfokus pada bagaimana menerapkan suatu fungsi.
Contoh persyaratan:
Cerita pengguna
Cerita pengguna fokus pada apa yang harus dicapai, dan bersikeras bahwa desain produk dilakukan pada menit terakhir dan merupakan kolaborasi antara orang produk dan orang pengembang. Rinciannya diputuskan selama implementasi berdasarkan peluang.
Contoh cerita:
Apa bedanya?
Seperti yang Anda lihat, pasti ada perbedaan dalam jumlah detail yang disediakan, tetapi ada juga banyak informasi yang hanya tersedia dalam cerita, yaitu tujuan apa yang sedang kami coba capai dengan fitur ini.
Walaupun mungkin tampak bahwa tujuannya relatif tidak penting, ini adalah asumsi yang salah dalam pengembangan tangkas. Biasanya ada dua kasus di mana mengetahui tujuan itu sangat penting: mengurangi biaya peluang dan memungkinkan kelincahan.
Biaya peluang
Jika ada asumsi tersembunyi dalam persyaratan, itu bisa sangat sulit untuk dicapai. Misalnya: apakah ada server email yang tersedia? Jika tidak, persyaratan mungkin membutuhkan waktu lebih lama untuk dikembangkan. Dalam beberapa kasus lain, cara yang lebih sederhana untuk mencapai tujuan yang sama mungkin terlewatkan karena desainnya.
Sebaliknya, kisah pengguna adalah tentang pengguna yang menghubungi departemen dukungan kami. Jika mengirim surat tidak layak atau terlalu mahal, kami dapat menemukan solusi yang berbeda di tempat: menulis ke database, misalnya, atau menggunakan formulir melalui Google docs, atau cukup memasukkan alamat email alih-alih formulir. Ini tidak dapat dengan mudah dilakukan dengan persyaratan, tetapi itu mudah dilakukan dengan cerita dan orang produk yang hadir.
Kelincahan
Untuk alasan ini, dengan persyaratan kami biasanya cenderung memikirkan asumsi tersembunyi ini sebelumnya dan memastikan tidak ada hambatan. Jadi dalam hal ini mungkin ada persyaratan yang berbeda, dijadwalkan sebelumnya, yang memastikan server email hadir.
Ini membawa kita ke perbedaan besar lainnya antara cerita dan persyaratan yang hierarki . Seperti yang telah saya sebutkan di atas, persyaratan harus, berdasarkan sifatnya sendiri, dipesan dalam beberapa hierarki alami sehingga dependensi terpenuhi. Cerita, di sisi lain, fokus pada tujuan dan tidak memiliki kendala seperti itu.
Ini dirancang, karena dengan gesit penting sekali untuk menambah, menghapus, menjadwal ulang, dan memodifikasi cerita yang diperlukan selama pelaksanaan proyek. Persyaratan umumnya dapat ditambahkan, kadang-kadang dimodifikasi atau dihapus, tetapi umumnya sangat menyakitkan untuk memindahkannya karena semua ketergantungan. Ini tidak dilakukan sesering mungkin. Jika Anda bekerja dengan persyaratan, implementasi tangkas Anda akan menderita, atau mungkin tidak akan sangat tangkas sama sekali, dalam arti mampu merangkul perubahan.
sumber
Bagi saya, elemen penting dari Kisah Pengguna adalah ia menangkap Mengapa dan Bagaimana pengguna menggunakan sistem. Ini sangat berguna karena tidak menentukan banyak cara bagaimana sistem memberikan fungsionalitas yang diperlukan. Saat pengujian UI dan Kegunaan diperlukan, Kisah Pengguna mungkin merupakan dokumen yang paling penting.
Tentu, Anda dapat meminta selenium untuk memverifikasi bahwa ada titik tertentu dalam HTML atau mengambil tangkapan layar, atau memverifikasi bahwa piksel tertentu sesuai dengan harapan Anda. Tetapi jika ada teks yang menyesatkan, atau tidak jelas bagaimana pengguna harus menggunakan sistem atau sulit bagi pengguna untuk mengetahui cara mencapai tujuan mereka, tiba-tiba Anda tidak memiliki sistem yang lengkap lagi. Sekarang pelatihan diperlukan untuk menggunakan sistem. Meninjau sistem yang telah selesai terhadap skenario pengguna adalah komponen penting dari pengujian manual.
Ada pola pikir yang ditangkap dalam cerita / skenario pengguna yang harus memengaruhi banyak keputusan desain terperinci tentang implementasi. Kecuali jika pengembang berbicara langsung dengan pengguna atau menonton mereka menggunakan sistem, skenario pengguna mungkin merupakan satu-satunya tautan yang memungkinkan mereka untuk memahami kebutuhan pengguna.
Akhirnya, mereka memungkinkan para pebisnis untuk menentukan apa yang mereka butuhkan tanpa menyarankan bagaimana itu harus dicapai. Jauh lebih mudah untuk menggambarkan solusi, daripada kebutuhan, dan skenario pengguna menyediakan kerangka kerja untuk menggambarkan kebutuhan tanpa mengusulkan solusi spesifik. Persyaratan bisnis paling umum yang pernah saya dengar adalah, "Saya ingin itu seperti Excel, tetapi di web" yang belum pernah mereka butuhkan.
Jadi saya akan mengatakan bahwa cerita yang bagus tidak boleh menyertakan detail spesifik tentang bagaimana sistem harus diimplementasikan. Seharusnya dikatakan, "Sekali sebulan, sistem A perlu diperbarui dengan data baru dari sistem B. Data itu mungkin memerlukan koreksi. Klien memiliki riwayat memasukkan data yang tidak valid dan tidak menyadari masalah selama berminggu-minggu." Seharusnya tidak mengatakan, "Sistem harus menerima file CS1 latin1 setidaknya sebulan sekali dan melempar NumberFormatException jika kolom 3 bukan angka." Apakah Anda melihat perbedaannya? Skenario menggambarkan kebutuhan, bukan solusi spesifik. Kemudian dalam pengujian Anda lingkari kembali ke skenario untuk memastikan bahwa solusi sesuai dengan kebutuhan. Persyaratan dapat mencampur beberapa kebutuhan dengan beberapa solusi, atau bahkan fokus sepenuhnya pada solusi.
sumber
Stumbled atas ini selama pencarian google dan berpikir saya akan memberikan pendapat saya.
Sebenarnya tidak ada perbedaan antara persyaratan dan kisah pengguna. Keduanya menyatakan hasil atau tujuan yang diinginkan dari perspektif pengguna.
Satu-satunya perbedaan adalah cara tujuan atau hasil ini ditangkap oleh seorang analis bisnis. Dalam hal ini dalam kata-kata.
Contoh:
Sebagai pemimpin tim, saya ingin melihat tim mana yang menangani kasus hipotek sehingga saya dapat memantau kinerjanya.
Solusinya harus menampilkan anggota tim yang bekerja pada kasus hipotek.
Kedua hal di atas dapat diartikan dengan cara yang sama tetapi keduanya juga memiliki banyak ambiguitas. Poin utama di sini adalah perbedaan gaya. Saya pikir masalah yang sebagian besar kita lihat adalah seberapa jauh dalam mendefinisikan solusi yang kita lakukan sebelum kita pindah dari dunia persyaratan dan ke dunia desain fungsional. Apakah tergantung pada analis bisnis untuk menyatakan "daftar pengguna yang masuk dengan nama depan dan kedua pada menu aplikasi utama" atau apakah itu terlalu banyak informasi? Ketika kita duduk berbicara dengan para pemangku kepentingan kita dan kita semua tahu solusinya dan dapat menafsirkan seperti apa bentuknya, bahkan bahasa kode yang kemungkinan akan dikembangkan dan cara penerapannya, kita benar-benar perlu memainkan permainan murni " mari kita mendefinisikan tujuan dan bukan solusi ". Di sinilah saya merasakan kebingungan sebenarnya.
Persyaratan sering membuat asumsi kita tidak tahu apa-apa tentang solusi hanya hasil yang diinginkan. Ya ini membuat semuanya solusi agnostik tetapi apakah itu benar-benar membantu kita dalam siklus pengembangan? Jika kita dapat secara akurat mendefinisikan sesuatu lebih awal maka mengapa tidak melakukannya?
Semua dalam semua meskipun saya tidak akan khawatir tentang cerita pengguna dan perbedaan persyaratan. Pada akhirnya Anda ingin mendefinisikan informasi yang cukup untuk seseorang. Seseorang untuk mengembangkan solusi. Cerita pengguna yang levelnya terlalu tinggi akan dengan mudah dihempaskan kembali dan diminta untuk dipecah menjadi cerita pengguna yang lebih kecil. Sama seperti gaya "sistem akan". Persyaratan mungkin akan diketuk mundur sebagai terlalu ambigu jika tidak memiliki detail yang cukup.
Pada akhirnya, pergilah dengan apa yang dilihat dan dikembangkan oleh pengembang dan pemangku kepentingan Anda.
sumber
Saya pikir ada banyak ketidakkonsistenan tentang apa arti kata itu, bahkan di dalam buku teks klasik. Ketidakkonsistenan yang sama berlaku untuk cerita pengguna. Berbagai organisasi dan buku pelajaran memperlakukan istilah-istilah ini secara berbeda. Sebagai contoh, buku klasik Rekayasa Perangkat Lunak Bagaimana Roger Pressman berbicara tentang persyaratan sangat berbeda dari buku Agile Software Requirement dari Dean Leffingwell. Saya menghormati mereka berdua dan mereka berdua bisa valid.
Persyaratan dapat berupa hal-hal yang kami kode untuk yang memiliki kekhususan luar biasa dengan sedikit yang tersisa untuk imajinasi. Di sisi lain, dapat dikatakan bahwa persyaratan harus menentukan apa masalah bisnis dan tidak menentukan solusinya. Saya pikir itu lebih bernuansa dan jawabannya ada di suatu tempat pada spektrum yang unik untuk setiap perusahaan dan industri (tidak semua pengembangan perangkat lunak terjadi di TI).
Saya diajari bahwa elisitasi persyaratan mengarah pada analisis, yang mengarah pada desain, yang mengarah pada arsitektur yang mengarah pada elaborasi persyaratan atau spesifikasi, yang mengarah pada sesuatu yang dapat dikodekan. Saya tidak percaya ini hilang dengan lincah. Waktu ketika hal-hal ini terjadi memang berubah dan itu adalah perbedaan yang paling penting. Dalam model air terjun, elisitasi dan elaborasi terjadi lebih awal. Dalam lean dan scrum, elisitasi dan elaborasi terjadi pada berbagai tahap dengan elaborasi yang lebih banyak terjadi ketika Anda semakin dekat dengan implementasi dalam sprint. Seperti halnya pekerjaan desain yang muncul.
Dalam organisasi kami, kami condong ke arah model Epik, Fitur, dan Cerita Leffingwell, bukan sebagai persyaratan tetapi sebagai rincian dan prioritas kerja. Persyaratan adalah hal yang berbeda. Persyaratan dikelola secara terpisah karena kami diharuskan melakukannya untuk badan pengatur. Namun beberapa tim tentu saja mengembangkan persyaratan dalam cerita pengguna selama penambahan program dan perencanaan sprint.
sumber
Persyaratan fungsional biasanya merupakan spesifikasi formal yang memungkinkan Anda mengetahui dengan tepat apakah perangkat lunak Anda berfungsi atau tidak. Cerita pengguna biasanya merupakan cara yang jauh lebih informal untuk menggambarkan kebutuhan akan cerita pengguna Anda. Itu tidak menentukan spesifikasi kaku untuk menentukan apakah perangkat lunak itu "valid" atau "tidak valid". Meskipun Anda dapat menguji beberapa bagian dari itu, penyelesaian sebenarnya dari cerita pengguna (jika Anda melakukannya dengan benar) adalah ketika pengguna Anda mengatakan "ya, itu menyelesaikan masalah saya!". Ingat manifesto tangkas:
Dalam bukunya "User Story Applied", Mike Cohn mengatakan secara khusus bahwa beberapa hal tidak memetakan ke cerita pengguna dan Anda tidak harus hanya menggunakannya .
Di tim saya sendiri, kami menggunakan yang berikut:
Persyaratan fungsional tidak akan memungkinkan kita untuk menyadari bahwa fitur yang kami implementasikan tidak menyelesaikan kebutuhan pengguna, meskipun uji ketimun kami lulus dan kami menerapkan setiap kata tertulis. Sebuah cerita adalah sebuah diskusi, dan itu bersifat informal. Intinya adalah agar orang-orang implementasi mengerti apa yang bermasalah. Mereka bukan alat kontrak. Jika Anda melakukan "scrum but ... " dan cerita Anda hanyalah cara yang lucu untuk menulis persyaratan perangkat lunak, maka ya, tidak ada perbedaan.
Intinya bukan cerita pengguna, intinya adalah perubahan besar dalam paradigma dalam cara Anda mendekati pekerjaan yang harus dilakukan. Anda tidak melakukan kontrak, Anda membantu beberapa pengguna Anda memecahkan masalah. Jika Anda tidak melihat cerita pengguna sebagai alat diskusi dengan pengguna nyata , maka Anda tidak menggunakan cerita pengguna, Anda menggunakan sintaksis persyaratan yang funky .
Sisanya di sini adalah pendapat saya: kisah pengguna tidak pernah bisa berhasil secara sepihak. Anda perlu pelanggan Anda untuk bekerja dengannya. Air-scrum-fall ditakdirkan untuk menjadi kekacauan kebutuhan-tapi-bukan-persyaratan aneh. Jika Anda memiliki kontrak penawaran tetap dengan persyaratan tertentu, jangan gunakan iterasi dan kisah pengguna, tidak ada gunanya . Gunakan sisa dari toolkit tangkas: Tes unit / fungsional otomatis, tinjauan kode, integrasi berkelanjutan, refactoring, dll. Pastikan perangkat lunak Anda terus bekerja dan Anda dapat mengirimkannya pada saat pemberitahuan. Jadikan itu tersedia dalam bentuk yang belum selesai untuk pelanggan sehingga ia dapat memberikan umpan balik sebanyak mungkin. Jika Anda melakukan itu teman saya, bahkan jika Anda tidak melakukan "Cerita pengguna" dan "Scrum", Anda akan lebih gesit daripada banyak yang disebut toko "Agile".
sumber
Saya percaya bahwa setiap orang akan menerapkan dan memberi label segalanya secara berbeda tergantung pada pengalaman masa lalu dan bahasa apa pun yang bekerja untuk perusahaan yang menyelesaikan pekerjaan itu tidak layak diperdebatkan.
Namun, IMO, A User Story mengikuti pendekatan Agile tentang "pelanggan di gedung atau pelanggan segera tersedia", di mana dokumentasi tidak selalu diperlukan karena detailnya ada di kepala pelanggan dan tersedia agar SRS formal dapat tidak diperlukan. Sekarang "Tugas" dari "Cerita pengguna" adalah bagaimana pengembang akan membangun cerita pengguna dalam dicerna.
Contoh kisah pengguna mungkin:
dan "tugas" mungkin:
Sekarang masing-masing tugas diperkirakan dan diselesaikan dalam sprint masing-masing.
Dari perspektif "tradisional", di mana "pelanggan sulit untuk mendapatkan, kita perlu menuliskan ini sehingga mereka dapat mengkonfirmasi kita sudah benar sebelum kita mulai perencanaan / pengkodean" pendekatan, Spesifikasi Kebutuhan Perangkat Lunak adalah akan menjadi ide-ide yang ada di kepala pelanggan dan memunculkan dan kemudian ditulis dan diformalkan dan kemudian baselined dan dikelola.
Dalam hal ini, "persyaratan fungsional" adalah detail seluk beluk dari SRS itu, dan bagian dari Ide yang lebih besar. Jadi menurut saya, cerita pengguna dapat dilihat sebagai (sebagian dari) "Persyaratan" formal, dan tugas cerita pengguna itu adalah (atau salah satu dari banyak) persyaratan fungsional.
Dalam kisah pengguna contoh, "Persyaratan" formal akan menjadi dokumen panjang dengan diagram alur dan umumnya akan menjadi dokumentasi-sentris, yang bertentangan dengan pendekatan "Agile" yang lebih berorientasi pelanggan-sentris.
Perbedaannya adalah, "Persyaratan" formal akan berada di sepanjang baris beberapa dokumen 10 halaman yang menguraikan bagian administrasi aplikasi yang menunjukkan beberapa daftar akan diperlukan, beberapa keamanan berbasis peran, dll. Dan kemudian beberapa fungsional persyaratan akan "grid daftar harus memungkinkan penyortiran", "informasi pengguna harus terdaftar dalam kotak", dll.
dan saya percaya hari ini syarat-syarat semua dicampur dan dicampur .. yang tidak masalah sama sekali
sumber