Sebagai insinyur, kita semua "merancang" artefak (bangunan, program, sirkuit, molekul ...). Itu adalah aktivitas (desain-kata kerja) yang menghasilkan semacam hasil (desain-kata benda).
Saya pikir kita semua sepakat bahwa desain-kata benda adalah entitas yang berbeda dari artefak itu sendiri.
Aktivitas utama dalam bisnis perangkat lunak (memang, dalam bisnis mana pun di mana artefak produk yang dihasilkan perlu ditingkatkan) adalah memahami "desain (kata benda)". Namun kita, sebagai sebuah komunitas, tampaknya gagal total dalam merekamnya, sebagaimana dibuktikan dengan banyaknya upaya yang dilakukan orang untuk menemukan kembali fakta-fakta tentang basis kode mereka. Minta seseorang untuk menunjukkan kepada Anda desain kode mereka dan lihat apa yang Anda dapatkan.
Saya pikir desain untuk perangkat lunak memiliki:
- Spesifikasi eksplisit untuk apa yang seharusnya dilakukan perangkat lunak dan seberapa baik melakukannya
- Versi eksplisit dari kode (bagian ini mudah, semua orang memilikinya)
- Penjelasan untuk bagaimana setiap bagian kode berfungsi untuk mencapai spesifikasi (misalnya, hubungan antara fragmen spesifikasi dan fragmen kode)
- Sebuah alasan mengapa kode adalah cara itu (misalnya, mengapa pilihan tertentu daripada yang lain)
Apa yang BUKAN desain adalah perspektif tertentu pada kode. Misalnya [tidak memilih secara khusus] diagram UML bukan desain. Sebaliknya, mereka adalah properti yang dapat Anda peroleh dari kode, atau bisa dibilang, properti yang Anda harapkan dapat berasal dari kode. Tetapi sebagai aturan umum, Anda tidak dapat memperoleh kode dari UML.
Mengapa setelah 50+ tahun membangun perangkat lunak, mengapa kita tidak memiliki cara reguler untuk mengekspresikan ini? (Jangan ragu untuk membantah saya dengan contoh-contoh eksplisit!)
Bahkan jika kita melakukannya, sebagian besar komunitas tampaknya sangat fokus pada mendapatkan "kode" sehingga desain-kata benda hilang pula. (IMHO, sampai desain menjadi tujuan rekayasa, dengan artefak diekstraksi dari desain, kita tidak akan menyiasati ini).
Apa yang Anda lihat sebagai sarana untuk merekam desain (dalam arti saya telah menggambarkannya)? Referensi eksplisit untuk makalah akan baik. Menurut Anda mengapa cara spesifik dan umum belum berhasil? Bagaimana kita bisa mengubahnya?
[Saya punya ide sendiri yang menyempurnakan sudut pandang di atas, tapi saya tertarik dengan jawaban orang lain ... dan sulit untuk mengimplementasikan skema saya [[dan mungkin itulah masalah sebenarnya: -]]]
EDIT 2011/1/3: Salah satu utas jawaban mengisyaratkan bahwa "dokumentasi" (mungkin tekstual, khususnya yang tidak formal) mungkin memadai. Saya kira saya harus mengklarifikasi bahwa saya tidak percaya ini. Alat CASE muncul di tempat kejadian mulai tahun 80-an, tetapi alat awal kebanyakan hanya menangkap piksel untuk diagram apa pun yang Anda gambar; sementara alat-alat itu bisa dibilang sukses secara komersial, mereka benar-benar tidak sangat membantu. Wawasan utama adalah, bahwa jika artefak "desain" tambahan tidak dapat ditafsirkan secara formal, Anda tidak dapat memperoleh bantuan alat yang serius. Saya percaya wawasan yang sama berlaku untuk setiap bentuk penangkapan desain yang berguna dalam jangka panjang: jika tidak memiliki struktur formal, itu tidak akan ada gunanya. Dokumen teks cukup gagal dalam tes ini.