Bagaimana Anda menangani pekerjaan non-fungsional dengan Scrum di embedded eystems?

15

Saya memiliki dua masalah dengan Scrum di sistem embedded. Pertama, ada banyak tugas yang harus dilakukan, terutama pada tahap awal, yang tidak dapat dibuktikan. Kami mulai dengan papan pengembangan, tanpa OS, tanpa layar, tanpa komunikasi serial, dll. Kami tidak memiliki layar untuk enam sprint.

Empat sprint pertama adalah:

  • Mendapatkan RTOS dan berjalan
  • Membuat tugas menulis driver jaringan dan serial
  • Menulis interupsi rutin untuk tombol, komunikasi, dll.
  • Menulis kelas dan metode basis data primer
  • Menulis menu debug serial

Sebagian besar tugas ini tidak cocok untuk cerita pengguna. Bahkan, satu-satunya antarmuka ke seluruh sistem adalah menu debug serial, dibangun di sprint 3, jadi tidak ada yang menunjukkan di akhir sprint. Bahkan menu serial dimaksudkan untuk penggunaan internal dan bukan pengguna akhir. Meskipun demikian, saya masih ingin melacak dan mengelola kegiatan pengembangan ini melalui Scrum.

Kami akhirnya menulis frasa "cerita pengguna" seperti, "Sebagai pengembang ...", yang tidak saya sukai tetapi dalam menggunakan Proses Target (www.targetprocess.com), tidak ada konsep item jaminan simpanan yang tugas atau tugas.

Kedua, bagaimana Anda menangani rilis dan pengujian? Ini sangat menyebalkan bagi kami karena para penguji tidak memiliki perangkat keras pen-debug, jadi kami harus membuat versi flash kode dan membakarnya di papan pengembangan untuk diuji. Penguji secara teknis tidak setajam pengembang dan seringkali membutuhkan banyak dukungan dalam membuat hal-hal bekerja pada tahap awal (mengatur ulang papan, menghubungkan komunikasi serial, dll.), Atau bahkan dalam memahami output.

Akhirnya, mengenai definisi selesai, sprint tidak bisa lengkap sampai semua cerita selesai. Semua cerita tidak lengkap sampai diverifikasi oleh penguji. Tidak ada cara untuk menghindari "merampok" waktu pengembang untuk diberikan kepada penguji. Dengan kata lain, jika tiga cerita pengguna terakhir dalam sprint akan memakan waktu lima hari untuk diuji, mereka harus diberi kode dan unit diuji lima hari sebelum akhir sprint. Apa yang seharusnya dilakukan pengembang? Berhenti bekerja?

Saya sedang bercanda, tetapi ini adalah masalah nyata yang mencoba untuk mematuhi aturan. Sekarang, saya baik-baik saja dengan membengkokkan aturan, tetapi masalah yang saya miliki adalah, itu mengacaukan semua metrik burndown saya jika saya tidak dapat menandai sesuatu dilakukan sampai mereka diuji.

Saya ingin mendengar bagaimana orang lain menangani situasi ini.

Bruce
sumber
2
Langkah 1. Cari orang lain dengan pertanyaan yang sama. Contoh. stackoverflow.com/questions/5909533/… . Itu pertanyaan yang sangat umum.
S.Lott
Sangat lucu berapa banyak waktu dan usaha yang diboroskan orang untuk mencoba mematuhi proses pengembangan, yang tampaknya tidak menambah apa pun pada hasil akhirnya
Steve

Jawaban:

8

Anda menggunakan metodologi pada produk yang tidak kompatibel dengan IMHO.

Dalam cara kebanyakan orang mendefinisikan lincah, semua pekerjaan dapat dinegosiasikan berdasarkan perubahan prioritas, dapat dipesan ulang, atau diganti.

Dalam cara kebanyakan orang mendefinisikan air terjun adalah bahwa pekerjaan diletakkan secara berurutan sebelumnya dari upaya arsitektur yang signifikan di awal.

Tugas-tugas yang Anda sebutkan di atas tampak sangat air terjun bagi saya. Mereka harus dalam urutan tertentu, dan mereka tidak bisa dinegosiasikan.

Saya tidak mengatakan bahwa Anda harus mematuhi pandangan siapa pun tentang proses apa pun, tetapi setidaknya untuk tugas-tugas ini Anda tampaknya berada dalam proyek yang tidak gesit bagi saya. Mencoba untuk menampar itu menjadi proses yang tangkas akan menjadi sangat ceroboh.

Jika sisa dari proyek ini cocok untuk gesit, saya tidak akan terlalu khawatir tentang pengaturan awal yang tidak sesuai, tetapi fakta bahwa Anda menyebutkan RTOS dan papan pengembangan membuat saya curiga semuanya akan lebih baik dalam hal yang lebih baik. seperti air terjun (urutan panjang ketergantungan tidak bergerak).

Tagihan
sumber
7

OK, jadi saya tidak tahu apa-apa tentang membangun sistem embedded, tetapi dari apa yang saya lihat tidak ada yang membuat Scrum tidak pantas untuk pengembangan seperti itu. Sangat mudah untuk terjebak dengan kekhawatiran tentang tidak benar-benar memiliki fungsi yang dihadapi pengguna sehingga sulit untuk menulis "cerita pengguna" dengan memiliki pengguna. Kecuali bahwa cerita pengguna tidak benar-benar bagian dari Scrum - mereka sering digunakan dengan Scrum - tetapi benar-benar hanya sebagai alat.

Apa yang menjadi bagian dari Scrum adalah gagasan untuk menghadirkan fitur lengkap yang sepenuhnya teruji dan berpotensi dapat diterapkan dalam lingkungan langsung setiap Sprint. Ketika Anda memulai dari awal pada hari pertama dari segala jenis proyek, nilai sebenarnya dari segala jenis fungsi yang dapat Anda berikan di Sprint 1 cukup kecil. Itu karena setiap hal kecil membutuhkan berton-ton infrastruktur yang dibangun untuk membuatnya berfungsi. Tetapi intinya adalah Anda hanya membangun infrastruktur yang cukup untuk membuat setiap fitur berfungsi. Dan kemudian Anda membangunnya saat Anda menambahkan lebih banyak fitur.

Idenya adalah bahwa Anda secara khusus TIDAK menghabiskan waktu berbulan-bulan untuk membangun infrastruktur yang tidak mungkin terdeteksi dari luar sistem. Mengapa? Karena sebelum Anda membangun barang yang benar-benar berfungsi, Anda tidak tahu persis apa infrastruktur yang dibutuhkan. Itulah hal-hal yang Anda pelajari ketika Anda membangun fitur aktual dari sistem. Jika Anda membangun infrastruktur di awal, maka Anda membangunnya ketika Anda tahu sedikit tentang sistem.

Jika Anda tidak ingin menulis cerita pengguna, maka ingatlah bahwa pengguna tidak harus menjadi orang. Jadi, Anda menulis hal-hal seperti, "Sebagai penangan interupsi CMOS, saya harus dapat mendeteksi status bendera modulasi tumpukan bzzle whozzit ketika kompresor fluxotronik memberi sinyal underpass bypass pasif". Sama sekali tidak menulis cerita pengguna "Sebagai pengembang ...".

Dave
sumber
3
Jawaban yang bagus, kecuali untuk pernyataan terakhir. Pengembang dapat menjadi pengguna juga, dan kadang-kadang Anda perlu melakukan pekerjaan untuk mendukung pengembang lain di tim.
Bryan Oakley
"Jika kamu membangun infrastruktur di awal, maka kamu akan membangunnya ketika kamu tahu sedikit tentang sistem." - Tidak berarti bahwa pengembang yang berpengalaman tidak akan tahu apa yang harus dilakukan oleh infrastruktur dasar. Jika Anda membangun setiap bagian infrastruktur (yang menurut definisi mendukung banyak fungsi) hanya untuk mengatasi masalah langsung dan tanpa upaya apa pun, Anda dapat akhirnya menulis ulang tanpa henti, dan mungkin harus terus menulis ulang fitur yang sudah jadi untuk mengintegrasikannya kembali. dengan infrastruktur yang kemudian ditulis ulang untuk mengakomodasi beberapa fitur lainnya
Steve
1

Anda menggunakan Scrum di area yang sangat spesifik dan Anda melanggar proses yang seharusnya pada setiap langkah. Pertanyaan Anda mungkin harus: Apakah ada metodologi gesit lain yang akan lebih cocok untuk lingkungan saya? Sederhananya, sangat sulit untuk membantu Anda melakukan Scrum yang lebih baik jika lingkungan Anda tidak mengizinkannya. Masalah yang saya lihat dalam deskripsi Anda:

  • Tidak ada tugas yang dapat dibuktikan yang dapat dianggap sebagai tugas infrastruktur. Jika Anda memerlukan beberapa sprint untuk melakukan sesuatu yang tidak dianggap sebagai nilai bisnis, maka cerita pengguna Anda mungkin akan terdefinisi dengan buruk. Jika Anda perlu membangun alat atau apa pun untuk dapat memberikan nilai bisnis maka produk dapat dibagi menjadi dua bagian / rilis - membangun alat dan membangun nilai bisnis. Dalam kasus seperti itu, cerita pengguna Anda "Sebagai Pengembang ..." akan benar-benar valid, karena alat dibuat untuk pengembang.

    Masalahnya di sini adalah bagaimana mengkomunikasikan hal ini dengan pelanggan, karena keterlibatannya dalam rilis pertama adalah nol. Jika tidak ada nilai bisnis bagi pelanggan, bagaimana mereka dapat berpartisipasi? Bagaimana pemilik produk dapat menentukan prioritas bisnis?

    Saya pikir masalah utama di sini adalah bahwa ini bukan sesuatu yang cocok untuk Scrum. Scrum mencoba untuk memberikan fitur bisnis yang paling penting terlebih dahulu, tetapi Anda perlu dua bulan untuk memberikan yang pertama. Scrum dan seluruh lincah merangkul perubahan - apa yang akan terjadi jika, setelah memberikan fitur pertama, pelanggan memerlukan beberapa perubahan yang kembali melalui semua sprint awal Anda?

  • Pengujian. Kegagalan lain karena tim di Scrum dianggap sebagai sekelompok anggota lintas fungsional. Ini berarti bahwa setiap orang melakukan pengembangan dan pengujian dan karena itu tidak ada situasi yang dijelaskan dalam poin akhir Anda (atau setidaknya tidak selama lima hari). Itu tidak berarti bahwa tidak ada QA terpisah untuk melakukan beberapa tes yang lebih kompleks dan canggih, tetapi tim harus menyediakan fitur yang sudah diuji / diverifikasi. Dalam kasus Anda, sepertinya Scrum bukan yang Anda butuhkan. Anda perlu menangani secara terpisah pengembangan dan pengujian dan fitur lewat di antara mereka.
Ladislav Mrnka
sumber