Bagaimana cara memindahkan klien dari mockup UI ke serangkaian persyaratan nyata?

17

Katakanlah Anda diberi mock-up 25 layar status visual aplikasi Anda. Harapannya adalah ini cukup bagi kita untuk yakin bahwa kita dapat mengembangkan dan menyerahkannya kepada pemegang saham atau pelanggan asli sebagai aplikasi yang sudah selesai, dan mereka akan puas. Secara alami, Anda akhirnya akan mengajukan banyak pertanyaan kepada para pemangku kepentingan yang dulu muncul dengan UI, yang sia-sia.

Namun, saya telah berkali-kali menemukan bahwa ini sangat tidak cukup, dalam pengembangan aplikasi persyaratan menjadi kabur oleh fakta bahwa kami mereplikasi antarmuka dan pada akhirnya pelanggan tidak bahagia seperti yang pertama kali mereka lihat. ketika kami meminta mereka semua info untuk membuat UI.

Saya hanya tidak yakin apa yang harus saya tanyakan, saya telah mencoba untuk lebih spesifik dan meminta persyaratan dan pemahaman tentang tujuan keseluruhan, tetapi saya tidak tahu apa yang harus saya minta. Jika saya baru saja mulai sekarang, banyak waktu akan terbuang sia-sia semua info yang mengarah ke UI dan selama fase ini banyak alasan penting pelanggan awalnya akan hilang.

Bagaimana saya bisa membuat orang mengerti bahwa kita tidak dapat mengunci persyaratan berdasarkan mock-up UI dengan meminta sesuatu yang dapat ditindaklanjuti yang dapat mereka buat untuk saya?

Apa yang Anda akan mulai dengan ideal untuk melaksanakan tugas mengembangkan aplikasi untuk pengguna akhir dengan benar?

MetaGuru
sumber
Bagaimana Anda meminta persyaratan? Apakah Anda hanya pergi ke pelanggan / pengguna dan mengatakan "bisakah saya memiliki persyaratan?" atau apakah Anda menggunakan berbagai teknik untuk memperoleh, menangkap, dan memverifikasi dan memvalidasi persyaratan?
Thomas Owens
2
Tidak mudah berurusan dengan non pengembang untuk ini. Layar tidak menggambarkan aplikasi. Majikan saya saat ini tidak memahami ini. Upaya saya cenderung diarahkan untuk melalui setiap layar dan mengajukan banyak pertanyaan tentang perilaku setiap item dan "bagaimana jika". Dengan begitu Anda memiliki harapan untuk mengisolasi fitur dan mampu merancang apa yang ada di bawah gloss.
Rig
2
Saya kira itu lebih baik daripada spesifikasi 25-tab-excel-file yang terlalu umum.
Morgan Herlocker
1
Tidak jelas dari pertanyaan Anda apakah ini yang diberikan oleh klien Anda ATAU apakah ini yang dihasilkan oleh orang lain di tim Anda sebagai hasil dari upaya mereka dalam menangkap persyaratan. Jika yang terakhir maka Anda memiliki masalah di organisasi Anda yang mungkin cukup mendalam. Jika yang pertama, maka Anda perlu berlatih beberapa teknik pengumpulan persyaratan seperti yang direkomendasikan orang lain.
Angelo
1
@Ryan, dalam hal ini maka saya berharap pria persyaratan dapat menjawab semua pertanyaan yang Anda miliki untuknya! Mungkin dia hanya berharap bahwa Anda secara informal akan menyelesaikan persyaratan penuh dengannya secara interaktif? Itu skenario optimis.
Angelo

Jawaban:

19

Beberapa hal lain yang mungkin Anda butuhkan adalah:

  • Uraian usecases atau Workflow: Hanya karena Anda tahu seperti apa layar itu, apakah Anda tahu bagaimana buruknya input ditangani? Apakah Anda tahu cara beralih antar layar dalam SEMUA kasus? Anda dapat memasukkan penanganan kesalahan di sini juga.

  • Deskripsi sistem tingkat tinggi: Sesuatu yang menjelaskan untuk apa keseluruhan sistem tujuan 25 layar ini, dan apa yang mereka lakukan.

  • Model data: Apakah mungkin untuk menyimpulkan model data dari layar ini? Apakah ada model data yang harus digunakan atau Anda bebas merancang sendiri untuk menyelesaikan pekerjaan?

  • Persyaratan teknis: Apakah teknologi spesifik yang harus digunakan karena lisensi atau karena alasan integrasi?

  • Persyaratan kinerja: Jika ada layar pencarian, apakah ada harapan tentang apa yang dapat dicari dan seberapa cepat respon seharusnya? Bagaimana dengan tanggapan untuk jenis tindakan lain? Bisakah atau sebagian dari mereka tidak sinkron (pengguna mengirimkan pekerjaan dan kembali lagi nanti)?

  • Persyaratan keamanan: Apakah aplikasi menyimpan data yang berpotensi sensitif / pribadi dan jika demikian, jenis data apa dan apa yang harus dilakukan untuk menjaga keamanannya? Apakah Anda perlu memenuhi beberapa tingkat kepatuhan (seperti kepatuhan PCI untuk melakukan pembayaran kartu kredit)?

Juga, apakah ada pengetahuan domain bisnis khusus yang mungkin Anda perlukan untuk membantu Anda? Beberapa industri seperti asuransi, perbankan, catatan kesehatan medis, dll ... memiliki semua jenis logika bisnis yang kompleks. Proyek-proyek semacam itu tidak boleh dicoba tanpa bantuan analis bisnis yang mengetahui domain itu. Tetapi jika itu hanya situs keranjang belanja / info untuk widget umum, maka Anda mungkin tidak memerlukan anggota tim seperti itu.

FrustratedWithFormsDesigner
sumber
1
Saya tidak tahu apakah Anda sengaja melakukannya tetapi daftar ini bahkan dalam urutan pentingnya, dengan kasus penggunaan dan deskripsi sistem tingkat tinggi (apakah mereka setidaknya memberi label layar mockup?) Sejauh ini merupakan hal yang paling penting. Saya tidak tahu apakah persyaratan keamanan masuk akal untuk meminta mereka. Sepertinya saya seperti Anda sebagai pengembang harus memiliki pemahaman yang lebih baik tentang keamanan apa yang diperlukan untuk mendukung kasus penggunaannya, jadi Anda harus memutuskan persyaratan keamanan dari kasus penggunaan dan kemudian memberi tahu klien.
jhocking
10

Cara membuat orang mengerti bahwa mengejek UI tidak cukup untuk membuat program kerja:

Saya akan menangani ini dengan analogi. Karena saya agak gila mobil, saya pergi rute itu.

"Berpura-puralah aku tidak tahu apa-apa tentang mobil. Kamu memberiku beberapa foto Ferrari. Pasangan dari luar dan satu dari dalam mobil (diambil dari kursi pengemudi sehingga aku bisa melihat kontrol untuk mobil). Sekarang kamu bertanya padaku untuk membangunkan Anda sebuah Ferrari. Saya kembali dengan sesuatu yang terlihat seperti gambar dan memiliki semua kontrol. Sayangnya, kontrol itu tidak terhubung dengan apa pun karena (karena saya tidak tahu apa-apa tentang mobil) Saya tidak tahu apa itu kontrol harus dilakukan. Aku bahkan tidak bisa menebak karena aku bahkan tidak tahu apa yang seharusnya dilakukan mobil. Jadi, kita memiliki percakapan seperti ini:

"Jadi, apa yang dilakukan Ferrari?" "Itu memungkinkan saya untuk bergerak sendiri dari satu titik ke titik lainnya dengan cepat." "Oke. Jadi apa yang dilakukan lingkaran ini?" "Oh, itu setirnya. Dengan memutarnya, kamu bisa mengubah ke arah mana roda di luar titik mobil. Ini akan mengubah ke arah mana mobil bergerak." "Oke, dan bagaimana dengan pedal ini?" "Itu pedal gas. Itu membuat mesin melaju lebih cepat yang membuat mobil melaju lebih cepat." ... beberapa menit kemudian ... "Oke, jadi mesin seperti apa yang dibutuhkan? Saya sudah melakukan riset dan menemukan mesin untuk kereta golf dan beberapa untuk mobil sport. Yang mana yang harus saya gunakan?" ... dll ... "

Lalu Anda bisa menjelaskan analoginya. Menyerahkan pengembang tiruan layar hanya memberi tahu mereka seperti apa, bukan apa fungsinya. Pengembang perlu mengetahui masalah apa yang dipecahkan oleh program atau bagaimana program itu akan digunakan (seperti mengetahui apa yang dilakukan mobil membuatnya lebih mudah untuk mendesain mobil dan mengambil tebakan tentang hal-hal apa yang harus dilakukan). Mereka perlu tahu hal-hal apa yang diharapkan mereka gunakan (mis. Mesin kereta golf vs. mesin mobil sport) dan persyaratan non-UI lainnya (mobil harus melaju cepat).

Hal-hal yang akan saya tanyakan:

Deskripsi masalah Umum / Tingkat Tinggi

Gunakan kasus / kisah pengguna

Persyaratan Kinerja

Teknologi / platform yang diperlukan (Windows, Linux, Web)

Semuanya FrustratedWithForms ada dalam jawabannya

Becuzz
sumber
1
+1 untuk analogi yang hebat, meskipun saya tidak yakin itu benar-benar cara terbaik untuk berkomunikasi dengan klien. Saya akan mengatakan itu kepada teman-teman non-teknis saya untuk membantu menjelaskan apa yang saya lakukan, tetapi untuk klien yang mungkin sedikit menggurui.
jhocking
@jocking Saya sepenuhnya setuju bahwa menggunakan analogi itu bukan cara untuk berkomunikasi dengan klien. Saya membuat asumsi bahwa tiruan itu berasal dari orang lain di perusahaan Anda yang sudah berbicara dengan klien. Jika Anda harus mengomunikasikan hal ini kepada klien, cukup jelaskan bahwa tiruan itu menunjukkan kepada Anda seperti apa penampilannya tetapi hanya memberi tahu Anda sedikit tentang apa yang dilakukannya (setiap informasi yang Anda dapatkan dari tiruan itu adalah tebakan terbaik). Mereka perlu memberi tahu Anda lebih banyak tentang apa yang Anda hasilkan. Anda hanya perlu menemukan cara yang baik untuk bertanya dan mengomunikasikannya.
Becuzz
5

Sesuatu untuk efek 80% dari upaya pengembangan mengarah ke 20% dari kasus penggunaan pinggiran. Tangkapan layar tidak akan memberi tahu Anda tentang kasus penggunaan sehingga Anda akan berada dalam kegelapan untuk 80% pengembangan aktif Anda.

Adalah baik bahwa Anda mencoba untuk mencari tahu lebih banyak dan mencoba untuk mengomunikasikan betapa pentingnya bagi klien untuk lebih terlibat dalam persyaratan proyek, namun jika mereka tidak melakukan ini maka mereka membuat proyek untuk kegagalan, dan itu bukan salahmu.

Sebagian besar proyek perangkat lunak gagal karena klien tidak cukup terlibat dalam proses pengembangan perangkat lunak. Ini bukan masalah baru dan tentu saja bukan misteri mengapa proyek perangkat lunak gagal tetapi terus menerus terjadi di industri karena situasi seperti ini.

Anda tidak bisa hanya melemparkan setitik informasi ke dinding dan berharap untuk mendapatkan kembali semua harapan dan impian Anda dalam bentuk paket perangkat lunak. Pengembangan perangkat lunak tidak berfungsi seperti ini. Apakah Anda seorang toko Agile atau Waterfall, arahan klien yang kuat diperlukan untuk keberhasilan atau kegagalan suatu proyek.

maple_shaft
sumber
2
"Anda tidak bisa begitu saja melemparkan setitik informasi ke dinding dan berharap untuk mendapatkan kembali semua harapan dan impian Anda dalam bentuk paket perangkat lunak" Saya suka kalimat ini dan saya sangat mencuri itu.
HLGEM
@HLGEM, Ambillah, itu milikmu!
maple_shaft
4

Satu hal yang orang sepertinya lupa untuk bertanya, adalah apa data yang akan digunakan setelah input? Apakah Anda memerlukan laporan? Apakah Anda perlu membuat slip pengepakan dan mengirim ke gudang untuk pengiriman, dll. Jika data digunakan untuk membuat keputusan manajemen dan pelaporan diperlukan, maka itu dapat mengubah desain basis data. Ini juga dapat menambah jumlah waktu yang serius untuk pengembangan tergantung pada kompleksitas laporan.

Anda juga perlu memastikan ada jalan untuk setiap keputusan yang mungkin. Jadi, jika sesuatu memerlukan persetujuan manajemen - lalu apa yang Anda lakukan jika tidak disetujui serta apa yang Anda lakukan jika disetujui. Jika tidak disetujui atau ditolak dalam jumlah waktu X, lalu apa yang terjadi padanya? Jika mereka memilih produk dan sudah habis, apa yang terjadi pada pesanan? Pertanyaan-pertanyaan semacam itu.

Anda juga perlu tahu apakah ada batasan spesifik pada data apa yang harus dimasukkan ke setiap bidang. Apakah ada nilai yang diperlukan. Dari mana Anda akan mendapatkan mereka? Bagaimana mereka akan diperbarui? Anda perlu tahu cara menangani kesalahan. Anda perlu tahu apakah database perlu melakukan audit atau jika Anda harus dapat membuat kembali data dari perspektif historis (kembali ke laporan sial itu).

Hal lain yang saya lihat terjadi adalah bahwa aplikasi dapat dirancang hanya untuk rilis tanpa mempertimbangkan bagaimana data akan dikelola setelahnya. Apakah Anda memerlukan halaman admin untuk memastikan mereka dapat memperbarui daftar nilai yang diperlukan? Apakah Anda perlu mengirim data bolak-balik ke sistem lain. Bagaimana Anda akan mendapatkan data awal ke dalam basis data?

HLGEM
sumber
3

Secara pribadi, saya akan meminta pertemuan setengah hari atau sehari dengan klien untuk membahas desain UI dan tujuan mereka dan memastikan semuanya selaras.

Wyatt Barnett
sumber
2

Mulai dari yang sederhana. Buat mereka mengerti bahwa dengan informasi yang Anda berikan, tentang proses bisnis mereka. Kemudian membangun contoh diri Anda yang lebih realistis, yang memiliki pengetahuan, tetapi dibenarkan karena meyakini bahwa tidak tepat untuk memutuskan logika bisnis mereka bagi mereka. tidak ada layar yang akan melakukan apa pun . Tidak ada detail tentang kasus penggunaan, perilaku input buruk dan sebagainya. Itu tidak akan berhasil. Menjelaskan generalisasi tumpul lebih mudah daripada menjelaskan detail, karena intinya tidak bisa hilang. Mencoba memberi mereka pembenaran yang lebih rumit untuk mengapa maket layar tidak cukup memberi mereka kesempatan untuk berdalih definisi Anda alih-alih mengakui masalah. Mintalah mereka membayangkan bahwa pengembang back-end tidak berbicara bahasa Inggris (atau bahasa apa pun yang disajikan layar). Kemudian tanyakan betapa berbedanya situasi ini dengan pengembang yang tidak memiliki pengetahuan sama sekali

Tom W
sumber
2

Orang yang belum mengembangkan perangkat lunak tidak tahu apa yang perlu diketahui oleh pengembang perangkat lunak. Mereka tidak dapat diharapkan untuk menghasilkan spesifikasi persyaratan dan menggunakan kasing sendiri. Anda perlu menerapkan persyaratan teknik elisitasi untuk mendapatkan informasi yang perlu Anda ketahui. Bekerja dengan klien (dan semoga sampel pengguna dari berbagai peran) untuk menentukan apa yang mereka butuhkan atau inginkan. Teknik umum untuk ini adalah wawancara dan / atau observasi pengguna, mengidentifikasi kasus penggunaan dan cerita pengguna, dan membuat prototipe.

Saya akan sangat menyarankan menerapkan teknik pengembangan iteratif dan tambahan dalam hal ini, karena Anda memiliki persyaratan yang tidak jelas, tidak lengkap, atau kurang dipahami. Lihatlah berbagai metodologi lincah bersama dengan Model Spiral untuk mengatasi perencanaan siklus hidup.

Mulailah dengan memperoleh tujuan bisnis yang mendorong pengembangan perangkat lunak ini. Wawancarai klien dan pengguna, dan jika Anda bisa, saksikan mereka di tempat kerja. Cobalah untuk menentukan masalah apa yang mereka coba selesaikan. Lihat alat apa yang mereka gunakan saat ini dan bagaimana mereka menggunakannya sehingga Anda dapat meningkatkan cara mereka saat ini dalam melakukan sesuatu. Gunakan kesempatan ini untuk mempelajari domain dan bahasanya - akan jauh lebih mudah untuk berkomunikasi jika pengembang perangkat lunak dan klien / pengguna semua berbicara dalam bahasa yang sama (dan jangan berharap klien / pengguna untuk berbicara dalam istilah perangkat lunak).

Setelah Anda memahami apa tujuannya, Anda dapat mulai bekerja dengan maket desain UI yang Anda miliki dan "merekayasa balik" menggunakan case dan kisah pengguna dari mereka berdasarkan pada bagaimana berbagai layar cocok bersama. Format cerita pengguna mungkin akan bekerja dengan baik untuk menangani audiensi non-teknis. Format As a <user type>, I want to <action> so that <reason>bekerja dalam hal mendapatkan pengembang dan klien / pengguna berbicara bahasa yang sama. Setelah Anda bisa memulai dengan cerita pengguna, saya akan mengadopsi pendekatan prototyping untuk pengembangan.

Saya pikir saya akan melakukan pendekatan ini dengan menggunakan prototyping. Anda bisa melakukan pendekatan ini baik dari perspektif prototyping evolusi atau prototyping sekali pakai , tapi saya akan mempertimbangkan pendekatan prototyping evolusi terlebih dahulu. Mulailah dengan cerita pengguna yang paling Anda sukai dan telah tervalidasi, dan mulailah untuk mengimplementasikannya. Saat Anda menerapkannya, dapatkan umpan balik dari pelanggan dan kembangkan kisah pengguna baru, gunakan case, dan selesaikan kesalahpahaman.

Juga, jangan pikirkan ini sebagai "mengimplementasikan antarmuka pengguna dengan fitur di bawahnya". Sebaliknya, anggap itu sebagai irisan vertikal tipis. Jangan mengimplementasikan semua antarmuka pengguna sekaligus dan kemudian khawatir tentang fitur. Alih-alih, gunakan mockup antarmuka pengguna untuk mengidentifikasi fitur dan persyaratan lain, dan kemudian menerapkan irisan vertikal dari UI hingga ke logika bisnis dan penyimpanan data. Ulangi ini untuk setiap irisan vertikal. Anda juga harus merasa bebas untuk membuat saran untuk meningkatkan UI berdasarkan persyaratan dan prinsip kegunaan.

Saya akan merekomendasikan membaca dua buku oleh Karl Wiegers - Persyaratan Perangkat Lunak dan Lebih Lanjut Tentang Persyaratan Perangkat Lunak . Saya pikir ini akan membantu Anda dengan rekayasa persyaratan dan praktik terbaik di bidang ini.

Thomas Owens
sumber
4
Ingat saja jika Anda membuat prototipe, jangan pernah membuat antarmuka pengguna terlihat dipoles dan selesai, mereka akan berpikir Anda selesai dengan pengkodean jika layar terlihat finsihed.
HLGEM
@HLGEM Sangat benar, sangat benar. Bahkan, saya cukup yakin telah memberikan saran itu di situs ini sebelumnya.
Thomas Owens
1

Yah, ini adalah referensi awal yang sangat memalukan, tetapi Wikipedia mungkin merupakan tempat bagi Anda dan pengguna untuk memulai. Fakta bahwa ada entri tentang hal ini dapat membantu meyakinkan mereka bahwa ini adalah masalah nyata, bukan Anda yang menyusahkan.

Lebih khusus lagi, apakah Anda hanya bingung tentang apa yang dilakukan aplikasi, bahkan setelah mempelajari mock-up? Jika demikian, akui, dan coba jelaskan bahwa Anda tidak tahu data apa yang harus ditampilkan setiap formulir, atau dari mana asalnya, apakah data itu berasal dari layar lain atau data eksternal?

Jika Anda memiliki beberapa ide, mencoba untuk datang dengan contoh-contoh dari hal-hal yang Anda tidak tahu bagaimana melakukan ( "akan daftar template untuk memilih menjadi salah satu daftar global atau salah satu dari mereka oleh Pengguna, atau sesuatu yang lain? Jika itu bukan oleh Pengguna, bolehkah saya membiarkan dua orang mengeditnya sekaligus? Apa yang harus ditampilkan UI jika orang lain mengeditnya? Apakah ada layar untuk itu? Setelah seseorang menggunakan templat untuk templat apa pun yang digunakan untuk dan templat diedit. haruskah perubahan itu disebarkan ke hal yang mereka buat dengan templat? ").

Jelaskan bahwa dengan tingkat pengetahuan Anda saat ini, Anda perlu memiliki pertanyaan yang dijawab kira-kira setiap 90 detik selama sisa siklus pengembangan, dan sebagian besar waktu Anda tidak akan dapat terus bekerja sampai Anda mendapatkan jawaban. Tujuannya harus menjelaskan mengapa memiliki semacam proses akan membuatnya lebih mudah. Juga sebutkan bahwa QA akan membutuhkan informasi yang sama dengan yang Anda lakukan, sehingga akan lebih mudah untuk menuliskan semuanya sehingga tersedia untuk semua orang dan tidak ada yang lupa apa pun.

Mungkin membantu untuk menyebutkan bahwa beberapa kode yang Anda tulis memengaruhi lebih dari satu layar pada satu waktu, jadi jika Anda mendapat sebanyak mungkin jawaban di muka, mungkin akan membuatnya lebih mudah untuk menulis kode itu dengan tepat dan tidak harus mengubahnya nanti.

Jika Anda masih tidak dapat memperoleh persyaratan dan Anda benar-benar tidak tahu bagaimana melanjutkan, kirim email setiap kali Anda membutuhkan informasi lebih lanjut (yaitu, persyaratan), dan jika Anda tidak dapat terus bekerja tanpa informasi itu, nyatakan dengan jelas bahwa Anda sayangnya, tidak dapat terus bekerja, karena kode yang Anda perlu tulis akan sangat berbeda tergantung pada jawaban pertanyaan Anda. Jangan mengeluh, hanya dengan sangat profesional biarkan mereka tahu bahwa Anda tidak dapat menulis program sampai Anda tahu apa yang harus dilakukan.

psr
sumber
0

Anda perlu mengetahui batas dan rentang untuk setiap bidang dalam aplikasi. Misalnya, jika bidangnya adalah nomor telepon, apakah mereka mengharapkan Anda menangani +1? Bidang mana yang dibutuhkan? Apa yang mereka ingin aplikasi lakukan jika pengguna mengetik "abc" di bidang # telepon? Apakah semua 25 layar dalam urutan yang harus diikuti oleh semua pengguna?

Jika tidak, buat saja semuanya sebagai bidang teks dan Anda selesai! Ingin bertaruh itu akan berakhir seperti balon timah?

SnoopDougieDoug
sumber