Struktur perangkat lunak yang baik sangat penting untuk perpanjangan sistem dan pemeliharaan. Pengembangan perangkat lunak adalah kegiatan kacau, karena itu struktur diimplementasikan sistem cenderung menyimpang dari struktur yang direncanakan seperti yang ditentukan oleh arsitektur, analisis, dan desain.
Software refactoring adalah pendekatan yang efektif untuk meningkatkan struktur perangkat lunak. Struktur yang dihasilkan tidak harus menyerupai struktur yang direncanakan semula.
Struktur berubah karena programmer belajar kendala dan pendekatan yang mengubah konteks solusi kode. Ketika digunakan dengan benar, refactoring adalah kegiatan alami dalam proses pemrograman.
Sebagai contoh, solusi untuk Spaghetti Kode antipattern mendefinisikan proses pengembangan perangkat lunak yang menggabungkan refactoring. Refactoring sangat disarankan sebelum optimasi kinerja. Optimasi sering melibatkan kompromi untuk struktur program. Idealnya, optimasi hanya mempengaruhi porsi kecil dari sebuah program. Sebelum refactoring membantu partisi kode dioptimalkan dari mayoritas perangkat lunak.
Pengembangan antipatterns memanfaatkan berbagai pendekatan refactoring formal dan informal. Ringkasan berikut memberikan gambaran tentang antipatterns Pengembangan ditemukan dalam bab ini dan fokus pada masalah pembangunan antipattern. Termasuk adalah deskripsi dari kedua pengembangan dan mini-antipatterns. Solusi yang refactored muncul dalam template antipattern sesuai yang mengikuti ringkasan.
The Blob
Desain prosedural ala mengarah ke satu objek dengan saham terbesar dari tanggung jawab, sementara sebagian besar benda-benda lain hanya menyimpan data atau menjalankan proses sederhana. Solusinya termasuk refactoring desain untuk mendistribusikan tanggung jawab yang lebih merata dan mengisolasi efek perubahan.
Usang terus menerus
Teknologi berubah begitu cepat sehingga pengembang sering mengalami kesulitan menjaga dengan versi terbaru software dan menemukan kombinasi rilis produk yang bekerja sama. Mengingat bahwa setiap lini produk komersial berkembang melalui rilis baru, situasi ini menjadi lebih sulit bagi pengembang untuk mengatasi. Menemukan rilis kompatibel produk yang berhasil beroperasi bahkan lebih keras.
Aliran lava
Kode mati dan informasi desain lupa beku dalam desain yang selalu berubah. Hal ini analog dengan sebuah Aliran Lava dengan pengerasan tetesan dari material batuan. Solusinya refactored meliputi proses manajemen konfigurasi yang menghilangkan kode mati dan berkembang atau refactors desain terhadap peningkatan kualitas.
Viewpoint ambigu
Analisis berorientasi objek dan desain (OOA & D) model sering disajikan tanpa menjelaskan sudut pandang yang diwakili oleh model. Secara default, OOA & D model menunjukkan sudut pandang implementasi yang berpotensi paling berguna. Sudut pandang campuran tidak memungkinkan pemisahan fundamental interface dari rincian implementasi, yang merupakan salah satu manfaat utama dari paradigma berorientasi objek.
Dekomposisi fungsional
Antipattern ini adalah output dari berpengalaman, pengembang NONOBJECT berorientasi yang merancang dan mengimplementasikan aplikasi dalam bahasa berorientasi objek. Kode yang dihasilkan menyerupai bahasa struktural (Pascal, FORTRAN) dalam struktur kelas. Hal ini dapat sangat kompleks sebagai pengembang prosedural pintar merancang sangat "pintar" cara untuk meniru metode yang telah teruji dalam arsitektur berorientasi objek.
Poltergeists
Roh jahat yang kelas dengan peran yang sangat terbatas dan siklus hidup yang efektif. Mereka sering mulai proses untuk objek lain. Solusinya refactored termasuk realokasi tanggung jawab ke objek lagi berumur yang menghilangkan Poltergeists.
Perahu jangkar
Sebuah perahu jangkar adalah bagian dari perangkat lunak atau perangkat keras yang tidak melayani tujuan yang berguna pada proyek ini. Seringkali, perahu jangkar adalah akuisisi mahal, yang membuat pembelian bahkan lebih ironis.
Emas Hammer
A Golden Hammer adalah teknologi yang akrab atau konsep diterapkan obsesif banyak masalah software. Solusinya melibatkan memperluas pengetahuan pengembang melalui pendidikan, pelatihan, dan kelompok studi pustaka untuk mengekspos pengembang untuk teknologi dan pendekatan alternatif.
Jalan buntu
Sebuah Dead End dicapai dengan memodifikasi komponen dapat digunakan kembali jika komponen dimodifikasi tidak lagi dipertahankan dan didukung oleh pemasok. Ketika modifikasi ini dibuat, transfer dukungan beban untuk para pengembang aplikasi sistem dan pengelola. Perbaikan komponen dapat digunakan kembali tidak mudah terintegrasi, dan masalah dukungan bisa disalahkan pada modifikasi.
Spaghetti Kode
Ad hoc struktur perangkat lunak membuat sulit untuk memperluas dan mengoptimalkan kode. Sering refactoring kode dapat meningkatkan struktur perangkat lunak, mendukung pemeliharaan perangkat lunak, dan memungkinkan pengembangan berulang.
Masukan kludge
Software yang gagal tes perilaku sederhana dapat menjadi contoh dari kludge masukan, yang terjadi ketika algoritma ad hoc bekerja untuk menangani masukan Program.
Berjalan melalui daerah ranjau
Yang Menggunakan teknologi perangkat lunak saat ini analog dengan berjalan melalui bidang tambang berteknologi tinggi. Banyak bug yang ditemukan dalam produk-produk perangkat lunak dirilis; pada kenyataannya, para ahli memperkirakan bahwa kode sumber asli berisi 2-5 bug per baris kode.
Potong-dan-Paste Pemrograman
Kode digunakan kembali dengan menyalin laporan sumber mengarah ke masalah pemeliharaan yang signifikan. Bentuk-bentuk alternatif reuse, termasuk black-box reuse, reduce masalah pemeliharaan dengan memiliki kode sumber yang sama, pengujian, dan dokumentasi.
Manajemen jamur
Dalam beberapa kalangan arsitektur dan manajemen, ada kebijakan eksplisit untuk menjaga pengembang sistem terisolasi dari pengguna akhir sistem. Persyaratan yang lulus kedua tangan melalui perantara, termasuk arsitek, manajer, atau persyaratan analis.
Posting Komentar
Peraturan Berkomentar :
✔ Berkomentarlah Sesuai Artikel Diatas
✔ Untuk Berkomentar Gunakan (OpenID / Name URL / Google+)
✔ Berkomentarlah Menggunakan Bahasa Yang Jelas
✔ Relevan
✔ Sopan
✖ SPAM
✖ Link Aktif (Live Link)
✖ Promosi (Iklan)
✖ OOT (Out Of Topic)