Bagaimana Anda melacak dokumen persyaratan pada tim yang gesit?

22

Saya mengerti bahwa User Stories mendominasi dunia lincah, tetapi bagaimana artefak ini disimpan, sehingga pengembang baru yang bergabung dengan tim dapat mencapai kecepatan dengan persyaratan?

Bagaimana jika Cerita Pengguna berubah nanti, bagaimana itu diperbarui dan disimpan sebagai artefak? Saya telah melihat banyak tim baru membuka laporan tiket / fitur baru / laporan bug alih-alih melacak cerita aslinya.

Sheehan Alam
sumber
1
Dokumentasi terbaik adalah kode kerja
Robert Wagner

Jawaban:

11

Pertama, hampir tidak ada jawaban @ DXM yang cocok dengan pengalaman saya dengan Agile, dan terutama tidak dengan Scrum.

The Agile Manifesto menyatakan bahwa sementara dokumentasi yang komprehensif berharga, software kerja LEBIH berharga. Jadi, dokumentasi tentu bukan hal yang buruk, tetapi harus benar-benar dalam pelayanan untuk membuat perangkat lunak yang berfungsi.

Individu dan interaksi atas proses dan alat

Bekerja dengan perangkat lunak melalui dokumentasi yang komprehensif

Kolaborasi pelanggan atas negosiasi kontrak

Menanggapi perubahan setelah mengikuti rencana

Artinya, sementara ada nilai di item di sebelah kanan, kami lebih menghargai item di sebelah kiri.

Memaku setiap detail sebelum mulai kode telah terbukti sia-sia lagi, jadi dokumentasi umumnya ditangani dengan cara JIT (tepat waktu). Artinya, Anda mendokumentasikan apa yang sebenarnya akan Anda kode.

Salah satu cara populer untuk melakukan Scrum adalah dengan menggunakan Cerita Pengguna, yang dikelola oleh Pemilik Produk dan disimpan dalam Product Backlog. Product Backlog adalah daftar tingkat tinggi dari semua hal yang perlu dilakukan oleh suatu solusi, dan Kisah Pengguna umumnya merupakan cara yang baik untuk menggambarkan setiap hal dalam daftar. Cerita Pengguna tidak wajib, tetapi tampaknya menjadi cara yang baik untuk tidak berlebihan detail dan menginspirasi kolaborasi sebagai gantinya.

Jadi, bagaimanapun, ketika sebuah cerita selesai - tim telah membuat, menguji, dan menyebarkan sesuatu yang memenuhi kriteria penerimaan, cerita tersebut tidak TERKECIL, itu hanya ditandai dilakukan pada jaminan simpanan - sehingga jaminan simpanan memiliki beberapa indikasi tentang apa yang dilakukan dalam setiap sprint - cerita dan poin yang terkait dengannya. Inilah yang memungkinkan Anda untuk menghitung kecepatan, dan merupakan dokumentasi berharga dalam dan dari dirinya sendiri.

Semua yang dikatakan, Kisah Pengguna mungkin semua dokumentasi yang diperlukan untuk memahami persyaratan, tetapi lebih mungkin, itu adalah sesuatu untuk menghasilkan percakapan antara pelanggan dan tim pengembangan. Dengan demikian, ada sejumlah hal yang dapat Anda lakukan di sekitar percakapan itu. Jika itu adalah hal ad hoc tatap muka, seperti yang sering terjadi, analis / pengembang dapat (dan mungkin, tergantung pada organisasi Anda, harus) menuliskan keputusan apa pun yang dibuat dan menyimpannya di suatu tempat, seperti Wiki atau repositori dokumentasi. Jika ini adalah percakapan email, Anda dapat menyimpan email tersebut. Jika ini adalah sesi papan tulis, ambil gambar papan dengan ponsel Anda dan simpan. Intinya adalah, hal-hal inilah yang membantu Anda menyelesaikan kode, dan mungkin dapat membantu Anda nanti jika Anda perlu mencari tahu bagaimana atau mengapa Anda melakukannya seperti yang Anda lakukan.

Metode lain untuk menangkap persyaratan adalah dengan segera memasukannya ke dalam test case (yang saya percaya adalah apa yang didapat DXM). Ini bisa sangat efisien, karena Anda perlu menguji untuk setiap persyaratan. Dalam hal ini, Anda dapat secara efektif menyimpan kebutuhan Anda di alat pengujian Anda.

Jika sebuah cerita selesai (dan diterima) dan kemudian pengguna mengubah kebutuhannya, yah, maka Anda mungkin perlu membuat cerita baru. Jika Anda menggunakan wiki untuk dokumentasi Anda, Anda dapat menautkan cerita baru kembali ke aslinya, dan juga menautkan cerita asli itu ke hal-hal baru sehingga seseorang yang melihatnya tahu bahwa segalanya berubah. Itu hal yang menyenangkan tentang wiki - mudah dan tidak menyakitkan untuk menghubungkan barang. Jika Anda melakukan pendekatan yang didorong oleh tes, Anda akan memperbarui kasus uji untuk menangani perubahan, atau membuat kasus uji baru untuk cerita baru jika yang baru dan lama tidak saling eksklusif.

Pada akhirnya, itu tergantung pada apa kebutuhan Anda. Jika hal utama adalah untuk membuat orang mempercepat dengan cepat, itu mungkin ide yang baik bagi seseorang untuk menulis dokumen orientasi untuk membantu mereka. Jadi mintalah seseorang melakukan itu. Seperti yang saya sebutkan, Wiki's adalah alat yang hebat untuk menjaga hal-hal semacam ini, jadi Anda dapat mempertimbangkan solusi Atlassian yang dapat mengintegrasikan Wiki Pertemuan dengan Jira dan Greenhopper untuk melacak cerita / tugas / cacat Anda dan mengelola proyek Anda secara umum. Ada banyak alat lain di luar sana untuk dipilih.

Matthew Flynn
sumber
Akan sangat membantu untuk memberikan kutipan yang tepat dalam jawaban Anda.
EL Yusubov
@ ElYusubov Kutipan mana yang tepat? Manifesto Agile?
Matius Flynn
@Mathew, saya telah menambahkan tanda kutip yang telah dirujuk.
EL Yusubov
@MatthewFlynn: sebagian besar info saya tidak berasal dari pengalaman pribadi, melainkan dari membaca sejumlah besar buku dan blog tentang pengembangan gesit, jika Anda mau, saya bisa memberikan daftar, sehingga Anda dapat membaca semuanya dan kemudian kami dapat membandingkan catatan. Pengalaman pribadi saya juga scrum. Di perusahaan saya sebelumnya, kami melakukan 5 rilis menggunakan scrum dan 4 dari mereka tidak berjalan dengan baik. Bahaya dari perusahaan yang hanya "melakukan scrum" adalah bahwa sebagian besar tempat akhirnya melakukan "scrum-but" atau "kultus kargo" tangkas. Kelompok kami tentu saja melakukan itu cukup lama. Dan ya, kami memiliki simpanan ...
DXM
1
@DXM - Saya juga memiliki hasil yang beragam dengan Scrum, tetapi tidak pernah lebih buruk dari SDLC tradisional dan beberapa kali bekerja dengan sangat baik.
Matius Flynn
8

[update # 1] Seperti yang ditunjukkan oleh @MatthewFlynn, pengalamannya dengan gesit dan juga banyak orang lain (termasuk saya sendiri) sangat berbeda dengan jawaban yang saya berikan di sini. Jawabannya di sini didasarkan pada pengamatan saya tentang apa yang berhasil dan tidak berhasil di tim saya sendiri di masa lalu, dikombinasikan dengan banyak buku dan blog yang saya baca tentang subjek ...

sebagian besar dorongan menuju pengembangan lincah secara khusus ditargetkan untuk menghilangkan dokumen persyaratan.

Agile mencoba untuk menghapus sebagian besar dokumentasi dan saya setuju dengan ide-ide mereka tetapi dari semua dokumen, persyaratan sejauh ini mata banteng terbesar dicat pada mereka. Alasan untuk itu (IMO) adalah bahwa persyaratan dokumen paling jauh dari kode kerja aktual dan semua dokumen, yang membuat mereka

  • paling tidak akurat
  • paling sulit untuk dipertahankan
  • paling tidak berguna

Untuk memandu tim mengenai apa yang harus dikembangkan selanjutnya, Agile mengganti dokumen persyaratan dengan tumpukan cerita yang mengidentifikasi apa yang harus Anda kerjakan pada item prioritas berikutnya dan tertinggi dengan keuntungan terbesar untuk uang (baik hadiah saat ini dan masa depan) biasanya ditempatkan terlebih dahulu dalam daftar itu.

Namun, jaminan simpanan jangan disamakan dengan dokumen persyaratan:

  • Dalam sebuah backlog, hanya N jumlah cerita yang harus diisi detailnya. Semakin jauh sebuah cerita, semakin sedikit detail yang harus Anda masukkan ke dalamnya (yaitu jangan buang waktu Anda mencoba mendefinisikan sesuatu yang tidak akan terjadi selama setengah tahun ).
  • Di luar titik tertentu, item "persyaratan" bahkan tidak boleh ditempatkan dalam tumpukan jika mereka keluar lebih dari 2 siklus rilis (alias peningkatan potensi shippable (PSI)). Sekalipun Anda tahu bahwa persyaratan itu penting dan harus dilakukan pada titik tertentu, jangan tergoda untuk menambahkannya ke dalam jaminan. Jika itu benar-benar penting, seseorang akan mengingatnya di rilis berikutnya. Jika tidak ada yang mengingatnya, kemungkinan besar itu karena itu tidak terlalu penting.

Setelah cerita selesai, cerita itu akan dihapus dari backlog dan DICARI (1) . Sekali lagi, cerita bukanlah persyaratan. Mereka HANYA memberi tahu tim apa yang harus dikerjakan selanjutnya; itu bukan untuk catatan sejarah.

Namun, dalam proses lincah yang tepat, setiap kali Anda mengirim pekerjaan, bagian dari pengiriman itu harus tes unit / integrasi / penerimaan. Tes ini sangat berharga karena memiliki banyak tujuan. Saya tidak akan masuk ke daftar lengkap, tetapi salah satu tujuannya adalah dokumentasi untuk perangkat lunak produksi Anda saat ini.

Suatu pengujian mendokumentasikan bagaimana perangkat lunak harus berperilaku diberikan serangkaian input dan prasyarat tertentu. Itu juga mendokumentasikan bagaimana menggunakan API publik (dan internal) dari kode Anda. Ini juga berfungsi sebagai jaring pengaman sehingga ketika pengembang baru masuk ke tim dan secara tidak sengaja merusak sesuatu, kesalahan itu akan ditangkap segera setelah diperiksa.

Proses lincah jelas mempromosikan mengambil keuntungan dari unit test otomatis sebanyak mungkin tetapi kita semua tahu bahwa tidak setiap hal dapat diotomatisasi. Rangkaian perangkat lunak Anda akan selalu memiliki serangkaian tes yang harus dijalankan secara manual. Namun, a) pengembang Anda harus secara aktif bekerja mengotomatiskan sebanyak mungkin dan b) serangkaian tes manual harus dilakukan secara teratur oleh tim QA Anda sehingga setiap gangguan fungsi dapat ditemukan sesegera mungkin.


(1) - Karena saya mendapat beberapa tanggapan untuk bagian "dicampakkan". Dalam 5 tahun sejak pindah ke agile, tim saya tidak pernah membuang satu cerita pun, bahkan 30% dari mereka yang dijadwalkan, kemudian ditangguhkan dan kemudian dilupakan. Bos saya ingin menjaga mereka "untuk referensi" tetapi belum ada yang melihat cerita-cerita itu.

Orang-orang umumnya terikat pada data mereka dan saya tahu itu sulit untuk memahami membuang sesuatu begitu Anda sudah memilikinya, tetapi menyimpan inventaris (baik fisik atau elektornik) di tangan tidak gratis dan semakin saya memikirkannya, semakin saya setuju dengan "melemparkan". Ini dari "Persyaratan Perangkat Lunak Agile: Praktek Persyaratan Lean untuk Tim, Program, dan Perusahaan" (hal.190) - "Cerita pengguna dapat dibuang dengan aman setelah implementasi. Itu menjadikannya ringan, membuat mereka tetap ramah tim, dan menumbuhkan negosiasi, tetapi tes penerimaan tetap ada selama aplikasi ... "

DXM
sumber
+1 untuk menunjukkan perbedaan antara persyaratan dan cerita pengguna ke OP.
Frank
Saya hanya ingin menambahkan bahwa tim saya dan tim-tim sebelumnya tidak pernah menjadi "penipu". Kami menyimpannya untuk referensi.
Simon Whitehead
@SimonWhitehead: karena Anda bukan satu-satunya yang membuat komentar itu, saya memperbarui jawaban saya. Tim saya tidak pernah membuang satu cerita pun. Jadi seberapa sering Anda harus kembali 2 tahun di masa lalu dan menggali cerita-cerita lama untuk referensi? Dan info seperti apa yang Anda dapatkan dari mereka. Bagaimana detail cerita Anda dibandingkan dengan apa yang dijelaskan oleh Bob Martin ( books.google.com/... ) (terutama paragraf ke-3 di bagian Cerita Pengguna? Hanya ingin tahu, apakah poin-poin Anda berbicara atau apakah Anda benar-benar menangkap SEMUA persyaratan? ...
DXM
... tim saya selalu menyimpan segalanya tetapi kami bahkan tidak memiliki detail dalam cerita kami, jadi saya masih tidak mengerti apa nilai cerita-cerita yang disediakan, tetapi seperti banyak yang lain, bos saya sangat bersikeras untuk tidak membuang apa pun.
DXM
Tes Penerimaan yang Anda bicarakan, ini terdengar seperti kasus uji yang terdokumentasi? Apakah saya benar, atau apakah itu tes runnable yang sebenarnya?
Didier A.
1

Bagaimana jika Cerita Pengguna berubah nanti, bagaimana itu diperbarui dan disimpan sebagai artefak? Saya telah melihat banyak tim baru membuka laporan tiket / fitur baru / laporan bug alih-alih melacak cerita aslinya.

Mengelola dokumentasi apa pun bisa sulit terlepas dari apakah Anda menggunakan cerita gesit atau dokumen besar di muka, dan untuk mengurangi beban, dokumentasi harus minimal dan diperbarui secara bertahap agar sesuai dengan upaya yang dilakukan pada pengujian dan implementasi. Seperti yang telah disinggung oleh OP, hanya memperbarui dokumentasi berisiko kehilangan sejarah tentang bagaimana perangkat lunak telah berkembang dari waktu ke waktu.

Apakah ini benar-benar penting? Terkadang bisa. Untuk sebagian besar Anda hanya ingin melihat cerita / UML / apa pun bersama dengan tes dan kode itu sendiri pada saat ini, namun ketika pertanyaan diajukan tentang mengapa fitur telah diterapkan dengan cara tertentu, sering kali dapat berguna untuk melihat sejarah untuk melihat bagaimana fitur tersebut telah berubah dari waktu ke waktu, untuk melukis gambaran yang lebih jelas mengapa pilihan implementasi X terpilih bukan pilihan Y .

Ada beberapa cara untuk melacak artefak tersebut. Salah satu opsi yang lebih baik adalah menyimpan cerita Anda di alat yang memungkinkan Anda untuk membuat teks cerita Anda diversi versi dengan cara yang mirip dengan versi kode sumber Anda. Wiki cenderung sangat pandai dalam hal ini, dan demikian juga beberapa alat manajemen proyek / masalah, seperti Trac atau Redmineyang menyimpan sejarah perubahan untuk masalah itu sendiri, serta halaman wiki dalam sistem ini. Ini dapat diambil sedikit lebih jauh, untuk meningkatkan kemampuan melacak perubahan dari satu isu ke fitur, dengan memastikan bahwa cerita atau isu baru terkait dalam beberapa cara dengan masalah dan cerita yang lebih lama terkait. Ini bisa sesederhana menambahkan id masalah / cerita yang lebih lama ke teks isu / cerita yang lebih baru, tetapi dapat sangat ditingkatkan dengan memasukkan masalah atau id cerita ke komentar check-in setiap kali Anda melakukan perubahan pada sistem kontrol versi Anda . Namun metode ini memiliki nilai terbesar jika komit Anda sering dan terbatas pada satu cerita atau masalah saja.

Kesulitan terbesar tentu saja adalah bahwa jenis pendekatan ini membutuhkan perhatian yang cermat dan komitmen oleh setiap anggota tim untuk konsisten, dan untuk menjaga komitmen mereka kecil dan sering, dan bagi mereka yang mengelola cerita dan / atau masalah / sistem pelacakan proyek untuk menjaga di atas artefak yang menyediakan tautan antara kondisi implementasi Anda saat ini, dan semua perubahan yang sebelumnya terjadi.

S.Robins
sumber
1

Telah dikatakan sebelumnya tetapi saya pikir intinya adalah ini:

  • persyaratan dapat mencakup banyak sisi dan biasanya menghasilkan lebih dari satu cerita.

  • sebuah cerita mengatur kerja tim dalam potongan-potongan yang cukup kecil untuk masuk dalam batas waktu sprint.

  • seringkali ada banyak detail yang perlu didefinisikan agar beberapa fungsi tertentu berfungsi dengan benar. Inilah saatnya mulai berguna untuk menyimpan definisi-definisi ini dalam dokumen persyaratan terpisah - untuk kejelasan, pemahaman bersama dan referensi di kemudian hari.

Pertimbangkan contoh toko hewan peliharaan daring yang legendaris:

  • Ceritanya mungkin mengatakan "Sebagai pengguna, saya ingin melihat PPN dicetak pada tanda terima saya, ...". Sekarang, perhitungan PPN (pajak pertambahan nilai) bisa menjadi masalah yang rumit dan kemungkinan membutuhkan lebih banyak pekerjaan daripada yang disarankan cerita ini.
  • Mungkin ada cerita tambahan yang meminta agar penghitungan PPN dilakukan (katakanlah, gandakan jumlah total penjualan dengan tarif PPN ), tetapi kemungkinan tidak akan memasukkan semua variasi penghitungan itu.
  • Pada awalnya, tim akan fokus pada penyediaan modul dasar, katakanlah mengambil daftar barang dan harga jual mereka, dan mengembalikan jumlah PPN. Itu adalah sesuatu yang bisa diselesaikan oleh tim dalam waktu yang singkat.
  • Kemungkinan akan ada lebih banyak cerita untuk mencakup semua kasus yang mungkin untuk perhitungan PPN.
  • Untuk menjaga agar berbagai aturan perhitungan PPN terlihat di seluruh dan di luar sprint tunggal, masuk akal untuk membuat dokumen persyaratan terpisah yang mencantumkan semua berbagai cara untuk menghitung PPN. Dokumen ini dapat berkembang seiring waktu. Bahkan, menambahkan bagian baru ke dalamnya bisa menjadi bagian dari tugas cerita untuk diselesaikan.
miraculixx
sumber
Sepertinya Anda sejajar dengan @Matthew Flynn dalam dokumen Persyaratan ditulis sepanjang pengembangan, dan berfungsi lebih sebagai dokumentasi dari kerja kode yang sebenarnya, kemudian daftar persyaratan sebelumnya.
Didier A.
"... ditulis sepanjang pengembangan" - itu bagiku kedengarannya terlalu adil. Untuk memperjelas, persyaratan bukanlah produk sampingan, mereka adalah prasyarat untuk implementasi yang efisien. Namun, dalam proyek yang gesit, persyaratan ditulis hanya sampai tingkat yang sangat diperlukan untuk melaksanakan putaran pengembangan selanjutnya, dan tidak lebih. Bentuk untuk melakukan itu adalah kisah pengguna yang menurut definisi telah membatasi ruang lingkup sehingga waktu yang diperlukan untuk mengimplementasikannya pas dalam sprint. Bandingkan hal ini dengan proyek air terjun, di mana persyaratan ditentukan hingga detail menit sebelum melanjutkan ke fase berikutnya.
miraculixx
Tidak jelas, karena Anda mengatakan bahwa persyaratan tidak sama dengan cerita pengguna, yang saya setujui. Saya menganggap persyaratan sebagai detail yang tepat dari logika bisnis, yang lebih seperti caranya, sedangkan kisah pengguna adalah keadaan yang diinginkan, yang lebih seperti apa. Jadi saya tidak yakin saya mengerti komentar Anda? Tampaknya dalam contoh Anda, Anda akan menangkap persyaratan PPN yang berbeda saat dikirimkan, satu per satu, sebagai lawan dari semuanya sekaligus.
Didier A.
IMHO jika persyaratan, seperti cerita pengguna, tidak menentukan kondisi yang diinginkan, saya tidak yakin apa gunanya untuk memulai. Memang dalam contoh PPN, akan ada beberapa kisah pengguna yang secara spesifik ditentukan dan disampaikan dalam sprint berikutnya. Yang pasti, tidak ada metode gesit yang mencegah tim dari mendokumentasikan seluruh rangkaian aturan perhitungan PPN di satu tempat, itu hanya mempromosikan gagasan bahwa tidak ada gunanya menghabiskan waktu di muka untuk menulis persyaratan yang terperinci, mencakup semua untuk sederhana alasannya bahwa tim pengembang tidak akan mampu mengimplementasikan sekaligus.
miraculixx
Saya masih bingung, poin pertama dalam jawaban Anda adalah bahwa kisah pengguna tidak sama dengan persyaratan. Apakah Anda mengatakan bahwa Anda akan memiliki dokumen lain yang ditulis di awal setiap sprint yang menangkap persyaratan untuk sprint yang akan datang?
Didier A.
0

Anda dapat menggunakan freemind untuk mengumpulkan daftar fitur. Cara melakukannya, lihat tutorial ini (di suatu tempat di tengah).

Ketika Anda memiliki daftar fitur, Anda pergi dengan menulis cerita pengguna. Ini dapat dilakukan dengan menggunakan file teks sederhana, atau dokumen kata, atau sesuatu yang kompleks seperti alat manajemen gesit .

Ketika Anda selesai dengan cerita pengguna, itu diprioritaskan. Kemudian, dari cerita pengguna, orang menghasilkan tugas, orang mengambil tugas dan mengimplementasikannya dalam kode.

Semua ini dapat dilihat bagaimana proyek ac dikelola sejak awal di musim gugur seri video cast tangkas .

BЈовић
sumber