JavaRush /Java блогы /Random-KK /Жобаны жоспарлау: екі рет өлшеңіз - бір рет кесіңіз - «Ja...
Roman Beekeeper
Деңгей

Жобаны жоспарлау: екі рет өлшеңіз - бір рет кесіңіз - «Java жобасы А-дан Я-ға дейін».

Топта жарияланған
Сәлеметсіздер ме, әріптестер. Бүгін біз жабайы codeтауды бастамас бұрын қандай дайындық жұмыстарының түрі туралы сөйлесетін боламыз. Нақтырақ айтқанда, қолданба архитектурасын жоспарлау және құру туралы. Java жобасы А-дан Я-ға дейін. Жобаны жоспарлау: жеті рет өлшеңіз - бір рет кесіңіз - 1Бірақ неден бастау керек? Бұл архитектураны қалай құруға болады? Барлығы сияқты, сіз басынан бастауыңыз керек. Атап айтқанда - IDEA көмегімен. Біздің жобаның идеясы негізгі функционалдығы бар пайдалы телеграмма ботын жасау болды. Дәл осыны қайталайық: «Мен пайдаланушы ретінде JavaRush топтарында мені қызықтыратын жаңа мақалалар жарияланған кезде хабарландырулар алғым келеді». YAGNI принципіне сүйене отырып, біз өз қосымшамызды құрастырамыз. Бұл өзімізге қажет нәрсені ғана аламыз дегенді білдіреді. Біз функционалдылықты алдын ала және резервте өзіміз қалағандықтан жасамаймыз және ол бір күні пайдалы болуы мүмкін. Иә, біз оқылатын және кеңейтілетін қосымшаны жасаймыз, бірақ бұл «өсу үшін» дерекқор схемасын жасаймыз дегенді білдірмейді. Бұл «өсуді» қолдамау үшін мен одан мүлдем бас тартқан дұрыс деп шештім. Бұл әзірлеу кезінде қажетсіз қолдауды және қажетсіз сынақтарды болдырмауға көмектеседі. Кейінірек, жобамыз өндіріске енген кезде (қайтадан англицизм, prod - өндіріс аббревиатурасынан) біз тағы бір нәрсе жасай аламыз. Идеяға шешім қабылдағаннан кейін, сіз аздап тентектікке түсіп , сурет салуыңыз керек. Не салу керек? Бізге әртүрлі пайдаланушылар топтарына жазылымдар туралы деректерді сақтау мүмкіндігі қажет болады. Telegram-да чат идентификаторы түрінде пайдаланушы идентификаторын пайдалануға болатынын білемін. Жаңа мақалаларды іздеу іс жүзінде қалай жүретіні туралы идея бар: біз жаңа мақалаларға жазылулары бар барлық топтарда іздеп, оларды чаттарға жібереміз. Осыған сүйене отырып, біз бірінші жуықтау ретінде келесіні аламыз (мұнда әшекейсіз даму): Java жобасы А-дан Я-ға дейін. Жобаны жоспарлау: жеті рет өлшеңіз - бір рет кесіңіз - 2Менің қолжазбамды түсінетіндеріңізге үміттенбеймін: мен дамудың қалай және қай жерде басталатынын көрсеткім келеді. Бірінші кезең аяқталды: біз қандай болатынын шештік. Дерекқордағы үлгілер/кестелер жоғарыда сипатталған. Бірақ бұл жоба: оны жылтыратып, оқуға ыңғайлы пішінге келтіруге болады және керек. Мен жылтыратып жатқанда, мен бот жұмысының статистикасын алғым келетінін есіме түсірдім. Мұны қосты. Бұл сызбада оның не және қалай орналасатыны анық. Яғни, оларда қандай кестелер мен өрістер болады, кестелер үшін қандай нысан атаулары болады. Олардың бірнешеуі болады деп шешілді:
  • Қолданушы – біздің ботты пайдаланатын телеграм қолданушысы туралы ақпарат. Көріп отырғаныңыздай, біз тек чат идентификаторы мен жалаушаны пайдаланушының белсенді немесе белсенді еместігін сақтаймыз. Неліктен? Өйткені біздің мақсатымыз – пайдаланушылар туралы ақпарат жинау емес, оларға пайда келтіру;
  • GroupSub - мұнда сіз жазылған топ және жазылушыларға жіберілген соңғы мақала туралы ақпарат болады;
  • Статистика - Мен оның схемасын жасаған жоқпын - мұны кейінірек жасаймыз. Бұл жобаның MVP-дегі басты мақсаты емес.
Java жобасы А-дан Я-ға дейін. Жобаны жоспарлау: жеті рет өлшеңіз - бір рет кесіңіз - 3Осыдан кейін мен жаңа мақалаларды іздеу жолын толығырақ көрсеткім келді. Мұны істеу үшін мен BPMN диаграммасын қолдандым, оны суретке айналдырып, мынаны алдым: Java жобасы А-дан Я-ға дейін. Жобаны жоспарлау: жеті рет өлшеңіз - бір рет кесіңіз - 4Мұнда бәрі оқуға және түсінікті. Біз іздеуде осы схема бойынша жұмыс істейтін боламыз. Менеджерлер бұл схеманы шынымен ұнатады, өйткені бұл тек бағдарламашыларға ғана түсінікті емес :D Жалпы, бастама жасалды.

Жұмыс үшін репозиторий жасаңыз

Соңында сіз телеграмма ботымен жұмыс істеуге арналған репозиторий жасай аласыз.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Бізге бұрыннан таныс элементтерді толтырамыз - репозиторийдің атауы, оның қысқаша сипаттамасы.
  2. Лицензияны қосыңыз - Apache 2.0 (лицензияны өз қалауыңыз бойынша таңдай аласыз).
  3. Біздің жоба қазір қол жетімді - мұнда оған сілтеме: JavaRush Telegrambot .

Репозиторийде жоба жасаңыз

Жобамен жұмыс істеу үшін GitHub құралдарын пайдалану жақсы болар еді, мысалы, жоба. Бұл не? Бұл тапсырмаларды жасауға, олардың орындалуын бақылауға және тапсырма күйін сақтауға болатын орын. Оларды кім орындайтынын және т.б. анықтаңыз. Ол үшін жасалған жобада біз «Жобалар» түймесін табамыз , сонда біз жаңасын жасаймыз: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Көріп отырғаныңыздай, мен мұнда жобаның атын көрсеттім, оны сипаттадым және біз жұмыс істейтін үлгіні таңдадым - Автоматтандырылған Канбан. Біз үшін қазір бұл нені білдіретіні маңызды емес. Ең бастысы, бізде бағандарға бөлінген тапсырмалары бар тақта болады, онда әрбір баған тапсырманың күйі болады:
  1. Орындау – орындау жоспарланған барлық тапсырмалар;
  2. Орындалуда - қазіргі уақытта жұмыс жүргізіліп жатқан тапсырмалар;
  3. Орындалды - осы жоба аясында орындалған тапсырмалар.
Осылайша біз өз міндеттеріміздің күйі туралы білетін боламыз. Қайсысы жүріп жатыр, қайсысы орындалды. Оның үстіне, бұл команда болған жағдайда ғана емес, өз бетімен жұмыс істегенде де маңызды және ыңғайлы. Тақтада бірдеңе пайда болуы үшін Мәселелерді жасау керек.

Біз жобаға мәселелерді (мәселелерді) жазамыз

Қандай тапсырмалар жазу керектігін түсіну үшін жобада не болатынын шешейік. Бізге оңай және жылдам іске қосылатын, дерекқорға қол жеткізе алатын, дерекқор схемасын басқара және өзгерте алатын, мақалалар бойынша деректерді алу үшін JavaRush жүйесінде REST сұрауларын жасай алатындай қолданба қажет. Осыған сүйене отырып, сіз келесі технологияларды таңдай аласыз:
  • SpringBoot - біздің қосымшамыздың негізі ретінде,
  • Spring Data - мәліметтер қорымен жұмыс істеу үшін,
  • Flyway - деректер базасын тасымалдаумен жұмыс істеу үшін,
  • MySQL – жобаның деректер базасы ретінде,
  • Telegrambot StringBoot стартері - телеграмма ботымен жұмыс істеуге арналған кітапхана,
  • Unirest - REST сұрауларымен жұмыс істеуге арналған кітапхана.
Жоғарыда айтылғандардың барлығынан тапсырмалар құруды бастайық.

Тапсырманы құру үлгісі

Біз келесі үлгіні пайдаланып тапсырмаларды жасаймыз:
  1. Тапсырма атауы келесідей болады: JRTB-{IssueNumber}:{IssueDescription} , мұнда:
    • {IssueNumber} - шығарылымның сериялық нөмірі. Соңғы есептен тағы бір алайық;
    • {IssueDescription} - мәселенің қысқаша сипаттамасы.
  2. Тапсырманың мәтінінде біз оның егжей-тегжейлі сипаттамасын жасаймыз (кейде ол тапсырма атауындағы сипаттамамен сәйкес келуі мүмкін).
  3. Қабылдау критерийлері – бұл талаптар тізімі, содан кейін тапсырма орындалды деп санауға болады. Былайша айтқанда, тапсырманы қабылдау критерийлері. Оларды пайдалана отырып рецензент (ағылшын тілінен рецензент – рецензент – тапсырманың қалай орындалғанын қарайтын адам) тапсырманың толық орындалғанын немесе орындалмағанын түсіне алады.
Осы шаблонды пайдалана отырып, біз өзіміздің бірінші тапсырмамызды жасаймыз: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Сонымен қатар, оны жасау кезінде бұл тапсырманың қай жобаға сәйкес келетінін, оны кім орындайтынын (тапсырманы алушы) және бұл тапсырманың қандай белгіге (белгіге) жататынын бірден анықтағанымды атап өткен жөн. Әрі қарай, мен жай ғана шағын сипаттамамен және оларға сілтемелермен тапсырмалардың атауларын көрсетемін. Олардың барлығы осында . Біз тапсырмаларды шамамен осы жерде көрсетілгендей ретпен орындаймыз:
  1. [МҮМКІНДІК] JRTB-0: Skeleton Spring жүктеу жобасын жасау - мұнда бәрі түсінікті: алдыңғы мақалада жасаған ісіміздің бірінші бөлігін орындау керек.
  2. [МҮМКІНДІК] JRTB-2: жобаға телеграмма ботын қосыңыз - жай ғана жауап беретін және оның тірі және жақсы екенін айтатын бос бот қосыңыз.
  3. [МҮМКІНДІК] JRTB-3: Telegrambot үшін пәрмен үлгісін енгізу – телеграмма ботындағы пәрмендермен жұмыс істеудің дұрыс тәсілін орнатайық. Әзірге бірнеше команда үшін.
  4. [МҮМКІНДІК] JRTB-1: Репозиторий қабатын қосу - бұл ең үлкен тапсырмалардың бірі - ол дерекқормен жұмыс істеу үшін жасалуы керек нәрселердің барлығын біріктіреді.
  5. [МҮМКІНДІК] JRTB-5: Пайдаланушы ретінде мен топты жазылымға қосқым келеді - бұл Agile түсінігіндегі бірінші Пайдаланушы тарихы. Бұл біздің пайдаланушыларымыз үшін нақты артықшылық болады: ботқа топтық жазылымдарды қосуға болады.
  6. [МҮМКІНДІК] JRTB-12: Жаңа мақалалар туралы хабарландыруды жіберуді жоспарлауды жүзеге асыру - мұнда әрбір топ үшін жарияланған және топтарға жазылған барлық пайдаланушыларға жіберілген жаңа мақалаларды іздеу жүзеге асырылады.
  7. [МҮМКІНДІК] JRTB-6: Пайдаланушы ретінде мен өзімнің топтық жазылымдарымның тізімін көргім келеді - мұнда барлығы қарапайым: біз пайдаланушы жазылған барлық топтардың тізімін көрсететін пәрменді қосамыз.
  8. [МҮМКІНДІК] JRTB-7: Пайдаланушы ретінде мен жазылымдарымнан топтық жазылымды алып тастағым келеді - мұнда пайдаланушының топтағы жаңартуларға жазылуын жою керек.
  9. [МҮМКІНДІК] JRTB-8: Пайдаланушы ретінде мен бот арқылы белсенді емес күйге келтіргім келеді - ботты тоқтатуды жүзеге асыру. Яғни, жұмыс тоқтауы үшін біздің жүйеде не істеу керек. Өңдеуге /stop пәрменін қосыңыз.
  10. [МҮМКІНДІК] JRTB-9: Пайдаланушы ретінде мен ботпен жұмыс істей бастағым келеді НЕМЕСЕ, егер оны бұрын пайдаланған болсам, белсенді жиын - /start пәрменін өңдеуді қосыңыз. Дәл біз қалағандай.
  11. [МҮМКІНДІК] JRTB-10: Әкімші ретінде мен бот статистикасын көргім келеді – бот статистикасының жинағын жасау. Әкімші мүмкіндіктерін қосу.
  12. [МҮМКІНДІК] JRTB-11: Пайдаланушы ретінде мен осы телеграмма ботының құжаттамасын көргім келеді - құжаттама жазу. Иә, иә, достар, сіз онсыз өмір сүре алмайсыз және мұны неғұрлым тезірек үйренсеңіз, сізге соғұрлым жақсы болады))
Бұл қазірдің өзінде жобаның басы сияқты. Былайша айтқанда, біз жобаның сәулетшісі және бизнес-аналитик болып жұмыс істедік.

Репозиторийді толтыру

Кодтауды бастамас бұрын тағы не істеу керек? - Author, осы абзацтардың нешеуін қоса аласыз, тұңғиықтан шығарып жатырсыз ба?? — Жоқ, жұмыстың сапасы егжей-тегжейлі көрінеді. Және олар мағынасы бар адамдар. Ендеше тағы бір деталь қосайық. Жоба танымал және басқа әзірлеушілерге түсінікті болуы үшін оны толтыру қажет. Мен не қосуым керек? Мен GitHub жүйесіндегі жобаларыңызбен жұмысты оңтайландыру: Github үлгі репозиторийімен танысу мақаласында не істеуге болатынын толық тізбесін сипаттадым . Мен оны оқуға кеңес беремін. Біз үшін нақты нұсқаның болуы, не істеп жатқанымызды нақты түсіну маңызды. Сондықтан мен жобамыздағы өзгерістер жазылатын RELEASE_NOTES файлын қостым. Мысал ретінде менің жобамдағы RELEASE_NOTES-ті қарауға болады (иә, неге мен өз күшімді және шығармашылығымды неге жұмсағанымды көрсетпеске). Әрбір жаңа нұсқаға арналған өзгерістер сонда сипатталған. Мен сондай-ақ 4 опциясы бар жаңа тапсырмаларды жасау үшін үлгілерді қостым:
  • Қате туралы есеп - жұмысында қатені тапқан пайдаланушылар/сынаушылар жасаған тапсырма. Бұл өте маңызды нәрсе: ол қателерді түзетуді басқаруға көмектеседі;
  • Мүмкіндік сұрауы - жаңа функцияларды қосу тапсырмасы. Жобадағы барлық бірінші тапсырмалар мүмкіндіктерді сұрау тапсырмалары болып табылады;
  • Жақсарту сұрауы – қолданбаның жұмысын жақсарту тапсырмасы. Мысалы, ботпен жұмыс істегенде тест жауаптарын өзгерту. Мен техникалық жазушы емеспін және толық дұрыс емес жауаптар бере аламын. Егер сізде қалауыңыз бен мүмкіндігіңіз болса, оны ұсыныңыз :)
  • Сұрақ - бұл қосымшаның жұмысы туралы әзірлеушілерге арналған сұрақ. Өте пайдалы нәрсе. Жұмыс туралы түсінік жоқ немесе қандай да бір сұраққа күмән бар делік - сіз осы жолмен сұрақ қойып, бірінші қолмен жауап ала аласыз.
Егер сіз GitHub-ты қарасаңыз, ол дәл осылай көрінеді: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Қазіргі уақытта бізде топтармен жұмыс істеуге арналған JavaRush API-мен жұмыс істеу туралы құжат бар.

Ары қарай не?

Ал, біз осы қадамдардың барлығын аяқтаймыз және жоба жабылады ма? Жоқ, мүлде емес. Бұл жоба жалғасын табады. Оны мен және қатысқысы келетін JavaRush студенттері/түлектері әзірлейтін болады. Болашаққа қандай жоспарларыңыз бар? Олар көп. Ең бірінші жоспар JavaRush API үшін Java клиентін жасау болып табылады. Әзірлеушілер Swagger-ге ашық қолжетімділікті жасауға уәде берді. Біз сондай-ақ сыпайылықтың не екенін қарастырамыз. Керемет және өте пайдалы нәрсе. Әрі қарай JavaRush сайтын телеграмма ботымен біріктіреміз. Жазылымдарды синхрондау үшін пайдаланушыны ботқа қосайық. Курсты аяқтау статистикасын құрайық. JavaRush қауымдастығы ретінде қалағаныңыздың бәрі.

қорытындылар

Бүгін біз жобаны жасамас бұрын сахна артындағы жұмыстар туралы айттық. Немесе дәлірек айтқанда, жұмыс жоспарын қалай жасау керектігі туралы, онсыз көп энергияны жұмсауға болады. Қайталап айтамын, жобаның басы осында жалпыға қолжетімді болды . Әдеттегідей, мен сізге Github-тағы тіркелгіме жазылуды ұсынамын . Осылайша сіз мақала жарияланғанға дейін жобаға өзгерістерді ала аласыз. Мен барлық мүдделі тараптар Github-та тіркелген деп ойлаймын. Иә, жоба біз ойлағандай жылдам жүріп жатқан жоқ. Дегенмен, жұмыстағы нақты жобалар сияқты. Келесі мақалада мен бірінші тапсырмаларды қосуды сипаттаймын. Оқығаныңыз үшін барлығына рахмет және жақын арада кездескенше!

Сериядағы барлық материалдардың тізімі осы мақаланың басында.

Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION