Katakanlah Anda memiliki mesin validasi yang perlu mencakup 100 aturan agar bermanfaat.
Anggap saja tim hanya dapat memberikan sekitar 10 aturan per iterasi.
Bagaimana Anda akan membuat "peningkatan produk yang berpotensi dirilis" pada akhir iterasi pertama, ketika mesin aturan masih kehilangan 90 aturan inti?
Apakah Anda, misalnya, menambahkan kegagalan / peringatan sementara yang selalu terjadi berdasarkan fakta bahwa tidak semua aturan telah diterapkan?
Sunting untuk konteks: Saya sedang mengembangkan middleware untuk proses bisnis yang kompleks dengan banyak kasus penggunaan lama, yang dimaksudkan untuk mereplikasi dan mengganti monolit besar. Sangat sulit untuk ditayangkan tanpa cakupan 100%, karena kami memiliki kemampuan terbatas untuk memutuskan atau membatasi kasus penggunaan rumit yang akan muncul dalam produksi yang meminta untuk dilayani.
Jawaban:
Anda melepaskan sepuluh pertama dalam sprint pertama. Hanya karena "berpotensi dapat dirilis" bukan berarti itu harus dapat digunakan oleh pelanggan. Ini hanya berarti bahwa fungsionalitas apa yang ada telah diuji dan berperilaku seperti yang dirancang, dan tidak menyebabkan regresi pada produk.
Pikirkan "berpotensi dapat dirilis" sebagai "kami tidak memiliki pekerjaan lagi untuk fitur ini. Kode ini selesai dan telah diuji dan didokumentasikan dengan baik".
Itu pasti sesuatu yang mungkin ingin Anda pertimbangkan, jika Anda ingin pelanggan benar-benar menguji fitur tersebut.
sumber
Dari Panduan Scrum, definisi Increment mengatakan :
Jika Anda tidak memiliki cukup peraturan yang lengkap, kemungkinan Pemilik Produk akan memilih untuk tidak benar-benar merilisnya. Namun, Peningkatan harus "Dilakukan". Setiap aturan yang telah Anda terapkan harus sudah diselesaikan sesuai Definisi Selesai tim Anda.
Keputusan yang Anda buat bergantung pada apa yang akan dilakukan dengan Peningkatan. Dalam pertanyaan Anda, Anda menyebutkan melemparkan pengecualian untuk aturan yang tidak diterapkan. Ini bisa berhasil, tetapi jika seseorang akan mengintegrasikan dengan mesin aturan Anda, itu mungkin membuat overhead bagi mereka untuk menangani kasus kesalahan ini, terutama jika itu tidak akan ada dalam produk jadi. Atau mungkin itu yang akan membuat hidup mereka lebih mudah. Pertimbangkan apa maksud increment itu, siapa yang mungkin menggunakannya, dan pergi dari sana.
sumber
Anda telah menentukan situasi tanpa melarikan diri.
Saya yakin ada situasi kehidupan nyata di mana Anda memiliki blok fungsi yang rumit yang tidak dapat dipisahkan. Tetapi kasus yang biasa adalah bahwa Anda dapat memecah suatu persyaratan menjadi sub persyaratan yang memang memiliki beberapa manfaat dari diri mereka sendiri.
Katakan misalnya persyaratan saya untuk memvalidasi alamat penagihan kartu kredit Inggris. Ini cukup rumit, kami ingin memastikan bahwa alamat tersebut adalah alamat tempat tinggal orang yang disebutkan dalam kartu sehingga jika mereka default dalam pembayaran, kami dapat mengejar mereka.
Ada ratusan kemungkinan validasi dan pemeriksaan yang dapat kita lakukan untuk meningkatkan keandalan pemeriksaan, tetapi masing-masing secara individual dapat diuji dan menawarkan penurunan nyata dalam risiko penipuan.
Jika dorongan datang untuk mendorong, pelanggan akan dapat menghasilkan uang dengan hanya sebagian dari aturan yang diterapkan. Baik risiko tambahan dapat diterima atau kerja manual di sekitarnya dapat ditambahkan ke alur kerja untuk mengurangi situasi.
Metodologi scrum dan gesit dirancang dengan pemikiran ini. Mereka mencoba untuk menghindari kegagalan seluruh proyek dengan memastikan bahwa beberapa persyaratan yang hilang tidak menyebabkan seluruh solusi menjadi tidak berharga.
Tapi mereka tidak bisa mengubah kenyataan, jika Anda memiliki roket ruang angkasa yang pasti membutuhkan X, Y dan Z untuk terbang. Maka Anda membutuhkan ketiganya!
Kuncinya adalah mengenali bahwa umumnya dalam jalur aplikasi bisnis, ini tidak terjadi, terlepas dari apa yang pelanggan katakan.
sumber