Saat ini saya sedang dalam proses memperbarui dokumen desain sehingga benar dan terbaru untuk pengembang masa depan.
Saat ini, dokumen hanya berfokus pada fakta-fakta, menyajikan bagaimana desainnya. Tidak ada alasan untuk setiap keputusan yang disajikan. Saya percaya bahwa penting untuk menangkap alasan agar pengembang tahu mengapa ada sesuatu seperti itu, karena itu mungkin akan mempengaruhi keputusan di masa depan. Tidak mungkin bagi saya untuk menambahkan alasan untuk semua keputusan desain, terutama yang dibuat sebelum saya mulai mengerjakan proyek, tetapi saya melakukan apa yang saya bisa di departemen ini.
Namun, beberapa keputusan desain, dengan hormat, keputusan yang sangat buruk diberikan persyaratan proyek. Ada beberapa yang bagus juga.
Pikiran awal saya adalah bahwa saya harus memasukkan diskusi tentang masalah desain dan solusi potensial atau solusi untuk masalah ini untuk memusatkan perhatian pengelola masa depan, tetapi saya tidak yakin apakah dokumen desain adalah tempat untuk jenis diskusi dan informasi ini. Saya tidak ingin "kritik" desain menjadi "mengoyak desain ini yang baru" karena orang lain mengerjakan sistem ini dan memperbarui dokumen, karena itu jelas tidak pantas.
Manajer saya akan mendukung keputusan mana pun, jadi terserah saya. Terlepas dari pendekatan yang saya ambil, dokumen yang dihasilkan akan secara resmi diversi dan diberikan kepada pengembang yang bekerja pada sistem, biasanya sebelum mereka ditugaskan untuk pekerjaan pengembangan. Diharapkan bahwa pengembang baru membiasakan diri dengan dokumen yang terkait dengan sistem perangkat lunak yang diberikan sebelum memulai pekerjaan pengembangan.
Pertanyaan:
- Haruskah dokumen desain tetap berpegang pada fakta-fakta mentah ("ini desainnya") dan alasannya ("inilah alasannya desain ini") atau haruskah itu juga digunakan untuk menunjukkan masalah-masalah yang tidak cacat dengan desain yang bisa menimbulkan masalah bagi pengembang masa depan?
- Jika dokumen desain tidak boleh digunakan untuk menangkap informasi ini, jenis dokumen apa yang harus menangkapnya, dan apa lagi yang harus ditangkap dengan diskusi tentang alasan-alasan desain, pengorbanan, dan masalah-masalah yang diketahui (yang tidak cacat, karena cacat dilacak) menggunakan alat lain)?
sumber
Jawaban:
Jika pro dan kontra dapat diringkas dalam satu atau dua kalimat, maka tidak masalah untuk menempatkannya dalam dokumen desain. Apa pun yang lebih lama harus dipisahkan.
Di mana saya saat ini bekerja, biasanya ada dokumen "Keputusan desain" yang terpisah untuk melacak semua keputusan Besar dan Penting. Sering diformat dengan paragraf yang menjelaskan masalah (seperti "Beberapa file harus dipindahkan dari server ke pengguna tertentu di akhir setiap siklus pemrosesan, ada banyak cara untuk melakukan ini ..."), tabel dengan kolom " deskripsi solusi "(seperti" pindahkan file melalui FTP ")," pro "(seperti" Mudah bagi pengguna untuk mengelola ")," kontra "(seperti" tidak cukup aman untuk kepatuhan ABC-XYZ ") dan kesimpulan bahwa menjelaskan mengapa keputusan tertentu dipilih (seperti "FTP tidak akan digunakan karena tidak akan dapat memenuhi persyaratan kepatuhan tertentu"). Dokumen desain biasanya hanya merujuk pada keputusan yang dipilih,
sumber
Itu bukan "salah satu atau".
Tidak ada yang membaca dokumentasi sejak awal. Mereka skim - paling banter. Karena itu, tulislah sesedikit mungkin dokumen. Satu dokumen adalah semua orang memiliki kesabaran untuk. Dokumen "non-desgin" kedua dengan "masalah lain" tidak mungkin dibaca sama sekali.
Keuntungan satu dokumen? Orang mungkin membacanya.
Kekurangan dari satu dokumen? Beberapa. Sebagian besar sudah ketinggalan zaman.
Keuntungan dari banyak dokumen? Tidak ada
Kerugian beberapa dokumen? Silakan baca prinsip KERING dan pemrograman melek. Banyak dokumen berarti banyak sumber kesalahan. Setiap dokumen tidak setuju dengan yang lain dan tidak setuju dengan kode. Ini sangat jelas. Inilah jalan kegilaan.
Hindari meremas-remas tangan.
Dokumen pro-dan-kontra dapat berlarut-larut sampai ke kedalaman yang tidak terbatas dari diskusi tentang bagaimana-jika dan gangguan yang menarik.
Jika Anda merasa perlu untuk menyajikan pro dan kontra, buatlah singkat dan to the point.
Fokus pada apa yang ada.
Simpan apa yang tidak sampai ke tulang kosong.
Jika Anda telah melakukan tolok ukur, studi, atau benar-benar menjelajahi alternatif, dokumentasikan hal itu. Tetapi jika Anda hanya mempertimbangkan alternatif, minimalkan.
Ini seharusnya tidak menjadi sejarah pribadi Anda akan pencobaan dan kesengsaraan.
Punya masalah? Memperbaikinya? Butuh berminggu-minggu? Benar-benar kesulitan? Anekdot yang menarik. Sudah diperbaiki dalam kode. Versi sebelumnya, versi yang salah, versi kereta dan versi kinerja rendah tidak masalah. Mereka adalah pencari makanan di blog.
Masih ada masalah? Tidak tetap? Itu artinya ada alternatif. Dokumentasikan ini.
sumber
Ada 3 fakta penting dalam proses pengambilan keputusan:
Namun, terlepas dari "Apa itu", semua yang lain akan membingungkan pembaca dan mencegahnya dari groking sistem.
Saya suka ide menangkap 2 lainnya, meskipun mereka kurang menarik untuk mempelajari sistem, mereka bisa menghemat waktu ketika mengubahnya.
Oleh karena itu, saya akan membangun ide yang terpapar @FrustratedWithFormsDesigner, dengan twist. Alih-alih membuat dokumen lain, dengan siklus hidup sendiri, saya akan memperbaiki bagian lampiran. Kemudian untuk setiap keputusan yang layak dibahas, saya akan menunjuk pada entri yang relevan dalam lampiran.
sumber
Iya. Dokumen desain harus menjelaskan manfaat, risiko, dan asumsi yang terkait dengan desain yang dijelaskan. Dokumen desain memiliki beberapa tujuan:
Dapatkan desain yang ditulis sehingga semua orang memahaminya, dan agar pemahaman setiap orang tidak melayang dari waktu ke waktu.
Komunikasikan desain kepada orang-orang non-teknis yang bekerja di proyek.
Membantu penjadwalan, alokasi sumber daya, estimasi biaya, dan jenis perencanaan lainnya.
Menjadi bagian penting dari keseluruhan dokumentasi proyek. Ketika Anda bergabung dengan proyek yang sedang berjalan, atau harus mempertahankan yang sudah selesai, hidup akan jauh lebih mudah jika ada dokumen desain yang ditulis dengan baik.
Sering kali salah satu hasil yang disyaratkan oleh kontrak.
(Mungkin ada yang lain, tapi ini awal yang baik.)
Setiap tujuan ini dilayani dengan baik oleh dokumen desain yang dengan jelas menjelaskan mengapa desain ini dipilih dan apa risiko yang terkait:
Sangat penting bagi setiap orang di tim untuk mengetahui risiko dan manfaatnya sehingga mereka dapat bekerja sama untuk menghindari risiko tersebut dan memanfaatkan manfaat desain dengan sebaik-baiknya.
Untuk anggota tim non-teknis, memahami risiko dan manfaat seringkali lebih penting daripada rincian desain itu sendiri.
Manajemen risiko adalah salah satu hal terpenting yang dapat dilakukan manajer proyek untuk memastikan keberhasilan, dan langkah pertama adalah mengidentifikasi risiko yang perlu dikelola. Seharusnya tergantung pada manajer untuk memutuskan bagaimana menghadapi risiko, tetapi tanggung jawab desainer untuk menunjukkan risiko desain yang diketahui.
Bahkan ketika risiko tidak lagi menjadi masalah, sering kali berguna untuk mendokumentasikannya karena dapat membantu menjelaskan situasi pada saat desain dibuat. Itu bisa membuat pengelola memutuskan sesuatu seperti: "Oke, mereka melakukannya dengan cara itu dulu karena ... tapi itu bukan masalah lagi, jadi saya bisa mengganti kode itu dengan implementasi yang lebih sederhana, lebih cepat." Sama halnya dengan manfaat, tentu saja.
Jika Anda mengerjakan proyek untuk klien, maka sangat penting untuk mendokumentasikan risiko dan manfaat. Yang menempatkan klien pada pemberitahuan bahwa sesuatu bisa salah dalam keadaan tertentu, atau bahwa meminta perubahan pada desain dapat membahayakan beberapa manfaat yang dijanjikan.
Saya mengumpulkan dari pertanyaan bahwa Anda bekerja dengan dokumen desain yang ada untuk sistem yang telah diterapkan. Dalam hal itu, banyak risiko yang mungkin bukan risiko lagi, jadi tidak masuk akal untuk mencoba mendokumentasikannya setelah fakta. Namun, sekarang Anda memiliki keuntungan karena Anda dapat melihat bagian-bagian dari desain asli yang tidak bekerja dengan baik. Saya pikir Anda harus: menambahkan bagian terpisah yang mengidentifikasi area masalah saat ini dan mengusulkan solusi (termasuk risiko yang terkait!); atau buat dokumen terpisah yang melakukan hal yang sama. Bagian / dokumen baru ini dapat berkembang menjadi dokumen desain untuk versi perangkat lunak berikutnya.
Inilah entri blog tentang menulis dokumen desain yang mungkin bermanfaat bagi Anda.
sumber
Jika ada alasan yang sah untuk menghindari solusi yang lebih jelas atau standar, itu harus diperhatikan. Anda akan menyelamatkan seseorang dari banyak masalah. Namun, teknologi tertentu dapat meningkat seiring waktu, jadi alasan Anda mungkin tidak berlaku. Pengembang masa depan kemudian dapat menggunakan penilaian mereka sendiri.
Saya tidak tahu apakah ada banyak manfaat untuk menunjukkan semua kekurangan. Mungkin tidak praktis untuk melakukan perubahan atau prioritas lain akan terjadi. Anda dapat memperbaiki beberapa dari mereka dalam waktu dekat dan ini hanya akan menjadi satu hal lagi untuk diperbarui.
sumber
Saya pribadi tidak akan memasukkannya ke dokumen desain. Dokumen desain harus menguraikan bagaimana itu, bukan mengapa.
Jika Anda merasa ada kebutuhan yang baik untuk cerita belakang mengapa desainnya seperti itu, mungkin Anda harus memasukkannya ke dalam artikel wiki (atau basis pengetahuan apa pun yang digunakan perusahaan Anda) sehingga dapat ada sejarah evolusi desain. Orang-orang dapat pergi dan membacanya, mengeditnya, dan menambahkan saran. Dengan begitu, ini lebih merupakan diskusi terbuka alih-alih pemukulan alis dalam dokumen.
sumber
Saya setuju dengan Anda tentang menempatkan pemikiran dalam dokumen desain.
Bagaimanapun,
dalam proses memperbarui dokumen desain yang ditulis oleh orang lain, saya akan tetap rendah hati dan tidak mencoba menebak mengapa keputusan seperti itu diambil.
Begitu,
Saya akan memasukkan alasan hanya tentang perubahan yang dibuat dalam desain selama pemeliharaan.
sumber