JavaRush /Java Blog /Random-TL /Pagpaplano ng proyekto: sukatin nang dalawang beses - gup...

Pagpaplano ng proyekto: sukatin nang dalawang beses - gupitin nang isang beses - "Proyekto ng Java mula A hanggang Z"

Nai-publish sa grupo
Pagbati, mga kasamahan. Ngayon ay pag-uusapan natin ang uri ng gawaing paghahanda na kailangan mong gawin bago ka magsimulang mag-coding nang ligaw. Mas partikular, tungkol sa pagpaplano at paglikha ng arkitektura ng application. Proyekto ng Java mula A hanggang Z. Pagpaplano ng proyekto: sukatin ng pitong beses - gupitin nang isang beses - 1Ngunit saan magsisimula? Paano bumuo ng arkitektura na ito? Tulad ng lahat, kailangan mong magsimula sa simula. Namely - may IDEA. Ang ideya ng aming proyekto ay lumikha ng isang kapaki-pakinabang na telegram bot na may pangunahing pag-andar. Ulitin natin nang eksakto kung ano: "Ako, bilang isang gumagamit, ay nais na makatanggap ng mga abiso kapag ang mga bagong artikulo ay na-publish sa mga pangkat na iyon sa JavaRush na interesado ako." Kasunod ng prinsipyo ng YAGNI, bubuo kami ng aming aplikasyon. Ibig sabihin, kukunin lang natin ang kailangan natin. Hindi kami gagawa ng pag-andar nang maaga at nakalaan dahil lang sa gusto namin at balang araw ay maaaring talagang magamit ito. Oo, gagawa kami ng isang nababasa at napapalawak na application, ngunit hindi ito nangangahulugan na gagawa kami ng isang database schema "para sa paglago". Upang hindi masuportahan ang "paglago" na ito, napagpasyahan kong mas mahusay na iwanan ito nang buo. Makakatulong ito sa amin na maiwasan ang hindi kinakailangang suporta sa panahon ng pag-unlad at hindi kinakailangang pagsubok. Mamaya, kapag ang aming proyekto ay napunta sa produksyon (muli ay isang Anglicism, mula sa abbreviation prod - produksyon), maaari naming gawin ang isang bagay na higit pa. Kapag nakapagpasya ka na sa isang ideya, kailangan mong maging makulit at gumuhit. Ano ang iguguhit? Kakailanganin namin ang kakayahang mag-save ng data sa mga subscription sa mga pangkat ng iba't ibang user. Alam kong maaari kang gumamit ng user ID sa anyo ng isang chat ID sa Telegram. At mayroong isang ideya kung paano aktwal na magpapatuloy ang paghahanap para sa mga bagong artikulo: hahanapin namin ang lahat ng mga grupo na may mga subscription para sa mga bagong artikulo at ipadala ang mga ito sa mga chat. Batay dito, nakukuha natin ang sumusunod bilang unang pagtataya (narito ang pag-unlad nang walang pagpapaganda): Proyekto ng Java mula A hanggang Z. Pagpaplano ng proyekto: sukatin ng pitong beses - gupitin nang isang beses - 2Hindi ako umaasa na mauunawaan mo ang aking sulat-kamay: Gusto kong ipakita nang eksakto kung paano at saan nagsisimula ang pag-unlad. Nakumpleto na ang unang yugto: nakapagpasya na kami sa kung ano ang mangyayari. Ang mga modelo/talahanayan sa database ay inilarawan sa itaas. Ngunit ito ay isang draft: maaari at dapat itong pulihin at dalhin sa isang mas nababasang anyo. Habang nagpapakintab ako, naalala ko na gusto ko ring makakuha ng mga istatistika sa gawa ng bot. Idinagdag ito. Sa pagguhit na ito ay higit pa sa malinaw kung ano at paano ito isasaayos. Iyon ay, kung ano ang mga talahanayan at mga patlang sa kanila, kung ano ang mga pangalan ng entity para sa mga talahanayan. Napagpasyahan na magkakaroon ng ilan sa kanila:
  • User - impormasyon tungkol sa telegram user na gagamit ng aming bot. Gaya ng nakikita mo, sine-save lang namin ang chat ID at ang flag kung ang user ay aktibo o hindi. Bakit? Dahil ang aming layunin ay hindi upang mangolekta ng impormasyon tungkol sa mga gumagamit, ngunit upang makinabang sila;
  • GroupSub - narito ang impormasyon tungkol sa grupo kung saan mayroon kang subscription at ang pinakabagong artikulo na ipinadala sa mga subscriber;
  • Mga Istatistika - Hindi pa ako nakagawa ng schema para dito - gagawin namin iyon mamaya. Hindi ito ang pangunahing layunin sa MVP ng proyekto.
Proyekto ng Java mula A hanggang Z. Pagpaplano ng proyekto: sukatin ng pitong beses - gupitin nang isang beses - 3Pagkatapos noon, gusto kong ipakita nang mas detalyado ang paraan ng paghahanap ng mga bagong artikulo. Upang gawin ito, gumamit ako ng diagram ng BPMN, na ginawa kong larawan at nakuha ko ito: Proyekto ng Java mula A hanggang Z. Pagpaplano ng proyekto: sukatin ng pitong beses - gupitin nang isang beses - 4Ang lahat dito ay mas nababasa at naiintindihan. Kami ay gagana ayon sa pamamaraan na ito sa paghahanap. Talagang gusto ng mga tagapamahala ang pamamaraang ito, dahil ito ay naiintindihan hindi lamang sa mga programmer: D Sa pangkalahatan, ang isang pagsisimula ay ginawa.

Gumawa ng repository para sa trabaho

Sa wakas, maaari kang lumikha ng isang imbakan para sa pagtatrabaho sa isang telegram bot.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Pinupuno namin ang mga item na pamilyar na sa amin - ang pangalan ng repositoryo, ang maikling paglalarawan nito.
  2. Magdagdag ng lisensya - Apache 2.0 (maaari mong piliin ang lisensya sa iyong paghuhusga).
  3. Available na ang aming proyekto - narito ang link dito: JavaRush Telegrambot .

Lumikha ng isang proyekto sa repositoryo

Upang gumana sa proyekto, makabubuting gumamit ng mga tool sa GitHub, tulad ng proyekto. Ano ito? Ito ay isang lugar kung saan maaari kang lumikha ng mga gawain, subaybayan ang kanilang pagkumpleto, at i-save ang katayuan ng gawain. Tukuyin kung sino ang magsasagawa ng mga ito at higit pa. Upang gawin ito, sa nilikha na proyekto ay makikita namin ang pindutan ng Mga Proyekto , at doon ay gagawa kami ng bago: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Tulad ng nakikita mo, dito ko ipinahiwatig ang pangalan ng proyekto, inilarawan ito at pinili ang template kung saan kami gagana - Automated Kanban. Para sa amin ngayon ay hindi gaanong mahalaga kung ano ang ibig sabihin nito. Ang pangunahing bagay ay magkakaroon tayo ng isang board na may mga gawain, na nahahati sa mga haligi, kung saan ang bawat haligi ay magiging katayuan ng gawain:
  1. Gawin - lahat ng mga gawain na nakaplanong gawin;
  2. Kasalukuyang ginagawa - mga gawain na kasalukuyang ginagawa;
  3. Tapos na - mga gawain na natapos na sa loob ng proyektong ito.
Sa ganitong paraan malalaman natin ang kalagayan ng ating mga gawain. Alin ang nasa progreso, alin ang tapos na. Bukod dito, ito ay mahalaga at maginhawa hindi lamang sa mga kaso kung saan mayroong isang koponan, kundi pati na rin kapag nagtatrabaho ka sa iyong sarili. Para may lumabas sa board, kailangan mong gumawa ng Mga Isyu.

Mga isyu sa pagsulat (isyu) para sa proyekto

Upang maunawaan kung anong mga gawain ang isusulat, magpasya tayo kung ano ang mayroon tayo sa proyekto. Kailangan namin ng isang application na madaling ilunsad at mabilis, para ma-access namin ang database, para mapamahalaan at mabago namin ang database schema, para makagawa kami ng REST request sa JavaRush para makakuha ng data sa mga artikulo. Batay dito, maaari mong piliin ang mga sumusunod na teknolohiya:
  • SpringBoot - bilang isang balangkas para sa aming aplikasyon,
  • Spring Data - para sa pagtatrabaho sa isang database,
  • Flyway - para sa pagtatrabaho sa mga paglilipat ng database,
  • MySQL - bilang isang database para sa proyekto,
  • Telegrambot StringBoot starter - isang library para sa pagtatrabaho sa isang telegram bot,
  • Ang Unirest ay isang library para sa pagtatrabaho sa mga kahilingan sa REST.
Mula sa lahat ng nasa itaas, simulan natin ang paggawa ng mga gawain.

Template ng paggawa ng gawain

Gagawa kami ng mga gawain gamit ang sumusunod na template:
  1. Ang pangalan ng gawain ay magiging ganito: JRTB-{IssueNumber}:{IssueDescription} , kung saan:
    • Ang {IssueNumber} ay ang serial number ng isyu. Dalhin natin ito ng isa pa mula sa huling problema;
    • {IssueDescription} - isang maikling paglalarawan ng isyu.
  2. Sa katawan ng gawain ay gagawa kami ng mas detalyadong paglalarawan nito (kung minsan ay maaaring magkasabay ito sa paglalarawan sa pangalan ng gawain).
  3. Ang Pamantayan sa Pagtanggap ay isang listahan ng mga kinakailangan, pagkatapos nito ay maituturing na natapos ang gawain. Kung gayon, ang pamantayan sa pagtanggap ng gawain. Gamit ang mga ito, mauunawaan ng isang tagasuri (mula sa tagasuri sa Ingles - tagasuri - isang taong tumitingin kung paano natapos ang isang gawain) kung ang gawain ay ganap na natapos o hindi.
Gamit ang template na ito, gagawa kami ng aming unang gawain: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Dapat ding tandaan na kapag nililikha ito, natukoy ko kaagad kung aling proyekto ang angkop para sa gawaing ito, kung sino ang gagawa nito (assignee) at kung aling label (label) ang gawaing ito. Susunod, ipapakita ko lang ang mga pangalan ng mga gawain na may maliit na paglalarawan at mga link sa kanila. Nandito silang lahat . Gagawin namin ang mga gawain sa humigit-kumulang sa parehong pagkakasunud-sunod tulad ng ipinahiwatig dito:
  1. [FEATURE] JRTB-0: lumikha ng Skeleton Spring boot project - malinaw ang lahat dito: kailangan mong gawin ang unang bahagi ng ginawa namin sa nakaraang artikulo.
  2. [FEATURE] JRTB-2: magdagdag ng telegram bot sa proyekto - magdagdag ng walang laman na bot na sasagot lang at magsasabing ito ay buhay at maayos.
  3. [FEATURE] JRTB-3: Ipatupad ang Command pattern para sa telegrambot - i-set up natin ang tamang diskarte sa pagtatrabaho sa mga command sa isang telegram bot. Sa ngayon para sa ilang mga koponan.
  4. [FEATURE] JRTB-1: Magdagdag ng repository layer - isa ito sa pinakamalalaking gawain - pinagsasama nito ang lahat ng kailangang gawin para gumana sa database.
  5. [FEATURE] JRTB-5: Bilang isang user, gusto kong idagdag ang grupo sa subscription - ito na ang unang User Story sa Agile understanding. Magiging tunay na benepisyo ito para sa aming mga user: posibleng magdagdag ng mga subscription ng grupo sa bot.
  6. [FEATURE] JRTB-12: Ipatupad ang pag-iskedyul para sa pagpapadala ng abiso tungkol sa mga bagong artikulo - narito ang pagpapatupad ng paghahanap ng mga bagong artikulo kung na-publish ang mga ito para sa bawat isa sa mga pangkat at ipinadala sa lahat ng mga user na naka-subscribe sa mga grupo.
  7. [FEATURE] JRTB-6: Bilang isang user, gusto kong makita ang listahan ng aking mga subscription sa grupo - simple ang lahat dito: nagdaragdag kami ng command na nagpapakita ng listahan ng lahat ng grupo kung saan naka-subscribe ang user.
  8. [FEATURE] JRTB-7: Bilang isang User, gusto kong alisin ang subscription ng grupo sa aking mga subscription - dito kailangan mong alisin ang subscription ng user sa mga update sa grupo.
  9. [FEATURE] JRTB-8: Bilang isang User, gusto kong magtakda ng hindi aktibo gamit ang bot - ipatupad ang paghinto sa bot. Ibig sabihin, lahat ng kailangang gawin sa ating system para matigil ang trabaho. Idagdag ang /stop command sa pagproseso.
  10. [FEATURE] JRTB-9: Bilang isang User, gusto kong magsimulang magtrabaho kasama ang bot O itakdang aktibo kung ginamit ko ito dati - magdagdag ng pagpoproseso ng command na /start. Eksakto sa paraang gusto natin.
  11. [FEATURE] JRTB-10: Bilang isang administrator, gusto kong makita ang mga istatistika ng bot - paggawa ng isang koleksyon ng mga istatistika ng bot. Pagdaragdag ng mga kakayahan ng administrator.
  12. [FEATURE] JRTB-11: Bilang isang user, gusto kong makakita ng dokumentasyon para sa telegram bot na ito - pagsulat ng dokumentasyon. Oo, oo, mga kaibigan, hindi ka mabubuhay kung wala ito, at kapag mas maaga mong natutunan na gawin ito, mas mabuti ito para sa iyo))
Ito ay mukhang simula na ng proyekto. Kaya nga magsalita, nagtrabaho kami bilang isang arkitekto ng proyekto at analyst ng negosyo.

Pagpuno sa repositoryo

Ano pa ang kailangang gawin BAGO tayo magsimulang mag-coding? - Author, ilan sa mga talatang ito ang maidadagdag mo, hinuhugot mo ba sila sa bangin?? — Hindi, ang kalidad ng trabaho ay ipinapakita sa mga detalye. At sila ang may katuturan. Kaya't magdagdag tayo ng isa pang detalye. Upang ang proyekto ay maging popular at naiintindihan ng iba pang mga developer, kailangan itong punan. Ano ang dapat kong idagdag? Inilarawan ko ang isang kumpletong listahan ng kung ano ang maaaring gawin sa artikulong Pag-optimize ng trabaho sa iyong mga proyekto sa GitHub: pagkilala sa Github Template Repository . Lubos kong inirerekumenda na basahin ito. Mahalagang magkaroon tayo ng malinaw na bersyon, isang malinaw na pag-unawa sa ating ginagawa. Samakatuwid, nagdagdag ako ng RELEASE_NOTES file kung saan ire-record ang mga pagbabago sa aming proyekto. Bilang halimbawa, maaari mong tingnan ang RELEASE_NOTES mula sa aking proyekto (oo, bakit hindi ipakita kung ano ang pinaglalaanan ko ng aking lakas at pagkamalikhain). Ang mga pagbabago para sa bawat bagong bersyon ay inilarawan doon. Nagdagdag din ako ng mga template para sa paglikha ng mga bagong gawain, na mayroong 4 na pagpipilian:
  • Ang Ulat ng Bug ay isang gawain na ginawa ng mga user/tester na nakahanap ng bug sa kanilang trabaho. Ito ay isang napakahalagang bagay: nakakatulong ito na pamahalaan ang mga pag-aayos ng bug;
  • Ang kahilingan sa tampok ay isang gawain upang magdagdag ng bagong pagpapagana. Ang lahat ng mga unang gawain sa proyekto ay mga gawain sa paghiling ng tampok;
  • Kahilingan sa pagpapabuti - isang gawain upang mapabuti ang pagpapatakbo ng application. Halimbawa, upang baguhin ang mga sagot sa pagsubok kapag nagtatrabaho sa isang bot. Hindi ako isang teknikal na manunulat at makakaisip ako ng hindi ganap na tamang mga sagot. Kaya kung ikaw ay may pagnanais at kakayahan, ialay mo :)
  • Ang tanong ay isang tanong para sa mga developer tungkol sa pagpapatakbo ng application. Isang napaka-kapaki-pakinabang na bagay. Sabihin nating walang pag-unawa sa trabaho o may mga pagdududa tungkol sa ilang tanong - maaari kang magtanong sa ganitong paraan at makakuha ng sagot nang direkta.
Kung titingnan mo ang GitHub, magiging ganito ang hitsura nito: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Kasalukuyan din kaming may dokumento sa pagtatrabaho sa JavaRush API para sa pakikipagtulungan sa mga grupo.

Anong susunod?

Well, kinukumpleto namin ang lahat ng mga hakbang na ito at ano, ang proyekto ay isasara? Hindi, hindi naman. Ang proyektong ito ay patuloy na mabubuhay. Ito ay bubuuin ko at ng lahat ng mga mag-aaral/nagtapos ng JavaRush na gustong makilahok. Ano ang iyong mga plano para sa hinaharap? Marami sa kanila. Ang pinakaunang plano ay ang lumikha ng Java client para sa JavaRush API. Nangako ang mga developer na gagawing bukas ang kanilang pag-access sa Swagger. Titingnan din natin kung ano ang swagger. Cool at napaka-kapaki-pakinabang na bagay. Susunod na isasama namin ang JavaRush site sa isang telegram bot. Ikonekta natin ang user sa bot para i-synchronize ang mga subscription. Gumawa tayo ng mga istatistika sa pagkumpleto ng kurso. At lahat ng gusto mo bilang isang JavaRush Community.

mga konklusyon

Ngayon ay pinag-usapan namin ang tungkol sa mga behind the scenes na trabaho bago ang paglikha ng proyekto. Mas tiyak, tungkol sa kung paano lumikha ng isang plano sa trabaho, kung wala ito maaari kang mag-aksaya ng maraming enerhiya. Uulitin ko, ang simula ng proyekto ay ginawang available sa publiko dito . Gaya ng dati, iminumungkahi kong mag-subscribe ka sa aking account sa Github. Sa ganitong paraan maaari kang makatanggap ng mga pagbabago sa proyekto BAGO ma-publish ang artikulo. Ipinapalagay ko na na ang lahat ng mga interesadong partido ay nakarehistro sa Github. Oo, ang proyekto ay hindi gumagalaw nang kasing bilis ng gusto namin. Gayunpaman, tulad ng mga tunay na proyekto sa trabaho. Sa susunod na artikulo ay ilalarawan ko ang pagdaragdag ng mga unang gawain. Salamat sa lahat para sa pagbabasa at makita ka sa lalong madaling panahon!

Ang isang listahan ng lahat ng mga materyales sa serye ay nasa simula ng artikulong ito.

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