Kebanyakan, jika tidak semua orang IT yang saya kenal percaya bahwa itu bermanfaat untuk memodelkan perangkat lunak dengan UML atau jenis diagram lain sebelum pengkodean. (Pertanyaan saya bukan tentang UML secara khusus, bisa berupa deskripsi grafis atau tekstual dari desain perangkat lunak.)
Saya tidak begitu yakin tentang itu. Alasan utamanya adalah: Kode tidak berbohong. Itu diperiksa oleh kompiler atau interpreter. Mudah-mudahan ini memiliki tes otomatis dan harus lulus analisis kode statis. Jika suatu modul tidak berinteraksi dengan benar dengan modul lain, biasanya jelas dalam kode karena Anda mendapatkan pesan kesalahan.
Semua ini tidak dapat dilakukan dengan diagram dan dokumen lainnya. Ya, ada alat yang memeriksa UML, tetapi semua yang saya lihat sejauh ini sangat terbatas. Oleh karena itu dokumen-dokumen ini cenderung tidak lengkap, tidak konsisten atau palsu.
Bahkan jika diagram itu sendiri konsisten, Anda tidak dapat memastikan bahwa kode tersebut benar-benar mengimplementasikannya. Ya, ada pembuat kode, tetapi mereka tidak pernah menghasilkan semua kode.
Kadang-kadang saya merasa seperti obsesi dengan hasil pemodelan dari asumsi bahwa kode pasti merupakan kekacauan yang tidak dapat dipahami oleh arsitek, desainer, atau orang-orang bergaji tinggi lainnya yang mendapatkan gambaran besar tidak harus berurusan dengan itu. Kalau tidak, itu akan menjadi terlalu mahal. Oleh karena itu semua keputusan desain harus dipindahkan dari kode. Kode itu sendiri harus diserahkan kepada spesialis (monyet kode) yang dapat menulis (dan mungkin membaca) tetapi tidak harus berurusan dengan hal lain. Ini mungkin masuk akal ketika assembler adalah satu-satunya pilihan, tetapi bahasa modern memungkinkan Anda untuk kode pada tingkat abstraksi yang sangat tinggi. Oleh karena itu saya tidak benar-benar melihat perlunya pemodelan lagi.
Apa argumen untuk pemodelan sistem perangkat lunak yang saya lewatkan?
Ngomong-ngomong, saya percaya bahwa diagram adalah cara yang bagus untuk mendokumentasikan dan mengkomunikasikan aspek-aspek tertentu dari desain perangkat lunak, tetapi itu tidak berarti kita harus mendasarkan desain perangkat lunak pada mereka.
Klarifikasi:
Pertanyaan itu ditunda karena tidak jelas. Karena itu izinkan saya menambahkan beberapa penjelasan:
Saya bertanya apakah masuk akal untuk menggunakan (bukan kode) dokumen yang memodelkan perangkat lunak sebagai sumber utama kebenaran tentang desain perangkat lunak. Saya tidak memiliki kasus di mana sebagian besar kode secara otomatis dihasilkan dari dokumen-dokumen ini. Jika ini masalahnya, saya akan menganggap dokumen itu sendiri sebagai kode sumber dan bukan sebagai model.
Saya mencantumkan beberapa kelemahan dari prosedur ini yang membuat saya bertanya-tanya mengapa begitu banyak orang (menurut pengalaman saya) menganggapnya sebagai cara yang lebih baik dalam melakukan perancangan perangkat lunak.