JavaRush /Java Blogu /Random-AZ /Layihənin planlaşdırılması: iki dəfə ölçün - bir dəfə kəs...
Roman Beekeeper
Səviyyə

Layihənin planlaşdırılması: iki dəfə ölçün - bir dəfə kəsin - "A-dan Z-yə Java layihəsi"

Qrupda dərc edilmişdir
Salam, həmkarlar. Bu gün biz çılğın kodlaşdırmaya başlamazdan əvvəl etməli olduğunuz hazırlıq işləri haqqında danışacağıq. Daha dəqiq desək, proqram arxitekturasının planlaşdırılması və yaradılması haqqında. A-dan Z-yə Java layihəsi. Layihənin planlaşdırılması: yeddi dəfə ölçün - bir dəfə kəsin - 1Bəs haradan başlamaq lazımdır? Bu memarlığı necə qurmaq olar? Hər şeydə olduğu kimi, əvvəldən başlamaq lazımdır. Məhz - IDEA ilə. Layihəmizin ideyası əsas funksionallığı olan faydalı teleqram bot yaratmaq idi. Gəlin dəqiq nəyi təkrarlayaq: “Mən bir istifadəçi kimi məni maraqlandıran JavaRush qruplarında yeni məqalələr dərc edildikdə bildirişlər almaq istəyirəm.” YAGNI prinsipinə əsasən, biz tətbiqimizi quracağıq. Bu o deməkdir ki, biz ancaq ehtiyacımız olanı alacağıq. İstədiyimizə görə əvvəlcədən və ehtiyatda funksionallıq yaratmayacağıq və nə vaxtsa o, həqiqətən faydalı ola bilər. Bəli, biz oxuna bilən və genişləndirilə bilən bir proqram yaradacağıq, lakin bu, "böyümək üçün" verilənlər bazası sxemini yaradacağımız anlamına gəlmir. Bu “artım”ı dəstəkləməmək üçün qərara gəldim ki, ondan tamamilə imtina etmək daha yaxşıdır. Bu, inkişaf zamanı lazımsız dəstəkdən və lazımsız sınaqlardan qaçmağa kömək edəcək. Daha sonra, layihəmiz istehsala keçəndə (yenə bir Anglisizm, prod abbreviaturasından - istehsal) daha çox şey edə biləcəyik. Bir fikrə qərar verdikdən sonra, bir az yaramazlıq etmək və çəkmək lazımdır . Nə çəkmək lazımdır? Fərqli istifadəçi qruplarına abunəliklər haqqında məlumat saxlamaq imkanına ehtiyacımız olacaq. Bilirəm ki, Telegram-da chat ID şəklində istifadəçi ID-dən istifadə edə bilərsiniz. Və yeni məqalələrin axtarışının əslində necə davam edəcəyi barədə bir fikir var: biz yeni məqalələrə abunə olan bütün qruplarda axtarış aparacağıq və onları söhbətlərə göndərəcəyik. Buna əsaslanaraq, ilk təqribi olaraq aşağıdakıları əldə edirik (bəzəksiz inkişaf budur): A-dan Z-yə Java layihəsi. Layihənin planlaşdırılması: yeddi dəfə ölçün - bir dəfə kəsin - 2Ümid etmirəm ki, mənim əl yazımı başa düşəcəksiniz: inkişafın necə və haradan başladığını dəqiq göstərmək istəyirəm. Birinci mərhələ başa çatdı: nə olacağına birtəhər qərar verdik. Verilənlər bazasındakı modellər/cədvəllər yuxarıda təsvir edilmişdir. Ancaq bu bir qaralamadır: onu cilalamaq və daha oxunaqlı bir forma gətirmək olar və edilməlidir. Cilalayarkən yadıma düşdü ki, mən də botun işi ilə bağlı statistika əldə etmək istəyirəm. Bunu əlavə etdi. Bu rəsmdə nəyin və necə qurulacağı daha aydındır. Yəni onlarda hansı cədvəllər və sahələr olacaq, cədvəllər üçün hansı obyekt adları olacaq. Onlardan bir neçəsinin olacağı qərara alındı:
  • İstifadəçi - botumuzdan istifadə edəcək teleqram istifadəçisi haqqında məlumat. Gördüyünüz kimi, istifadəçinin aktiv olub-olmamasından asılı olmayaraq biz yalnız söhbət ID-sini və bayrağı saxlayırıq. Niyə? Çünki bizim məqsədimiz istifadəçilər haqqında məlumat toplamaq deyil, onlara fayda verməkdir;
  • GroupSub - burada abunə olduğunuz qrup və abunəçilərə göndərilmiş ən son məqalə haqqında məlumat olacaq;
  • Statistika - Mən bunun üçün sxem yaratmamışam - bunu sonra edəcəyik. Layihənin MVP-də əsas məqsəd bu deyil.
A-dan Z-yə Java layihəsi. Layihənin planlaşdırılması: yeddi dəfə ölçün - bir dəfə kəsin - 3Bundan sonra yeni məqalələr axtarmağın yolunu daha ətraflı göstərmək istədim. Bunu etmək üçün BPMN diaqramından istifadə etdim, onu şəkilə çevirdim və bunu əldə etdim: A-dan Z-yə Java layihəsi. Layihənin planlaşdırılması: yeddi dəfə ölçün - bir dəfə kəsin - 4Burada hər şey daha oxunaqlı və başa düşüləndir. Axtarışda bu sxemə uyğun işləyəcəyik. Menecerlər bu sxemi çox bəyənirlər, çünki bu, təkcə proqramçılar üçün başa düşülən deyil :D Ümumiyyətlə, bir başlanğıc edilib.

İş üçün bir anbar yaradın

Nəhayət, teleqram botu ilə işləmək üçün repozitoriya yarada bilərsiniz.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. Bizə artıq tanış olan maddələri - deponun adını, onun qısa təsvirini doldururuq.
  2. Lisenziya əlavə edin - Apache 2.0 (siz öz istəyinizlə lisenziyanı seçə bilərsiniz).
  3. Layihəmiz artıq əlçatandır - burada ona keçid var: JavaRush Telegrambot .

Repozitoriyada bir layihə yaradın

Layihə ilə işləmək üçün layihə kimi GitHub alətlərindən istifadə etmək yaxşı olardı. Bu nədir? Bu, tapşırıqlar yarada, onların tamamlanmasını izləyə və tapşırıq statusunu saxlaya biləcəyiniz yerdir. Onları kimin həyata keçirəcəyini və daha çoxunu müəyyənləşdirin. Bunu etmək üçün yaradılmış layihədə biz Layihələr düyməsini tapacağıq və orada yenisini yaradacağıq: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6Gördüyünüz kimi, burada layihənin adını qeyd etdim, təsvir etdim və işləyəcəyimiz şablonu seçdim - Avtomatlaşdırılmış Kanban. İndi bizim üçün bunun nə demək olduğu o qədər də vacib deyil. Əsas odur ki, sütunlara bölünmüş tapşırıqları olan bir lövhəmiz olacaq, burada hər bir sütun tapşırığın statusu olacaq:
  1. Ediləcək - görülməsi planlaşdırılan bütün tapşırıqlar;
  2. Davam edir - hazırda üzərində işlənilən vəzifələr;
  3. Tamamlandı - bu layihə çərçivəsində artıq tamamlanmış vəzifələr.
Beləliklə, vəzifələrimizin vəziyyətini öyrənəcəyik. Hansıları gedir, hansıları edilir. Üstəlik, bu, təkcə komandanın olduğu hallarda deyil, həm də təkbaşına işlədiyiniz zaman vacib və rahatdır. Lövhədə nəyinsə görünməsi üçün siz Problemlər yaratmalısınız.

Layihə üçün məsələlər (məsələlər) yazırıq

Hansı tapşırıqları yazacağımızı başa düşmək üçün layihədə nələrə sahib olacağımıza qərar verək. Bizə asanlıqla və tez işə salına bilən proqram lazımdır ki, verilənlər bazasına daxil ola bilək, verilənlər bazası sxemini idarə edə və dəyişə bilək, məqalələr haqqında məlumat əldə etmək üçün JavaRush-da REST sorğuları edə bilək. Buna əsaslanaraq, aşağıdakı texnologiyaları seçə bilərsiniz:
  • SpringBoot - tətbiqimiz üçün bir çərçivə olaraq,
  • Spring Data - verilənlər bazası ilə işləmək üçün,
  • Flyway - verilənlər bazası miqrasiyaları ilə işləmək üçün,
  • MySQL - layihə üçün verilənlər bazası kimi,
  • Telegrambot StringBoot starter - telegram botu ilə işləmək üçün kitabxana,
  • Unirest REST sorğuları ilə işləmək üçün kitabxanadır.
Yuxarıda göstərilənlərin hamısından tapşırıqlar yaratmağa başlayaq.

Tapşırıq yaratmaq şablonu

Aşağıdakı şablondan istifadə edərək tapşırıqlar yaradacağıq:
  1. Tapşırıq adı belə görünəcək: JRTB-{IssueNumber}:{IssueDescription} , burada:
    • {IssueNumber} məsələnin seriya nömrəsidir. Son məsələdən bir də götürək;
    • {IssueDescription} - məsələnin qısa təsviri.
  2. Tapşırığın mətnində biz onun daha ətraflı təsvirini verəcəyik (bəzən bu, tapşırıq adındakı təsvirlə üst-üstə düşə bilər).
  3. Qəbul meyarları tələblərin siyahısıdır, ondan sonra tapşırığı tamamlanmış hesab etmək olar. Belə desək, tapşırığı qəbul etmək üçün meyarlar. Onlardan istifadə edərək rəyçi (ingilis dilindən rəyçi - rəyçi - tapşırığın necə yerinə yetirilməsinə baxan şəxs) tapşırığın tam yerinə yetirilib-yetirilmədiyini anlaya bilər.
Bu şablondan istifadə edərək ilk tapşırığımızı yaradacağıq: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7Onu da qeyd etmək yerinə düşər ki, onu yaradan zaman mən bu tapşırığın hansı layihəyə uyğun olduğunu, onu kimin yerinə yetirəcəyini (təyin edilmiş şəxsə) və bu tapşırığın hansı etiketə (etiketə) aid olduğunu dərhal müəyyənləşdirmişəm. Sonra, mən sadəcə olaraq tapşırıqların adlarını kiçik təsviri və onlara keçidləri ilə göstərəcəyəm. Onların hamısı buradadır . Tapşırıqları burada göstərildiyi kimi təxminən eyni ardıcıllıqla yerinə yetirəcəyik:
  1. [XÜSUSİYYƏTLƏR] JRTB-0: Skeleton Spring açılış layihəsi yaradın - burada hər şey aydındır: əvvəlki məqalədə gördüyümüz işin birinci hissəsini etməlisiniz.
  2. [XÜSUSİYYƏTLƏR] JRTB-2: layihəyə teleqram bot əlavə edin - sadəcə cavab verəcək və onun canlı və yaxşı olduğunu söyləyəcək boş bir bot əlavə edin.
  3. [XÜSUSİYYƏTLƏR] JRTB-3: Telegrambot üçün Əmr nümunəsini tətbiq edin - gəlin teleqram botunda əmrlərlə işləmək üçün düzgün yanaşma quraq. İndiyə qədər bir neçə komanda üçün.
  4. [XÜSUSİYYƏTLƏR] JRTB-1: Repozitor təbəqəsi əlavə edin - bu, ən böyük vəzifələrdən biridir - verilənlər bazası ilə işləmək üçün görülməli olan hər şeyi özündə birləşdirir.
  5. [XÜSUSİYYƏTLƏR] JRTB-5: Bir istifadəçi olaraq, mən qrupu abunəliyə əlavə etmək istəyirəm - bu, artıq Çevik anlayışda ilk İstifadəçi Hekayəsidir. Bu, istifadəçilərimiz üçün əsl fayda olacaq: bota qrup abunəlikləri əlavə etmək mümkün olacaq.
  6. [XÜSUSİYYƏTLƏR] JRTB-12: Yeni məqalələr haqqında bildiriş göndərmək üçün planlaşdırmanı həyata keçirin - burada yeni məqalələr qrupların hər biri üçün dərc olunarsa və qruplara abunə olan bütün istifadəçilərə göndərilərsə, onların axtarışı həyata keçiriləcəkdir.
  7. [XÜSUSİYYƏTLƏR] JRTB-6: Bir istifadəçi kimi mən qrup abunələrimin siyahısını görmək istəyirəm - burada hər şey sadədir: biz istifadəçinin abunə olduğu bütün qrupların siyahısını göstərən əmr əlavə edirik.
  8. [XÜSUSİYYƏTLƏR] JRTB-7: İstifadəçi kimi mən qrup abunəliyini abunələrimdən silmək istəyirəm - burada siz istifadəçinin qrupdakı yeniləmələrə abunəliyini silməlisiniz.
  9. [XÜSUSİYYƏTLƏR] JRTB-8: İstifadəçi kimi mən botdan istifadə edərək qeyri-aktiv təyin etmək istəyirəm - botun dayandırılmasını həyata keçirin. Yəni işin dayanması üçün bizim sistemdə edilməsi lazım olan hər şey. Emal üçün / stop əmrini əlavə edin.
  10. [XÜSUSİYYƏTLƏR] JRTB-9: İstifadəçi kimi mən botla işə başlamaq və ya əvvəllər istifadə etmişəmsə, aktiv set ilə işləmək istəyirəm - /start əmrinin işlənməsini əlavə edin. Tam bizim istədiyimiz kimi.
  11. [XÜSUSİYYƏTLƏR] JRTB-10: Bir idarəçi kimi mən bot statistikasını görmək istəyirəm - bot statistikası toplusunu yaratmaq. Administrator imkanlarının əlavə edilməsi.
  12. [XÜSUSİYYƏTLƏR] JRTB-11: Bir istifadəçi kimi mən bu teleqram botu üçün sənədləri görmək istəyirəm - yazı sənədləri. Bəli, bəli, dostlar, onsuz yaşaya bilməzsiniz və bunu nə qədər tez öyrənsəniz, sizin üçün bir o qədər yaxşı olar))
Bu, artıq layihənin başlanğıcı kimi görünür. Belə desək, layihə memarı və biznes analitiki kimi çalışdıq.

Anbarın doldurulması

Kodlaşdırmaya başlamazdan əvvəl başqa nə etməliyik? - Müəllif, bu bəndlərdən neçəsini əlavə edə bilərsən, onları uçurumdan çıxarırsan?? — Xeyr, işin keyfiyyəti detallarda göstərilir. Və onlar məntiqli olanlardır. Beləliklə, daha bir detal əlavə edək. Layihənin populyar olması və digər tərtibatçılar üçün başa düşülməsi üçün onu doldurmaq lazımdır. Nə əlavə etməliyəm? GitHub-da layihələrinizlə işin optimallaşdırılması: Github Şablon Repository ilə tanışlıq məqaləsində nə edilə biləcəyinin tam siyahısını təsvir etdim . Onu oxumağı çox tövsiyə edirəm. Bizim üçün aydın versiyaya malik olmaq, nə etdiyimizi aydın başa düşmək vacibdir. Buna görə də, layihəmizə dəyişikliklərin qeydə alınacağı RELEASE_NOTES faylı əlavə etdim. Nümunə olaraq layihəmdən RELEASE_NOTES-ə baxa bilərsiniz (bəli, niyə enerjimi və yaradıcılığımı nəyə sərf etdiyimi göstərməyək). Hər yeni versiya üçün dəyişikliklər orada təsvir edilmişdir. Mən həmçinin 4 variantı olan yeni tapşırıqlar yaratmaq üçün şablonlar əlavə etdim:
  • Baq Hesabatı işlərində səhv tapan istifadəçilər/testçilər tərəfindən yaradılan tapşırıqdır. Bu, çox vacib bir şeydir: səhvlərin aradan qaldırılmasına kömək edir;
  • Xüsusiyyət sorğusu yeni funksionallıq əlavə etmək vəzifəsidir. Layihədəki bütün ilk tapşırıqlar xüsusiyyət sorğusu tapşırıqlarıdır;
  • Təkmilləşdirmə tələbi - tətbiqin işini yaxşılaşdırmaq üçün bir tapşırıq. Məsələn, botla işləyərkən test cavablarını dəyişmək. Mən texniki yazıçı deyiləm və tamamilə düzgün olmayan cavablar tapa bilərəm. Odur ki, istəyiniz və bacarığınız varsa, təklif edin :)
  • Sual proqramın işləməsi ilə bağlı tərtibatçılar üçün bir sualdır. Çox faydalı bir şey. Deyək ki, iş haqqında heç bir anlayış yoxdur və ya hansısa sualla bağlı şübhələr var - bu şəkildə sual verə və birinci əldən cavab ala bilərsiniz.
GitHub-a baxsanız, o, tam olaraq belə görünəcək: Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8Hazırda qruplarla işləmək üçün JavaRush API ilə işləmək haqqında sənədimiz də var.

Sonra nə var?

Yaxşı, bütün bu addımları tamamlayırıq və nə, layihə bağlanacaq? Xeyr, heç yox. Bu layihə yaşamağa davam edəcək. Onu mən və iştirak etmək istəyən bütün JavaRush tələbələri/məzunları hazırlayacağıq. Gələcək üçün planlarınız nədir? Onların bir çoxu. İlk plan JavaRush API üçün Java müştəri yaratmaqdır. Tərtibatçılar Swagger-ə açıq giriş imkanı verəcəklərini vəd etdilər. Biz həm də lovğalığın nə olduğuna baxacağıq. Sərin və çox faydalı bir şey. Sonra JavaRush saytını telegram botu ilə birləşdirəcəyik. Abunəlikləri sinxronlaşdırmaq üçün istifadəçini bota bağlayaq. Kursu bitirmə statistikasını yaradaq. JavaRush İcması olaraq istədiyiniz hər şey.

nəticələr

Bu gün biz layihənin yaradılmasından əvvəl pərdəarxası işlərdən danışdıq. Və ya daha doğrusu, iş planını necə yaratmaq barədə, onsuz çox enerji sərf edə bilərsiniz. Yenə deyirəm, layihənin başlanğıcı artıq burada ictimaiyyətə açıqlanıb . Həmişə olduğu kimi, Github-da hesabıma abunə olmağı təklif edirəm . Bu yolla siz məqalə dərc edilməmişdən ƏVVƏL layihədə dəyişikliklər ala bilərsiniz. Artıq bütün maraqlı tərəflərin Github-da qeydiyyatdan keçdiyini güman edirəm. Bəli, layihə istədiyimiz qədər sürətlə getmir. Ancaq işdəki real layihələr kimi. Növbəti məqalədə ilk tapşırıqların əlavə edilməsini təsvir edəcəyəm. Oxuduğunuz üçün hər kəsə təşəkkür edirəm və tezliklə görüşərik!

Serialdakı bütün materialların siyahısı bu məqalənin əvvəlindədir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION