Anti pattern
Apa itu anti pattern:
- Solusi negatif yang menampilkan lebih banyak masalah dari pada seharusnya
- Natural extension dari design pattern
- Menjembatani jurang antara konsep arsitektural dan implementasi dunia nyata
- Mengerti anti pattern menyediakan pengetahuan untuk mencegah dan memperbaiki darinya
Contoh:
- Spaghetti code
- Stovepipe system :
- Analysis paralysis : memperlihatkan ketidakseimbangan upaya pada fase analysis dari sebuah projek
- Design by committee
- God class
- Mythical man month
- Death march project
Kenapa belajar antiPattern
- Anti pattern merupakan sebuah metode menyederhankan mapping sebuah situasi umum ke sebuah klas yang spesifik dari solusi
- Anti pattern menyediakan pengalaman di dunia nyata dalam menyelesaikan masalah dalam industry software
- AP menyediakan vocabulary yang umum untuk mengidentifikasi masalah dan mendiskusikan masalah
- AP menyediakan stress release dalam
Design pattern : Problem + solution pairs
Anti pattern : Solution+solutions Pairs
Development anti pattern
- The blob
- Cut & paste programming
- Spaghetti code
- Lava flow
Development mini anti pattern
- Viewpoint yang ambigu
- Boat anchor
- Continuous obsolescence (kuno)
- Dead end
- Input kludge
- Mushroom management
Arsitektur AntiPattern
• Arsitektur by implementasi
• Design by commite
• Stovepipe enterprise & system
Arsitektur mini-AntiPattern
• Auto-generated Stovepipe
• Cover your assets
• The grand old duke of yuke
• Jumble
• Swiss army knife
• Wolf ticket
Management AntiPattern
• Analysis paralysis
• Corncob
• Death by planning
• Irrational management: pathological supervisor
• Project mis-management
management mini-AntiPattern
• Blowhard jamboree
• Email is dangerous
• Fear of success
• The feud
• Smoke and mirrors
• Throw it over the wall
• Warm bodies
Development anti pattern
Spaghetti code : bagian undocumented dari source code sebuah s/w yang tidak bisa di extended atau dimodifikasi tanpa usaha yang keras (tidak terstruktur)
Tanda-tanda:
• Lone ranger programmer
• Dokumentasi yang sedikit dan kuno
• 50% waktu maintenance untuk membangun kembali
• Sindrom programmer ragu-ragu
• Tidak dapat dipakai kembali
Object-oriented Spaghetti code
• Banyak objek method tanpa parameter
• Class yang mencurigakan atau variabel global
• Hubungan tak terduga antar objek
• Kehilangan manfaat OO
Refactor Solusi
• Refactor to generalize : membuat sebuah abstract superclass
o Membuat fungsi subclass yang cocok
o Menambahkan fungsi buatan pada superclass
o Membuat function bodies dan variable compatible
o Memindahkan code ke superclass
• Refactor untuk spesialisasi: kondisi yang sederhana
o Untuk setiap kondisi, buat sebuah subclass dengan jenis yang sesuai
o Copy code kedalam subclass
o Spesialisasi superclass constructor
• Strategy : reform the s/w process
The BLOB:
Tanda-tanda:
• Single class dengan banyak atribut dan operasi
• Miskin OO design
Konsekuensi
• Kahilangan manfaat OO
• Terlalu kompleks untuk digunakan kembali atau di test
• Terlalu sulit untuk di load
Poltergeists
• Pengembangan dari class
• Class dan hubungan yang palsu
o Stateless,short-lifecycle class
o Class dengan sedikit responsibilities
o Hubungan sementara
o Kompleksitas yang berlebihan
o Analisis dan desain model yang tidak stabil
o Poor system performance
• Solusi
o Menghapus class yang tidak relevant
? Menghapus class externall
? Menghapus class tanpa domain
o Menghapus kelas data sementara
o Menghapus kelas operasi
o Menghapus class dengan lifecycle yang pendek atau sedikit responsible
Stevopipe enterprise
Vendor lock-in: tidak mempunyai arsitektur atau tergantung vendor
• Kehilangan control
• Konspirasi penghubung
0 komentar :
Posting Komentar