it-swarm-id.com

Bagaimana Anda menangani desain di Scrum?

Bagaimana Anda menangani desain di Scrum? Apakah Anda masih memiliki dokumen desain yang ditulis dengan baik untuk setiap iterasi scrum? Apakah Anda hanya membuat catatan desain yang menampilkan diagram UML? Atau apakah Anda hanya memiliki kode yang dikomentari dengan baik?

Setiap iterasi mungkin melibatkan perubahan desain jadi saya hanya ingin tahu bagaimana orang menangkap ini sehingga pengembang baru memiliki pekerjaan yang mudah untuk memahami domain dan bergabung secepat mungkin.

26
Seth

hanya karena scrum tidak berarti semuanya mengubah setiap sprint!

Scrum adalah tentang melakukan apa yang perlu (tetapi tidak lebih). Anda masih perlu melakukan desain dan Anda masih perlu mendokumentasikan. Jumlahnya tidak pasti atau bagaimana melakukannya.

Bagian dari perencanaan setiap sprint adalah memutuskan apa yang perlu dilakukan. Jika sesuatu dalam tumpukan perlu dirancang karena berdampak pada hal-hal lain maka Anda perlu menambahkan tugas khusus untuk proses desain dan melakukannya sebelum tugas implementasi.

11
Martin York

Saya punya banyak hal untuk dikatakan tentang topik ini. Saya telah melihat banyak kasus di mana perusahaan/tim/orang mengatakan mereka menggunakan pendekatan Agile untuk perangkat lunak tetapi pada kenyataannya, mereka ingin memetik hasil yang dijanjikan metode Agile tanpa berpegang pada prinsip.

Agar iterasi cepat berfungsi, Anda harus melakukan pengembangan yang digerakkan oleh tes (saya berhenti mengatakan Anda harus melakukan TDD dengan enggan). Di TDD, tes Anda menyatakan desain dan maksud kode (ketika mereka mengatakan "kode adalah dokumentasi" apa yang seharusnya mereka katakan adalah "tes adalah dokumentasi"). Dengan menulis unit test yang mengekspresikan pemahaman Anda tentang fitur yang ada, Anda secara eksplisit menyatakan apa yang Anda yakini perlu dilakukan oleh kode. Kemudian Anda menulis kode yang melakukannya. Kemudian Anda merevisi kode itu sehingga mematuhi prinsip arsitektur yang baik "Red-Green-Refactor".

Menjalankan pengujian unit Anda dengan setiap checkin (atau bahkan sebelum setiap checkin) memverifikasi bahwa kode baru yang Anda tulis tidak melanggar fungsi yang diharapkan di beberapa area aplikasi lainnya. Ini memberikan jaring pengaman yang memungkinkan Anda untuk mengubah kode dengan mengabaikan tanpa kerusakan. Ketika pemahaman Anda tentang persyaratan yang ada meningkat, Anda dapat memodifikasi tes untuk mencerminkan pengetahuan baru itu. Desain sebenarnya terletak pada tes Unit. Segala sesuatu yang lain (termasuk kode yang tidak dibahas) adalah bohong.

Inilah beberapa bacaan yang direkomendasikan

Ini adalah tempat yang baik untuk mulai mencari cara untuk benar-benar mendekati pengembangan tangkas.

10
Michael Brown

Scrum adalah metodologi manajemen proyek, bukan metodologi pengembangan perangkat lunak. Scrum biasanya digunakan bersama dengan metodologi Agile. Di situlah letak jawaban Anda.

2
Steven A. Lowe

Arsitektur keseluruhan proyek dan desain tingkat tinggi akan dilakukan di luar tim scrum ketika pemilik proyek membuat cerita.

Perlu ada cukup desain keseluruhan yang ditulis dalam bentuk apa pun untuk membantu melihat hubungan antara cerita dan harapan pelanggan.

Beberapa desain yang diperlukan untuk setiap cerita akan dilakukan dalam perencanaan dan negosiasi dengan pemilik produk selama perencanaan.

Sebagian besar upaya desain untuk sebuah cerita akan dilakukan dalam sprint.

Jika cerita tidak cukup didefinisikan untuk diperkirakan, maka kotak waktu dapat disisihkan dalam sprint saat ini untuk melakukan pekerjaan desain yang cukup sehingga cerita yang sesuai dapat dibuat untuk sprint selanjutnya.

1
Blake

Scrum adalah model berulang dan bertahap berdasarkan nilai lincah . Itu berarti Anda tidak memiliki fase desain terpisah. Idenya adalah Anda harus terus-menerus berurusan dengan desain, sama seperti Anda terus-menerus berurusan dengan analisis, implementasi, pengujian dan integrasi di seluruh proyek.

Anda perlu sedikit perencanaan agar ini berhasil. Masukkan rapat perencanaan sprint, di mana tim memperkirakan tugas untuk sprint selanjutnya. Kebanyakan orang tidak menyadari ini bukan hanya pertemuan estimasi, tetapi juga upaya desain. Misalnya, tugas mungkin "Tambahkan kode untuk model mobil baru". Anda belum dapat memperkirakan ini, Anda perlu tahu lebih banyak. Jadi tim membahas desain dan menghasilkan solusi yang luas ("Mobil subkelas?") Dan menambahkannya sebagai pengingat tugas. Anda jarang membutuhkan formalitas lebih dari itu. Anda sekarang memiliki ide bagaimana menyelesaikan masalah. Anda belum memiliki semua detail dan itu bagus, Anda tahu cukup dari desain untuk dapat membuat perkiraan yang nyaman. Tanpa harus membuat diagram sama sekali (pada titik ini).

Untuk dokumentasi fisik aktual , saya merekomendasikan membuat diagram ikhtisar sistem di dinding untuk dilihat semua orang. Tinjauan umum hanya perlu menyertakan kelas dan modul yang paling penting dan jarang harus diperbarui. Juga, membuat beberapa diagram keadaan untuk kelas paling penting dalam sistem sangat membantu. Taburi dengan beberapa diagram urutan pilih dari kasus penggunaan umum untuk memudahkan orang melihat dengan cepat bagaimana hal-hal terhubung. Saya berasumsi Anda dapat menghasilkan diagram hierarki kelas dari kode Anda, sehingga masalah itu mudah diselesaikan.

Perhatikan bahwa semua diagram dibuat setelah implementasi aktual. Ini sesuai dengan "perangkat lunak yang berfungsi di atas dokumentasi komprehensif" dan desain tepat waktu.

Dan ya, kode yang dapat dibaca jelas merupakan dokumentasi.

1
Martin Wickman

Tidak ada desain depan sebanyak persyaratan yang sering berubah. Jadi mendesain ke tingkat kelas biasanya membuang-buang waktu. Namun, dapat bermanfaat untuk membuat sketsa keputusan arsitektur tingkat tinggi.

Masalah dengan melakukan dokumen desain tugas berat adalah bahwa dokumen tersebut sudah usang segera setelah dibuat. Jadi apa yang paling berhasil biasanya adalah dokumentasi tingkat tinggi yang tidak mungkin berubah sepenuhnya dalam waktu singkat.

1
Vadim

Saat ini ada perpecahan di dalam komunitas Eclipse antara alat UML tradisional yang berfokus pada MDD di mana model menggerakkan kode/pengembangan dan Omondo yang menganggap bahwa iterasi harus mendorong proses pengembangan dan tentu saja tidak hanya model.

Saya setuju dengan mereka karena MDD adalah omong kosong sementara UML benar-benar cara yang sangat baik karena standar untuk berkomunikasi dengan anggota tim lainnya. alt text

0
UML_GURU

Pemahaman saya adalah bahwa Anda melakukan desain tingkat yang lebih tinggi dengan persyaratan di muka yang Anda kumpulkan di awal proyek. Anda mendokumentasikan desain ini dengan baik.

Kemudian ketika Anda benar-benar menerapkan persyaratan, Anda mengubah desain level yang lebih rendah sesuai kebutuhan, tetapi Anda menghindari mengubah desain level yang lebih tinggi.

Yah, begitulah dijelaskan kepada saya lima menit yang lalu ...

0
indyK1ng