Mencari cara yang lebih baik untuk menggabungkan refactoring arsitektur yang mendalam dengan pengembangan berbasis fitur

9

Pernyataan masalah:

Diberikan:

  • TFS sebagai Kontrol Sumber
  • Aplikasi klien desktop berat dengan banyak kode lawas dengan desain arsitektur yang buruk atau hampir tidak ada.
  • Klien terus-menerus membutuhkan fitur baru dengan kualitas suara,
    pengiriman cepat dan terus-menerus mengeluh pada pengguna yang tidak ramah

Masalah:

Aplikasi tidak diragukan lagi membutuhkan refactoring yang mendalam. Proses ini pasti membuat aplikasi fase stabilisasi yang tidak stabil dan berdedikasi diperlukan.

Kami sudah mencoba:

Refactoring di master dengan penggabungan berkala dari master (MB) ke branch fitur (FB). (Kesalahan saya) Hasil: Banyak cabang tidak stabil.


Apa yang kami sarankan:

Tautan ke artikel (pdf)
Buat cabang tambahan untuk refactoring (RB) secara berkala menyinkronkannya dengan MB melalui penggabungan dari MB ke RB. Setelah RB distabilkan, kami mengganti master dengan RB dan membuat cabang baru untuk refactoring lebih lanjut. Ini rencananya. Tapi di sini saya berharap neraka penggabungan MB ke RB setelah menggabungkan FB ke MB.

Keuntungan utama: Master yang stabil sebagian besar waktu.

Apakah ada alternatif yang lebih baik daripada prosedur?

Pavel Voronin
sumber
1
Kemungkinan peningkatan (daripada alternatif) untuk proses yang Anda usulkan: Alat penggabung TFS sangat sulit dibandingkan dengan berbagai utilitas alternatif berbeda. Jika Anda belum melakukannya, Anda mungkin menemukan penggabungan secara manual menjadi kurang menyakitkan jika Anda mengkonfigurasi klien TFS untuk menggunakan utilitas diff yang lebih baik, daripada alat bawaan. Anda juga dapat menemukan utilitas Alat TFS dari Microsoft berguna. Ini memberikan kemampuan untuk menjalankan perbedaan antara perubahan atau cabang, bukan hanya antara file individual.
Brian

Jawaban:

1

Saya memiliki situasi yang sama di masa lalu. Apa yang saya lakukan:

  • menilai keadaan proyek saat ini; dalam sebagian besar situasi, arsitektur (atau kurangnya arsitektur) adalah masalah utama => pikirkan kembali
  • biasanya ada fitur yang berfungsi, masalahnya adalah kopling tinggi antara berbagai bagian proyek; Saya menilai fitur yang berfungsi dan saya menggunakannya kembali, tetapi dalam arsitektur saya sendiri
  • berbicara dengan pelanggan; Saya tidak tahu apa yang dikatakan manajer Anda, tetapi saya pikir penting untuk berbicara dengan pelanggan dan jujur; dia perlu tahu Anda sedang mengerjakan kualitas produknya. Saya membuat kesepakatan untuk rencana rilis:

  • pada fase penggabungan 2 solusi (membuat arsitektur + menggunakan kembali fitur dari proyek lama) satu-satunya hal yang dirilis (fitur baru) dibuat pada produk lama; namun, rilis baru hanya berisi perbaikan bug yang penting. Jadi sangat sedikit rilis yang dibuat pada produk lama. Karenanya hal-hal yang diubah dengan mudah digabungkan ke dalam solusi baru.

  • rilis baru pertama (rilis produk baru) hanya berisi apa yang terkandung produk lama (tidak ada fitur baru); setelah stabilisasi (stabilisasi tidak butuh waktu lama) saya bekerja dengan satu proyek

Saya pikir Anda tidak dapat melarikan diri dari periode rilis sporadis (yang cukup singkat). Penting bagi Anda untuk menyetujui hal ini dengan pelanggan Anda.

Paul Ianas
sumber