Apakah ada anti-pola formal untuk menggambarkan skenario?

10

Beberapa kode ditulis untuk menghasilkan Excel Spreadsheets (Office Interop).

  • Kode berkinerja sangat buruk.
    • Subsistem dirancang untuk menghasilkan file di malam hari. Performa bukan masalah di malam hari.
      • Suatu fungsi dibuat untuk memilih file yang benar dari 100 file berbeda yang tersedia tergantung pada set parameter yang dipilih.
      • Karena file fisik ada, sistem arsip ditambahkan untuk membuat cadangan file-file ini (Tidak ada alasan untuk mengarsipkan. File-file ini harus dihasilkan dengan cepat).
      • Sistem ini tidak menyertakan file konfigurasi, melainkan memiliki fungsi "server picker" yang dikodekan keras yang hanya mencerminkan pada server tempat kode berjalan.
      • Tugas terjadwal diperlukan untuk mendukung dan menjalankan layanan ini.

Ini bermuara pada satu masalah. Kode asli berkinerja terlalu buruk untuk dijalankan di lingkungan produksi.

Seandainya masalah kinerja diselesaikan, subsistem dan kemudian sistem pengarsipan, "fungsi pabrik pemilih file", titik kegagalan kode keras dan pemeliharaan tugas terjadwal serta titik kegagalan tambahannya tidak perlu ada.

Ini adalah "kegagalan berjenjang" jika Anda mau. Masalah aslinya menyebabkan kode yang lebih buruk, lebih banyak solusi buruk dan overhead yang tidak perlu. Apakah ada istilah anti-pola formal atau umum untuk menggambarkannya?

P.Brian.Mackey
sumber
1
Kode yang tidak dapat diskalakan? Jika penyedia hosting Anda keluar dari bisnis dalam sebulan dan Anda perlu memigrasi lingkungan produksi ke server baru, apakah itu merupakan kebutuhan untuk rilis perangkat lunak dan kepanikan darurat umum? Saya pikir Anda tahu jawabannya ...
maple_shaft
1
Wow, itu terdengar seperti aplikasi pembuat laporan yang saya tulis sekitar 12 tahun yang lalu. Yah, kecuali untuk kurangnya konfigurasi dan pengkodean yang sulit. Pengarsipan bisa menjadi persyaratan hukum seperti itu bagi saya, tidak berguna tetapi diperlukan pula. Awalnya kinerjanya buruk, tetapi membuat pelaporan DB terpisah yang dioptimalkan dengan benar hilang. Menjalankan laporan dengan DB yang sangat transaksional adalah awal dari banyak ide buruk.
jfrankcarr

Jawaban:

23

Aliran lava?

Dalam jargon pemrograman komputer, aliran lava adalah masalah di mana kode komputer yang ditulis dalam kondisi sub-optimal dimasukkan ke dalam produksi dan ditambahkan ke saat masih dalam keadaan perkembangan.

Dari Wiki Desain Perl: Aliran Lava adalah "ketika kode ... memuntahkan dan menjadi permanen, itu menjadi fitur arsitektur dari berbagai arkeologis. Benda-benda dibangun di atas struktur tanpa pertanyaan dan tanpa harapan mengubah apa yang ada di bawahnya. The kode yang ada dipandang sebagai keingintahuan historis. "

Seringkali, menempatkan sistem ke dalam hasil produksi dalam kebutuhan untuk mempertahankan kompatibilitas ke belakang (karena banyak komponen tambahan sekarang bergantung padanya) dengan desain asli dan tidak lengkap.

Aliran lahar sering diperburuk oleh perubahan dalam tim pengembangan yang mengerjakan suatu proyek. Sebagai pekerja siklus masuk dan keluar dari proyek, pengetahuan tentang tujuan dari aspek sistem dapat hilang, dan bukannya membersihkan bagian-bagian ini, mereka bekerja di sekitar, meningkatkan kompleksitas dan kekacauan sistem.

Aliran lava dianggap sebagai anti-pola, sebuah fenomena yang biasa ditemui yang mengarah pada desain yang buruk.

dsimcha
sumber
3
Saya pernah melihat ini sebelumnya (ok ok saya melihatnya hampir setiap hari) tetapi saya tidak pernah baru namanya.
Kevin
3
Terima kasih. Saya belum pernah mendengarnya menyebutnya demikian. Saya biasanya menyebut polanya sebagai Rumah Misteri Winchester.
jfrankcarr
@ jfrankcarr: Saya lebih suka nama Anda. sangat pintar.
Kevin
Saya tidak berpikir inilah arti sebenarnya dari aliran Lava. Idenya adalah bahwa kode yang tidak lagi digunakan telah membeku seperti lava di atas lanskap kode nyata. Dalam hal kode masih digunakan, mungkin saja akan lebih baik untuk melakukan yang berbeda sejak awal.
psr
@psr - Bagian "" ketika kode ... menyebar dan menjadi permanen, itu menjadi fitur arsitektur dari berbagai arkeologis. Segala sesuatu dibangun di atas struktur tanpa pertanyaan dan tanpa harapan mengubah apa yang ada di bawahnya. Kode yang ada dipandang sebagai keingintahuan historis. "Banyak sejalan dengan apa yang telah terjadi.
P.Brian.Mackey
3

Saya tidak yakin ini anti-pola. Seperti halnya semua anti-pola, kami harus mengambil kata Anda bahwa siapa pun yang berpikir itu adalah ide yang baik adalah salah, tetapi dalam hal ini kedengarannya masuk akal dan saya akan mengambil kata Anda untuk itu, jadi itu bukan masalah.

Masalahnya adalah bahwa untuk menjadi berguna pola anti perlu menggambarkan semacam perangkap umum dan bagaimana hal itu dapat dihindari. Dalam hal ini, saya kira itu akan menemukan solusi untuk kode yang berkinerja buruk ketika Anda bisa membuatnya bekerja lebih baik.

Masalah dengan itu sebagai anti-pola, IMHO, adalah bahwa mengetahui tentang hal itu tampaknya tidak akan banyak nilainya. Siapa pun yang melakukan ini mungkin sudah mengerti bahwa akan menyenangkan mengetahui bagaimana membuatnya bekerja lebih baik, jadi mereka pasti tidak tahu bagaimana melakukannya. Jadi setelah mendengar tentang situasi umum sebagai anti-pola tidak akan membantu.

Sejauh istilah umum untuk menggambarkannya, "kegagalan berjenjang", seperti yang Anda sarankan, bekerja cukup baik. Istilah yang saya sukai untuk orang-orang yang tidak berkualifikasi yang berangkat dari misi yang pada awalnya tidak masuk akal adalah berburu snark , tetapi itu tampaknya terlalu keras untuk situasi ini. (Tapi bagaimanapun saya akan dengan tidak sengaja melemparkan tautannya, karena ini adalah penggambaran terbaik dari perusahaan yang hancur yang saya tahu).

psr
sumber
+1 Banyak poin bagus. Kamu mungkin benar. Saya telah melihat proses itu diulang beberapa kali di tempat khusus ini. Jadi, itulah motivasi saya untuk menggambarkannya sebagai Anti-pola. Daripada memperbaiki masalah khusus ini.
P.Brian.Mackey
3

Tidak yakin apakah ini membantu, tetapi otomatisasi kantor sering kali menjadi kasus khusus:

Otomatisasi kantor biasanya dilakukan dengan cara ini jika harus diotomatiskan dari desktop pengguna (khususnya untuk. Situs web karena dokumen otomatisasi kantor dengan benar memperingatkan Anda bahwa akan ada kebocoran buruk pada alat interop kantor jika dijalankan tanpa kepala. terpaksa menulis proses tanpa kepala untuk menghasilkan dokumen kantor dengan alat yang kami sebut layanan pengorbanan karena Anda harus membunuhnya secara berkala untuk mendapatkan kembali ingatannya.

Selain pengarsipan apa yang Anda gambarkan adalah praktik terbaik dalam beberapa kasus.

Tautan: http://support.microsoft.com/kb/257757

Tagihan
sumber
+1 - Itulah komentar yang menarik. Aku akan mengingat ini. Layanan perlu tetap. Padahal kinerjanya mengerikan. 1 menit untuk menghasilkan spreadsheet dengan 5 kolom dan kurang dari 100 baris. Ada 100 spreadsheet ...
P.Brian.Mackey