Saya telah memutuskan untuk sepenuhnya menulis ulang kerangka kerja PHP (Menggunakan MVC) yang telah saya kerjakan, hidup dan mati, selama bertahun-tahun. Masalah saya sampai sekarang adalah bahwa saya hanya akan datang dengan ide-ide, melemparkannya ke dalam Trac sebagai tiket, dan menambahkannya nanti - tanpa khawatir tentang desain kerangka itu sendiri. Seiring waktu ini telah menyebabkan beberapa masalah dan saya pikir penulisan ulang akan membantu, namun saya tidak yakin harus mulai dari mana dengan perencanaan itu - saya tahu saya tidak ingin menggunakan Trac, dan saya tahu saya membutuhkan lebih dari sekadar tiket dan tonggak - tapi apa lagi yang saya butuhkan?
Saya benar-benar ingin merencanakan penulisan ulang ini secara menyeluruh, saya ingin merinci setiap fitur yang saya inginkan, ke mana akan pergi, dan bagaimana ia akan terhubung ke setiap bagian lainnya - tetapi saya tidak memiliki pengalaman dengan tingkat perencanaan ini. Ada saran? Adakah program yang akan membantu? Saya mulai bosan dengan Trac, saya tidak pernah benar-benar menyukainya.
Saya tahu saya akan membutuhkan dokumen desain, tetapi apakah ada tata letak tertentu yang harus saya ikuti? Saya juga membutuhkan pelacakan bug, tiket, tonggak, dll., Tetapi di luar Trac saya juga tidak tahu apa yang baik untuk itu. Saya yakin masih ada lagi yang saya butuhkan tetapi saya tidak tahu apa, jadi bantuan apa pun akan dihargai.
Jawaban:
Lihat di bawah ini beberapa hal yang saya lakukan ketika mengembangkan proyek besar:
1 - Saya menggunakan alat perencanaan seperti OpenProj dan menambahkan semua fitur yang ingin saya sertakan sebagai tugas. Misalnya, saat ini saya sedang mengerjakan fitur untuk memungkinkan pengguna saya secara otomatis masuk setelah mereka mendaftar di situs saya. Saya punya tugas dalam rencana saya seperti "fitur-autologin".
2 - Saya adalah toko pengembang satu orang, jadi saya biasanya berpindah dari satu fitur ke fitur lainnya. Paket saya dibuat sedemikian rupa sehingga semua fitur berurutan. Saya tidak menginvestasikan terlalu banyak waktu untuk memperkirakan berapa banyak waktu yang saya perlukan untuk setiap fitur. Saya biasanya menganggap bahwa masing-masing akan membawa saya sehari untuk berkembang. Jika orang mengambil lebih, saya cukup memperbarui rencana dan semua tugas di masa depan bergerak sesuai.
3 - Saya menggunakan git secara ekstensif. Setiap fitur adalah cabang. Setelah saya menyelesaikan setiap fitur, saya menggabungkannya kembali ke cabang pengembangan dan membuat cabang baru untuk fitur berikutnya.
4 - Jika saya menemukan bug dalam perangkat lunak saya membuat cabang git kecil untuk memperbaikinya dan menggabungkannya kembali setelah teratasi. Saya memastikan saya memperbarui cabang pengembangan dan cabang fitur saya saat ini yang sedang saya kerjakan. Ngomong-ngomong bug menjadi tugas lain dalam rencana OpenProj saya. Sesuatu seperti "bug-salah-alamat". Dan ketika saya memasukkannya, semua fitur lainnya dipindahkan kembali di timeline.
5 - Ketika saya sedang mengembangkan, jika saya memikirkan fitur baru, saya cukup memasukkannya ke dalam paket yang menurut saya paling cocok dan menyesuaikan timeline lagi.
Saya harap ini membantu. Sepertinya Anda memiliki proyek menarik di depan Anda. Semoga berhasil!
sumber
Jika Anda akan menulis ulang lengkap, mengapa tidak mempertimbangkan juga jika Anda harus menggunakan php? Perubahan / peningkatan teknologi mungkin menjadi katalis yang Anda inginkan untuk meningkatkan desain / skalabilitas / pemeliharaan, dll ...
sumber
Saya akan menyarankan untuk refactor berat sebagai gantinya
Masalah yang Anda antisipasi di sini:
adalah hal yang sangat sulit. Ini pada dasarnya adalah model Air Terjun dengan segala keburukannya. Berikut adalah beberapa bukti anekdot untuk masalah dengan pendekatan 'penulisan ulang hebat', yang sampai pada kesimpulan: Anda mungkin tidak akan mengantisipasi masalah dengan benar, dan berakhir dengan kekacauan lain yang ingin Anda tulis ulang dari awal. Bukan karena Anda jahat, tetapi karena tidak mungkin mendapatkan sesuatu yang besar dalam satu kesempatan.
Ketika Anda mulai refactor, Anda dapat menulis tiket individual dan Anda dapat terus menggunakan proyek ini. Kuncinya di sini adalah untuk mengidentifikasi perubahan kecil yang mengarah pada desain yang lebih baik secara keseluruhan.
Sebagai contoh: Anda menyebutkan, Anda tidak memiliki MVC, tetapi Anda mau. Sebagai langkah pertama, Anda bisa mengambil satu file PHP, dan, dengan asumsi mixup biasa, sortir, sehingga di atas Anda memiliki semua akses-db, perhitungan, dll, di bagian bawah Anda memiliki "templating" ( tiket pertama, untuk setiap file). Sebagai langkah kedua, Anda bisa merangkum semua komponen templating ini ke dalam fungsi, yang dapat melewati parameternya. (lebih banyak tiket). Selesai? Selamat, Anda menyelesaikan V di MVC.
sumber
Pertimbangkan untuk menggunakan kerangka kerja yang ada. CakePHP, Zend Framework, CodeIgniter dan Symfony adalah yang dikenal untuk PHP. Jika mereka memenuhi kebutuhan ratusan atau ribuan pengguna, saya yakin mereka dapat memenuhi kebutuhan Anda.
Jika Anda mau belajar / menggunakan sesuatu selain PHP - Django (Python) dan Rails (Ruby) cukup banyak kerangka kerja terkemuka untuk aplikasi web konvensional.
Itu, tentu saja, kecuali jika Anda ingin pengalaman membuat kerangka kerja - yang, saya dapat tambahkan, memiliki nilai yang jauh lebih rendah di pasar (daripada mengetahui cara menggunakan kerangka kerja yang ada dan didukung dengan baik).
sumber
Yang saya nikmati menggunakan Redmine sebagai pelacak jadwal. ITU menangani masing-masing item dengan sangat baik, bersama dengan menjadi jauh lebih ramah pengguna (menurut saya) daripada trac.
Mengenai penulisan ulang Anda, penting untuk terlebih dahulu memahami Anda tidak akan pernah mengantisipasi setiap fitur / ekstensi baru yang dapat muncul, jadi untuk mencoba dan menulis aplikasi Anda sefleksibel mungkin. Menggunakan banyak kerangka kerja MVC yang dimiliki PHP dapat membantu meningkatkan ini; Namun beberapa kerangka kerja ini juga memberi Anda lubang jika arsitektur DB Anda tidak fleksibel sejak awal (Cake). Saya benar-benar akan fokus untuk membuat hal-hal seabstrak yang Anda bisa, dan setiap kali Anda melihat sesuatu yang sulit dikodekan tanyakan pada diri sendiri untuk apa dan mengapa tidak bisa disimpan dalam DB.
Sungguh desain DB membantu menjawab begitu banyak pertanyaan dan masalah, dan di sinilah saya melihat pentingnya utama bagaimana aplikasi Anda berinteraksi; jadi saya akan merekomendasikan menghabiskan sebagian besar waktu menganalisis bagaimana data disimpan, dan bagaimana DB Anda terstruktur.
sumber
Sebagai perangkat lunak pelacakan masalah, JIRA memang hebat, tetapi sangat mahal. Alat bagus lain yang saya gunakan adalah Eventum. Gratis.
Tetapi bagian yang paling penting adalah memiliki ide bagus tentang apa yang Anda butuhkan. Pertama, Anda harus mengumpulkan persyaratan untuk aplikasi Anda, untuk memiliki perasaan keseluruhan tentang apa yang Anda inginkan dan selengkap mungkin.
Berdasarkan hal itu Anda akan membuat persyaratan perangkat lunak, itu adalah pendekatan yang lebih teknis di mana Anda akan menjelaskan modul-modul yang akan menjadi bagian dari aplikasi Anda, fungsi dan sub-fungsi, objek, kelas, antarmuka mereka, hampir semuanya.
Dengan mengetahui Anda akan memiliki pemahaman yang baik tentang kompleksitas aplikasi dan garis-garis kode yang dibutuhkan, sehingga Anda dapat membuat perkiraan dan membuat jadwal. Sangat penting untuk memiliki jadwal dan tenggat waktu, atau Anda mungkin berakhir tidak pernah menyelesaikannya.
Semoga ini bisa membantu
sumber