JavaRush /Blog Java /Random-MS /Perancangan projek: ukur dua kali - potong sekali - "Proj...

Perancangan projek: ukur dua kali - potong sekali - "Projek Java dari A hingga Z"

Diterbitkan dalam kumpulan
Salam, rakan sekerja. Hari ini kita akan bercakap tentang jenis kerja persediaan yang perlu anda lakukan sebelum anda memulakan pengekodan secara liar. Lebih khusus lagi, tentang merancang dan mencipta seni bina aplikasi. Projek Java dari A hingga Z. Perancangan projek: ukur tujuh kali - potong sekali - 1Tetapi di mana untuk bermula? Bagaimana untuk membina seni bina ini? Seperti segala-galanya, anda perlu bermula dari awal. Iaitu - dengan IDEA. Idea projek kami adalah untuk mencipta bot telegram yang berguna dengan fungsi asas. Mari kita ulangi dengan tepat: "Saya, sebagai pengguna, ingin menerima pemberitahuan apabila artikel baharu diterbitkan dalam kumpulan tersebut di JavaRush yang menarik minat saya." Mengikut prinsip YAGNI, kami akan membina aplikasi kami. Ini bermakna kita hanya akan mengambil apa yang kita perlukan. Kami tidak akan mencipta fungsi terlebih dahulu dan dalam simpanan hanya kerana kami mahu dan suatu hari nanti ia mungkin berguna. Ya, kami akan mencipta aplikasi yang boleh dibaca dan boleh dikembangkan, tetapi ini tidak bermakna kami akan mencipta skema pangkalan data "untuk pertumbuhan". Untuk tidak menyokong "pertumbuhan" ini, saya memutuskan bahawa adalah lebih baik untuk meninggalkannya sama sekali. Ini akan membantu kami mengelakkan sokongan yang tidak perlu semasa pembangunan dan ujian yang tidak perlu. Kemudian, apabila projek kami masuk ke dalam pengeluaran (sekali lagi Anglicism, daripada singkatan prod - production), kami akan dapat melakukan sesuatu yang lebih. Sebaik sahaja anda telah memutuskan idea, anda perlu menjadi sedikit nakal dan melukis. Apa yang hendak dilukis? Kami memerlukan keupayaan untuk menyimpan data pada langganan kepada kumpulan pengguna yang berbeza. Saya tahu bahawa anda boleh menggunakan ID pengguna dalam bentuk ID sembang dalam Telegram. Dan terdapat idea tentang bagaimana pencarian untuk artikel baharu sebenarnya akan diteruskan: kami akan mencari dalam semua kumpulan yang mempunyai langganan untuk artikel baharu dan menghantarnya ke sembang. Berdasarkan ini, kami mendapat yang berikut sebagai anggaran pertama (ini adalah perkembangan tanpa hiasan): Projek Java dari A hingga Z. Perancangan projek: ukur tujuh kali - potong sekali - 2Saya tidak berharap anda akan memahami tulisan tangan saya: Saya ingin menunjukkan dengan tepat bagaimana dan di mana pembangunan bermula. Peringkat pertama telah selesai: kami entah bagaimana telah memutuskan apa yang akan berlaku. Model/jadual dalam pangkalan data diterangkan di atas. Tetapi ini adalah draf: ia boleh dan harus digilap dan dibawa ke dalam bentuk yang lebih mudah dibaca. Semasa saya menggilap, saya teringat bahawa saya juga ingin mendapatkan statistik tentang kerja bot. Menambah ini. Dalam lukisan ini lebih daripada jelas apa dan bagaimana ia akan disusun. Iaitu, jadual dan medan apa yang akan ada di dalamnya, apakah nama entiti untuk jadual tersebut. Diputuskan bahawa terdapat beberapa daripada mereka:
  • Pengguna - maklumat tentang pengguna telegram yang akan menggunakan bot kami. Seperti yang anda lihat, kami hanya menyimpan ID sembang dan bendera sama ada pengguna aktif atau tidak. kenapa? Kerana matlamat kami bukan untuk mengumpul maklumat tentang pengguna, tetapi untuk memberi manfaat kepada mereka;
  • GroupSub - di sini akan terdapat maklumat tentang kumpulan yang anda miliki langganan dan artikel terkini yang dihantar kepada pelanggan;
  • Statistik - Saya belum mencipta skema untuknya - kami akan melakukannya kemudian. Ini bukan matlamat utama dalam MVP projek.
Projek Java dari A hingga Z. Perancangan projek: ukur tujuh kali - potong sekali - 3Selepas itu, saya ingin menunjukkan dengan lebih terperinci cara mencari artikel baharu. Untuk melakukan ini, saya menggunakan gambar rajah BPMN, yang saya tukar menjadi gambar dan mendapat ini: Projek Java dari A hingga Z. Perancangan projek: ukur tujuh kali - potong sekali - 4Semuanya di sini lebih mudah dibaca dan difahami. Kami akan bekerja mengikut skema ini dalam carian. Pengurus sangat menyukai skim ini, kerana ia boleh difahami bukan sahaja kepada pengaturcara: D Secara umum, permulaan telah dibuat.

Buat repositori untuk kerja

Akhir sekali, anda boleh membuat repositori untuk bekerja dengan bot telegram.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Kami mengisi item yang sudah biasa kepada kami - nama repositori, penerangan ringkasnya.
  2. Tambah lesen - Apache 2.0 (anda boleh memilih lesen mengikut budi bicara anda).
  3. Projek kami kini tersedia - berikut adalah pautan kepadanya: JavaRush Telegrambot .

Buat projek dalam repositori

Untuk bekerja dengan projek, adalah baik untuk menggunakan alat GitHub, seperti projek. Apa ini? Ini ialah tempat di mana anda boleh membuat tugasan, menjejaki penyelesaiannya dan menyimpan status tugasan. Tentukan siapa yang akan melaksanakannya dan banyak lagi. Untuk melakukan ini, dalam projek yang dibuat kami akan menemui butang Projek , dan di sana kami akan membuat yang baru: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Seperti yang anda lihat, di sini saya menunjukkan nama projek itu, menerangkannya dan memilih templat yang akan kami kerjakan - Kanban automatik. Bagi kami sekarang ini tidak begitu penting maksudnya. Perkara utama ialah kami akan mempunyai papan dengan tugas, dibahagikan kepada lajur, di mana setiap lajur akan menjadi status tugas:
  1. Untuk melakukan - semua tugas yang dirancang untuk dilakukan;
  2. Sedang dijalankan - tugasan yang sedang diusahakan;
  3. Selesai - tugasan yang telah disiapkan dalam projek ini.
Dengan cara ini kita akan tahu tentang status tugas kita. Mana yang sedang berjalan, mana yang sudah selesai. Selain itu, ini penting dan mudah bukan sahaja dalam kes di mana terdapat pasukan, tetapi juga apabila anda bekerja sendiri. Untuk sesuatu muncul di papan, anda perlu membuat Isu.

Menulis isu (isu) untuk projek

Untuk memahami tugasan yang hendak ditulis, mari tentukan perkara yang akan kami ada dalam projek itu. Kami memerlukan aplikasi yang boleh dilancarkan dengan mudah dan cepat, supaya kami boleh mengakses pangkalan data, supaya kami boleh mengurus dan menukar skema pangkalan data, supaya kami boleh membuat permintaan REST dalam JavaRush untuk mendapatkan data pada artikel. Berdasarkan ini, anda boleh memilih teknologi berikut:
  • SpringBoot - sebagai rangka kerja untuk aplikasi kami,
  • Spring Data - untuk bekerja dengan pangkalan data,
  • Flyway - untuk bekerja dengan migrasi pangkalan data,
  • MySQL - sebagai pangkalan data untuk projek,
  • Telegrambot StringBoot starter - perpustakaan untuk bekerja dengan bot telegram,
  • Unirest ialah perpustakaan untuk bekerja dengan permintaan REST.
Daripada semua perkara di atas, mari mula membuat tugasan.

Templat penciptaan tugas

Kami akan membuat tugasan menggunakan templat berikut:
  1. Nama tugas akan kelihatan seperti ini: JRTB-{IssueNumber}:{IssueDescription} , di mana:
    • {IssueNumber} ialah nombor siri isu. Mari kita ambil satu lagi dari masalah terakhir;
    • {IssueDescription} - penerangan ringkas tentang isu tersebut.
  2. Dalam badan tugasan kami akan membuat penerangan yang lebih terperinci mengenainya (kadangkala ia mungkin bertepatan dengan penerangan dalam nama tugas).
  3. Kriteria Penerimaan ialah senarai keperluan, selepas itu tugas boleh dianggap selesai. Jadi untuk bercakap, kriteria untuk menerima tugas. Menggunakannya, penyemak (dari pengulas bahasa Inggeris - penyemak - orang yang melihat cara tugasan diselesaikan) boleh memahami sama ada tugasan itu selesai sepenuhnya atau tidak.
Dengan menggunakan templat ini, kami akan mencipta tugasan pertama kami: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Perlu diingat juga bahawa semasa menciptanya, saya segera menentukan projek mana yang sesuai untuk tugasan ini, siapa yang akan melaksanakannya (penerima tugas) dan label (label) tugasan ini milik. Seterusnya, saya hanya akan menunjukkan nama tugasan dengan penerangan kecil dan pautan kepada mereka. Mereka semua ada di sini . Kami akan melaksanakan tugas dalam susunan yang sama seperti yang ditunjukkan di sini:
  1. [CIRI] JRTB-0: cipta projek but Skeleton Spring - semuanya jelas di sini: anda perlu melakukan bahagian pertama daripada apa yang kami lakukan dalam artikel sebelumnya.
  2. [CIRI] JRTB-2: tambah bot telegram pada projek - tambah bot kosong yang hanya akan bertindak balas dan mengatakan bahawa ia masih hidup dan sihat.
  3. [CIRI] JRTB-3: Laksanakan corak Perintah untuk telegrambot - mari kita sediakan pendekatan yang betul untuk bekerja dengan arahan dalam bot telegram. Setakat ini untuk beberapa pasukan.
  4. [CIRI] JRTB-1: Tambah lapisan repositori - ini adalah salah satu tugas terbesar - ia menggabungkan semua yang perlu dilakukan untuk berfungsi dengan pangkalan data.
  5. [CIRI] JRTB-5: Sebagai pengguna, saya ingin menambahkan kumpulan pada langganan - ini sudah pun menjadi Kisah Pengguna pertama dalam pemahaman Agile. Ini akan menjadi manfaat sebenar untuk pengguna kami: anda boleh menambah langganan kumpulan pada bot.
  6. [CIRI] JRTB-12: Laksanakan penjadualan untuk menghantar pemberitahuan tentang artikel baharu - di sini akan menjadi pelaksanaan mencari artikel baharu jika ia diterbitkan untuk setiap kumpulan dan dihantar kepada semua pengguna yang melanggan kumpulan tersebut.
  7. [CIRI] JRTB-6: Sebagai pengguna, saya ingin melihat senarai langganan kumpulan saya - semuanya mudah di sini: kami menambah arahan yang memaparkan senarai semua kumpulan yang dilanggan oleh pengguna.
  8. [CIRI] JRTB-7: Sebagai Pengguna, saya ingin mengalih keluar langganan kumpulan daripada langganan saya - di sini anda perlu mengalih keluar langganan pengguna untuk kemas kini dalam kumpulan.
  9. [CIRI] JRTB-8: Sebagai Pengguna, saya ingin menetapkan tidak aktif menggunakan bot - melaksanakan menghentikan bot. Iaitu, semua yang perlu dilakukan dalam sistem kami untuk menghentikan kerja. Tambahkan arahan /stop pada pemprosesan.
  10. [CIRI] JRTB-9: Sebagai Pengguna, saya mahu mula bekerja dengan bot ATAU tetapkan aktif jika saya menggunakannya sebelum ini - tambah pemprosesan perintah /start. Tepat seperti yang kita mahukan.
  11. [CIRI] JRTB-10: Sebagai pentadbir, saya ingin melihat statistik bot - mencipta koleksi statistik bot. Menambah keupayaan pentadbir.
  12. [CIRI] JRTB-11: Sebagai pengguna, saya ingin melihat dokumentasi untuk bot telegram ini - menulis dokumentasi. Ya, ya, kawan, anda tidak boleh hidup tanpanya, dan semakin cepat anda belajar untuk melakukan ini, semakin baik untuk anda))
Ini sudah kelihatan seperti permulaan projek. Jadi untuk bercakap, kami bekerja sebagai arkitek projek dan penganalisis perniagaan.

Mengisi repositori

Apa lagi yang perlu dilakukan SEBELUM kita memulakan pengekodan? - Penulis, berapa banyak perenggan ini boleh anda tambah, adakah anda menariknya keluar dari jurang?? — Tidak, kualiti kerja ditunjukkan dalam butiran. Dan mereka adalah orang yang masuk akal. Jadi mari kita tambah satu lagi butiran. Agar projek itu menjadi popular dan mudah difahami oleh pembangun lain, ia perlu diisi. Apa yang perlu saya tambah? Saya menerangkan senarai lengkap perkara yang boleh dilakukan dalam artikel Mengoptimumkan kerja dengan projek anda di GitHub: mengenali Github Template Repository . Saya sangat mengesyorkan membacanya. Adalah penting bagi kita untuk mempunyai versi yang jelas, pemahaman yang jelas tentang apa yang kita lakukan. Oleh itu, saya menambah fail RELEASE_NOTES yang mana perubahan pada projek kami akan direkodkan. Sebagai contoh, anda boleh melihat RELEASE_NOTES daripada projek saya (ya, mengapa tidak tunjukkan perkara yang saya berikan tenaga dan kreativiti saya). Perubahan untuk setiap versi baharu diterangkan di sana. Saya juga menambah templat untuk membuat tugasan baharu, yang mempunyai 4 pilihan:
  • Laporan Pepijat ialah tugas yang dibuat oleh pengguna/penguji yang menemui pepijat dalam kerja mereka. Ini adalah perkara yang sangat penting: ia membantu mengurus pembetulan pepijat;
  • Permintaan ciri ialah tugas untuk menambah fungsi baharu. Semua tugas pertama pada projek adalah tugas permintaan ciri;
  • Permintaan penambahbaikan - tugas untuk menambah baik operasi aplikasi. Contohnya, untuk menukar jawapan ujian apabila bekerja dengan bot. Saya bukan seorang penulis teknikal dan saya boleh menghasilkan jawapan yang tidak betul sepenuhnya. Jadi jika anda mempunyai keinginan dan kemampuan, tawarkan :)
  • Soalan ialah soalan untuk pembangun tentang pengendalian aplikasi. Satu perkara yang sangat berguna. Katakan tiada pemahaman tentang kerja atau terdapat keraguan tentang beberapa soalan - anda boleh bertanya soalan dengan cara ini dan mendapatkan jawapan secara langsung.
Jika anda melihat GitHub, ia akan kelihatan seperti ini: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Kami juga pada masa ini mempunyai dokumen tentang bekerja dengan JavaRush API untuk bekerja dengan kumpulan.

Apa yang akan datang?

Nah, kami menyelesaikan semua langkah ini dan apakah, projek itu akan ditutup? Tidak, tidak sama sekali. Projek ini akan terus hidup. Ia akan dibangunkan oleh saya dan semua pelajar/graduan JavaRush yang ingin mengambil bahagian. Apakah rancangan anda untuk masa depan? Ramai daripada mereka. Pelan pertama adalah untuk mencipta klien Java untuk API JavaRush. Pemaju berjanji untuk membuat akses terbuka Swagger mereka. Kita juga akan melihat apa itu kesombongan. Perkara yang sejuk dan sangat berguna. Seterusnya kami akan mengintegrasikan tapak JavaRush dengan bot telegram. Mari sambungkan pengguna kepada bot untuk menyegerakkan langganan. Mari buat statistik tentang penyiapan kursus. Dan semua yang anda inginkan sebagai Komuniti JavaRush.

kesimpulan

Hari ini kita bercakap tentang kerja di belakang tabir sebelum penciptaan projek. Lebih tepat lagi, tentang cara membuat rancangan kerja, tanpanya anda boleh membuang banyak tenaga. Saya ulangi, permulaan projek telah pun tersedia secara umum di sini . Seperti biasa, saya cadangkan anda melanggan akaun saya di Github. Dengan cara ini anda boleh menerima perubahan pada projek SEBELUM artikel diterbitkan. Saya sudah menganggap bahawa semua pihak yang berminat telah mendaftar di Github. Ya, projek itu tidak bergerak secepat yang kita mahu. Walau bagaimanapun, sama seperti projek sebenar di tempat kerja. Dalam artikel seterusnya saya akan menerangkan menambah tugasan pertama. Terima kasih semua orang kerana membaca dan jumpa anda tidak lama lagi!

Senarai semua bahan dalam siri ini adalah pada permulaan artikel ini.

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