Saya memiliki klien sekarang mengharuskan saya untuk mengembangkan sistem pendaftaran sekolah. Sekarang ini adalah pertama kalinya saya mengalami tantangan semacam ini. Sebagian besar perangkat lunak masa lalu yang saya buat tidak terlalu rumit.
Saya tahu sebagian besar dari Anda semua telah membuat perangkat lunak yang kompleks, saya hanya ingin saran Anda tentang ini. Haruskah saya mendesain ujung depan atau belakang?
Terima kasih!
Inilah kesimpulan dari artikel yang saya temukan di internet beberapa waktu lalu. Hanya ingin berbagi
http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157
Pengembang front-end vs back-end (my take)
Pilihan pribadi saya
Sekali lagi ini masalah pelatihan, beberapa generalisasi stroke luas:
Pengembang ujung depan
- Biasanya tidak memiliki gelar CS, atau memiliki gelar CS dari sekolah tingkat 3.
- Bekerja dalam bahasa yang mirip dengan dasar (lihat PHP Dasar)
- Memiliki keterampilan visual dalam mengonversi dokumen photoshop ke CSS / HTML / dll.
- Memiliki toleransi yang tinggi untuk pemrograman berulang, karena mengetik bahasa gratis
Pengembang ujung belakang
- Memiliki gelar CS atau banyak pengalaman
- Cenderung saya lebih sistematis dalam pendekatan pemecahan masalah mereka
- Jangan pedulikan menghabiskan waktu berhari-hari untuk menemukan satu objek yang bocor
- Coba dan bangun alat untuk memecahkan masalah
Jawaban:
Jika Anda mulai dari belakang, dan melangkah maju, Anda berisiko salah paham terhadap klien. Karena Anda akan menciptakan hal-hal yang tidak mudah dilihat dan dipahami, mereka tidak dapat berpartisipasi dengan sangat mudah dalam memverifikasi apakah Anda memenuhi persyaratan. Ini berarti Anda mungkin menghabiskan banyak pekerjaan.
Jika Anda mulai dari depan, dan mundur, Anda menghadapi risiko bahwa klien akan berpikir itu hampir selesai, ketika semua yang telah Anda lakukan adalah menggambar formulir sederhana di layar. Mereka kemudian mungkin mempertanyakan mengapa ini memakan waktu begitu lama, karena Anda telah menyelesaikan sebagian besar dalam beberapa hari. Anda juga menghadapi risiko melukis diri sendiri, ketika Anda menyadari bahwa Anda harus melakukan pekerjaan yang rumit untuk mengawinkan bagian depan ke belakang, ketika bagian depan yang lebih cocok akan lebih sederhana.
IMO, Anda harus mengerjakan fitur-nya terlebih dahulu. Tulis bagian depan dan belakang secara bersamaan, untuk setiap fitur dalam sistem. Ini memberikan visibilitas kemajuan yang lebih besar kepada klien, dan memberi mereka kesempatan untuk mengatakan "tidak, bukan itu yang saya maksudkan", tanpa menyebabkan Anda terlalu tertekan.
Yang mengatakan, jika ini adalah proyek yang sangat besar di mana Anda perlu mempertimbangkan perangkat keras server atau kemampuan perangkat lunak apa pun yang Anda andalkan (mis. Database mana yang Anda gunakan), maka Anda mungkin harus memikirkan bagian itu terlebih dahulu.
sumber
Ada banyak dimensi untuk perangkat lunak, oleh karena itu, front-vs-back yang terlalu sederhana adalah pertanyaan yang buruk dan sangat, sangat sulit untuk memberikan jawaban yang masuk akal dan berguna.
Satu tampilan adalah struktur statis data. Setidaknya ada tiga dimensi pada pandangan ini: lapisan arsitektur ("depan-ke-belakang"), kasus penggunaan dan aktor, serta biaya atau risiko implementasi.
Satu tampilan adalah struktur dinamis dari pemrosesan. Setidaknya ada tiga dimensi untuk pandangan ini.
Pandangan ketiga adalah komponen arsitektur, yang secara alami jatuh ke dalam lapisan, mendukung kasus penggunaan, dan memiliki biaya dan risiko.
Saya bisa melanjutkan, tetapi intinya adalah ini.
Adalah kira-kira cara paling tidak berguna untuk melihat masalah. Pengembang aktual - dan pendapat Anda tentang mereka - sangat penting di sini. Yang penting adalah
Gunakan Kasus dan Aktor
Model data logis untuk mendukung kasus penggunaan tersebut
Proses itu dilakukan sebagai bagian dari use case
Komponen yang akan Anda gunakan untuk membangun elemen logis dan pemrosesan dari use case tersebut.
Inilah sebabnya mengapa kebanyakan orang mengatakan bahwa Anda perlu menguraikan sistem Anda berdasarkan cerita pengguna atau kasus penggunaan.
Tidak melakukan generalisasi stroke luas tentang orang-orang yang akan melakukan pengembangan.
sumber
Tidak juga. Apa yang perlu dilakukan aplikasi Anda? Pastikan katup panas memberikan air panas, katup dingin memberikan air dingin, bahwa air mengalir di tempat pertama, bahwa Anda dapat memperpanjang pipa di mana pun dibutuhkan dan kemudian khawatir tentang menerapkan pipa yang sebenarnya ke semua kamar rumah atau apa yang akan dilakukan rumah sebenarnya terlihat persis.
Ujung depan hanyalah topeng dengan beberapa sakelar dan tuas di atasnya. Bagian belakang hanyalah hal yang menerima permintaan untuk mengambil dan memproses data. Dapatkan titik di mana Anda dapat mengimplementasikan keduanya dengan cepat dalam kombinasi yang diinginkan terlebih dahulu.
Tapi apa pun yang Anda lakukan, jangan biarkan desain yang satu mendikte desain yang lain. Dengan begitu kegilaan terletak.
Dapatkan alat di tempat untuk membiarkan devs Anda membangun apa pun yang mereka butuhkan untuk klien Anda, terlepas dari berapa kali mereka berubah pikiran. Kemudian buat sesuai spesifikasi dan gabungkan kembali sampai sedikit cusses akhirnya bahagia.
Juga, membandingkan dev ujung depan dengan dev ujung belakang pada tahun 2008 adalah waktu yang lalu di tahun web. Demi bersenang-senang, saya ingin memperbaiki / menambahkan beberapa hal ke berangan tua itu karena kami telah menautkannya dalam pertanyaan, tetapi juga (semoga) menanamkan beberapa tips di dalam:
Pengembang ujung depan
Biasanya tidak memiliki gelar CS, atau memiliki gelar CS dari sekolah tingkat 3.
Tunjukkan tangan. Berapa banyak orang dengan gelar CS telah diajarkan praktik terbaik di ujung depan? Atau bagaimana agar tidak membuat kekacauan dengan JavaScript? Atau bagaimana menangani masalah CSS dari IE6-IE9? Industri buku teks, yang menjalankan akademisi, terlalu gemuk malas dan kembung untuk menangani teknologi yang terus berubah sehingga sangat sedikit mendapat perhatian 'serius' di perguruan tinggi. Ini sangat baik untuk orang yang terlambat berkembang seperti saya.
Bekerja dalam bahasa yang mirip dengan dasar (lihat PHP Dasar)
Karena PHP adalah teknologi sisi klien? Atau karena JavaScript, yang diilhami terutama oleh Skema memiliki lebih banyak kesamaan dengan Basic daripada Visual Basic yang sekarang tidak lagi menjadi perhatian di ujung depan dan tidak pernah benar-benar tetapi masih tersedia untuk back end. Aplikasi web NET? Blog ini membandingkan pengembang web open source otodidak dengan pengembang web lulusan CS menggunakan teknologi populer perusahaan pada titik ini saya pikir. Saya telah bertemu dengan insufferable dan kompeten dalam bagian yang sama di kedua sisi dari pertarungan tertentu tapi dia masih cara OT di sana.
Memiliki keterampilan visual dalam mengonversi dokumen photoshop ke CSS / HTML / dll.
Lebih memperhatikan detail daripada "keterampilan visual" yang agak luas. Tidak semua dari kita memiliki keterampilan desain estetika apa pun. Tapi ya, kebanyakan dari kita harus mempelajari hal-hal ini di tingkat Jr. dan itu sebenarnya cukup kritis untuk menulis UI yang baik yang tidak menggunakan palu JS ketika pisau bedah CSS akan melakukannya.
Memiliki toleransi yang tinggi untuk pemrograman berulang, karena mengetik bahasa gratis
Inilah sebabnya mengapa Anda ingin potongan yang saya sebutkan di tempat pertama. Kami meneruskan tombol yang ditekan, Anda menghasilkan / mengambil barang. Kami mengemas dan mengirimkannya. Tidak ada alasan untuk hal-hal ini terikat erat satu sama lain. Selain itu, pengetikan yang ketat tidak boleh mengganggu proses berulang jika Anda tidak menyedot OOP yang kebanyakan orang suka membenci bahasa yang tidak memiliki kelas secara teknis, pada kenyataannya, biasanya. Tetapi bahkan jika mereka memang bau, ujung depan hanya membutuhkan titik akses yang dapat diprediksi dan Anda dapat melakukan apa pun yang Anda inginkan di ujung belakang selama Anda tidak melakukan sesuatu yang konyol seperti secara dinamis menulis JavaScript yang bukan JSON atau secara ketat mengikat perilaku back-end yang sukses ke struktur HTML menjadi "just so." * batuk * devs java * / batuk *
sumber
Tidak ada jawaban yang benar untuk ini. Baik pendekatan itu bisa baik (dan buruk) dalam situasi tertentu.
Saya sarankan Anda mempertimbangkan pendekatan TDD, di mana seseorang dipimpin oleh (penerimaan dan unit) tes.
Mulailah dengan menyusun kerangka sistem: infrastruktur dasar, dengan fungsi minimum absolut. Ini hanya untuk menunjukkan bahwa konsep Anda berfungsi dan komponen yang berbeda dapat bekerja bersama. Ini juga termasuk UI tulang kosong (jika berlaku), cukup untuk benar-benar melakukan dan / atau menunjukkan sesuatu yang minimal.
Kemudian Anda menyempurnakan detail, fitur demi fitur : tulis tes penerimaan untuk fitur / skenario tertentu, buat gagal, lalu tulis kode untuk memuaskannya. Ini membuatmu bekerja ke dalam dari luar : sistem menerima beberapa pesan input, jadi Anda perlu menangani / mengonversi pesan itu, melakukan sesuatu dengannya, lalu menyebarkan hasilnya kembali ke UI. Di jalan Anda akan menemukan konsep domain dan mewakilinya dengan kelas-kelas baru, dari UI menuju lapisan domain dan kembali.
Untuk pendekatan ini, bacaan yang disarankan adalah Growing Object-Oriented Software, Dipandu oleh Tes .
sumber
API dulu
Insinyur dari kedua tim harus bekerja bersama pada API antara front-end dan back-end. Kemudian kedua tim dapat mulai bekerja berdasarkan API yang dirancang. Ini memiliki keuntungan bahwa tim front-end lain juga dapat memulai pekerjaan (mungkin seluler, setelah klien web) selain keuntungan nyata bahwa tim dapat mulai bekerja secara paralel.
Gabungkan dengan pendekatan berulang dan akan terlihat seperti ini:
sumber
Mulai dengan frontend, tetapi pertama-tama, mengapa mereka tidak dapat menemukan aplikasi yang sudah ada? Ini akan memberi lebih banyak wawasan tentang proyek ini. Apakah mereka memiliki beberapa persyaratan unik atau mereka pikir Anda dapat membangun lebih murah?
Dapatkan pemahaman penuh tentang harapan keamanan mereka dan apa yang dituntut oleh hukum. Tidak yakin apa jenis sekolah ini, tetapi informasi siswa biasanya memerlukan kerahasiaan.
Jika siswa potensial memasukkan data di situs web, desain grafis akan lebih menjadi masalah.
Berdasarkan permintaan mereka, gambar tiruan dari ujung depan. Jika Anda berpikir gui tidak lurus ke depan, Anda mungkin harus membuat sesuatu berfungsi, sehingga mereka dapat melihatnya beraksi. Mereka mungkin melihat pendaftaran sebagai semacam 'penyihir' yang bercabang ke berbagai arah berdasarkan entri data.
Kemudian Anda dapat mulai mendapatkan informasi yang tersimpan di basis data.
sumber
Ya saya menyadari OP bertanya beberapa waktu lalu. Mulai dari belakang tetapi MOCK UP ujung depan untuk memungkinkan pengguna untuk melihat apa yang Anda bayangkan. Ujung depan, apa pun nilainya, hanyalah lonceng dan peluit. Bagian belakang adalah di mana uang itu berada, dan begitu Anda memiliki yang lurus, FE hanya saus daging.
sumber
Memperluas komentar saya:
Pertama, kumpulkan persyaratan, lalu ubah menjadi Kasus Penggunaan & desain.
Pertama datang definisi database yang terperinci. Saya tidak peduli jika klien tidak sepenuhnya mengguncangnya, saya memaksa mereka untuk duduk & melihatnya - dan menandatanganinya (mungkin kemudian memaksa kemudian menyadari bahwa sekali dari orang yang lebih mengerti teknologi mereka harus melakukannya ), sebelum melanjutkan.
Bagaimana Anda bisa mulai dengan FE, tanpa BE? FE untuk apa ??? Tentukan basis data Anda !! Itulah yang dimanipulasi FE.
Ok, akan ada masalah & kemudian tweak, dan saya lakukan setuju bahwa itu baik untuk mendapatkan sederhana, sampel, GUI di depan klien secepat mungkin, karena itu ujung tertentu gunung es yang paling paling mengerti.
Namun, saya 1) menekankan bahwa ini hanya mock-up yang kasar, untuk porpoise diskusi, dan 2) sengaja membuatnya jelek, tetapi fungsional , sehingga mereka yang tidak mengerti dapat mengacaukan & menyuruh saya untuk membuat kotak input itu dengan tepat 400px lebar & latar belakang biru terang.
Saya merasa bahwa sebagian besar jawaban di sini (dan saya telah mengikuti mereka) cenderung terlalu fokus pada pelanggan, tetapi, dari sudut pandang murni, saya berpendapat bahwa Anda tidak dapat merancang FE untuk memanipulasi BE tanpa terlebih dahulu merancang BE itu.
sumber