Bisakah membuat Dokumen Desain Perangkat Lunak setelah pengembangan dibenarkan?

11

Saat ini saya sedang mengerjakan kelulusan saya untuk studi "Pengembangan Perangkat Lunak" saya, di mana saya harus mengembangkan perangkat lunak yang kompleks secara individu di perusahaan eksternal. Ini semua perlu dilakukan secara terstruktur, membuat semua dokumen yang sesuai.

Untuk proyek ini saya telah memilih untuk bekerja dengan dokumen standar IEEE: Dokumen Persyaratan Perangkat Lunak (SRS), Dokumen Arsitektur Perangkat Lunak (SAD) dan Dokumen Desain Perangkat Lunak (SDD). Meskipun diajarkan sebaliknya di sekolah, untuk proyek ini saya telah memilih untuk membuat SDD setelah pengembangan (bukan sebelumnya). Alasan saya adalah:

Perusahaan tempat saya magang telah memberi saya instruksi untuk membuat perangkat lunak yang kompleks, memuaskan serangkaian persyaratan tertentu, dengan cara eksperimental. Karena jumlah kebebasan yang mereka berikan kepada saya dalam definisi proyek, hampir tidak ada yang pasti sebelumnya, dan paling baik dapat ditemui saat bereksperimen dalam proses pengembangan. Selain itu, saya membuat perangkat lunak secara individual , itu tidak akan bermanfaat bagi siapa pun di perusahaan bagi saya untuk membuat Desain Perangkat Lunak ini sebelumnya. Melakukannya sebelumnya hanya akan menghabiskan banyak waktu untuk mengubahnya nanti, karena saya dapat yakin bahwa dengan ketidakpastian dalam proyek, desain yang saya buat sebelumnya harus banyak diubah . Ini terasa kontraproduktif bagi saya.

Apakah ini pembenaran yang baik untuk membuat SDD setelah pengembangan? Jika tidak, apakah akan ada pembenaran yang baik untuk itu?

Sunting: Alasan untuk membuat SDD setelahnya adalah agar pengembang di masa depan melanjutkan proyek. Saya tidak akan dapat menyelesaikan seluruh proyek dalam periode kelulusan saya, jadi pengembang lain harus melanjutkan basis kode saat ini.

Simon Baars
sumber
2
Jika Anda harus mengubah "banyak" SDD Anda selama / setelah pengembangan, maka mungkin terlalu banyak detail.
freedomn-m
Telur atau Ayam - yang datang pertama adalah sesuatu yang dihabiskan oleh para filsuf. SDD dan perangkat lunak lengkap (kompleks) harus sama, mereka berevolusi bersama.
mattnz
Bagi saya itu tidak berfungsi untuk mendokumentasikan setelah itu. Itu terlalu membosankan bagi saya. Saya perlu menulis saat saya mendesain. Menyusun SDD juga merupakan semacam penghisapan karet: Anda perlu menjelaskan desain dan akan menemukan masalah lebih awal.
jos

Jawaban:

17

Di IEEE Std 1016 Bagian 3.1 Desain perangkat lunak dalam konteks, Anda dapat menemukan paragraf ini:

SDD dapat disiapkan dan digunakan dalam berbagai situasi desain. Biasanya, SDD disiapkan untuk mendukung pengembangan item perangkat lunak untuk menyelesaikan masalah, di mana masalah ini telah dinyatakan dalam satu set persyaratan. Isi SDD kemudian dapat ditelusuri ke persyaratan ini. Dalam kasus lain, SDD disiapkan untuk memahami sistem yang ada yang tidak memiliki dokumentasi desain. Dalam kasus seperti itu, SDD disiapkan sedemikian rupa sehingga informasi yang menarik ditangkap, diorganisir, disajikan dan disebarluaskan ke semua pihak yang berkepentingan. Informasi yang menarik ini dapat digunakan untuk perencanaan, analisis, implementasi, dan evolusi sistem perangkat lunak, dengan mengidentifikasi dan mengatasi masalah desain yang penting.

Penulis IEEE Std 1016 mengakui bahwa SDD mungkin tidak dibuat di muka. Satu dapat dibuat setelah sistem perangkat lunak ada untuk menangkap informasi untuk pihak yang berkepentingan.

Bagian 1.1 Ruang Lingkup juga menyediakan beberapa informasi menarik:

Standar ini tidak menetapkan metodologi khusus untuk desain, manajemen konfigurasi, atau jaminan kualitas.

Dalam konteks pertanyaan ini, kata kuncinya adalah "manajemen konfigurasi". Manajemen konfigurasi tidak hanya berlaku untuk sistem perangkat lunak yang sedang dibuat, tetapi juga dokumentasi terkait.

Dalam situasi pribadi Anda, dan dalam banyak situasi, membuat SDD di muka adalah sia-sia. Jawaban David Arno hampir menjadi apa yang saya anggap sebagai jawaban yang benar. Desain sebenarnya dari sistem perangkat lunak Anda adalah kodenya. Namun, Anda "membuat SDD sebelum" atau "membuat SDD setelah" bukan satu-satunya pilihan Anda. Anda memiliki opsi ketiga - mengembangkan SDD dengan sistem perangkat lunak.

Jika Anda mengikuti standar seperti IEEE Std 1016, Anda memiliki persyaratan untuk SDD. Secara khusus, Bagian 4 dari standar ini mendefinisikan konten yang Anda miliki. Saat Anda mengerjakan keputusan desain, mulailah untuk menciptakan berbagai sudut pandang, pandangan, dan overlay. Saat Anda mengambil keputusan, tangkap alasan desainnya.

Ini akan memungkinkan pihak yang tertarik untuk mengikuti evolusi desain perangkat lunak tanpa perlu menggali ke dalam kode. Tentu saja, orang mungkin memiliki komentar atau saran. Jika Anda memperbarui SDD, mereka dapat melacak kemajuan Anda dan memberikan umpan balik tentang pendekatan awal, yang kemudian dapat Anda masukkan ke dalam produk serta SDD. Ketika Anda beralih dari proyek, jika kode perangkat lunak dan SDD sinkron, seseorang harus dapat dengan mudah masuk dan mengambil pekerjaan.

Thomas Owens
sumber
Saya memang bingung ISO dan IEEE, seharusnya memang IEEE. Terima kasih telah mengutip beberapa komentar dari penulis IEEE Std sendiri. Opsi "ketiga" ini memang yang terbaik. Sayang sekali kita, kita tidak pernah diajarkan seperti itu.
Simon Baars
@SimonBaars Saya tidak terkejut. Jika Anda diajarkan tentang standar seperti yang oleh IEEE dan ISO, itu hampir selalu dalam konteks rencana / air terjun. Ketika Anda belajar tentang pendekatan pengembangan berulang dan bertahap, Anda cenderung tidak belajar tentang standar-standar ini. Namun, versi yang lebih baru dari standar IEEE cenderung mempertimbangkan metode iteratif dan bertahap (gesit) dan sering dapat diterapkan bahkan di lingkungan ini.
Thomas Owens
8

Jika semua yang Anda cari dari SDD adalah untuk mengkomunikasikan desain dengan orang lain, maka ya, Anda dapat membuatnya setelah pengembangan. Hanya masalahnya, itu kemudian disebut dokumentasi.

Namun, saya ingin menunjukkan bahwa SDD dapat melayani tujuan lain juga. Ini juga dapat membantu Anda untuk berpikir tentang desain dan memastikan Anda "gagal cepat". Ini adalah hal yang baik, terutama jika banyak hal yang tidak pasti sebelumnya karena Anda dapat membuang pendekatan yang tidak akan berhasil sepanjang seluruh implementasi sejak dini. Hal ini juga dapat mencegah Anda memfokuskan pada detail teknis untuk segera, dengan tidak melakukan pengkodean apa pun sampai Anda mengetahui desainnya.

Saya menyarankan Anda untuk setidaknya mencoba SDD sebelumnya. Jika Anda mengalami hal-hal di mana Anda tidak yakin bagaimana cara kerjanya, Anda kemudian dapat membuat prototipe kecil dari masalah yang Anda coba selesaikan. Ini akan memberi Anda pengalaman dalam memecahkan masalah spesifik untuk proyek Anda yang akan bermanfaat bagi kualitas solusi lengkap dalam jangka panjang.

Jonathan van de Veen
sumber
Apa yang akan disebut SDD jika dibuat sebelumnya dan dipelihara selama proyek?
Simon Baars
Just the SDD :)
Jonathan van de Veen
Apakah Anda menyarankan mengganti nama untuk menghindari kesalahpahaman oleh pengawas?
Simon Baars
Kesalahpahaman seperti apa yang Anda harapkan terjadi?
Jonathan van de Veen
8
@SimonBaars: adalah benar-benar seperti perbedaan besar antara "Software Desain Document" atau "Software Desain Dokumen asi "?
Doc Brown
2

Satu dokumen desain terperinci yang akan Anda buat adalah kodenya. Itu persis memberitahu kompiler bagaimana membangun aplikasi Anda. Dengan demikian, desain Anda tidak dapat lengkap sebelum bangunan terakhir sebelum pengiriman.

Dokumen desain lain yang Anda buat, seperti SDD, perlu diperbarui setelah Anda menyelesaikan desain (kode) Anda. Oleh karena itu, ada alasan kuat untuk menulis SDD sesudahnya: Anda hanya perlu melakukannya sekali.

Konter yang jelas untuk ini adalah, "seberapa sering Anda benar-benar menulis SDD setelah acara"? Aplikasi dikirim, jadi Anda tidak ingin menghabiskan waktu untuk mendokumentasikan pada tahap itu. Tetapi ini berlaku sama untuk memperbarui yang sudah ada. Mana yang lebih buruk, tidak ada SDD atau SDD yang salah dan tidak bisa dipercaya?

Ada dua alasan untuk menulisnya terlebih dahulu. Pertama, ini mungkin merupakan persyaratan wajib bagi Anda untuk melakukannya (tidak baik; tetapi itu terjadi). Kedua, membuat dokumen seperti itu dapat membantu Anda merumuskan strategi keseluruhan untuk desain. Tapi itu bisa dilakukan dengan sama baiknya dengan menggambar, menulis catatan dll secara informal. Dan karena itu perlu ditulis ulang nanti, ada banyak manfaat untuk pendekatan "cepat dan kotor" untuk proses desain makro di muka.

David Arno
sumber
The app is shipped, so you aren't likely to want to spend time documenting at that stage. Dalam hal ini aplikasi tidak akan selesai dalam periode kelulusan saya, jadi kami membutuhkan dokumentasi untuk pengembang lain untuk dapat melanjutkan pengembangan produk.
Simon Baars
0

Bagi saya, itu bukan argumentasi yang bagus.

Jika benar-benar diperlukan, saya akan berdebat dengan fokus yang kuat pada pengembangan prototipe untuk pemahaman yang lebih baik tentang domain masalah yang tidak diketahui. Namun, bahkan dalam kasus-kasus itu, beberapa desain akan berguna sebelumnya.

Walter Kuhn
sumber
0

Ada kasus yang harus dibuat untuk melakukannya di depan pula . Karena Anda melakukan ini untuk belajar menulis dokumen seperti ini. Melewati pekerjaan ini karena mungkin tidak 100% diperlukan di sini berarti Anda melewatkan pembelajaran Anda.

Kompromi dapat berupa menulisnya selama implementasi. Sebelum setiap komponen / modul / layar atau subdivisi lain dari program Anda, Anda perlu memikirkannya bagaimana Anda akan membuatnya. Kemudian Anda menambahkan keputusan Anda ke dokumen desain Anda dan kemudian menerapkannya.

Jika ada perubahan nanti, Anda memperbarui dokumen.

Ini memiliki beberapa keunggulan dibandingkan dengan menulis setelah fakta:

  • Anda akan belajar untuk terus memperbarui dokumen desain ketika persyaratan berubah, kebiasaan yang bermanfaat

  • Anda akan belajar untuk memikirkan desain sebelum implementasi

  • Tidak membosankan seperti menulis dokumen desain setelah faktanya

  • Jika Anda kehabisan waktu, Anda akan memiliki dokumen desain yang menggambarkan apa yang Anda miliki sejauh ini sehingga orang lain dapat melanjutkan pekerjaan Anda

  • Tidak banyak pekerjaan ekstra dengan cara ini

  • Karena proyek Anda berjalan, Anda mungkin tidak yakin mengapa Anda sendiri melakukan sesuatu seperti itu dua bulan lalu, dan Anda akan memiliki catatan untuk memberi tahu Anda.

RemcoGerlich
sumber
-2

Dokumen Desain Sistem, catatan persyaratan dasar ditambah pembaruan (fitur baru) saat proyek bergerak maju dengan atribut desain dan solusi baru. Dipertahankan sampai proyek / solusi telah disampaikan. Berguna, itu berkomunikasi dengan semua pihak.

Le Thur
sumber