Saya mengambil aplikasi tingkat perusahaan pertama saya dan saya ingin tim saya untuk memodelkan seluruh aplikasi ASP.NET MVC C # bahkan sebelum kita mengeluarkan satu baris kode.
UPDATE: Ini tidak dimaksudkan untuk menjadi diskusi filosofis tentang kapan harus mendokumentasikan / memodelkan suatu aplikasi. Harap hanya berikan jawaban untuk "bagaimana" untuk mendokumentasikan / model.
Yang benar adalah bahwa saya selalu berhemat di departemen ini dan saya tidak pernah benar-benar menjadi model aplikasi sebelumnya. Apa cara standar untuk melakukan ini? Apa jenis diagram yang harus digunakan dan seperti apa bentuk dokumentasi? Tautan ke diagram contoh dan dokumentasi sangat dihargai.
Ketika mencari saya dapat menemukan banyak hal di internet tetapi saya ingin melihat apakah ada konsensus modern saat ini tentang bagaimana cara melakukan ini.
Terima kasih sebelumnya!
Pernyataan penutup
Saya tidak tahu ini adalah subjek yang lengket. Terima kasih kepada Anda semua yang dapat mengesampingkan kontroversi yang jelas dan memberikan jawaban yang bermanfaat. Itu adalah diskusi yang menarik untuk sedikitnya :)
Tautan bermanfaat lain yang saya temukan adalah ini: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519
sumber
Jawaban:
Yang benar adalah: saat ini, itu adalah sesuatu yang kurang pengembangan perangkat lunak modern - sebuah konsensus tentang pemodelan. UML tampaknya merupakan semacam pembagi umum terkecil, tetapi dalam kenyataannya hanya ada konsensus tentang notasi, bukan tentang semantik. Ada puluhan pendapat berbeda tentang bagaimana UML harus ditafsirkan untuk membuat kode (mungkin Anda dapat menemukan satu interpretasi yang baik untuk tim Anda).
Di sisi lain, ada perang suci yang terjadi antara orang-orang "gesit" yang mengatakan "jangan membuat model formal, lebih baik menulis kode kerja" dan orang-orang "BDUF" (desain besar di depan) yang berpikir seperti " MDA "(model driven architecture) adalah solusinya.
Orang lain (kembali) menemukan pemrograman berbasis aliran untuk desain perangkat lunak modern sebagai alternatif untuk UML. Baca di sini dan di sini untuk mengetahui lebih lanjut tentang itu.
sumber
Masalah yang biasanya saya temukan dengan pendekatan semacam itu adalah bahwa pemahaman saya tentang solusi selalu tidak lengkap di awal. Hanya melalui penyempurnaan saat pekerjaan berlanjut, saya sampai pada solusi akhir.
Mencoba mendesain seluruh aplikasi di muka, sebelum kode apa pun (semuanya kecuali aplikasi yang paling sederhana) biasanya bodoh.
Apakah Anda benar-benar yakin dapat memetakan setiap kelas dan metode serta struktur data secara terperinci sebelumnya?
Adapun alat yang sebenarnya untuk membuat model, saya sudah mencoba beberapa dan selalu kembali ke Microsoft Visio.
Dari semua produk yang saya coba, tampaknya yang paling lurus ke depan dan, sebenarnya, stabil (pengalaman saya dengan alat pemodelan adalah bahwa mereka sangat buggy). Agar adil, saya melakukan sangat sedikit pemodelan, jadi ambillah rekomendasi ini dengan sebutir garam.
EDIT: Sebenarnya, saya harus mengatakan bahwa sebagian besar pemodelan saya dilakukan pada notepad yang ada di meja saya. Karena saya melakukan sedikit pemodelan, saya mencoba untuk tetap terang dan to the point. Membuat diagram dengan pena dan kertas jauh lebih efisien bagi saya daripada menggunakan perangkat lunak.
Anda mungkin menemukan diagram tulisan tangan berguna untuk membentuk ide-ide Anda, sebelum meletakkannya dalam perangkat lunak diagram.
Sebagian besar yang saya modelkan hari ini adalah diagram interaksi. Sekali lagi, saya tidak melakukan banyak pemodelan - hanya di mana saya benar-benar merasakan latihan menggambar model membantu memperkuat pemahaman saya.
sumber
Diagram UML adalah tempat yang baik untuk memulai, ada banyak cara mudah untuk melakukan ini dengan perangkat lunak gratis atau berbayar. Salah satu contoh sederhana alat untuk membuat UML adalah sesuatu seperti gambar google docs, paket yang lebih maju adalah Visio atau OmniGraffle.
EDIT: Seperti yang disebutkan oleh banyak orang, jika Anda pergi ke jalur UML, itu tidak berarti Anda harus sepenuhnya memodelkan segalanya, tetapi Anda dapat mencapai konsensus tentang apa yang Anda modelkan, dan seberapa detail model yang diperlukan untuk menjadi. Diagram UML sederhana seringkali dapat membantu mengeluarkan kode Anda sebelum menulisnya, dan menjernihkan beberapa masalah potensial sebelum muncul.
sumber
Seperti yang disarankan @Brett, diagram UML adalah yang terbaik. Dengan UML ada baiknya memiliki diagram Kelas dan diagram alur kerja. Keduanya akan memenuhi sebagian besar kebutuhan desain.
Dengan diagram kelas, Anda dapat memodelkan anggota dari setiap entitas, tingkat keamanannya, dll.
Dengan diagram alur kerja, Anda dapat memodelkan metode mana yang memanggil panggilan mana, apa hasil dari alur kerja dan apa yang akan menjadi pengecualian yang mungkin muncul.
sumber
Sementara saya sangat percaya dalam membuat beberapa gambar arsitektur dasar sebelum menulis kode, saya pikir membuat gambar rinci dari seluruh aplikasi terlalu banyak pekerjaan.
Saya biasanya membuat beberapa gambar garis besar di Visio, sering menggunakan blok bangunan "flowchart" untuk memvisualisasikan apa yang saya maksud. Menggunakan UML sering terasa diformalkan dan mengundang terlalu banyak detail. Gambar Visio menunjukkan blok bangunan dasar aplikasi dan jenis fungsi mana yang digunakan. Jika Anda menggunakan kerangka kerja MVC Anda sebagian besar dilakukan hanya dengan mengambil sampel menggambar dari web dan menyalinnya.
Ide yang bagus adalah membuat beberapa gambar dari sudut pandang lain. Alih-alih menggambar semuanya, saya sering lebih suka mengambil satu fungsi spesifik dari sistem dan kemudian memvisualisasikannya sebagai:
Lalu kita mulai coding. Sementara pengkodean saya menggunakan doxygen dengan integrasi titik untuk mendapatkan diagram kelas on-the-fly, pewarisan dll. Melihat gambaran umum yang dihasilkan doxygen seringkali merupakan cara yang sangat baik untuk melihat struktur kode.
sumber