Secara umum, lebih baik untuk membuat semua bagian-bagian fungsional atau mendapatkan UI bekerja pertama - atau campuran dari keduanya?
Dengan asumsi anda're bekerja pada sesuatu yang besar, itu adalah praktek yang secara umum diterima untuk mendapatkan semua data fungsional panen gumpalan kerja sebelum UI, mendapatkan semua UI bekerja satu bagian pada suatu waktu saat anda pergi, atau sesuatu yang di tengah?
Kita semua tahu untuk istirahat bekerja di bawah untuk potongan-potongan dikelola, tapi pertanyaannya adalah apakah pada akhirnya UI termasuk dalam bagian yang bisa dikelola aku kira.
Untuk kasus contoh, pertimbangkan sebuah aplikasi GUI dengan satu akar jendela, tapi lebih dari selusin tab di berbagai stasiun docking untuk memisahkan berbagai komponen data. Masing-masing tab memiliki relatif kompleks dari bagian yang bergerak di balik itu dari unit-unit fungsional perspektif.
Contoh aplikasi dalam pertanyaan khusus ini adalah di sini dengan disertai blog dan asli produk komersial.
Ada konsepsi umum di antara banyak pengguna bisnis dan klien yang ketika itu terlihat selesai, hampir selesai. Seperti anda mungkin tahu, ini adalah jauh dari kebenaran. Seseorang bisa terlihat bagus, tetapi dengan tidak ada backend dan beberapa pengguna berpikir bahwa sehingga terlihat bagus adalah 80% dari pekerjaan, tidak 20% (atau 80% lainnya).
Tak terhitung pengusaha dapat memberitahu cerita-cerita horor ini - mendapatkan mockup dari halaman-halaman yang dilakukan di Microsoft Word menggunakan screen shot dari beberapa alat lain, dan klien mengatakan "jadi, kau've hampir bisa dilakukan?"
Anda perlu untuk kecepatan sehingga semua bagian yang dilakukan bila yang dilakukan. Mencoba untuk melakukan semua backend pertama dan kemudian semua ujung depan akan mengarah ke end user berpikir anda're tidak melakukan apa-apa dan bertanya mengapa anda dibayar ketika ada apa-apa untuk menunjukkan untuk itu. Di sisi lain, front end pertama dan anda'll menemukan pengguna akhir membuat picik perubahan dan memakan semua waktu kita.
Kasus terburuk dengan 'salah satu yang pertama dan yang lain' adalah ketika anda mendapatkan ke bagian lain, anda menemukan bahwa itu doesn't sesuai dengan desain sama sekali.
Dengan demikian, membangun keduanya. Menunjukkan kemajuan di front end, membuat back end bekerja dengan apa yang anda sedang membangun. Dalam banyak kasus, ide yang baik untuk memberikan tambahan membangun dan pastikan anda're membuat apa yang diinginkan klien (ini masuk ke Lincah). Akan terlalu lama dengan keluar 'terlihat kemajuan' bisa melukai hubungan klien (ini adalah untuk kedua kasus 'segala sesuatu yang tampak dilakukan sejak dini' dan 'tidak ada yang dilakukan sampai akhir' - sulit bagi klien untuk melihat kerangka yang tertulis atau tes unit atau data sanitasi sebagai kemajuan).
Joel menulis tentang hal ini di Rahasia gunung Es, yang Terungkap:
yang Penting Wajar Dua. Jika anda menunjukkan nonprogrammer layar yang memiliki user interface yang 100% yang indah, mereka akan berpikir program ini hampir selesai.
orang-Orang yang tidak't programer hanya melihat layar dan melihat beberapa piksel. Dan jika piksel terlihat seperti mereka membuat sebuah program yang melakukan sesuatu, mereka pikir "oh, ya ampun, betapa sulit lagi untuk membuatnya benar-benar bekerja?"
risiko besar di sini adalah bahwa jika anda mock up UI pertama, mungkin agar anda bisa mendapatkan beberapa percakapan dengan pelanggan, maka semua orang's akan berpikir anda're hampir selesai. Dan kemudian ketika anda menghabiskan tahun berikutnya bekerja "di bawah selimut," sehingga untuk berbicara, tidak ada yang akan benar-benar melihat apa yang anda're lakukan dan mereka'll pikir itu's apa-apa.
Ini lagi-lagi menegaskan dalam posting blog Don't membuat Demo terlihat Dilakukan yang telah membantu grafik:
Catatan berikut ini dua pilihan umumnya mencerminkan 'dapatkan ui dilakukan' (dan kemudian harapan adalah bahwa anda'll harus dilakukan segera) dan 'dapatkan backend dilakukan' (dan kemudian pelanggan khawatir tentang anda hilang tenggat waktu).
Cara 'selesai' sesuatu yang terlihat harus sesuai dengan cara 'selesai' sesuatu yang lebih.
Setiap pengembang software telah mengalami hal ini berkali-kali dalam karir mereka. Tapi alat desktop publishing menyebabkan sakit kepala yang sama untuk tech penulis-jika anda menunjukkan seseorang draft kasar yang's sempurna fonted dan diformat, mereka melihatnya sebagai lebih banyak dilakukan daripada anda'd suka. Kami butuh pertandingan antara di mana kita berada dan di mana orang lain memandang kita.
Artikel ini juga membawa poin penting tentang jenis umpan balik yang anda dapatkan dengan berbagai tingkat kematangan dari antarmuka pengguna. Jika anda memiliki sesuatu yang tampak lengkap, anda're lebih mungkin untuk mendapatkan umpan balik tentang "anda bisa mengubah font" dari "tata letak ini doesn't bekerja - ada terlalu banyak tab."
Bagi mereka yang berjuang dengan ini dalam Java Swing dunia, ada's lihat dan rasakan disebut Wanita yang membuatnya begitu bahwa UI tidak't terlihat lengkap (bahkan jika itu adalah).
Kuncinya di sini adalah untuk membuatnya sehingga tidak't melihat dilakukan. Memiliki UI terlihat lengkap adalah sinyal untuk bisnis banyak pengguna bahwa aplikasi lengkap (bahkan jika hanya beberapa halaman statis tanpa ada logika di balik itu atau sesuatu yang dibangun di interface builder).
Bacaan lebih lanjut (dan link-link dari artikel):
Hal ini tergantung: Anda perlu ketat umpan balik di sekitar bagian paling penting dari fungsi
Jika inti dari apa yang anda lakukan, semakin berisiko dan menakutkan bagian, beberapa mesin internal, kemudian mendapatkan bagian inti yang bekerja di katakan konsol atau melalui unit testing. Sebagai contoh, sebuah protokol parser doesn't membutuhkan UI untuk mengetahui apakah operasi dengan benar.
Jika anda keren melibatkan interaktivitas -- interaktivitas anda harus terus-menerus pemecahan masalah, membuang, dan menemukan kembali -- maka UI-pendekatan pertama adalah penting. Misalnya, saya ingin membangun sebuah aplikasi untuk membiarkan orang-orang yang berinteraksi dengan visualisasi data. Hal paling penting yang saya perlu tahu adalah jika visualisasi lebih bermakna, jadi saya'll kemungkinan membuang setengah lusin pendekatan sebelum menetap di satu. I'll melakukan ini semua sebelum menulis satu unit tes.
Ada's fuzzy daerah abu-abu di antara mana anda mendapatkan untuk menentukan kombinasi terbaik tentang cara terbaik untuk berinteraksi dan memvalidasi kode (tes otomatis? UI untuk eksperimentasi?). I've pribadi yang dilakukan kedua ekstrem dan segala sesuatu di antara, dan menentukan tempat yang tepat untuk berada di spektrum itu adalah salah satu hal yang paling sulit yang saya harus memutuskan dan 100% tergantung pada jenis hal yang saya'm bangunan.
Di lingkungan Tangkas, anda mungkin mendengar diskusi "kerangka berjalan" atau "vertikal tipis irisan". Gagasan bahwa sejak perangkat lunak yang bekerja adalah apa yang penting untuk pengguna, anda membangun perangkat lunak dalam bekerja fashion sepotong demi sepotong.
Dalam contoh aplikasi yang anda sebutkan, anda akan mulai dengan jendela dan mungkin salah satu tab, dan membuat semua pekerjaan front-to-back dalam beberapa mode. Kemudian seiring waktu, anda akan menambahkan fungsionalitas dan oleh karena itu tab pada kasus-oleh-kasus dasar, membuat masing-masing fitur bekerja seperti yang anda membangun. Ini adalah bagian dari apa yang sering pelanggan demonstrasi memberikan anda: kesempatan untuk menunjukkan sesuatu yang baru bekerja dan mendapatkan umpan balik langsung.
Singkatnya, ya, UI bekerja adalah benar-benar bagian dari unit kerja fungsional, jika anda memiliki UI.
Mulai dengan sesuatu yang kecil yang bekerja, dan menjalankan fungsinya untuk memberikan bagian dari perangkat lunak.
Saya akan merekomendasikan membuat campuran dari kedua fungsi dan UI (dan mendapatkan umpan balik atau pengalaman pengujian ASAP).
BTW, isn't itu jalan yang paling besar GUI perangkat lunak ini dikembangkan? Terlihat misalnya dalam Firefox browser: dari satu versi ke versi berikutnya fungsionalitas dan antarmuka pengguna yang telah berevolusi.
Besar (PHP berbasis web) aplikasi yang saya kerjakan, saya mencoba untuk mendapatkan kelas dan metode di tempat pertama, yang kembali nilai-nilai dummy. Ini adalah untuk membangun sebuah pseudo-kontrak yang lain devs dapat digunakan untuk melaksanakan UI untuk.
Sekunder keuntungan metode ini adalah bahwa kita dapat mengasah kontrak / interface sebagai UI persyaratan perubahan (dan mereka selalu berubah), bahkan sebelum semua kode ditulis dan disampaikan.
Apa yang saya cenderung melakukan ini adalah untuk memulai dengan jelek UI: sesuatu yang hanya membuang data variabel di layar. Tidak ada font, tidak ada keselarasan, tidak ada yang benar-benar grafis untuk waktu yang lama. Hanya "Selamat datang pengguna x" tombol dan disebut "beban pic" dll. Apa's yang baik tentang ini adalah anda akan mengetahui jika ada sesuatu di backend rusak.
Sebagai hasil perkembangan, anda dapat menemukan lebih banyak hal-hal yang perlu untuk pergi, atau lebih sedikit. Tapi pada tahap tertentu, anda akan memutuskan backend lebih dekat dengan penyelesaian. Sekarang anda memiliki UI yang berisi semua lampiran yang diperlukan, dan anda dapat menghabiskan banyak waktu untuk melakukan semua hal-hal grafis.
Berhati-hatilah meskipun, itu's tidak mudah. Anda perlu sedikit kejelian untuk melihat isu-isu tertentu yang timbul. Misalnya, anda mungkin perlu untuk melakukan riset UI komponen untuk menampilkan data dalam suatu cara yang masuk akal.
Jika anda menggunakan sebuah tonggak dan masalah sistem pelacakan, anda dapat menghindari beberapa masalah tersebut karena sekilas, manajemen dapat melihat seberapa produktif anda'kembali menjadi. Mereka'akan dapat melihat bahwa anda're 80% selesai backend dan bahwa UI adalah tonggak berikutnya; mereka'akan dapat melihat bahwa anda memiliki satu set dari UI dan backend untuk menyelesaikan tugas-tugas untuk fitur tertentu tonggak. Tapi itu semua dimulai dengan proyek's persyaratan, dan Doug T's jawaban menimbulkan beberapa poin yang baik tentang aspek perancangan suatu sistem.
Berpikir anda pengguna/klien point of view. Perangkat lunak sistem adalah kumpulan dari fitur ini memberikan pengguna/klien beberapa nilai. Tentu saja masing-masing satu ini memiliki fitur dan UI, backend dan beberapa hal lainnya.
Membangun sistem anda selalu dilengkapi dengan fitur, dan mencoba membagi sedikit fitur kecil. Dengan cara ini anda selalu dekat untuk memiliki sesuatu yang lebih untuk memberikan kepada pelanggan anda, ingat bahwa pengembangan perangkat lunak ini bukan tentang membangun versi 1.0-nya tentang pergi ke versi 1.0.1 untuk 1.0.2 dan sebagainya...
Itu tergantung. Cara didefinisikan dengan baik adalah kebutuhan anda? Berapa banyak dari sistem UI yang dihadapi?
Dari pengalaman saya, kebanyakan pelanggan tidak tahu apa yang mereka inginkan sampai mereka melihat sesuatu di depan mereka. Jadi saya biasanya memberikan beberapa kawat-frame kunci UI aspek atau memberikan sebagian besar UI (non-kerja). Hal ini memungkinkan pelanggan untuk mengubah pikiran mereka pada fitur/fungsi tanpa terlalu banyak dampak sebagai desain database dan struktur kode ini masih hanya dalam tahap desain - mudah untuk mengubah desain. Itu adalah perintah dari besaran yang lebih mudah/lebih cepat untuk mengubah desain awal proyek ini kemudian.
Tangkas serikat anda juga harus bekerja pada yang paling sulit item dan item yang paling penting pertama. Gagal dengan cepat.. Jadi setelah pelanggan telah melihat UI saya fokus pada membangun komponen-komponen kecil yang sepenuhnya fungsional berbicara yang paling penting dan paling sulit untuk diterapkan terlebih dahulu agar anda mengetahui sesegera mungkin jika anda akan mengalami rintangan.
Kemudian anda memiliki sprint dan memiliki komunikasi yang konstan dengan pelanggan mengembangkan kedua UI dan aspek fungsional di kadang-kadang.