Ada fitur yang telah lulus pengujian penerimaan, baik secara internal maupun oleh pelanggan. Ini adalah fitur yang berfungsi penuh. Namun, sekarang ada permintaan untuk mengecualikan fitur ini dari rilis yang akan datang. Menurut pelanggan, fitur ini harus dihapus karena pengguna belum dilatih tentang cara menggunakannya.
Apa tindakan terbaik untuk menangani situasi ini? Haruskah kita merancang perangkat lunak untuk mengantisipasi bahwa suatu fitur mungkin dikecualikan menit terakhir menggunakan pengaturan konfigurasi? Adakah solusi tergantung konteks yang mungkin lebih benar dalam beberapa situasi daripada yang lain?
release
features
configuration-management
CarneyCode
sumber
sumber
Jawaban:
Yang lainnya terlalu berbahaya.
sumber
Majikan saya sebelumnya menjual beberapa perangkat lunak yang mengaktifkan fitur berbeda berdasarkan lisensi tertentu yang terlibat. Jadi kemampuan untuk mengaktifkan / menonaktifkan fitur saat runtime adalah fitur yang dirancang dalam. Secara umum, orang-orang menyebut ini "pengembangan didorong oleh fitur" ( artikel wikipedia , buku yang layak pada subjek ). Dibutuhkan banyak pengujian untuk menemukan bug yang dapat disebabkan oleh mengaktifkan dan menonaktifkan fitur. Karena sebagian besar orang di kantor menghasilkan kunci lisensi untuk semua fitur, kemampuan fitur terbatas cenderung kurang dilaksanakan (dan pada lebih dari satu kesempatan, tidak diuji sama sekali sampai pelanggan menelepon ke help desk).
Untuk "perbaikan" menit terakhir Anda, maka solusi tercepat adalah dengan menyembunyikan perintah menu / hotkey / tombol yang mengaktifkan fitur ini. Ini akan memperkenalkan bug lain . Jadilah yang terdepan dengan pelanggan dan manajer proyek Anda.
sumber
Saya tidak akan pernah menulis kode sedemikian rupa sehingga fitur dapat dinyalakan atau dimatikan - kecuali persyaratan itu dibuat di muka.
Menghapus atau menonaktifkan fitur adalah perubahan pada spesifikasi, dan seperti halnya perubahan spesifikasi lainnya, memerlukan waktu untuk mengimplementasikan dan memverifikasi. Anda perlu bertanya mengapa fitur ini akan dikecualikan - apakah masih terlalu bermasalah untuk dirilis? Apakah klien sama sekali tidak menginginkan fitur itu? Apakah ada alasan bisnis untuk menunda fitur ini?
Khususnya dalam kasus di mana fitur dianggap "terlalu buggy" untuk dirilis, Anda harus waspada apakah fitur itu yang "buggy" atau apakah itu sebenarnya rilis secara keseluruhan yang belum siap untuk dirilis dan fitur khusus itu adalah satu-satunya tempat masalah muncul paling banyak - dalam hal ini, menonaktifkan fitur itu tidak akan banyak membantu Anda ...
sumber
Kami membalas permintaan menit terakhir dengan membahas betapa pentingnya perubahan itu bagi pelanggan. Membuat perubahan besar sesaat sebelum peluncuran membatalkan seluruh fase pengujian dan penerimaan, jadi kami memindahkan permintaan perubahan ke rilis berikutnya atau memindahkan tanggal peluncuran sehingga perubahan menit terakhir dapat diuji dengan benar (pelanggan sering memilih untuk memindahkan perubahan ke rilis berikutnya ketika mereka mengetahui bahwa alternatifnya adalah memindahkan tanggal peluncuran :-))
Fungsionalitas opsional adalah yang terbaik (imho) dinyalakan / dimatikan melalui konfigurasi. Seperti yang Anda sebutkan ini harus dirancang sejak awal.
sumber
Saya harus melakukan ini di masa lalu, kadang-kadang dengan fitur yang membuatnya menjadi produksi dan ternyata menjadi bencana. Saya sudah melakukan semua yang berikut ini.
1) Konfigurasi perubahan untuk menonaktifkan fitur. Bekerja di tempat yang dapat dikonfigurasi 2) Nonaktifkan / hapus semua entitas UI yang memicu fitur. 3) Nonaktifkan kode pada fitur sehingga tidak melakukan apa-apa (tetapi tampaknya berfungsi) Harus melakukan ini di mana kami tidak memiliki akses ke kode shell gui.
Mengenai apakah Anda harus mendesain kemampuan untuk mengaktifkan atau menonaktifkan fitur, saya akan melihat gambar yang lebih besar dan melihat bagaimana Anda menambahkan fitur saat ini. Ini bukan langkah besar untuk membuat fitur menjadi modul yang paling buruk ditemukan secara dinamis. Saya suka modular, jadi saya cenderung seperti ini.
sumber
Terkadang Anda dapat membuat fitur tidak dapat diakses sebagai solusi jangka pendek, lebih mudah yang benar-benar menghapusnya. Periksa apakah ada artefak yang terlihat (misalnya tombol dan opsi menu yang terlihat tetapi dinonaktifkan).
Anda harus membuat fitur dengan mudah dapat dialihkan hanya jika itu adalah persyaratan bahwa pengguna / admin dapat mengaktifkan / menonaktifkan fitur tersebut.
Jika itu cukup mudah sehingga Anda tidak keberatan melakukannya sebagai antisipasi, mungkin sama mudahnya untuk melakukannya ketika Anda tahu itu diperlukan, dan sedikit lebih mudah untuk melepasnya kembali.
Jika Anda tidak dapat menonaktifkan fitur tanpa risiko signifikan memperkenalkan bug baru, beri tahu orang itu. Jika tidak, pada dasarnya Anda secara sukarela menjadi kambing hitam ketika masalah yang tak terelakkan terjadi, meskipun masalah sebenarnya adalah apa pun yang mengakibatkan perubahan persyaratan menit terakhir ini.
sumber
Berdasarkan hasil edit Anda, saya kira ini fitur yang tidak terpisahkan. Menghapusnya mungkin berdampak pada bagian lain dari sistem. Sungguh, pelanggan tidak seharusnya berharap dapat meminta perubahan mendasar pada sistem tanpa mengeluarkan biaya apa pun. Biaya dalam kasus ini adalah untuk Anda, entah bagaimana menonaktifkan ini (mungkin dengan hanya berkomentar sejumlah besar kode) dan kemudian menguji ulang untuk memastikan bahwa tidak ada yang rusak.
Cara paling sederhana untuk "menonaktifkan" fitur seperti ini adalah dengan menghapus / mengomentari titik masuk di tingkat tertinggi. Misalnya: jika satu-satunya titik masuk ke fitur adalah tombol pada UI, cukup beri komentar pada baris yang membuat tombol. Jika ada beberapa titik masuk, Anda mungkin harus menggali lebih dalam untuk menonaktifkannya.
sumber
Tergantung banyak pada jika itu berbahaya kereta / rusak / tidak diinginkan
Jika itu tidak dapat melakukan sesuatu yang tidak aman dan mereka hanya mengecualikannya untuk alasan penggunaan yang mudah, kurangnya dokumen pelatihan atau karena itu rusak, kami biasanya hanya menghapus titik masuk ke fitur itu dari UI dan membiarkan yang lainnya ada di tempatnya.
Jika itu berbahaya kereta kami melakukan itu dan menambahkan pengecualian eksplisit dalam logika bisnis inti sehingga tidak dapat dieksekusi.
Yang terburuk adalah ketika fitur tersebut tidak diinginkan (perubahan regulasi membuat konsep ilegal misalnya) dan semua referensi ke fitur harus dihilangkan seluruhnya.
Saat Anda bergerak ke bawah daftar, potensi kesalahan meningkat. tergantung pada situasi Anda yang pertama, atau dua pilihan pertama mungkin sesuatu yang bisa dilakukan dengan cepat, yang ketiga hampir tidak pernah ada.
Sedangkan untuk mendesain di fitur switch, kecuali pelanggan ingin saya tidak biasanya pergi ke arah itu sampai pelanggan telah menunjukkan sejarah membuat pilihan terlambat seperti itu.
sumber
Asumsi saya adalah bahwa manajemen telah menjual fitur ini sebagai add-on berbayar, dan pada menit terakhir pelanggan mengatakan mereka tidak ingin membayar add-on (mungkin menyadari itu tidak bernilai uang).
Mengingat hal itu, manajemen mengacau.
sumber
Saya telah bekerja dengan sejumlah sistem di mana akses fitur didorong oleh pengaturan keamanan. Ini membuat fitur semacam ini melumpuhkan relatif sepele. Hanya saja, jangan aktifkan fitur untuk grup keamanan apa pun. Kecuali jika fitur ini diaktifkan untuk semua, pengujian dengan itu dinonaktifkan akan dilakukan.
Fitur lain yang dapat dinonaktifkan dengan mudah terkait dengan nilai kode. Ini umumnya menangani kasus tertentu dari sesuatu seperti produk, pelanggan, atau apa pun. Menonaktifkan fitur ini dapat dilakukan dengan tidak mengaktifkan nilai kode terkait.
Seperti yang telah dicatat oleh orang lain, beberapa fitur memiliki titik masuk UI khusus yang dapat dihapus. (Kasus-kasus di atas dapat berupa kasus khusus ini.). Menghapus titik masuk harus memungkinkan Anda untuk mengirim fitur tanpa mengaktifkan akses. Ini biasanya cara paling tidak berisiko untuk menangani kasus ini.
Jika fitur dikembangkan pada cabang fitur, Anda harus dapat menghapus batalkan penggabungan cabang fitur dan tes ulang. Ini harus lebih sederhana daripada metode lain untuk menonaktifkan kode. Membuat tambalan penghapusan fitur akan menyederhanakan mengaktifkan kembali fitur nanti. Ini memberi Anda setara kasar dengan cabang fitur.
sumber