Haruskah Anda Membuat Diagram Kelas sebelum atau setelah implementasi?


11

Cara saya melihatnya jika Anda membuatnya sebelum Anda mendapatkan keuntungan dari:

  • Perencanaan ke depan
  • Tinjauan umum proyek

tapi kamu kalah:

  • Waktu (melakukan pekerjaan Anda mungkin akan berakhir berulang saat menulis kode)

Di sisi lain, saya hanya bisa membuat semuanya setelah menulis kode saya hanya untuk menyimpannya sebagai referensi untuk pengembang masa depan.

Yang mana melayani tujuan diagram kelas dan mana yang lebih menguntungkan?


2
Pertanyaannya mungkin: "Haruskah Anda membuat diagram kelas sama sekali?". Kalau tidak, lihat jawaban Lorenzo :)
haylem

Jawaban:


9

Jika Anda membuatnya sebelumnya, mereka akan menjadi bagian dari fase desain.

Jika Anda membuatnya setelah itu, Anda bisa menggunakannya untuk dokumentasi. Tetapi mendokumentasikan lebih baik dan lebih cepat jika Anda melakukan itu selama desain dan pengkodean.

Omong-omong, Anda tidak kehilangan waktu dalam melakukan desain! Bagian pengkodean akan lebih cepat. Dan lebih baik.

Setelah semua, Anda berpikir bahwa melakukan desain gedung pencakar langit atau jembatan adalah kehilangan waktu, bukan hanya mulai membangunnya?

Kompromi adalah mulai membuat beberapa kode dummy selama fase desain (hanya prototipe kelas / fungsi) dan menggunakan kerangka kode ini untuk membangun diagram kelas.


Mulai coding hanya dengan ide-ide yang ada dalam pikiran Anda pada saat itu mungkin menyesatkan seluruh tim dev Anda. Anda perlu menulis setidaknya desain awal dan kemudian memperbaikinya sesuai kebutuhan selama proses pengembangan. Dengan cara ini seluruh tim tahu ke mana tujuan mereka.
Luis Aguilar

12

Ketika saya sudah membuatnya sebelum coding, kami melihatnya sebagai dokumen "sementara". Yaitu, kita membuat diagram dan memasukkan pemikiran kita ke atas kertas. Kami mulai mengkode dari diagram kelas tersebut. Kami kemudian membuangnya. Tidak perlu menghabiskan waktu untuk mempertahankannya setelah pengkodean dimulai. Dan jika Anda ingin model kelas terbaru, gunakan alat untuk membuatnya dari kode.


4

Dalam kedua kasus mereka akan tetap menjadi bagian dari dokumentasi. Tidak ada yang akan memperbaruinya ketika ada perubahan pada implementasi. Diagram tidak memiliki tanggal pada mereka sehingga Anda bahkan tidak akan tahu versi kode apa yang mereka rujuk. Ketika orang baru ditambahkan ke proyek, Anda akan memberinya diagram yang mengatakan, "Berikut adalah beberapa diagram yang dibuat pada beberapa titik selama desain atau implementasi. Kami tidak tahu seberapa mutakhirnya mereka."


3
Ini terjadi dengan dokumentasi secara umum. Saya baru-baru ini memulai pekerjaan baru dan mereka memberi saya setumpuk dokumentasi yang ketinggalan zaman. Dan untuk memperburuknya saya masih harus mendokumentasikan semua yang saya lakukan.
Korbin

3

Ini adalah bagian dari desain dan karenanya harus dibuat sebelum implementasi. Ini bukan untuk mengatakan mereka tidak dapat disempurnakan selama / setelah implementasi untuk mencerminkan keadaan implementasi saat ini.

Menyediakan desain setelah implementasi adalah apa yang saya sebut "koboi pengkodean," dan yakin Anda dapat berkembang di barat liar tetapi ingat koboi biasanya berakhir mati di beberapa titik atau yang lain.


3

Itu tergantung pada kedalaman desain. Beberapa orang bersikeras untuk menulis diagram kelas bahkan untuk kelas yang paling sepele, karena "itu praktik yang baik." Saya pikir itu buang-buang waktu untuk menggambar sesuatu ketika Anda sudah tahu persis bagaimana itu akan diterapkan. Saat membuat desain baru, sesuatu yang asing, pasti berguna untuk menggambar beberapa diagram terlebih dahulu.

Saya tidak pernah menggunakan alat UML, karena desain biasanya berubah banyak selama implementasi sehingga saya harus menggambar ulang diagram. Saya kira alat dua arah yang baik akan menangani perubahan ini, tetapi saya tidak pernah menggunakan yang baik (saya hanya menggunakan yang gratis, meskipun). Sebagai gantinya, saya menggambar di atas kertas atau di papan tulis untuk membantu saya memilah-milah desain. Setelah saya menerapkannya dan cukup yakin bahwa itu suara, saya akan melakukan diagram yang lebih formal.

Juga, jangan lupakan jenis diagram lainnya. Saya selalu menemukan diagram urutan sebagai yang paling berguna, dan saya sering menggunakannya ketika ada banyak komunikasi antar komponen.


1

Sebelum Implementasi. Seperti yang pernah dikatakan oleh salah satu mantan rekan kerja saya, 'Saya suka melakukan pemrograman sebanyak mungkin sebelum saya mulai membuat kode', dan saya pikir itu pendekatan yang baik untuk itu.


1

Saya menemukan bahwa tindakan menggambar diagram biasanya mengingatkan saya pada informasi yang hilang. Ini juga akan terjadi jika saya hanya mengetikkan editor kode tanpa menggambar diagram, tetapi instans akan ditempatkan lebih jauh terpisah (karena saya akan menghabiskan waktu menulis algoritma dan perhitungan dan tes dan semacamnya) sehingga saya dapat memberikan lebih banyak waktu untuk berlalu sebelum mendapatkan informasi saya yang hilang.

Juga, jika desain yang samar-samar Anda miliki di kepala Anda ternyata adalah omong kosong, Anda akan melihat itu lebih cepat jika Anda membuat diagram terlebih dahulu. Karena itu saya setidaknya menggambar sesuatu yang cepat dan informal. Apakah itu berubah menjadi diagram elektronik yang dapat digunakan orang lain untuk referensi akan tergantung pada proyek.


1

Pembuatan diagram kelas harus dilakukan, selama dan setelah karena model harus interaktif dengan kode dan persyaratan modifikasi. Pertama, Anda perlu membuat diagram kelas untuk memulai proyek Anda. Ini akan membantu untuk memvisualisasikan pada tingkat yang lebih tinggi dari abstraksi objek Anda. Anda akan dapat membuat arsitektur perangkat lunak yang stabil dan cerdas. Maka Anda perlu kode dan kadang-kadang Anda akan melihat bahwa arsitektur yang tampaknya baik di UML tidak benar-benar mungkin dalam kode. Anda kemudian mengubah kode dan arsitektur Anda. Akhirnya Anda memperbarui model Anda dengan modifikasi kode dan menghasilkan dokumentasi.

Dalam proyek terakhir saya, pembuat keputusan telah mengubah persyaratan saya lebih dari 50 kali dalam setahun terakhir. Ini sangat menyakitkan dan UML membantu saya menjaga ketertelusuran perubahan dan alasannya. UML harus memungkinkan penggabungan model dan kode kapan saja dengan cara yang berulang (mis. Dari kode ke model, dari model ke kode, dari keduanya, dari kode setelah refactoring dll ...) Saya menggunakan Omondo EclipseUML untuk Helios dan saya sangat senang dengan alat ini. Fitur favorit saya adalah penggabungan model yang memungkinkan saya untuk memperbarui model saya kapan saja tanpa kehilangan informasi model. Saya juga suka entitas pemodelan langsung di diagram kelas dan membuat database menggunakan stereotip dan hibernasi. Sangat kuat dan lengkap dari objek ke database !!


1

Sebelumnya : ini akan membantu mengatur pikiran Anda dan mengomunikasikan niat Anda. Jangan masuk ke detail di sini.

Setelah : jelas dihasilkan dari kode sebagai bagian dari proses build, jelas (harap Anda tidak terlalu terikat dengan uml)

Keduanya berguna, tetapi hal-hal sebelum dapat dibuang segera setelah itu diterapkan ... itu sudah ketinggalan jaman pada saat ini.


0

Dengan Topcased , saya membuat diagram kelas saya selama fase desain. Kemudian saya klik tombol "Hasilkan kode" untuk menghasilkan kanvas implementasi saya. Lalu saya mengisi tempat penampung dengan kode.


0

Saya akan memilih jawaban (C) Jangan repot-repot.

Mereka sebagian besar tidak perlu. Secara pribadi, saya tidak pernah repot untuk melihat mereka ketika mereka disediakan.

Mereka tidak perlu sebelum pengembangan, karena desain tetap akan berubah. Dan jika Anda tidak berpikir desain kelas Anda akan berubah, maka Anda sudah memborgol diri sendiri dan mencegah diri Anda di masa depan tidak mampu menyelesaikan masalah dengan benar. Jika Anda berpikir Anda harus tetap menggunakan diagram kelas yang sudah ada sebelumnya, maka Anda bekerja untuk NASA atau Anda menembak diri sendiri.

Setelah itu, itu adalah dokumentasi yang tidak perlu. Jika Anda tidak dapat mengetahui apa yang dilakukan kelas atau bagaimana mereka berhubungan satu sama lain dengan sedikit inspeksi kode, maka Anda memiliki lubang dalam keahlian Anda sebagai pengembang perangkat lunak.

Tentu saja, jawaban ini kedengarannya sangat arogan dan keras kepala; Baiklah.


0

Dengan Eiffel dan alat-alat terkait ini hanyalah perbedaan sudut pandang yang semuanya menunjuk ke file mendasar yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.