JavaRush /Java Blog /Random-ID /Perencanaan proyek: ukur dua kali - potong sekali - "Proy...

Perencanaan proyek: ukur dua kali - potong sekali - "Proyek Java dari A sampai Z"

Dipublikasikan di grup Random-ID
Salam, rekan-rekan. Hari ini kita akan membahas tentang jenis pekerjaan persiapan yang perlu Anda lakukan sebelum memulai coding secara liar. Lebih khusus lagi tentang perencanaan dan pembuatan arsitektur aplikasi. Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 1Tapi harus mulai dari mana? Bagaimana cara membangun arsitektur ini? Seperti semua hal lainnya, Anda harus memulai dari awal. Yaitu - dengan IDEA. Ide proyek kami adalah membuat bot telegram yang berguna dengan fungsionalitas dasar. Mari kita ulangi apa yang sebenarnya: “Saya, sebagai pengguna, ingin dapat menerima pemberitahuan ketika artikel baru dipublikasikan di grup di JavaRush yang saya minati.” Mengikuti prinsip YAGNI, kami akan membangun aplikasi kami. Artinya, kami hanya akan mengambil apa yang kami perlukan. Kami tidak akan membuat fungsionalitas terlebih dahulu dan sebagai cadangan hanya karena kami menginginkannya dan suatu hari nanti mungkin akan berguna. Ya, kami akan membuat aplikasi yang dapat dibaca dan diperluas, tetapi ini tidak berarti kami akan membuat skema database “untuk pertumbuhan”. Agar tidak mendukung “pertumbuhan” ini, saya memutuskan bahwa lebih baik mengabaikannya sama sekali. Ini akan membantu kami menghindari dukungan yang tidak perlu selama pengembangan dan pengujian yang tidak perlu. Nanti, ketika proyek kami mulai berproduksi (sekali lagi Anglicisme, dari singkatan prod - produksi), kami akan dapat melakukan sesuatu yang lebih. Setelah Anda memutuskan sebuah ide, Anda perlu sedikit nakal dan menggambar. Apa yang harus digambar? Kita memerlukan kemampuan untuk menyimpan data langganan ke grup pengguna yang berbeda. Saya tahu Anda bisa menggunakan user ID berupa ID chat di Telegram. Dan ada gambaran bagaimana sebenarnya pencarian artikel baru akan dilanjutkan: kami akan mencari di semua grup yang berlangganan artikel baru dan mengirimkannya ke obrolan. Berdasarkan hal ini, sebagai perkiraan pertama, kami mendapatkan yang berikut ini (inilah perkembangannya tanpa hiasan): Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 2Saya tidak berharap Anda memahami tulisan tangan saya: Saya ingin menunjukkan dengan tepat bagaimana dan di mana pembangunan dimulai. Tahap pertama telah selesai: kami telah memutuskan apa yang akan terjadi. Model/tabel dalam database dijelaskan di atas. Namun ini hanyalah sebuah draf: dapat dan harus dipoles dan dibuat menjadi bentuk yang lebih mudah dibaca. Saat saya memoles, saya ingat bahwa saya juga ingin mendapatkan statistik tentang kerja bot. Menambahkan ini. Dalam gambar ini lebih dari jelas apa dan bagaimana susunannya. Artinya, tabel dan bidang apa yang akan ada di dalamnya, nama entitas apa untuk tabel tersebut. Diputuskan bahwa akan ada beberapa di antaranya:
  • Pengguna - informasi tentang pengguna telegram yang akan menggunakan bot kami. Seperti yang Anda lihat, kami hanya menyimpan ID chat dan flag apakah pengguna aktif atau tidak. Mengapa? Karena tujuan kami bukan mengumpulkan informasi tentang pengguna, namun memberi manfaat bagi mereka;
  • GroupSub - di sini akan ada informasi tentang grup tempat Anda berlangganan dan artikel terbaru yang dikirimkan ke pelanggan;
  • Statistik - Saya belum membuat skema untuk itu - kami akan melakukannya nanti. Ini bukanlah tujuan utama dalam MVP proyek tersebut.
Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 3Setelah itu saya ingin menunjukkan lebih detail cara mencari artikel baru. Untuk melakukan ini, saya menggunakan diagram BPMN, yang saya ubah menjadi gambar dan mendapatkan ini: Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 4Segala sesuatu di sini lebih mudah dibaca dan dimengerti. Kami akan bekerja sesuai skema ini dalam pencarian. Manajer sangat menyukai skema ini, karena tidak hanya dapat dimengerti oleh programmer :D Secara umum, permulaan telah dibuat.

Buat repositori untuk bekerja

Terakhir, Anda dapat membuat repositori untuk bekerja dengan bot telegram.Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 5
  1. Kami mengisi item yang sudah kami kenal - nama repositori, deskripsi singkatnya.
  2. Tambahkan lisensi - Apache 2.0 (Anda dapat memilih lisensi sesuai kebijaksanaan Anda).
  3. Proyek kami sekarang tersedia - berikut tautannya: JavaRush Telegrambot .

Buat proyek di repositori

Untuk bekerja dengan proyek, sebaiknya gunakan alat GitHub, seperti project. Apa itu? Ini adalah tempat di mana Anda dapat membuat tugas, melacak penyelesaiannya, dan menyimpan status tugas. Tentukan siapa yang akan melaksanakannya dan banyak lagi. Untuk melakukan ini, dalam proyek yang dibuat kita akan menemukan tombol Proyek , dan di sana kita akan membuat yang baru: Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 6Seperti yang Anda lihat, di sini saya menunjukkan nama proyek, menjelaskannya dan memilih templat yang akan kita gunakan - Kanban Otomatis. Bagi kami sekarang tidak begitu penting apa artinya ini. Hal utama adalah kita akan memiliki papan dengan tugas, dibagi menjadi beberapa kolom, di mana setiap kolom akan menjadi status tugas:
  1. Untuk melakukan - semua tugas yang direncanakan untuk dilakukan;
  2. Sedang berlangsung - tugas yang sedang dikerjakan;
  3. Selesai - tugas yang telah diselesaikan dalam proyek ini.
Dengan cara ini kita akan mengetahui status tugas kita. Mana yang sedang berjalan, mana yang sudah selesai. Selain itu, ini penting dan nyaman tidak hanya jika ada tim, tetapi juga saat Anda bekerja sendiri. Agar sesuatu muncul di papan, Anda perlu membuat Issues.

Kami menulis masalah (issues) untuk proyek tersebut

Untuk memahami tugas apa yang harus ditulis, mari putuskan apa yang akan kita miliki dalam proyek tersebut. Kita memerlukan suatu aplikasi yang dapat diluncurkan dengan mudah dan cepat, agar kita dapat mengakses database, agar kita dapat mengelola dan mengubah skema database, sehingga kita dapat melakukan permintaan REST di JavaRush untuk memperoleh data artikel. Berdasarkan hal ini, Anda dapat memilih teknologi berikut:
  • SpringBoot - sebagai kerangka untuk aplikasi kita,
  • Spring Data - untuk bekerja dengan database,
  • Jalur Terbang - untuk bekerja dengan migrasi basis data,
  • MySQL - sebagai database untuk proyek,
  • Telegrambot StringBoot starter - perpustakaan untuk bekerja dengan bot telegram,
  • Unirest adalah perpustakaan untuk bekerja dengan permintaan REST.
Dari semua hal di atas, mari mulai membuat tugas.

Templat pembuatan tugas

Kami akan membuat tugas menggunakan templat berikut:
  1. Nama tugas akan terlihat seperti ini: JRTB-{IssueNumber}:{IssueDescription} , di mana:
    • {IssueNumber} adalah nomor seri masalah tersebut. Mari kita ambil satu lagi dari soal terakhir;
    • {IssueDescription} - penjelasan singkat tentang masalah ini.
  2. Di badan tugas kami akan membuat deskripsi yang lebih detail (terkadang mungkin bertepatan dengan deskripsi di nama tugas).
  3. Kriteria Penerimaan adalah daftar persyaratan, setelah itu tugas dapat dianggap selesai. Jadi bisa dikatakan, kriteria untuk menerima tugas. Dengan menggunakannya, seorang reviewer (dari bahasa Inggris reviewer - reviewer - orang yang melihat bagaimana suatu tugas diselesaikan) dapat memahami apakah tugas tersebut telah selesai sepenuhnya atau belum.
Dengan menggunakan templat ini, kita akan membuat tugas pertama kita: Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 7Perlu juga dicatat bahwa saat membuatnya, saya segera menentukan proyek mana yang cocok untuk tugas ini, siapa yang akan melaksanakannya (penerima tugas) dan label (label) mana yang memiliki tugas ini. Selanjutnya, saya hanya akan menunjukkan nama tugas dengan deskripsi kecil dan tautan ke tugas tersebut. Mereka semua ada di sini . Kami akan melakukan tugas dengan urutan yang kira-kira sama seperti yang ditunjukkan di sini:
  1. [FITUR] JRTB-0: buat proyek boot Skeleton Spring - semuanya jelas di sini: Anda perlu melakukan bagian pertama dari apa yang kami lakukan di artikel sebelumnya.
  2. [FITUR] JRTB-2: tambahkan bot telegram ke proyek - tambahkan bot kosong yang hanya akan merespons dan mengatakan bahwa bot itu hidup dan sehat.
  3. [FITUR] JRTB-3: Menerapkan pola Perintah untuk telegrambot - mari siapkan pendekatan yang benar untuk bekerja dengan perintah di bot telegram. Sejauh ini untuk beberapa tim.
  4. [FITUR] JRTB-1: Tambahkan lapisan repositori - ini adalah salah satu tugas terbesar - menggabungkan semua yang perlu dilakukan untuk bekerja dengan database.
  5. [FITUR] JRTB-5: Sebagai pengguna, saya ingin menambahkan grup ke langganan - ini sudah menjadi Kisah Pengguna pertama dalam pemahaman Agile. Ini akan menjadi keuntungan nyata bagi pengguna kami: dimungkinkan untuk menambahkan langganan grup ke bot.
  6. [FITUR] JRTB-12: Menerapkan penjadwalan pengiriman notifikasi artikel baru - berikut implementasi pencarian artikel baru jika dipublikasikan untuk masing-masing grup dan dikirim ke semua pengguna yang berlangganan grup.
  7. [FITUR] JRTB-6: Sebagai pengguna, saya ingin melihat daftar langganan grup saya - semuanya sederhana di sini: kami menambahkan perintah yang menampilkan daftar semua grup tempat pengguna berlangganan.
  8. [FITUR] JRTB-7: Sebagai Pengguna, saya ingin menghapus langganan grup dari langganan saya - di sini Anda perlu menerapkan penghapusan langganan pengguna untuk pembaruan di grup.
  9. [FITUR] JRTB-8: Sebagai Pengguna, saya ingin menonaktifkan penggunaan bot - menerapkan penghentian bot. Artinya, segala sesuatu yang perlu dilakukan dalam sistem kami agar pekerjaan dapat dihentikan. Tambahkan perintah /stop ke pemrosesan.
  10. [FITUR] JRTB-9: Sebagai Pengguna, saya ingin mulai bekerja dengan bot ATAU mengaktifkannya jika saya menggunakannya sebelumnya - tambahkan pemrosesan perintah /start. Persis seperti yang kita inginkan.
  11. [FITUR] JRTB-10: Sebagai administrator, saya ingin melihat statistik bot - membuat kumpulan statistik bot. Menambahkan kemampuan administrator.
  12. [FITUR] JRTB-11: Sebagai pengguna, saya ingin melihat dokumentasi bot telegram ini - dokumentasi penulisan. Ya, ya, teman-teman, Anda tidak bisa hidup tanpanya, dan semakin cepat Anda belajar melakukan ini, semakin baik bagi Anda))
Ini sudah terlihat seperti awal proyek. Bisa dikatakan, kami bekerja sebagai arsitek proyek dan analis bisnis.

Mengisi repositori

Apa lagi yang perlu dilakukan SEBELUM kita mulai coding? – Penulis, berapa banyak paragraf yang dapat Anda tambahkan, apakah Anda menariknya keluar dari jurang?? — Tidak, kualitas pekerjaan ditunjukkan secara detail. Dan merekalah yang masuk akal. Jadi mari tambahkan satu detail lagi. Agar proyek menjadi populer dan dapat dimengerti oleh pengembang lain, proyek tersebut perlu diisi. Apa yang harus saya tambahkan? Saya menjelaskan daftar lengkap tentang apa yang dapat dilakukan di artikel Mengoptimalkan pekerjaan dengan proyek Anda di GitHub: mengenal Repositori Templat Github . Saya sangat merekomendasikan membacanya. Penting bagi kami untuk memiliki versi yang jelas, pemahaman yang jelas tentang apa yang kami lakukan. Oleh karena itu, saya menambahkan file RELEASE_NOTES yang akan mencatat perubahan pada proyek kita. Sebagai contoh, Anda dapat melihat RELEASE_NOTES dari proyek saya (ya, mengapa tidak menunjukkan apa yang saya curahkan energi dan kreativitas saya). Perubahan untuk setiap versi baru dijelaskan di sana. Saya juga menambahkan templat untuk membuat tugas baru, yang memiliki 4 opsi:
  • Bug Report adalah tugas yang dibuat oleh pengguna/penguji yang menemukan bug dalam pekerjaannya. Ini adalah hal yang sangat penting: membantu mengelola perbaikan bug;
  • Permintaan fitur adalah tugas untuk menambahkan fungsionalitas baru. Semua tugas pertama pada proyek ini adalah tugas permintaan fitur;
  • Permintaan perbaikan - tugas untuk meningkatkan pengoperasian aplikasi. Misalnya, untuk mengubah jawaban tes saat bekerja dengan bot. Saya bukan penulis teknis dan saya tidak bisa memberikan jawaban yang sepenuhnya benar. Jadi jika Anda punya keinginan dan kemampuan, tawarkanlah :)
  • Pertanyaan adalah pertanyaan bagi pengembang tentang pengoperasian aplikasi. Suatu hal yang sangat berguna. Katakanlah tidak ada pemahaman tentang pekerjaan atau ada keraguan tentang suatu pertanyaan - Anda dapat mengajukan pertanyaan dengan cara ini dan mendapatkan jawaban langsung.
Jika Anda melihat GitHub, akan terlihat persis seperti ini: Proyek Java dari A sampai Z. Perencanaan proyek: ukur tujuh kali - potong sekali - 8Saat ini kami juga memiliki dokumen tentang bekerja dengan JavaRush API untuk bekerja dengan grup.

Apa berikutnya?

Baiklah, kita selesaikan semua langkah ini dan apa, proyeknya akan ditutup? Tidak, tidak sama sekali. Proyek ini akan terus berjalan. Ini akan dikembangkan oleh saya dan semua siswa/lulusan JavaRush yang ingin ambil bagian. Apa rencanamu untuk masa depan? Banyak dari mereka. Rencana pertama adalah membuat klien Java untuk JavaRush API. Pengembang berjanji untuk menjadikan Swagger mereka akses terbuka. Kita juga akan melihat apa itu kesombongan. Hal yang keren dan sangat berguna. Selanjutnya kita akan mengintegrasikan situs JavaRush dengan bot telegram. Mari sambungkan pengguna ke bot untuk menyinkronkan langganan. Mari buat statistik penyelesaian kursus. Dan semua yang Anda inginkan sebagai Komunitas JavaRush.

kesimpulan

Hari ini kita berbicara tentang pekerjaan di balik layar sebelum pembuatan proyek. Lebih tepatnya tentang bagaimana membuat rencana kerja, yang tanpanya Anda bisa membuang banyak tenaga. Saya ulangi, awal proyek telah dipublikasikan di sini . Seperti biasa, saya sarankan Anda berlangganan akun saya di Github. Dengan cara ini Anda dapat menerima perubahan pada proyek SEBELUM artikel dipublikasikan. Saya berasumsi semua pihak yang berkepentingan telah mendaftar di Github. Ya, proyek ini tidak berjalan secepat yang kita inginkan. Namun, sama seperti proyek nyata di tempat kerja. Pada artikel selanjutnya saya akan menjelaskan penambahan tugas pertama. Terima kasih semuanya telah membaca dan sampai jumpa lagi!

Daftar semua materi dalam seri ini ada di awal artikel ini.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION