JavaRush /Java Blog /Random-IT /Pianificazione del progetto: misurare due volte - tagliar...
Roman Beekeeper
Livello 35

Pianificazione del progetto: misurare due volte - tagliare una volta - "Progetto Java dalla A alla Z"

Pubblicato nel gruppo Random-IT
Saluti, colleghi. Oggi parleremo del tipo di lavoro di preparazione che devi fare prima di iniziare a programmare in modo sfrenato. Più specificamente, sulla pianificazione e creazione di un'architettura applicativa. Progetto Java dalla A alla Z. Pianificazione del progetto: misurare sette volte - tagliare una volta - 1Ma da dove cominciare? Come costruire questa architettura? Come per ogni cosa, è necessario iniziare dall'inizio. Vale a dire - con IDEA. L'idea del nostro progetto era quella di creare un utile bot di Telegram con funzionalità di base. Ripetiamo esattamente cosa: "Io, come utente, voglio poter ricevere notifiche quando vengono pubblicati nuovi articoli in quei gruppi su JavaRush che mi interessano." Seguendo il principio YAGNI, costruiremo la nostra applicazione. Ciò significa che prenderemo solo ciò di cui abbiamo bisogno. Non creeremo funzionalità in anticipo e in riserva solo perché lo vogliamo e un giorno potrebbe tornare utile. Sì, creeremo un'applicazione leggibile ed estensibile, ma questo non significa che creeremo uno schema di database “per la crescita”. Per non assecondare questa “crescita”, ho deciso che sarebbe stato meglio abbandonarla del tutto. Questo ci aiuterà a evitare supporto non necessario durante lo sviluppo e test non necessari. Successivamente, quando il nostro progetto andrà in produzione (sempre un anglicismo, dall'abbreviazione prod - produzione), potremo fare qualcosa in più. Una volta che hai deciso un'idea, devi diventare un po' birichino e disegnare. Cosa disegnare? Avremo bisogno della possibilità di salvare i dati sugli abbonamenti a gruppi di utenti diversi. So che puoi utilizzare un ID utente sotto forma di ID chat in Telegram. E c'è un'idea di come procederà effettivamente la ricerca di nuovi articoli: cercheremo nuovi articoli in tutti i gruppi che hanno abbonamenti e li invieremo alle chat. Su questa base otteniamo in prima approssimazione (qui lo sviluppo senza abbellimenti): Progetto Java dalla A alla Z. Pianificazione del progetto: misurare sette volte - tagliare una volta - 2Non spero che capirai la mia calligrafia: voglio mostrare esattamente come e dove inizia lo sviluppo. La prima fase è stata completata: in qualche modo abbiamo deciso cosa accadrà. I modelli/tabelle nel database sono descritti sopra. Ma questa è una bozza: può e deve essere rifinita e portata in una forma più leggibile. Mentre rifinivo, mi sono ricordato che volevo anche ottenere statistiche sul lavoro del bot. Aggiunto questo. In questo disegno è più che chiaro cosa e come sarà disposto. Cioè, quali tabelle e campi saranno al loro interno, quali nomi di entità saranno per le tabelle. È stato deciso che ce ne sarebbero stati diversi:
  • Utente: informazioni sull'utente di Telegram che utilizzerà il nostro bot. Come puoi vedere, salviamo solo l'ID della chat e il flag se l'utente è attivo o meno. Perché? Perché il nostro obiettivo non è raccogliere informazioni sugli utenti, ma avvantaggiarli;
  • GroupSub: qui saranno presenti le informazioni sul gruppo a cui sei iscritto e l'ultimo articolo inviato agli abbonati;
  • Statistiche: non ho creato uno schema per questo, lo faremo più tardi. Questo non è l'obiettivo principale nell'MVP del progetto.
Progetto Java dalla A alla Z. Pianificazione del progetto: misurare sette volte - tagliare una volta - 3Successivamente, volevo mostrare più in dettaglio come cercare nuovi articoli. Per fare ciò, ho utilizzato un diagramma BPMN, che ho convertito in un'immagine e ho ottenuto questo: Progetto Java dalla A alla Z. Pianificazione del progetto: misurare sette volte - tagliare una volta - 4qui tutto è più leggibile e comprensibile. Lavoreremo secondo questo schema nella ricerca. Ai manager piace molto questo schema, perché è comprensibile non solo per i programmatori :D In generale, è stato fatto un inizio.

Creare un repository per il lavoro

Infine, puoi creare un repository per lavorare con un bot di Telegram.Progetto Java dalla A alla Z. Pianificazione del progetto: misura sette volte - taglia una volta - 5
  1. Compiliamo gli elementi che ci sono già familiari: il nome del repository, la sua breve descrizione.
  2. Aggiungi una licenza - Apache 2.0 (puoi scegliere la licenza a tua discrezione).
  3. Il nostro progetto è ora disponibile: ecco il collegamento: JavaRush Telegrambot .

Crea un progetto nel repository

Per lavorare con il progetto, sarebbe utile utilizzare gli strumenti GitHub, come project. Cos'è? Questo è un luogo in cui puoi creare attività, monitorarne il completamento e salvare lo stato delle attività. Determinare chi li eseguirà e altro ancora. Per fare ciò, nel progetto creato troveremo il pulsante Progetti , e lì ne creeremo uno nuovo: Progetto Java dalla A alla Z. Pianificazione del progetto: misura sette volte - taglia una volta - 6Come puoi vedere, qui ho indicato il nome del progetto, lo ho descritto e selezionato il template su cui lavoreremo - Kanban automatizzato. Per noi ora non è così importante cosa significhi. La cosa principale è che avremo una bacheca con le attività, divisa in colonne, dove ogni colonna sarà lo stato dell'attività:
  1. Da fare: tutte le attività che si prevede di svolgere;
  2. In corso: attività su cui si sta attualmente lavorando;
  3. Fatto: attività che sono già state completate all'interno di questo progetto.
In questo modo conosceremo lo stato dei nostri compiti. Quali sono in corso, quali sono già state completate. Inoltre, questo è importante e conveniente non solo nei casi in cui è presente una squadra, ma anche quando lavori da solo. Affinché qualcosa appaia sul tabellone, devi creare problemi.

Scriviamo problemi (problemi) per il progetto

Per capire quali compiti scrivere, decidiamo cosa avremo nel progetto. Abbiamo bisogno di un'applicazione che possa essere lanciata facilmente e velocemente, in modo da poter accedere al database, in modo da poter gestire e modificare lo schema del database, in modo da poter effettuare richieste REST in JavaRush per ottenere dati sugli articoli. In base a ciò, puoi scegliere le seguenti tecnologie:
  • SpringBoot: come framework per la nostra applicazione,
  • Spring Data: per lavorare con un database,
  • Flyway: per lavorare con le migrazioni dei database,
  • MySQL - come database per il progetto,
  • Telegrambot StringBoot Starter: una libreria per lavorare con un bot di Telegram,
  • Unirest è una libreria per lavorare con richieste REST.
Da tutto quanto sopra, iniziamo a creare attività.

Modello di creazione dell'attività

Creeremo attività utilizzando il seguente modello:
  1. Il nome dell'attività sarà simile a questo: JRTB-{IssueNumber}:{IssueDescription} , dove:
    • {IssueNumber} è il numero di serie del problema. Prendiamone un altro dall'ultimo problema;
    • {IssueDescription}: una breve descrizione del problema.
  2. Nel corpo dell'attività ne faremo una descrizione più dettagliata (a volte potrebbe coincidere con la descrizione nel nome dell'attività).
  3. I criteri di accettazione sono un elenco di requisiti, dopo i quali l'attività può essere considerata completata. Per così dire, i criteri per accettare l'incarico. Usandoli, un revisore (dall'inglese reviewer - revisore - una persona che guarda come viene completata un'attività) può capire se l'attività è completamente completata o meno.
Utilizzando questo modello, creeremo la nostra prima attività: Progetto Java dalla A alla Z. Pianificazione del progetto: misura sette volte - taglia una volta - 7Vale anche la pena notare che durante la creazione, ho immediatamente determinato a quale progetto questa attività era adatta, chi l'avrebbe eseguita (assegnatario) e a quale etichetta (etichetta) apparteneva questa attività. Successivamente, mostrerò semplicemente i nomi delle attività con una piccola descrizione e i collegamenti ad esse. Sono tutti qui . Eseguiremo le attività approssimativamente nello stesso ordine indicato qui:
  1. [FEATURE] JRTB-0: crea il progetto di avvio Skeleton Spring - qui è tutto chiaro: devi fare la prima parte di ciò che abbiamo fatto nell'articolo precedente.
  2. [CARATTERISTICA] JRTB-2: aggiungi il bot di Telegram al progetto - aggiungi un bot vuoto che risponderà semplicemente e dirà che è vivo e vegeto.
  3. [CARATTERISTICA] JRTB-3: Implementa il modello di comando per telegrambot : impostiamo l'approccio corretto per lavorare con i comandi in un bot di telegram. Finora per diverse squadre.
  4. [CARATTERISTICA] JRTB-1: Aggiungi il livello repository - questo è uno dei compiti più grandi - combina tutto ciò che è necessario fare per lavorare con il database.
  5. [CARATTERISTICA] JRTB-5: Come utente, voglio aggiungere il gruppo all'abbonamento : questa è già la prima User Story nella comprensione Agile. Questo sarà un vero vantaggio per i nostri utenti: sarà possibile aggiungere iscrizioni di gruppo al bot.
  6. [CARATTERISTICA] JRTB-12: Implementare la pianificazione per l'invio di notifiche sui nuovi articoli : qui verrà implementata la ricerca di nuovi articoli se vengono pubblicati per ciascuno dei gruppi e inviati a tutti gli utenti iscritti ai gruppi.
  7. [CARATTERISTICA] JRTB-6: Come utente, voglio vedere l'elenco delle mie iscrizioni ai gruppi : qui tutto è semplice: aggiungiamo un comando che visualizza un elenco di tutti i gruppi a cui è iscritto l'utente.
  8. [CARATTERISTICA] JRTB-7: Come utente, desidero rimuovere l'abbonamento al gruppo dai miei abbonamenti : qui devi implementare la rimozione dell'abbonamento dell'utente agli aggiornamenti nel gruppo.
  9. [CARATTERISTICA] JRTB-8: Come utente, desidero disattivare l'utilizzo del bot : implementare l'arresto del bot. Cioè, tutto ciò che deve essere fatto nel nostro sistema affinché il lavoro si fermi. Aggiungi il comando /stop all'elaborazione.
  10. [CARATTERISTICA] JRTB-9: Come utente, desidero iniziare a lavorare con il bot OPPURE impostarlo come attivo se l'ho usato in precedenza : aggiungere l'elaborazione del comando /start. Esattamente come lo vogliamo.
  11. [CARATTERISTICA] JRTB-10: come amministratore, desidero visualizzare le statistiche dei bot , creando una raccolta di statistiche dei bot. Aggiunta di funzionalità di amministratore.
  12. [CARATTERISTICA] JRTB-11: Come utente, desidero vedere la documentazione per questo bot di Telegram : scrivere documentazione. Sì, sì, amici, non potete farne a meno, e prima imparerete a farlo, meglio sarà per voi))
Sembra già l'inizio del progetto. Per così dire, abbiamo lavorato come architetto di progetto e analista aziendale.

Compilazione del repository

Cos'altro deve essere fatto PRIMA di iniziare a scrivere codice? - Autore, quanti di questi paragrafi puoi aggiungere, li stai tirando fuori dall'abisso?? — No, la qualità del lavoro si vede nei dettagli. E sono loro che hanno senso. Aggiungiamo allora un ulteriore dettaglio. Affinché il progetto diventi popolare e comprensibile per gli altri sviluppatori, è necessario compilarlo. Cosa dovrei aggiungere? Ho descritto un elenco completo di ciò che è possibile fare nell'articolo Ottimizzare il lavoro con i tuoi progetti su GitHub: conoscere Github Template Repository . Consiglio vivamente di leggerlo. È importante per noi avere una visione chiara, una chiara comprensione di ciò che stiamo facendo. Pertanto, ho aggiunto un file RELEASE_NOTES in cui verranno registrate le modifiche al nostro progetto. Ad esempio, puoi guardare RELEASE_NOTES dal mio progetto (sì, perché non mostrare in cosa metto la mia energia e creatività). Qui vengono descritte le modifiche per ogni nuova versione. Ho anche aggiunto modelli per la creazione di nuove attività, che hanno 4 opzioni:
  • Bug Report è un'attività creata da utenti/tester che trovano un bug nel loro lavoro. Questa è una cosa molto importante: aiuta a gestire le correzioni dei bug;
  • Una richiesta di funzionalità è un'attività per aggiungere nuove funzionalità. Tutte le prime attività del progetto sono attività di richiesta di funzionalità;
  • Richiesta di miglioramento : un'attività per migliorare il funzionamento dell'applicazione. Ad esempio, per modificare le risposte del test quando si lavora con un bot. Non sono uno scrittore tecnico e posso fornire risposte non del tutto corrette. Quindi se hai il desiderio e la capacità, offrilo :)
  • La domanda è una domanda rivolta agli sviluppatori sul funzionamento dell'applicazione. Una cosa molto utile. Diciamo che non si capisce il lavoro o ci sono dubbi su qualche domanda: puoi porre una domanda in questo modo e ottenere una risposta di prima mano.
Se guardi GitHub, sarà esattamente così: Progetto Java dalla A alla Z. Pianificazione del progetto: misura sette volte - taglia una volta - 8Al momento abbiamo anche un documento su come lavorare con l'API JavaRush per lavorare con i gruppi.

Qual è il prossimo?

Bene, completiamo tutti questi passaggi e cosa, il progetto verrà chiuso? No, per niente. Questo progetto continuerà a vivere. Sarà sviluppato da me e da tutti gli studenti/laureati JavaRush che vorranno prenderne parte. Quali sono i tuoi piani per il futuro? Molti di loro. Il primo piano è creare un client Java per l'API JavaRush. Gli sviluppatori hanno promesso di rendere il loro Swagger ad accesso aperto. Vedremo anche cos'è una spavalderia. Una cosa bella e molto utile. Successivamente integreremo il sito JavaRush con un bot di Telegram. Colleghiamo l'utente al bot per sincronizzare gli abbonamenti. Creiamo statistiche sul completamento del corso. E tutto ciò che desideri come comunità JavaRush.

conclusioni

Oggi abbiamo parlato del lavoro dietro le quinte prima della realizzazione del progetto. Più precisamente, su come creare un piano di lavoro, senza il quale si possono sprecare molte energie. Ripeto, l'inizio del progetto è già stato reso pubblico qui . Come al solito, ti suggerisco di iscriverti al mio account su Github. In questo modo potrai ricevere le modifiche al progetto PRIMA che l'articolo venga pubblicato. Presumo già che tutte le parti interessate si siano registrate su Github. Sì, il progetto non si sta muovendo così velocemente come vorremmo. Ma proprio come i veri progetti di lavoro. Nel prossimo articolo descriverò l'aggiunta delle prime attività. Grazie a tutti per aver letto e a presto!

Un elenco di tutti i materiali della serie si trova all'inizio di questo articolo.

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