Ketika kita mengatakan 'dokumentasi' untuk produk perangkat lunak, apa yang termasuk dan apa yang tidak termasuk?
Misalnya, pertanyaan terbaru yang diajukan jika komentar dianggap dokumentasi?
Tetapi ada banyak bidang lain yang juga merupakan pertanyaan yang valid, beberapa lebih jelas daripada yang lain:
- Manual (jelas)
- Catatan rilis?
- Tutorial
- Komentar
- Ada yang lain
Di mana garis digambar. Misalnya, jika 'tutorial' adalah dokumentasi, apakah dokumentasi 'video tutorial', atau apakah itu sesuatu yang lain?
Secara umum, sesuatu dalam perangkat lunak tidak 'selesai' sampai diimplementasikan, diuji dan didokumentasikan. Karenanya pertanyaan ini, hal apa yang harus kita pertimbangkan sebagai bagian dari dokumentasi untuk mempertimbangkan sesuatu yang 'dilakukan'.
Pertanyaan menginspirasi dari umpan balik pelanggan baru-baru ini di konferensi kami yang menunjukkan bahwa dokumen kami membutuhkan lebih banyak 'sampel', yang sebelumnya kami tidak sebaik mempertimbangkan sebagaimana seharusnya.
Pemirsa: Pengembang perangkat lunak menggunakan basis data kami, bahasa pemrograman dan perkakas terkait (seperti klien admin untuk mengatakan DB)
sumber
Jawaban:
Tujuan dari dokumentasi adalah untuk mendeskripsikan dan menjelaskan produk perangkat lunak, sehingga Anda dapat mendefinisikan dokumentasi untuk menjadi kumpulan artefak yang berkontribusi pada deskripsi atau penjelasan itu. Anda mungkin tidak akan mempertimbangkan tindakan terkait sebagai bagian dari dokumentasi: misalnya kursus pelatihan selama seminggu bukan dokumentasi tetapi materi kursusnya; obrolan papan tulis lima menit bukan dokumentasi tetapi gambar papan tulis itu.
Mengingat tujuan (menjelaskan perangkat lunak), dokumentasi selesai ketika pelanggan puas dengan penjelasan : sama seperti perangkat lunak selesai ketika pelanggan puas dengan perangkat lunak. Ingatlah bahwa pelanggan untuk dokumentasi tidak selalu sama dengan pelanggan yang membayar untuk perangkat lunak: personel pendukung, penguji, tenaga penjualan, dan yang lainnya semua akan memerlukan pemahaman tentang apa yang dilakukan perangkat lunak dan cara kerjanya.
Ini membantu memahami di mana batas Anda untuk apa yang harus dimasukkan dalam dokumentasi terletak. Menggunakan "pembaca" sebagai istilah praktis, meskipun kami menerima bahwa video atau audio dapat dimasukkan: apa pun yang membantu pembaca mendapatkan informasi yang mereka butuhkan tentang perangkat lunak adalah dokumentasi yang dapat mereka gunakan, sedangkan yang lain tidak. Jika pelanggan Anda membutuhkan walk-through rinci dari semua kasus penggunaan mereka, maka itu harus menjadi bagian dari dokumentasi. Pengembang Anda mungkin memerlukan kode sumber, informasi tentang repositori kontrol versi Anda dan instruksi pembuatan: itulah dokumentasi untuk mereka, tetapi seperti yang dijelaskan di atas, itu tidak akan menjadi bagian dari dokumentasi pelanggan.
sumber
Saya pikir Anda mengambil bagian yang salah dari percakapan Anda di sebuah konferensi. Metodologi pengembangan perangkat lunak modern menganjurkan bahwa tim pengembangan harus bekerja erat dengan pelanggannya (atau pemilik produk yang bertindak sebagai proxy pelanggan). Untuk semua pekerjaan yang disampaikan, definisi "selesai" adalah sesuatu yang dinegosiasikan antara tim dan pelanggannya dan dilakukan secara berulang ketika perangkat lunak sedang dikembangkan.
Masalah yang Anda hadapi adalah bahwa Anda memiliki keterputusan antara apa yang Anda anggap pelanggan butuhkan dan apa yang mereka harapkan Anda berikan sehingga pada akhirnya Anda mendapatkan kejutan "hei di mana semua sampel".
Sejauh, apa itu dokumentasi ... well, itu hampir semua yang Anda daftarkan dan mungkin beberapa hal lagi yang tidak Anda daftarkan. Tetapi tidak ada yang bisa memberi tahu Anda berapa banyak dokumentasi yang dibutuhkan proyek Anda. Setiap proyek berbeda dan tergantung pada tim Anda, pemilik produk Anda dan pelanggan Anda untuk menentukan tingkat dan jenis dokumentasi yang diperlukan untuk proyek Anda.
Beberapa faktor yang akan berperan:
sumber
Dokumentasi adalah hal-hal yang dimaksudkan untuk dibaca tanpa mengubahnya.
Saya pikir Anda tidak dapat salah dengan definisi berbasis tujuan ... tetapi hanya jika Anda mendefinisikan tujuan dengan benar.
Masalahnya, kode yang baik mempertimbangkan masalah keterbacaan akun, bersama dengan kebenaran eksekusi - ini membuat perbedaan "keterbacaan" sangat tidak berguna dalam mendefinisikan dokumentasi.
Sangat sampel yang Anda sebutkan menunjukkan apa yang salah dengan itu. Klien biasanya mengharapkan ini ditulis dengan jelas danjalankan dengan benar. Mengompromikan keterbacaan atau kebenaran dapat membawa air terjun dari keluhan pelanggan. Perbedaan naif tidak membantu untuk mencari tahu apakah sampel adalah kode atau dokumentasi.
Menggunakan perbedaan naif akan menjadi lebih berantakan jika Anda membayangkan bekerja dengan open source . Anda mengunduh, membuat, dan menjalankannya - Anda tidak membacanya, hanya kodenya saja? Tunggu, entah bagaimana ada yang salah dan Anda mendapatkan kode untuk membaca apa yang terjadi di sana ... hei Anda baca tidak jalankan - apakah dokumentasi ini sekarang? Dan, akhirnya, Anda menemukan bug di sumbernya dan memperbaikinya - sekarang ini benar-benar kode, itu bukan sesuatu yang biasa disebut dokumentasi, tidak peduli seberapa hati-hati Anda membacanya untuk melakukan perbaikan itu.
Untuk 'sampel' yang akan Anda berikan, perbedaan baca-tidak-modifikasi mungkin menjadi sangat penting.
Lihat, jika beberapa sampel gagal saat dijalankan tidak berubah, di lingkungan referensi yang terdokumentasi, itu adalah bug Anda - bug dalam dokumentasi Anda, yang harus Anda terima dan perbaiki, baik.
Sekarang, jika ada masalah dengan sampel atau lingkungan yang dimodifikasi, itu bukan kesalahan Anda lagi - maksud saya tidak ada bug dalam dokumentasi, karena dokumen tidak dimaksudkan untuk modifikasi. Apa pun bantuan yang Anda berikan kepada pengguna jika seperti itu, akan jatuh di bawah kategori dukungan, bukan perbaikan bug.
sumber
Apa pun yang menjawab pertanyaan "bagaimana saya ..." adalah dokumentasi.
Untuk pengembang, itu berarti spesifikasi persyaratan ("bagaimana saya tahu apa yang harus ditulis"), dokumen desain ("bagaimana cara mengatasi persyaratan saya"), matriks keterlacakan ("bagaimana saya tahu bahwa desain saya menangani semua persyaratan saya"), rencana pengujian ("bagaimana saya tahu kode saya berfungsi"), unit test ("bagaimana saya tahu saya sudah memenuhi persyaratan X"), komentar inline ("bagaimana saya memastikan schlub miskin berikutnya mengerti mengapa saya menulis ini cara "), instruksi penerapan (" bagaimana cara saya mengemas produk ini untuk instalasi "), dll.
Untuk pengguna, itu berarti manual pengguna ("bagaimana saya menggunakan perangkat lunak"), tutorial ("bagaimana saya menggunakan fitur spesifik ini"), catatan rilis ("bagaimana saya tahu bug apa yang telah diperbaiki / fitur
bugbaru telah ditambahkan "), dll.sumber