Saya telah mengambil beberapa kursus desain perangkat lunak dalam beberapa semester terakhir, dan sementara saya melihat manfaatnya dalam banyak formalisme, saya merasa seperti tidak memberi tahu saya apa-apa tentang program itu sendiri:
- Anda tidak dapat mengetahui bagaimana program akan beroperasi dari spesifikasi Use Case, meskipun membahas apa yang dapat dilakukan oleh program.
- Anda tidak dapat memberi tahu apa pun tentang pengalaman pengguna dari dokumen persyaratan, meskipun itu dapat mencakup persyaratan kualitas.
- Sequence diagram adalah deskripsi yang baik tentang bagaimana perangkat lunak bekerja sebagai tumpukan panggilan, tetapi sangat terbatas, dan memberikan tampilan yang sangat parsial dari keseluruhan sistem.
- Class diagram sangat bagus untuk menggambarkan bagaimana sistem dibangun, tetapi sama sekali tidak berguna dalam membantu Anda mencari tahu apa yang perlu perangkat lunak.
Di mana dalam semua formalisme ini adalah garis bawah: bagaimana program terlihat, beroperasi, dan pengalaman apa yang diberikannya? Bukankah lebih masuk akal untuk merancang itu? Bukankah lebih baik mencari tahu bagaimana program harus bekerja melalui prototipe dan berusaha untuk mengimplementasikannya secara nyata?
Saya tahu bahwa saya mungkin menderita diajari teknik oleh para ahli teori, tetapi saya perlu bertanya, apakah mereka melakukan ini di industri? Bagaimana orang mengetahui apa sebenarnya program itu, bukan sesuai dengan apa program itu? Apakah orang banyak prototipe, atau sebagian besar mereka menggunakan alat formal seperti UML dan saya belum terbiasa menggunakannya?