JavaRush /Java blogi /Random-UZ /Loyihani rejalashtirish: ikki marta o'lchash - bir marta ...

Loyihani rejalashtirish: ikki marta o'lchash - bir marta kesish - "A dan Zgacha Java loyihasi"

Guruhda nashr etilgan
Assalomu alaykum, hamkasblar. Bugun biz kodlashni boshlashdan oldin qanday tayyorgarlik ishlarini bajarishingiz kerakligi haqida gaplashamiz. Aniqroq aytganda, dastur arxitekturasini rejalashtirish va yaratish haqida. Java loyihasi A dan Z gacha. Loyihani rejalashtirish: etti marta o'lchash - bir marta kesish - 1Lekin qaerdan boshlash kerak? Ushbu arxitekturani qanday qurish kerak? Har bir narsada bo'lgani kabi, siz boshidan boshlashingiz kerak. Ya'ni - IDEA bilan. Loyihamizning g'oyasi asosiy funksiyalarga ega foydali telegramma botini yaratish edi. Keling, aynan nimani takrorlaylik: "Men foydalanuvchi sifatida JavaRush-dagi guruhlarda meni qiziqtirgan yangi maqolalar chop etilganda bildirishnomalarni olishni xohlayman." YAGNI tamoyiliga amal qilib, biz ilovamizni tuzamiz. Bu shuni anglatadiki, biz faqat kerakli narsani olamiz. Biz funktsiyani oldindan va zahirada yaratmaymiz, chunki biz xohlaymiz va bir kun kelib u foydali bo'lishi mumkin. Ha, biz o'qilishi mumkin bo'lgan va kengaytiriladigan dastur yaratamiz, ammo bu "o'sish uchun" ma'lumotlar bazasi sxemasini yaratamiz degani emas. Ushbu "o'sishni" qo'llab-quvvatlamaslik uchun men undan butunlay voz kechish yaxshiroq deb qaror qildim. Bu ishlab chiqish va keraksiz sinovlar paytida keraksiz yordamdan qochishimizga yordam beradi. Keyinchalik, loyihamiz ishlab chiqarishga kirganda (yana anglitsizm, prod - ishlab chiqarish qisqartmasidan), biz ko'proq narsani qila olamiz. Biror g'oyaga qaror qilganingizdan so'ng, siz biroz yaramas bo'lib , chizishingiz kerak. Nima chizish kerak? Bizga turli foydalanuvchilar guruhlariga obuna bo'lgan ma'lumotlarni saqlash qobiliyati kerak bo'ladi. Telegram’da chat ID ko‘rinishidagi foydalanuvchi identifikatoridan foydalanishingiz mumkinligini bilaman. Va yangi maqolalarni qidirish aslida qanday davom etishi haqida fikr bor: biz yangi maqolalarga obuna bo'lgan barcha guruhlarni qidiramiz va ularni chatlarga yuboramiz. Shunga asoslanib, biz birinchi taxminiy xulosa sifatida quyidagilarni olamiz (bu erda bezaksiz ishlanma): Java loyihasi A dan Z gacha. Loyihani rejalashtirish: etti marta o'lchash - bir marta kesish - 2Mening qo'lyozmani tushunasiz deb umid qilmayman: rivojlanish qanday va qaerdan boshlanishini aniq ko'rsatmoqchiman. Birinchi bosqich yakunlandi: biz qandaydir tarzda nima bo'lishini hal qildik. Ma'lumotlar bazasidagi modellar/jadvallar yuqorida tavsiflangan. Ammo bu qoralama: uni sayqallash va o'qilishi mumkin bo'lgan shaklga keltirish mumkin va kerak. Men jilo qilayotganimda, men ham botning ishi bo'yicha statistik ma'lumotlarni olishni xohlayotganimni esladim. Buni qo'shdi. Ushbu rasmda nima va qanday tartibga solinishi aniqroq. Ya'ni, ularda qanday jadvallar va maydonlar bo'ladi, jadvallar uchun qanday ob'ektlar nomlari bo'ladi. Ulardan bir nechtasi bo'lishiga qaror qilindi:
  • Foydalanuvchi - botimizdan foydalanadigan telegram foydalanuvchisi haqida ma'lumot. Ko'rib turganingizdek, biz faqat chat identifikatori va foydalanuvchi faolmi yoki yo'qmi, bayroqni saqlaymiz. Nega? Chunki bizning maqsadimiz foydalanuvchilar haqida ma'lumot yig'ish emas, balki ularga foyda keltirish;
  • GroupSub - bu yerda siz obuna bo'lgan guruh va obunachilarga yuborilgan so'nggi maqola haqida ma'lumot bo'ladi;
  • Statistika - men buning sxemasini yaratmadim - buni keyinroq qilamiz. Bu loyihaning MVPdagi asosiy maqsadi emas.
Java loyihasi A dan Z gacha. Loyihani rejalashtirish: etti marta o'lchash - bir marta kesish - 3Shundan so'ng men yangi maqolalarni qidirish usulini batafsil ko'rsatmoqchi bo'ldim. Buning uchun men BPMN diagrammasidan foydalandim, uni rasmga aylantirdim va buni oldim: Java loyihasi A dan Z gacha. Loyihani rejalashtirish: etti marta o'lchash - bir marta kesish - 4Bu erda hamma narsa o'qilishi va tushunarli. Biz qidiruvda ushbu sxema bo'yicha ishlaymiz. Menejerlarga ushbu sxema juda yoqadi, chunki bu nafaqat dasturchilarga tushunarli :D Umuman olganda, boshlanish boshlandi.

Ish uchun ombor yarating

Va nihoyat, siz telegram boti bilan ishlash uchun ombor yaratishingiz mumkin.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Bizga allaqachon tanish bo'lgan narsalarni to'ldiramiz - ombor nomi, uning qisqacha tavsifi.
  2. Litsenziya qo'shing - Apache 2.0 (siz o'zingizning ixtiyoringiz bilan litsenziyani tanlashingiz mumkin).
  3. Bizning loyihamiz endi mavjud - bu erda unga havola: JavaRush Telegrambot .

Omborda loyiha yarating

Loyiha bilan ishlash uchun GitHub vositalaridan, masalan, loyihadan foydalanish yaxshi bo'lardi. Bu nima? Bu siz vazifalar yaratishingiz, ularning bajarilishini kuzatishingiz va vazifa holatini saqlashingiz mumkin bo'lgan joy. Ularni kim amalga oshirishini va boshqalarni aniqlang. Buni amalga oshirish uchun yaratilgan loyihada biz Loyihalar tugmachasini topamiz va u erda biz yangisini yaratamiz: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Ko'rib turganingizdek, bu erda men loyiha nomini ko'rsatdim, uni tasvirlab berdim va biz ishlaydigan shablonni tanladim - Avtomatlashtirilgan Kanban. Hozir biz uchun bu nimani anglatishi unchalik muhim emas. Asosiysi, bizda ustunlarga bo'lingan, har bir ustun vazifaning holati bo'lgan vazifalar taxtasi bo'ladi:
  1. Bajarish - bajarilishi rejalashtirilgan barcha vazifalar;
  2. Amalga oshirilayotgan - hozirda ishlanayotgan vazifalar;
  3. Bajarildi - ushbu loyiha doirasida allaqachon bajarilgan vazifalar.
Shunday qilib, biz o'z vazifalarimizning holati haqida bilib olamiz. Qaysi biri davom etmoqda, qaysi biri bajarildi. Bundan tashqari, bu nafaqat jamoa mavjud bo'lgan hollarda, balki o'zingiz ishlaganingizda ham muhim va qulaydir. Doskada biror narsa paydo bo'lishi uchun siz muammolar yaratishingiz kerak.

Loyiha uchun muammolarni (muammolarni) yozamiz

Qanday vazifalarni yozishni tushunish uchun, keling, loyihada nima bo'lishini hal qilaylik. Bizga maʼlumotlar bazasiga kirishimiz, maʼlumotlar bazasi sxemasini boshqarishimiz va oʻzgartirishimiz, maqolalar boʻyicha maʼlumotlarni olish uchun JavaRushʼda REST soʻrovlarini amalga oshirishimiz uchun bizga oson va tez ishga tushiriladigan dastur kerak. Bunga asoslanib, siz quyidagi texnologiyalarni tanlashingiz mumkin:
  • SpringBoot - ilovamiz uchun ramka sifatida,
  • Spring Data - ma'lumotlar bazasi bilan ishlash uchun,
  • Flyway - ma'lumotlar bazasi migratsiyasi bilan ishlash uchun,
  • MySQL - loyiha uchun ma'lumotlar bazasi sifatida,
  • Telegrambot StringBoot starter - telegram bot bilan ishlash uchun kutubxona,
  • Unirest - bu REST so'rovlari bilan ishlash uchun kutubxona.
Yuqorida aytilganlarning barchasidan keling, vazifalar yaratishni boshlaylik.

Vazifa yaratish shablon

Quyidagi shablon yordamida vazifalarni yaratamiz:
  1. Vazifa nomi quyidagicha ko'rinadi: JRTB-{IssueNumber}:{IssueDescription} , bu erda:
    • {IssueNumber} - bu muammoning seriya raqami. Keling, buni oxirgi masaladan yana bir bor olaylik;
    • {IssueDescription} - muammoning qisqacha tavsifi.
  2. Vazifaning asosiy qismida biz uning batafsil tavsifini beramiz (ba'zida u vazifa nomidagi tavsif bilan mos kelishi mumkin).
  3. Qabul qilish mezonlari - bu talablar ro'yxati, shundan so'ng vazifa bajarilgan deb hisoblanishi mumkin. Shunday qilib, topshiriqni qabul qilish mezonlari. Ulardan foydalanib, sharhlovchi (inglizcha sharhlovchi - sharhlovchi - topshiriq qanday bajarilishini ko'rib chiquvchi shaxs) topshiriq to'liq bajarilgan yoki bajarilmaganligini tushunishi mumkin.
Ushbu shablondan foydalanib, biz o'zimizning birinchi vazifamizni yaratamiz: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Shuni ham ta'kidlash kerakki, uni yaratishda men darhol ushbu vazifa qaysi loyihaga mos kelishini, uni kim bajarishini (tayinlovchi) va qaysi yorliq (yorliq) ga tegishli ekanligini aniqladim. Keyinchalik, men oddiygina kichik tavsif va ularga havolalar bilan vazifalarning nomlarini ko'rsataman. Ularning hammasi shu yerda . Biz vazifalarni taxminan bu erda ko'rsatilgan tartibda bajaramiz:
  1. [XUSUSIYAT] JRTB-0: Skeleton Spring yuklash loyihasini yarating - bu erda hamma narsa aniq: oldingi maqolada qilgan ishimizning birinchi qismini bajarishingiz kerak.
  2. [XUSUSIYAT] JRTB-2: loyihaga telegramma bot qo'shing - shunchaki javob beradigan va uning tirik va yaxshi ekanligini aytadigan bo'sh bot qo'shing.
  3. [XUSUSIYAT] JRTB-3: Telegrambot uchun buyruq naqshini qo'llash - keling, telegram botidagi buyruqlar bilan ishlashga to'g'ri yondashuvni o'rnatamiz. Hozircha bir nechta jamoalar uchun.
  4. [XUSUSIYAT] JRTB-1: Repozitoriy qatlamini qo'shish - bu eng katta vazifalardan biri - u ma'lumotlar bazasi bilan ishlash uchun bajarilishi kerak bo'lgan hamma narsani birlashtiradi.
  5. [XUSUSIYAT] JRTB-5: Foydalanuvchi sifatida men guruhni obunaga qo'shmoqchiman - bu allaqachon Agile tushunchasidagi birinchi foydalanuvchi hikoyasi. Bu bizning foydalanuvchilarimiz uchun haqiqiy foyda bo'ladi: botga guruh obunalarini qo'shish mumkin bo'ladi.
  6. [XUSUSIYAT] JRTB-12: Yangi maqolalar haqida bildirishnoma yuborishni rejalashtirish - bu erda yangi maqolalarni qidirish amalga oshiriladi, agar ular har bir guruh uchun nashr qilinsa va guruhlarga obuna bo'lgan barcha foydalanuvchilarga yuborilsa.
  7. [XUSUSIYAT] JRTB-6: Foydalanuvchi sifatida men o'zimning guruh obunalarim ro'yxatini ko'rishni xohlayman - bu erda hamma narsa oddiy: biz foydalanuvchi obuna bo'lgan barcha guruhlar ro'yxatini ko'rsatadigan buyruq qo'shamiz.
  8. [XUSUSIYAT] JRTB-7: Foydalanuvchi sifatida men obunalarimdan guruh obunasini olib tashlamoqchiman - bu erda foydalanuvchining guruhdagi yangilanishlarga obunasini olib tashlashingiz kerak.
  9. [XUSUSIYAT] JRTB-8: Foydalanuvchi sifatida men bot yordamida nofaol o'rnatmoqchiman - botni to'xtatishni amalga oshirish. Ya'ni, ish to'xtab qolishi uchun tizimimizda bajarilishi kerak bo'lgan hamma narsa. Qayta ishlashga / stop buyrug'ini qo'shing.
  10. [XUSUSIYAT] JRTB-9: Foydalanuvchi sifatida men bot bilan ishlashni boshlamoqchiman YOKI undan oldin ishlatgan bo'lsam, faol to'plam bilan ishlashni xohlayman - /start buyrug'ini qayta ishlashni qo'shing. Aynan biz xohlagan tarzda.
  11. [XUSUSIYAT] JRTB-10: Administrator sifatida men bot statistikasini koʻrmoqchiman – bot statistikasi toʻplamini yaratish. Administrator imkoniyatlarini qo'shish.
  12. [XUSUSIYAT] JRTB-11: Foydalanuvchi sifatida men ushbu telegram bot uchun hujjatlarni ko'rmoqchiman - hujjatlarni yozish. Ha, ha, do'stlar, siz usiz yashay olmaysiz va buni qanchalik tezroq o'rgansangiz, siz uchun shunchalik yaxshi bo'ladi))
Bu allaqachon loyihaning boshlanishiga o'xshaydi. Shunday qilib, biz loyiha arxitektori va biznes tahlilchisi sifatida ishladik.

Repozitariyni to'ldirish

Kodlashni boshlashdan oldin yana nima qilishimiz kerak? - Muallif, shu paragraflardan nechtasini qo'shishingiz mumkin, ularni tubsizlikdan olib chiqyapsizmi? — Yo‘q, ish sifati tafsilotlarda ko‘rsatiladi. Va ular mantiqiy bo'lganlardir. Shunday qilib, keling, yana bir tafsilotni qo'shamiz. Loyiha boshqa ishlab chiquvchilar uchun mashhur va tushunarli bo'lishi uchun uni to'ldirish kerak. Nima qo'shishim kerak? Men maqolada nima qilish mumkinligining to'liq ro'yxatini tasvirlab berdim GitHub-da loyihalaringiz bilan ishlashni optimallashtirish: Github shablonlari ombori bilan tanishish . Men uni o'qishni tavsiya qilaman. Biz uchun aniq versiyaga ega bo'lish, nima qilayotganimizni aniq tushunish muhimdir. Shuning uchun men RELEASE_NOTES faylini qo'shdim, unda loyihamizdagi o'zgarishlar qayd etiladi. Misol sifatida siz mening loyihamdagi RELEASE_NOTES ni ko'rishingiz mumkin (ha, nega men o'z kuch va ijodimni nimaga sarflaganimni ko'rsatmasligim kerak). Har bir yangi versiya uchun o'zgarishlar u erda tasvirlangan. Shuningdek, men yangi vazifalarni yaratish uchun shablonlarni qo'shdim, ularda 4 ta variant mavjud:
  • Xatolik hisoboti - bu o'z ishida xato topadigan foydalanuvchilar/sinovchilar tomonidan yaratilgan vazifa. Bu juda muhim narsa: xatolarni tuzatishni boshqarishga yordam beradi;
  • Xususiyat so'rovi yangi funksiyalarni qo'shish vazifasidir. Loyihadagi barcha birinchi vazifalar xususiyat so'rovi vazifalari;
  • Yaxshilash so'rovi - ilovaning ishlashini yaxshilash vazifasi. Masalan, bot bilan ishlashda test javoblarini o'zgartirish. Men texnik yozuvchi emasman va to'liq to'g'ri bo'lmagan javoblarni topa olaman. Agar sizda xohish va qobiliyat bo'lsa, uni taklif qiling :)
  • Savol - dasturning ishlashi haqida ishlab chiquvchilar uchun savol. Juda foydali narsa. Aytaylik, ish haqida hech qanday tushuncha yo'q yoki biron bir savol bo'yicha shubhalar mavjud - siz shu tarzda savol berishingiz va birinchi qo'ldan javob olishingiz mumkin.
Agar siz GitHub-ga qarasangiz, u xuddi shunday ko'rinadi: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Hozirda bizda guruhlar bilan ishlash uchun JavaRush API bilan ishlash bo'yicha hujjat mavjud.

Keyin nima?

Xo'sh, biz bu barcha bosqichlarni bajaramiz va nima, loyiha yopiladi? Yo'q, umuman emas. Ushbu loyiha yashashda davom etadi. U men va ishtirok etishni istagan JavaRush talabalari/bitiruvchilari tomonidan ishlab chiqiladi. Kelajak uchun qanday rejalaringiz bor? Ular ko `p. Birinchi reja JavaRush API uchun Java mijozini yaratishdir. Ishlab chiquvchilar o'zlarining Swagger-ga ochiq kirish imkoniyatini berishga va'da berishdi. Bundan tashqari, biz shafqatsizlik nima ekanligini ko'rib chiqamiz. Ajoyib va ​​juda foydali narsa. Keyinchalik JavaRush saytini telegram bot bilan birlashtiramiz. Obunalarni sinxronlashtirish uchun foydalanuvchini botga ulaymiz. Keling, kursni yakunlash bo'yicha statistik ma'lumotlarni yarataylik. Va JavaRush hamjamiyati sifatida xohlagan hamma narsa.

xulosalar

Bugun biz loyihani yaratishdan oldin sahna ortidagi ishlar haqida gaplashdik. Yoki aniqrog'i, ish rejasini qanday tuzish haqida, ularsiz ko'p energiya sarflashingiz mumkin. Takror aytaman, loyihaning boshlanishi bu yerda allaqachon ommaga taqdim etilgan . Odatdagidek, Github-dagi hisobimga obuna bo'lishni tavsiya qilaman . Shunday qilib, siz maqola chop etilishidan oldin loyihaga kiritilgan o'zgarishlarni olishingiz mumkin. Men allaqachon barcha manfaatdor tomonlar Github-da ro'yxatdan o'tgan deb taxmin qilaman. Ha, loyiha biz xohlaganchalik tez harakat qilmayapti. Biroq, xuddi ishdagi haqiqiy loyihalar kabi. Keyingi maqolada men birinchi vazifalarni qo'shishni tasvirlab beraman. O'qiganingiz uchun barchangizga rahmat va tez orada ko'rishguncha!

Seriyadagi barcha materiallar ro'yxati ushbu maqolaning boshida.

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