Cara membuat spesifikasi fungsional yang hebat

9

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.

sfrj
sumber
Apa masalahnya dengan huruf kapital?
Amokrane Chentir
4
Atau Anda bisa menyelesaikan proyek pada saat Anda menuliskan semua itu?
alternatif
1
Kedengarannya seperti buang-buang waktu bagiku. Apakah Anda pikir ada aplikasi populer hari ini yang memulai dengan cara itu? Seseorang berkata "X sucks" atau "Y can be cool" dan mereka mulai membangun solusi.
kevin cline
1
Jika saya seorang kontraktor, saya tidak akan pernah mengambil risiko memberikan tawaran harga tetap untuk menghasilkan sistem yang kompleks dengan spesifikasi lebih dari beberapa halaman. Saya lebih suka membangun dan mengirimkan sistem secara bertahap, dan menagih dengan tarif per jam yang disepakati. Ini meminimalkan risiko bagi pelanggan dan kontraktor, dan memaksimalkan umpan balik yang diperlukan untuk menghasilkan sistem yang dapat digunakan.
kevin cline
1
@dunk - Tidak semua fitur pada pesawat jet modern hadir pada awal layanan penerbangan. Aplikasi dapat bermanfaat sebelum setiap kasus penggunaan yang dapat dibayangkan telah diimplementasikan.
kevin cline

Jawaban:

23

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:

  • Tujuan

YA, tulis ini. Simpan hingga 1-2 paragraf, maks. 1/2 halaman.

  • Tinjauan Fungsional

MUNGKIN. Hanya jika itu menambah nilai bagi yang lainnya.

  • Diagram konteks

PENTING. Menunjukkan SEMUA input dan output. Memperlihatkan konteks. Anda dapat (dan harus) menghabiskan banyak waktu untuk hal ini.

  • Faktor Keberhasilan Proyek Kritis

MUNGKIN. Tentunya jika proyek memenuhi persyaratan itu sukses. Saya pikir ini tidak terlalu dibutuhkan.

  • Lingkup (Masuk & Keluar)

TIDAK. Diagram konteks Anda melakukan ini.

  • Asumsi

IYA. Coba dan tetap singkat.

  • Aktor (Sumber Data, Aktor Sistem)

MUNGKIN. Ini kedengarannya seperti bit teknis berdarah bagi saya yang seharusnya tidak dalam spesifikasi FUNGSIONAL.

  • Gunakan diagram kasus

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.

  • Diagram Alir Proses

MUNGKIN. Hanya jika itu menambah nilai signifikan, kalau tidak Anda akan membuang-buang waktu.

  • Diagram Aktivitas

MUNGKIN. Hanya jika itu menambah nilai signifikan, kalau tidak Anda akan membuang-buang waktu.

  • Persyaratan Keamanan

YA - jika relevan.

  • Persyaratan Kinerja

YA - wajib. Harus mengatakan apa yang harus dilakukan (dan dengan tingkat kinerja apa).

  • Persyaratan Khusus

MUNGKIN - jika ada sesuatu yang istimewa.

  • Peraturan bisnis

MUNGKIN - jika berguna.

  • Model Domain (Model data)

MUNGKIN - jika berguna.

  • Skenario Aliran (Sukses, alternatif ...)

MUNGKIN - jika berguna.

  • Jadwal Waktu (Manajemen Tugas)

TIDAK. Ini bukan yang seharusnya di spec. Ini tentang jadwal, perencanaan, dll.

  • Tujuan

MUNGKIN. Tujuan bukanlah persyaratan, mereka tidak jelas hal-hal yang menyenangkan, yang berfungsi untuk mengeruhkan air. Coba dan hindari.

  • Persyaratan sistem

IYA. Penting Mengatakan apa yang harus dilakukan.

  • Biaya yang Diharapkan

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:

  1. Ketahui apa yang ingin Anda lakukan. DAN MENULISKANNYA. (Itu spec.)

  2. Lakukan hal-hal untuk memenuhi # 1 di atas.

  3. Lakukan beberapa tingkat pengujian penerimaan terhadap spek (yang pada dasarnya "apakah Anda melakukan apa yang Anda katakan akan Anda lakukan").

dengan cepat_now
sumber
Jawaban ini murni pendapat dan tidak memiliki dasar ilmiah. Tidak ada bukti bahwa Anda memerlukan barang ini.
Dave Hillier
1
Maaf Pak Hillier, tidak benar. Mapan dalam bisnis pertahanan dan kedirgantaraan (baca tentang proses pengembangan NASA / w). Saya bahkan mengikuti kursus yang mengajarkan semua ini, dan telah menjadi praktisi selama 30 tahun.
cepat,
Wow, Anda begitu berpengalaman sehingga Anda tidak perlu memberikan referensi tunggal untuk membuktikan bahwa pernyataan Anda itu benar. Bagaimanapun, saya tidak mengatakan tidak ada alasan bahwa Anda akan membutuhkan barang-barang itu, hanya saja Anda tidak memiliki alasan yang bagus mengapa dia benar-benar membutuhkan barang-barang ini.
Dave Hillier
Mendesah. Pertanyaannya adalah tentang SPESIFIKASI FUNGSIONAL. Ini berarti Anda tidak melakukan apa pun yang berkaitan dengan sumber daya, penjadwalan, struktur rincian pekerjaan, dll. Dalam peristiwa normal, jenis informasi muncul dalam Pernyataan Kerja, dan kemudian memiliki informasi pendukung dalam WBS, jadwal, alokasi staf, dll. Yang paling dikenal, meskipun hari ini mungkin sedikit tanggal, referensi adalah Blanchard "Rekayasa Sistem dan Analisis". Ada banyak edisi, yang kemudian mungkin yang terbaik.
cepat,
Apakah spesifikasi fungsional harus digunakan untuk pengembangan s / w adalah poin argumen yang bagus - biasanya diperdebatkan oleh mereka yang tidak suka ditembaki pada awal proyek. Ada teknik "modern" lain yang diklaim bekerja lebih baik (lihat The Agile Manifesto). Apakah mereka memang bekerja lebih baik masih bisa diperdebatkan; misalnya jika melakukan pekerjaan pengembangan besar untuk pertahanan, pelanggan mungkin merasa dihibur dengan sering membangun tetapi mungkin tidak siap untuk menerbangkannya. Dan melakukan pekerjaan seperti itu tanpa spesifikasi fungsional sepertinya tidak akan diterima pada tahap proposal.
cepat,
5

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.

corsiKa
sumber
3

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

  • Tinjauan Fungsional Sasaran Tujuan
  • Aktor (Sumber Data, Aktor Sistem)
  • Gunakan diagram kasus
  • Diagram Alir Proses
  • Diagram Aktivitas
  • Diagram konteks
  • Peraturan bisnis
  • Persyaratan Khusus
  • Persyaratan Kinerja

Pengelola

  • Faktor Keberhasilan Proyek Kritis
  • Biaya yang Diharapkan
  • Skenario Aliran (Sukses, alternatif ...)
  • Jadwal Waktu (Manajemen Tugas)

Programmer

  • Persyaratan Keamanan
  • Model Domain (Model data)
  • Persyaratan sistem

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
2

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
1
Lihat jawaban panjang saya. Air terjun adalah pendekatan konyol DI DALAM KESEHATANNYA karena menganggap tidak ada yang salah. (Kumpulkan persyaratan, tentukan, desain, buat, uji, jual ... ohh ada yang salah ... whoops, itu agak sulit). Namun poin tentang front-end-loading, di mana Anda melakukan pengumpulan persyaratan dan penulisan spesifikasi tidak boleh diabaikan. Hanya karena seluruh prosesnya naif bukan berarti Anda membuang semuanya. Anda mencari bagian yang baik dan menggunakannya.
cepat
-1

Tidak ada spesifikasi fungsional yang lebih baik dari prototipe yang berfungsi tetapi jelek, justru karena masalah dengan pendekatan air terjun.

Pekerjaan
sumber
Itu hal yang sangat berbahaya.
cepat
3
Pendekatan itu telah membuat banyak perusahaan gulung tikar. Prototipe jelek sepertinya selalu menjadi produk jelek.
Dunk