Tolong jelaskan mengenai Desain dari Extreme programming

Desain XP dengan ketat mengikuti prinsip KIS (Keep It Simple). Desain yang sederhana selalu lebih disukai daripada representasi yang lebih kompleks. Selain itu, desain tersebut memberikan panduan implementasi untuk sebuah stories seperti yang ditulis — tidak kurang, tidak lebih. Desain fungsi tambahan (karena pengembang menganggapnya akan diperlukan nanti) tidak disarankan. XP mendorong penggunaan kartu CRC sebagai mekanisme yang efektif untuk berpikir tentang perangkat lunak dalam konteks orientasi objek. Kartu CRC (class-responsibility-collaborator) mengidentifikasi dan mengatur kelas berorientasi objek yang relevan dengan software increment saat ini. Kartu CRC adalah satu-satunya work product desain yang diproduksi sebagai bagian dari proses XP. Jika masalah desain yang sulit ditemui sebagai bagian dari desain sebuah stories, XP merekomendasikan pembuatan prototipe operasional dari bagian desain tersebut. Disebut spike solution, prototipe desain diimplementasikan dan dievaluasi. Tujuannya adalah untuk menurunkan risiko ketika implementasi yang sebenarnya dimulai dan untuk memvalidasi perkiraan awal untuk stories yang berisi masalah desain.

Pada bagian sebelumnya, kami mencatat bahwa XP mendorong refactoring — teknik konstruksi yang juga merupakan metode untuk optimasi desain. Fowler menjelaskan refactoring adalah proses mengubah sistem perangkat lunak sedemikian rupa sehingga tidak mengubah perilaku eksternal kode namun meningkatkan struktur internal. Ini adalah cara yang terdisiplin untuk membersihkan kode [dan memodifikasi / menyederhanakan desain internal] yang meminimalkan kemungkinan bug. Karena desain XP hampir tidak menggunakan notasi dan menghasilkan sedikit, jika ada, work product selain dari kartu CRC dan spike solution, desain dipandang sebagai fakta sementara yang dapat dan harus terus dimodifikasi ketika konstruksi berlanjut. Maksud refactoring adalah untuk mengontrol modifikasi ini dengan menyarankan perubahan desain kecil bahwa "secara radikal dapat meningkatkan desain". Perlu dicatat, bahwa upaya yang diperlukan untuk refactoring dapat tumbuh secara dramatis seiring dengan meningkatnya ukuran aplikasi. Gagasan sentral dalam XP adalah bahwa desain muncul sebelum dan sesudah koding. Refactoring berarti bahwa desain terjadi terus-menerus ketika sistem dibangun. Bahkan, kegiatan konstruksi itu sendiri akan memberikan tim XP panduan tentang cara meningkatkan desain.