Bagi banyak orang IT, termasuk saya beberapa tahun yang lalu, proses pengembangan perangkat lunak yang ideal akan melibatkan pembuatan dokumen desain terperinci dengan banyak diagram UML sebelum satu baris kode ditulis. (Ini terlihat seperti deskripsi model air terjun tapi sama dengan lincah, kecuali bahwa iterasi lebih kecil.)
Selama dua atau tiga tahun terakhir, saya benar-benar berubah pikiran. Saya masih berpikir bahwa spesifikasi persyaratan terperinci dengan kasus uji terkait sangat penting. Untuk proyek besar, saya juga membutuhkan garis besar arsitektur keseluruhan sebelum mulai kode. Tetapi semua yang lain harus dilakukan dalam kode sebanyak mungkin. Dalam kasus yang ideal seharusnya tidak ada deskripsi desain perangkat lunak kecuali kode itu sendiri.
Bagaimana saya sampai pada kesimpulan ini? Berikut beberapa argumen:
Umpan balik
Alat untuk menulis dokumen atau membuat diagram memberikan sedikit umpan balik. Ya, ada alat pemodelan yang melakukan beberapa pemeriksaan konsistensi pada diagram UML tetapi mereka terbatas dan memiliki banyak overhead.
Tanpa umpan balik, sulit untuk mengenali dan memperbaiki kesalahan.
Segera setelah Anda menulis kode, Anda mendapat banyak umpan balik, misalnya:
- Kesalahan dan peringatan dari kompiler
- Hasil analisis kode statis
- Tes unit
Kesalahan dapat dengan cepat dikenali dan diperbaiki.
Konsistensi
Untuk memastikan bahwa kode tersebut konsisten dengan dokumen Anda, Anda harus memeriksa lagi dan lagi. Jika sering ada perubahan, sulit untuk menjaga kode dan dokumen tetap sinkron.
Refactoring
Ada alat dan teknik yang kuat untuk kode refactoring sementara refactoring deskripsi atau diagram biasanya sulit dan rentan kesalahan.
Ada satu prasyarat untuk membuat ini berfungsi: Kode harus cukup mudah dibaca dan dipahami. Ini mungkin tidak dapat dicapai dengan Assembler, Basic atau Fortran tetapi bahasa modern (dan perpustakaan) jauh lebih ekspresif.
Jadi, jika argumen saya valid, harus ada kecenderungan ke arah spesifikasi dan dokumentasi desain perangkat lunak yang kurang atau lebih ringan. Apakah ada bukti empiris untuk tren ini?