Saya akan memulai proyek sampingan kecil segera, tapi kali ini saya ingin tidak hanya model domain UML kecil dan diagram kasus yang sering saya lakukan sebelum pemrograman, saya berpikir untuk membuat spesifikasi fungsional penuh. Adakah orang yang memiliki pengalaman menulis spesifikasi fungsional yang dapat merekomendasikan saya apa yang perlu saya tambahkan? Bagaimana cara terbaik untuk mulai mempersiapkannya? Di sini saya akan menuliskan topik yang menurut saya lebih relevan:
- Tujuan
- Tinjauan Fungsional
- Diagram konteks
- Faktor Keberhasilan Proyek Kritis
- Lingkup (Masuk & Keluar)
- Asumsi
- Aktor (Sumber Data, Aktor Sistem)
- Gunakan diagram kasus
- Diagram Alir Proses
- Diagram Aktivitas
- Persyaratan Keamanan
- Persyaratan Kinerja
- Persyaratan Khusus
- Peraturan bisnis
- Model Domain (Model data)
- Skenario Aliran (Sukses, alternatif ...)
- Jadwal Waktu (Manajemen Tugas)
- Tujuan
- Persyaratan sistem
- Biaya yang Diharapkan
Apa pendapat Anda tentang topik itu? Haruskah saya menambahkan sesuatu yang lain? atau mungkin menghapus sesuatu?
Saya mengendarai setiap jawaban, dan saya ingin mengucapkan terima kasih kepada Anda semua atas informasi yang bermanfaat.
Saya melakukan proyek sampingan ini untuk sebuah perusahaan, dan mereka melihat dari saya aliran komunikasi yang konstan dan saya perlu menjelaskan mengapa saya melakukan setiap hal, karena saya harus mengelola sumber daya yang akan mereka berikan kepada saya. Ini akan menjadi func pertama saya dan seperti yang saya katakan saya ingin itu berguna, tidak hanya besar dan tidak berguna. Saya pikir ini adalah sesuatu yang harus dilakukan, tetapi saya ingin melakukannya dengan cara yang akan lebih bermanfaat bagi saya dan tim saya. Ini buruk bahwa saya kita tidak punya manajer, jadi itu sebabnya saya juga perlu mengurus beberapa tugas administrasi ...
Mengenai pemrograman tangkas, saya pikir ini 100% kompatibel dengan pendekatan tangkas. Saya seorang programmer Agile diri saya dan saya jujur jatuh lebih percaya diri ketika seseorang sudah melakukan pemikiran untuk saya. Saya masih Junnior, tetapi saya bekerja sebelumnya sebagai pengembang web Tapestry di proyek-proyek lain, jika organisasi itu benar-benar kacau.
Saya tidak setuju saya melakukan pendekatan air terjun, saya pikir saya hanya mencoba mendefinisikan beberapa batasan yang akan membuat proyek menjadi lebih mudah ketika pengembangan dimulai.
Jawaban:
Apa yang Anda sarankan baik-baik saja dari sudut pandang puritan Teknik Sistem.
(Akan ada beberapa peminat Agile yang berpikir bahwa semua cara terbuka atas ... dan Anda hanya harus keluar dan melakukan hal-hal dengan ulasan yang biasa, dll).
Namun, Anda perlu memperhitungkan apa yang Anda lakukan, dan untuk siapa Anda melakukannya.
Melakukan proyek untuk diri sendiri berbeda dengan melakukannya untuk orang lain - demi uang.
Ketika Anda bekerja untuk orang lain (baik di perusahaan atau di kontrak) alat komunikasi HANYA berbicara, dan menulis. (Pada akhirnya akan ada produk atau hasil yang dapat dinilai.)
Inti dari spesifikasi adalah untuk mencoba dan mengurangi biaya perbaikan dan perubahan yang terjadi kemudian. Anda mungkin telah melihat grafik yang menunjukkan biaya pembuatan perbaikan pada berbagai tahap proyek, kira-kira seperti ini:
Sebuah perbaikan yang dibuat untuk ide bodoh harganya $ 1
Perbaikan yang dilakukan ketika ide bodoh membuatnya menjadi spesifikasi (yang harus diperbarui) biaya $ 10
Perbaikan yang dilakukan saat Anda membuat prototipe berharga $ 100
Perbaikan yang dilakukan tentang waktu Anda melakukan penerimaan sebelum biaya pengiriman $ 1000
Perbaikan yang dilakukan setelah Anda mengirim dan membuat marah pelanggan Anda dikenai biaya $ 10.000.
Jadi apa yang Anda tulis dalam spesifikasi cukup penting.
Untuk berargumen bahwa Anda seharusnya tidak memiliki spesifikasi sama sekali naif, bodoh, dan mungkin berbahaya.
Salah satu masalah terbesar yang Anda miliki dalam menulis spesifikasi adalah mengetahui kapan Anda melangkah terlalu jauh. Ini bervariasi tergantung pada ukuran proyek. Misalnya, sebuah proyek yang memakan waktu 1-2 orang sekitar satu tahun seharusnya memiliki sekitar 2 hingga 4 MINGGU total dihabiskan untuk spesifikasi ... yang mencakup penyelidikan kelayakan ... spesifikasi yang akan ditulis oleh orang-orang yang benar-benar melakukan pekerjaan itu bukan tipe analis falutin tinggi yang tidak tahu detail berdarah. Sebuah proyek yang memakan waktu 10 orang 2 tahun membutuhkan lebih lama.
Sekarang untuk beberapa komentar tentang berbagai poin Anda:
YA, tulis ini. Simpan hingga 1-2 paragraf, maks. 1/2 halaman.
MUNGKIN. Hanya jika itu menambah nilai bagi yang lainnya.
PENTING. Menunjukkan SEMUA input dan output. Memperlihatkan konteks. Anda dapat (dan harus) menghabiskan banyak waktu untuk hal ini.
MUNGKIN. Tentunya jika proyek memenuhi persyaratan itu sukses. Saya pikir ini tidak terlalu dibutuhkan.
TIDAK. Diagram konteks Anda melakukan ini.
IYA. Coba dan tetap singkat.
MUNGKIN. Ini kedengarannya seperti bit teknis berdarah bagi saya yang seharusnya tidak dalam spesifikasi FUNGSIONAL.
MUNGKIN. Masukkan ini (ini) dalam lampiran. Jelaskan dengan kata-kata. Cobalah untuk menyimpan ini dalam jumlah kecil. Saya telah melihat saran bahwa sebuah proyek seharusnya tidak lebih dari 8 Use Case yang dijelaskan secara rinci. Jangan tutupi semua jalur "unahppy" atau Anda tidak akan pernah selesai.
Sangat jarang ada bagian s / w memiliki Diagram Kasus / Kasus Penggunaan tunggal.
MUNGKIN. Hanya jika itu menambah nilai signifikan, kalau tidak Anda akan membuang-buang waktu.
MUNGKIN. Hanya jika itu menambah nilai signifikan, kalau tidak Anda akan membuang-buang waktu.
YA - jika relevan.
YA - wajib. Harus mengatakan apa yang harus dilakukan (dan dengan tingkat kinerja apa).
MUNGKIN - jika ada sesuatu yang istimewa.
MUNGKIN - jika berguna.
MUNGKIN - jika berguna.
MUNGKIN - jika berguna.
TIDAK. Ini bukan yang seharusnya di spec. Ini tentang jadwal, perencanaan, dll.
MUNGKIN. Tujuan bukanlah persyaratan, mereka tidak jelas hal-hal yang menyenangkan, yang berfungsi untuk mengeruhkan air. Coba dan hindari.
IYA. Penting Mengatakan apa yang harus dilakukan.
TIDAK. Bagian dari perencanaan dan manajemen, bukan persyaratan dari hal yang Anda buat.
Penjelasan: Saya telah menulis spesifikasi untuk produk, perangkat lunak, dan sistem yang kompleks selama lebih dari 15 tahun. Semua barang komersial. Sebagian besar sukses secara komersial dan menghasilkan banyak uang untuk berbagai pengusaha. Termasuk spesifikasi untuk pengembangan Agile s / w di mana Anda masih membutuhkan spesifikasi sebelum Anda melompat ke pengembangan. Pengembangan ACTUAL dapat dilakukan dalam proses apa pun yang Anda inginkan, tetapi pada akhirnya Anda harus memiliki 3 hal untuk sukses:
Ketahui apa yang ingin Anda lakukan. DAN MENULISKANNYA. (Itu spec.)
Lakukan hal-hal untuk memenuhi # 1 di atas.
Lakukan beberapa tingkat pengujian penerimaan terhadap spek (yang pada dasarnya "apakah Anda melakukan apa yang Anda katakan akan Anda lakukan").
sumber
Ada tiga hal yang perlu diingat
1) Anda harus mulai dari suatu tempat
Sudahkah Anda mengidentifikasi masalah yang ingin diselesaikan oleh proyek ini? Anda juga bisa mulai dengan mengatakan, "Ini adalah hal-hal yang proyek ini tidak akan lengkap jika tidak bisa dilakukan." Saya juga melihat beberapa proyek (beberapa berhasil, yang lain tidak begitu banyak) mendesain layar utama dan mengisi kekosongan dari sana.
2) Anda harus mengakhiri suatu tempat
Anda dapat menentukan berbagai hal di neraka, tetapi jika Anda tidak pernah benar-benar melakukan apa pun yang telah Anda lakukan adalah membuang banyak waktu dan kertas dan mengabaikan istri dan anak-anak Anda selama tujuh minggu. (Sudah ada yang melakukannya, siapa pun?) Jadi pastikan untuk menetapkan batas tentang seberapa jauh spek Anda akan pergi. Apakah ini spesifikasi teknis dan juga spesifikasi fungsional?
3) Anda harus memulai dari awal hingga selesai
Jangan mulai dengan mendapatkan satu persyaratan utama dan kemudian mengisi setiap detail tentang hal itu sebelum mendapatkan persyaratan utama kedua setidaknya dalam garis besar. Bangun spec Anda secara horizontal terlebih dahulu, kemudian secara vertikal. Jika tidak, ketika Anda menyadari beberapa detail kecil dari kebutuhan, maka semua persyaratan menjadi dua menjadi tidak mungkin, Anda akan memiliki beberapa masalah besar.
sumber
Saya akan membagi daftar Anda menjadi tiga bagian: hal-hal yang dipedulikan pengguna, hal-hal yang dipedulikan oleh para programmer dan hal-hal yang diperhatikan oleh manajer. Biarkan seorang programmer mengerjakan bagian mereka dan seorang manajer mengerjakan bagian mereka. Programmer mungkin perlu memberikan estimasi untuk bagian-bagian proyek kepada manajer dan manajer untuk memberikan batasan anggaran kepada programmer (yaitu tidak dapat memakan waktu lebih dari X minggu). Jika semua orang (pelanggan, manajer, programmer) setuju, maka itu adalah lampu hijau dan memulai proyek. Untuk programmer, banyak orang spesifikasi poo-poo, kadang-kadang memang demikian. Saya hanya akan menentukan bagian di mana dua atau lebih pihak berkomunikasi (mis. Client-server). Selebihnya, praktikkan beberapa bentuk TDD berdasarkan cerita pengguna. Garis ke pelanggan juga bermanfaat untuk mendapatkan cerita.
Kisah Pengguna
Pengelola
Programmer
Juga, mungkin tidak ada resep yang sempurna untuk semua jenis masalah perangkat lunak. Untuk aplikasi Facebook, Anda mungkin ingin melakukan demo lebih awal dan sering. Untuk sistem panduan rudal, mungkin tidak sebanyak ;-)
sumber
Mempersiapkan semua dokumen ini mungkin memakan waktu berbulan-bulan! Sepertinya pendekatan air terjun bagiku.
Saya tidak bisa menyarankan menambahkan sesuatu yang lain ke daftar Anda kecuali Anda mengambil beberapa dari itu. Saya kira artefak yang akan diproduksi akan tergantung pada budaya di dalam organisasi Anda, dan keahlian para pengembang.
sumber
Tidak ada spesifikasi fungsional yang lebih baik dari prototipe yang berfungsi tetapi jelek, justru karena masalah dengan pendekatan air terjun.
sumber