JavaRush /Java-Blog /Random-DE /Projektplanung: zweimal messen – einmal schneiden – „Java...

Projektplanung: zweimal messen – einmal schneiden – „Java-Projekt von A bis Z“

Veröffentlicht in der Gruppe Random-DE
Grüße, Kollegen. Heute werden wir über die Art der Vorbereitungsarbeit sprechen, die Sie erledigen müssen, bevor Sie mit dem Codieren beginnen. Genauer gesagt geht es um die Planung und Erstellung einer Anwendungsarchitektur. Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 1Aber wo soll ich anfangen? Wie baut man diese Architektur auf? Wie bei allem müssen Sie von vorne beginnen. Nämlich – mit IDEA. Die Idee unseres Projekts bestand darin, einen nützlichen Telegram-Bot mit grundlegender Funktionalität zu erstellen. Wiederholen wir genau das: „Ich als Benutzer möchte Benachrichtigungen erhalten, wenn in den Gruppen auf JavaRush, die mich interessieren, neue Artikel veröffentlicht werden.“ Nach dem YAGNI-Prinzip werden wir unsere Anwendung erstellen. Das bedeutet, dass wir nur das mitnehmen, was wir brauchen. Wir werden keine Funktionalität im Voraus und in Reserve erstellen, nur weil wir es wollen und sie sich eines Tages tatsächlich als nützlich erweisen könnte. Ja, wir werden eine lesbare und erweiterbare Anwendung erstellen, aber das bedeutet nicht, dass wir ein Datenbankschema „für Wachstum“ erstellen werden. Um dieses „Wachstum“ nicht zu unterstützen, entschied ich, dass es besser wäre, ganz darauf zu verzichten. Dies hilft uns, unnötigen Support während der Entwicklung und unnötige Tests zu vermeiden. Später, wenn unser Projekt in Produktion geht (ebenfalls ein Anglizismus, von der Abkürzung prod – Produktion), werden wir in der Lage sein, noch etwas mehr zu tun. Sobald Sie sich für eine Idee entschieden haben, müssen Sie ein wenig frech werden und zeichnen. Was zeichnen? Wir benötigen die Möglichkeit, Daten zu Abonnements für Gruppen verschiedener Benutzer zu speichern. Ich weiß, dass man in Telegram eine Benutzer-ID in Form einer Chat-ID verwenden kann. Und es gibt eine Vorstellung davon, wie die Suche nach neuen Artikeln tatsächlich ablaufen wird: Wir werden in allen Gruppen, die Abonnements haben, nach neuen Artikeln suchen und diese an Chats senden. Daraus ergibt sich in erster Näherung Folgendes (hier die Entwicklung ohne Schnörkel): Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 2Ich hoffe nicht, dass Sie meine Handschrift verstehen: Ich möchte genau zeigen, wie und wo die Entwicklung beginnt. Die erste Phase ist abgeschlossen: Wir haben uns irgendwie entschieden, was passieren wird. Die Modelle/Tabellen in der Datenbank sind oben beschrieben. Aber das ist ein Entwurf: Er kann und sollte überarbeitet und in eine besser lesbare Form gebracht werden. Beim Polieren fiel mir ein, dass ich auch Statistiken über die Arbeit des Bots erhalten wollte. Dies wurde hinzugefügt. In dieser Zeichnung ist mehr als klar, was und wie es angeordnet wird. Das heißt, welche Tabellen und Felder darin enthalten sein werden und welche Entitätsnamen die Tabellen haben werden. Es wurde beschlossen, dass es mehrere davon geben würde:
  • Benutzer – Informationen über den Telegram-Benutzer, der unseren Bot verwenden wird. Wie Sie sehen, speichern wir nur die Chat-ID und die Markierung, ob der Benutzer aktiv ist oder nicht. Warum? Denn unser Ziel ist es nicht, Informationen über Benutzer zu sammeln, sondern ihnen zu helfen;
  • GroupSub – hier finden Sie Informationen über die Gruppe, für die Sie ein Abonnement haben, und den neuesten Artikel, der an Abonnenten gesendet wurde;
  • Statistiken – ich habe kein Schema dafür erstellt – das machen wir später. Dies ist nicht das Hauptziel im MVP des Projekts.
Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 3Danach wollte ich den Weg zur Suche nach neuen Artikeln genauer zeigen. Dazu habe ich ein BPMN-Diagramm verwendet, das ich in ein Bild umgewandelt habe und folgendes erhalten habe: Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 4Hier ist alles besser lesbar und verständlich. Nach diesem Schema werden wir bei der Suche vorgehen. Manager mögen dieses Schema sehr, weil es nicht nur für Programmierer verständlich ist :D Im Allgemeinen ist ein Anfang gemacht.

Erstellen Sie ein Repository für die Arbeit

Schließlich können Sie ein Repository für die Arbeit mit einem Telegram-Bot erstellen.Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 5
  1. Wir tragen die uns bereits bekannten Elemente ein – den Namen des Repositorys, seine Kurzbeschreibung.
  2. Fügen Sie eine Lizenz hinzu – Apache 2.0 (Sie können die Lizenz nach Ihrem Ermessen auswählen).
  3. Unser Projekt ist jetzt verfügbar – hier ist der Link dazu: JavaRush Telegrambot .

Erstellen Sie ein Projekt im Repository

Um mit dem Projekt zu arbeiten, wäre es gut, GitHub-Tools wie project zu verwenden. Was ist das? Hier können Sie Aufgaben erstellen, deren Abschluss verfolgen und den Aufgabenstatus speichern. Bestimmen Sie, wer sie ausführt und vieles mehr. Dazu finden wir im erstellten Projekt die Schaltfläche „Projekte“ und erstellen dort ein neues: Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 6Wie Sie sehen, habe ich hier den Namen des Projekts angegeben, es beschrieben und die Vorlage ausgewählt, an der wir arbeiten werden – Automatisiertes Kanban. Für uns ist es jetzt nicht so wichtig, was das bedeutet. Die Hauptsache ist, dass wir eine Tafel mit Aufgaben haben, die in Spalten unterteilt ist, wobei jede Spalte den Status der Aufgabe darstellt:
  1. Zu erledigen – alle Aufgaben, die erledigt werden sollen;
  2. In Bearbeitung – Aufgaben, an denen gerade gearbeitet wird;
  3. Erledigt – Aufgaben, die in diesem Projekt bereits erledigt wurden.
Auf diese Weise wissen wir über den Status unserer Aufgaben Bescheid. Welche sind in Bearbeitung, welche sind fertig. Darüber hinaus ist dies nicht nur im Team wichtig und praktisch, sondern auch, wenn Sie alleine arbeiten. Damit etwas auf der Pinnwand erscheint, müssen Sie Probleme erstellen.

Wir schreiben Issues (Issues) für das Projekt

Um zu verstehen, welche Aufgaben geschrieben werden sollen, entscheiden wir, was wir im Projekt haben wollen. Wir benötigen eine Anwendung, die einfach und schnell gestartet werden kann, damit wir auf die Datenbank zugreifen können, damit wir das Datenbankschema verwalten und ändern können, damit wir REST-Anfragen in JavaRush stellen können, um Daten zu Artikeln zu erhalten. Auf dieser Grundlage können Sie zwischen folgenden Technologien wählen:
  • SpringBoot – als Framework für unsere Anwendung,
  • Spring Data – für die Arbeit mit einer Datenbank,
  • Flyway – für die Arbeit mit Datenbankmigrationen,
  • MySQL – als Datenbank für das Projekt,
  • Telegrambot StringBoot Starter – eine Bibliothek für die Arbeit mit einem Telegram-Bot,
  • Unirest ist eine Bibliothek zum Arbeiten mit REST-Anfragen.
Beginnen wir mit der Erstellung von Aufgaben.

Vorlage zur Aufgabenerstellung

Wir erstellen Aufgaben anhand der folgenden Vorlage:
  1. Der Aufgabenname sieht folgendermaßen aus: JRTB-{IssueNumber}:{IssueDescription} , wobei:
    • {IssueNumber} ist die Seriennummer der Ausgabe. Nehmen wir noch einmal das letzte Problem.
    • {IssueDescription} – eine kurze Beschreibung des Problems.
  2. Im Hauptteil der Aufgabe werden wir sie ausführlicher beschreiben (manchmal kann es sein, dass sie mit der Beschreibung im Aufgabennamen übereinstimmt).
  3. Akzeptanzkriterien sind eine Liste von Anforderungen, nach deren Erfüllung die Aufgabe als abgeschlossen betrachtet werden kann. Sozusagen die Kriterien für die Annahme der Aufgabe. Mit ihnen kann ein Prüfer (vom englischen Reviewer – Reviewer – eine Person, die sich ansieht, wie eine Aufgabe erledigt wird) nachvollziehen, ob die Aufgabe vollständig erledigt ist oder nicht.
Anhand dieser Vorlage erstellen wir unsere erste Aufgabe: Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 7Bemerkenswert ist auch, dass ich bei der Erstellung sofort festgelegt habe, für welches Projekt diese Aufgabe geeignet ist, wer sie ausführen wird (Beauftragter) und zu welchem ​​Label (Label) diese Aufgabe gehört. Als nächstes zeige ich einfach die Namen der Aufgaben mit einer kleinen Beschreibung und Links dazu. Sie sind alle hier . Wir werden die Aufgaben in etwa der hier angegebenen Reihenfolge ausführen:
  1. [FEATURE] JRTB-0: Skeleton Spring Boot-Projekt erstellen – hier ist alles klar: Sie müssen den ersten Teil dessen tun, was wir im vorherigen Artikel getan haben.
  2. [FEATURE] JRTB-2: Fügen Sie dem Projekt einen Telegram-Bot hinzu – fügen Sie einen leeren Bot hinzu, der einfach antwortet und sagt, dass es ihm gut geht.
  3. [FEATURE] JRTB-3: Befehlsmuster für Telegrambot implementieren – richten wir den richtigen Ansatz für die Arbeit mit Befehlen in einem Telegrambot ein. Bisher für mehrere Teams.
  4. [FEATURE] JRTB-1: Repository-Ebene hinzufügen – das ist eine der größten Aufgaben – sie vereint alles, was für die Arbeit mit der Datenbank getan werden muss.
  5. [FEATURE] JRTB-5: Als Benutzer möchte ich die Gruppe zum Abonnement hinzufügen – dies ist bereits die erste User Story im Agile-Verständnis. Dies wird ein echter Vorteil für unsere Benutzer sein: Es wird möglich sein, dem Bot Gruppenabonnements hinzuzufügen.
  6. [FEATURE] JRTB-12: Implementieren Sie die Planung für das Senden von Benachrichtigungen über neue Artikel . Hier wird die Suche nach neuen Artikeln implementiert, wenn diese für jede der Gruppen veröffentlicht und an alle Benutzer gesendet werden, die die Gruppen abonniert haben.
  7. [FEATURE] JRTB-6: Als Benutzer möchte ich eine Liste meiner Gruppenabonnements sehen – hier ist alles ganz einfach: Wir fügen einen Befehl hinzu, der eine Liste aller Gruppen anzeigt, bei denen der Benutzer abonniert ist.
  8. [FEATURE] JRTB-7: Als Benutzer möchte ich das Gruppenabonnement aus meinen Abonnements entfernen – hier müssen Sie das Abonnement des Benutzers für Updates in der Gruppe entfernen.
  9. [FEATURE] JRTB-8: Als Benutzer möchte ich den Bot inaktiv setzen – implementieren, um den Bot zu stoppen. Das heißt, alles, was in unserem System getan werden muss, damit die Arbeit zum Stillstand kommt. Fügen Sie den Befehl /stop zur Verarbeitung hinzu.
  10. [FUNKTION] JRTB-9: Als Benutzer möchte ich mit der Arbeit mit dem Bot beginnen ODER ihn aktivieren, wenn ich ihn zuvor verwendet habe – Verarbeitung des /start-Befehls hinzufügen. Genau so, wie wir es wollen.
  11. [FEATURE] JRTB-10: Als Administrator möchte ich Bot-Statistiken sehen und eine Sammlung von Bot-Statistiken erstellen. Hinzufügen von Administratorfunktionen.
  12. [FEATURE] JRTB-11: Als Benutzer möchte ich die Dokumentation für diesen Telegram-Bot sehen – Dokumentation schreiben. Ja, ja, Freunde, ohne sie könnt ihr nicht leben, und je früher ihr das lernt, desto besser wird es für euch sein))
Dies sieht bereits nach dem Beginn des Projekts aus. Wir waren sozusagen als Projektarchitekt und Business-Analyst tätig.

Ausfüllen des Repositorys

Was muss noch getan werden, BEVOR wir mit dem Codieren beginnen? - Autor, wie viele dieser Absätze können Sie hinzufügen? Ziehen Sie sie aus dem Abgrund? — Nein, die Qualität der Arbeit zeigt sich im Detail. Und sie sind diejenigen, die Sinn ergeben. Fügen wir also noch ein Detail hinzu. Damit das Projekt für andere Entwickler beliebt und verständlich wird, muss es ausgefüllt werden. Was soll ich hinzufügen? Eine vollständige Liste dessen, was getan werden kann, habe ich im Artikel Optimieren der Arbeit mit Ihren Projekten auf GitHub: Kennenlernen des Github Template Repository beschrieben . Ich empfehle dringend, es zu lesen. Für uns ist eine klare Versionierung wichtig, ein klares Verständnis dessen, was wir tun. Deshalb habe ich eine RELEASE_NOTES-Datei hinzugefügt, in der Änderungen an unserem Projekt aufgezeichnet werden. Als Beispiel können Sie sich RELEASE_NOTES aus meinem Projekt ansehen (ja, warum nicht zeigen, in was ich meine Energie und Kreativität gesteckt habe). Dort sind die Änderungen für jede neue Version beschrieben. Ich habe auch Vorlagen zum Erstellen neuer Aufgaben hinzugefügt, die vier Optionen bieten:
  • Bug Report ist eine Aufgabe, die von Benutzern/Testern erstellt wird, die einen Fehler in ihrer Arbeit finden. Das ist eine sehr wichtige Sache: Es hilft bei der Verwaltung von Fehlerbehebungen;
  • Eine Funktionsanfrage ist eine Aufgabe zum Hinzufügen neuer Funktionen. Alle ersten Aufgaben im Projekt sind Funktionsanforderungsaufgaben.
  • Verbesserungsanfrage – eine Aufgabe zur Verbesserung der Funktionsweise der Anwendung. Zum Beispiel, um Testantworten bei der Arbeit mit einem Bot zu ändern. Ich bin kein technischer Redakteur und kann nicht ganz richtige Antworten finden. Wenn Sie also den Wunsch und die Fähigkeit haben, bieten Sie es an :)
  • Bei der Frage handelt es sich um eine Frage an die Entwickler zur Funktionsweise der Anwendung. Eine sehr nützliche Sache. Nehmen wir an, es besteht kein Verständnis für die Arbeit oder es bestehen Zweifel an einer Frage – auf diese Weise können Sie eine Frage stellen und eine Antwort aus erster Hand erhalten.
Schaut man sich den GitHub an, sieht das genau so aus: Java-Projekt von A bis Z. Projektplanung: sieben Mal messen – einmal schneiden – 8Wir haben aktuell auch ein Dokument zum Arbeiten mit der JavaRush API für die Arbeit mit Gruppen.

Was weiter?

Nun, wir haben alle diese Schritte abgeschlossen und was, das Projekt wird abgeschlossen? Nein überhaupt nicht. Dieses Projekt wird weiterleben. Es wird von mir und allen JavaRush-Studenten/Absolventen entwickelt, die teilnehmen möchten. Was sind deine Pläne für die Zukunft? Es gibt viele davon. Der allererste Plan besteht darin, einen Java-Client für die JavaRush-API zu erstellen. Die Entwickler versprachen, ihren Swagger Open Access zu machen. Wir werden uns auch ansehen, was ein Swagger ist. Coole und sehr nützliche Sache. Als nächstes werden wir die JavaRush-Site mit einem Telegram-Bot integrieren. Verbinden wir den Benutzer mit dem Bot, um Abonnements zu synchronisieren. Lassen Sie uns Statistiken zum Kursabschluss erstellen. Und alles, was Sie als JavaRush-Community wollen.

Schlussfolgerungen

Heute haben wir über die Arbeit hinter den Kulissen vor der Erstellung des Projekts gesprochen. Genauer gesagt, wie man einen Arbeitsplan erstellt, ohne den man viel Energie verschwenden kann. Ich wiederhole, der Beginn des Projekts wurde hier bereits öffentlich zugänglich gemacht . Wie üblich empfehle ich Ihnen, mein Konto auf Github zu abonnieren. Auf diese Weise können Sie Änderungen am Projekt erhalten, BEVOR der Artikel veröffentlicht wird. Ich gehe bereits davon aus, dass sich alle Interessenten auf Github registriert haben. Ja, das Projekt geht nicht so schnell voran, wie wir es gerne hätten. Allerdings genau wie echte Projekte bei der Arbeit. Im nächsten Artikel beschreibe ich das Hinzufügen der ersten Aufgaben. Vielen Dank an alle fürs Lesen und bis bald!

Eine Liste aller Materialien der Serie finden Sie am Anfang dieses Artikels.

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