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?
sumber
Jawaban:
Jika kita sedang membangun aplikasi GUI, kita hampir SELALU membuat prototipe atau POC (proof-of-concept). Kami akan menetapkan apa kosa kata visual dari aplikasi tersebut. Kami biasanya melibatkan klien kami sebagian melalui POC dan memastikan mereka memahami apa tujuannya dan apa yang harus mereka fokuskan. Saya tidak pernah menyesal membuat prototipe. Pastikan Anda tidak mencoba mengubah kode prototipe menjadi kode produksi, mulai kode produksi dari awal berdasarkan apa yang Anda pelajari dari prototipe.
Setelah mengatakan semua itu, kami hampir tidak pernah membuat prototipe aplikasi sisi server (layanan, middleware, dll.). Saya tidak benar-benar melihat laba atas investasi untuk itu (kecuali jika Anda melakukan beberapa teknologi baru dan perlu membuktikan konsep yang berbeda).
sumber
Dalam dunia bisnis, ini sangat penting
Saya juga menggunakan untuk berpikir itu, sampai Anda memasuki dunia bisnis. Maka itu tidak lagi cukup sederhana untuk hanya mengambil persyaratan dan maju dan membangun.
Dalam bisnisnya, diagram "aliran" pengguna, dan prototipe lo-fi benar-benar masuk akal.
Bagaimana "program" beroperasi mungkin adalah bagian yang mudah. Dalam aplikasi LOB (Lini Bisnis), kebanyakan hanya CRUD. The tantangan terletak pada logika bisnis dan aturan . Di sinilah diagram alir pengguna dan aliran proses bisnis menjadi sangat penting untuk memahami dan merencanakan secara efektif.
sumber
Apa yang Anda maksudkan dengan bagaimana program "beroperasi"? Anda tampaknya mencari detail implementasi yang tepat dalam sesuatu selain implementasi akhir spesifik, yang tidak masuk akal. Elemen tingkat yang lebih tinggi seharusnya memandu implementasi, bukan menentukannya.
Dari pengalaman saya, membuat prototipe agak jarang. Saya tentu saja diajar dalam hubungannya dengan spesifikasi, persyaratan, arsitektur, dll, dan itu bisa sangat berguna.
Adapun "apa yang perlu perangkat lunak", itu ADALAH persyaratan. Tampaknya Anda melewatkan seluruh poin.
Antarmuka sering dibuat sketsa sebelumnya, dan kasus penggunaan dapat digunakan untuk antarmuka "aliran". Pengalaman pengguna tidak hilang sama sekali. Jika Anda merasa ada elemen yang hilang, maka lakukan sesuatu yang tidak disebutkan profesor Anda. Desain tidak terdiri dari seperangkat aturan jelas yang diturunkan dari surga.
sumber
Pengamatan pribadi saya adalah bahwa prototipe diberikan banyak lip service tetapi terlalu sering prototipe, setelah itu menunjukkan tanda-tanda kehidupan, hanya diganti namanya menjadi 'Beta' atau, lebih buruk lagi, v1.0.
sumber
ada dua jenis prototipe - tiga, sebenarnya:
kami membangun prototipe untuk memperbaiki desain dan mengurangi risiko sebelum memulai pengkodean "nyata" (Rekayasa)
kami membangun proyek sebagai serangkaian prototipe halus (Agile)
kami membangun prototipe dan mengirimkannya segera setelah berfungsi (Koboi)
sumber
Apa yang Anda cari disebut spec - Anda dapat membaca deskripsi di sini di salah satu artikel Joel
http://www.joelonsoftware.com/articles/fog0000000035.html
sumber
Sebuah prototipe juga dapat dianggap "iterasi 0" dari apa yang perlu Anda lakukan. Itu memenuhi beberapa hal:
Secara keseluruhan prototipe harus dengan probabilitas tinggi berguna untuk membangun produk akhir, kecuali Anda telah menemukan bahwa pendekatan yang sama sekali berbeda diperlukan.
sumber