Gut die ganze Tageszeit. Es war an der Zeit, über das Entwerfen von Projekten zu sprechen. Aus eigener Erfahrung weiß ich, dass es manchmal schwieriger ist, ein Projekt von Grund auf neu zu erstellen, als das aufzuräumen, was bereits vorhanden ist. Dies ist größtenteils auf das Erbe zurückzuführen, das Sie oder Sie hinterlassen. In diesem Artikel werde ich versuchen, Ihnen zu sagen, worauf es sich zu konzentrieren lohnt, und einen kurzen Plan für die Befolgung vorschlagen.
Verständnis des Projekts
Bevor Sie etwas planen, müssen Sie verstehen, welches Projekt Sie implementieren müssen. Für mich selbst habe ich verschiedene Kategorien von Projekten identifiziert, wie zum Beispiel:
- Ein einmaliges Handwerk ist ein Projekt, das darauf abzielt, ein grafisches Konzept zu erstellen und es an Investoren weiterzuverkaufen. Besondere Merkmale dieser Art von Projekt sind:
- Wahnsinnige Dokumentation. Die Grundidee ist klar, aber Geschäftsfälle sind in völligem Chaos und es gibt keine logischen Lücken, die berücksichtigt werden müssen.
- Fristen. Bis zu 3 Monate vom Schreiben der Dokumentation bis zum Prototyp.
- Es gibt keine Entwicklungspläne und es ist keine weitere Unterstützung geplant.
- Kleines Team. Normalerweise bis zu 5 Personen, einschließlich Designer.
- Fehlende Geschäftsprozesse. Jede Interaktion ist chaotisch, basierend auf zwischenmenschlicher Kommunikation, Klärung der wichtigsten Punkte und / oder Erfinden unterwegs.
- Rollen sind verschwommen. Es gibt keine klare Aufteilung der Befugnisse und Verantwortungsbereiche.
- Keine echten Daten. Alle Daten werden für „Schönheit“ generiert und auf die beste Anzeige zugeschnitten.
- Um die Entwicklung zu beschleunigen, werden externe Abhängigkeiten vollständig genutzt.
- Ein Startup ist ein Projekt, das so konfiguriert ist, dass es eine bestimmte Idee mit anschließender Entwicklung umsetzt. In der Regel werden diese Projekte nach einem Spiralmodell entwickelt und weisen aus diesem Grund fast die gleichen Besonderheiten auf wie der erste Typ (Einmalfahrzeug):
- Klare Aufteilung in Stufen. Minimum: Begriffe und eine Liste von Funktionen, die in einem bestimmten Zeitraum implementiert werden müssen.
- Relativ vernünftige Dokumentation. Während des Sprints werden Analysen durchgeführt, Benchmarks für die abgeschlossenen Abschlussphasen festgelegt und häufig Verbesserungen vorgenommen. Meistens Wasserfall benutzen, obwohl Agile behauptet.
- Durchschnittliche Fristen für die Hauptfunktionalität. Im Durchschnitt von 6 bis 12 Monaten.
- In der Anfangsphase werden externe Abhängigkeiten verwendet, die sich schließlich in ihre eigene Implementierung ändern.
- Kleines Team. Normalerweise bis zu 7-10 Personen.
- Es gibt eine Rollentrennung, aber die Verantwortung ist verschwommen.
- Ein Projekt kann mutieren. In einer Phase kann sich das Konzept oder der Ansatz zur Implementierung ändern. In der Regel ist dies auf die Anforderungen der Anleger, eine zunächst gescheiterte Idee oder Fehler in der Architektur zurückzuführen.
- Bedingt lebende Daten. Ausführen in Fokusgruppen oder Parsen von Live-Daten aus Ressourcen von Drittanbietern. Das passiert zwar nicht immer ...
- Ein Informationssystem ist ein Projekt, das eine Idee mit Plänen für die Integration in Dienste von Drittanbietern umsetzt.
- Es gibt einen Entwicklungsplan.
- Klar geschriebene Dokumentation. Minimum: API-Beschreibung dokumentiert.
- Möglicherweise müssen Sie Dienste von Drittanbietern integrieren, Krücken installieren oder Teile des Systems neu erstellen.
- Es gibt Zwischenversionen, Hotfixes.
- Mittleres Team. Normalerweise 10 bis 20-30 Personen.
- Klare Aufgabentrennung.
- Sicherheitsanforderungen: Nach der Analyse werden Fälle erstellt, die zum Zusammenbruch des Systems führen können.
- Die Zeit wird dem Testen gewidmet.
- Wird von Agile verwendet.
- Es gibt fast immer einen Rückstand.
- Es werden nur externe Abhängigkeiten verwendet, deren Implementierung selbst teuer ist. Es wird auf Augenhöhe mit proprietären praktiziert.
- Ein geschlossenes System ist ein umfangreiches Projekt, das auf die spezifischen Bedürfnisse des Kunden zugeschnitten ist und weiter verfeinert wird.
- Spezifischer Kunde.
- Es gibt einen Entwicklungsplan.
- Konstruktionsdokumentation für die Entwicklung. Um den Benutzern zu helfen, wurde auf Wunsch des Kunden eine separate Dokumentation erstellt.
- Differenzierung von Benutzerrechten.
- Es gibt fast immer einen Rückstand.
- Die Teamgröße ist normalerweise größer als der Durchschnitt. In der Regel von 10 Personen bis zu einem Verlust der Herzfrequenz.
- Wird von Agile verwendet. Von Zeit zu Zeit kommen zusätzliche Aufgaben hinzu, die um jeden Preis umgesetzt werden müssen.
- Unerwartete Demonstrationen. Anforderungen werden auf Anfrage der Geschäftsleitung gestellt, sodass eine funktionsfähige Testschaltung niemals redundant wird.
- Die Saas-Lösung ist ein umfangreiches Projekt mit flexibler Konfiguration und weiterer Anpassung für einen bestimmten Kunden.
- Multimodulares System. Das System ist in mehrere Teile unterteilt. Welche individuell verwendet werden können, auch außerhalb des Rahmens eines bestimmten Projekts.
- Klare Planung. Minimum: Die Arbeitskosten werden für die Implementierung von Funktionen geschätzt. Die Zeit für Modernisierung und Umgestaltung ist gelegt.
- Volumetrische Dokumentation. In der Regel wird fast alles beschrieben, auch Testfälle.
- In der Regel gibt es keine externen Abhängigkeiten und es werden eigene Implementierungen der Systemteile geschrieben. Auch wenn es Implementierungen von Drittanbietern gibt.
- Mehrere Entwicklungsteams. Jeder ist für seinen Teil der Entwicklung verantwortlich, sei es Backing oder Front.
- Testen Sie die Abdeckung von allem und jedem. Auto-, Einheiten-, Regressions- und Integrationstests werden verwendet.
Alle Abstufungen sind bedingt und fließende Typen werden am häufigsten gefunden. Ich möchte darauf hinweisen, dass alle Typen ineinander mutieren können. Die einzige Nuance sind die Kosten für die Modernisierung. Zum Beispiel war das Projekt ursprünglich ein „einmaliges Handwerk“ und entwickelte sich dann zu einem „geschlossenen System“. Normalerweise führt dies zu einer vollständigen oder fast vollständigen Neufassung des Systems oder seiner Umgestaltung. Wie Sie wissen, ist dies wirtschaftlich nicht machbar. Aus dem gleichen Grund ist es ratsam zu verstehen, welche Art von Projekt Sie von Grund auf neu erstellen müssen, und zu versuchen, das zukünftige Schicksal zu bestimmen.
Um die Art des Projekts zu bestimmen, habe ich im Folgenden Fragen gestellt und eine Antwort erhalten, auf die Ihnen klar wird, was sie von Ihnen wollen:
- Der Zweck des Projekts?
- Eine vollständige Liste der zu implementierenden Elemente?
- Gibt es Unterlagen?
- Was sind die Fristen? Genaue Daten sind wünschenswert.
- Ist eine externe Interaktion mit Systemen von Drittanbietern geplant oder verfügt das Projekt über eine externe API
- Gibt es irgendwelche Entwicklungen?
- Teamgröße?
- Wer ist für was verantwortlich? Wer setzt Aufgaben, wer akzeptiert, wer hat Vetorechte.
- Gibt es Entwicklungspläne und was sind sie?
- Wer ist der Kunde?
- Gibt es ein Budget für den Kauf schlüsselfertiger Lösungen?
- An welcher Methodik möchten Sie arbeiten?
- Gibt es Analoga?
Wie Sie sehen können, ist die Liste nicht so groß. Aus einem unbekannten Grund stellen jedoch nur wenige Menschen solche Fragen, bevor sie anfangen, etwas zu tun. Sie fragen, warum ich die Art des Projekts verstehen soll ?! Sie müssen das Projekt immer für immer leben lassen ?! Im Großen und Ganzen haben Sie Recht, aber es gibt Nuancen, wie in einem dampfenden Witz. Diese Nuancen sind Ressourcen und Zeitpläne. Vergessen Sie nicht, dass wir zum Wohle des Geschäfts arbeiten und die Aufgaben ausführen. Wenn Sie die Art des Projekts kennen, können Sie etwas ohne Gewissensbisse opfern, um Ihre Ziele zu erreichen.
Technologieauswahl
Bei der Wahl ist es besser, sich an die Regel zu halten: Die Technologie sollte keine Supernova sein, sondern auch veraltet. Wenn die Technologie oder das Framework neu ist, kann dies zu Problemen führen wie:
- Suchen Sie nach qualifiziertem Personal
- Entwicklungsperspektiven: In den frühen Stadien kann die Entwicklung absterben, oder umgekehrt, wenn die Technologie alt ist, müssen die Fehler selbst behandelt werden.
- Fehlende schlüsselfertige Lösungen für neue und fehlende Updates für alte.
Diese Liste von Problemen ist nicht nur für die Technologie relevant, sondern auch für Abhängigkeiten von Drittanbietern. All dies kann das Projekt im Keim begraben.
Überlegen Sie sich einige Male, bevor Sie sich für etwas Bestimmtes entscheiden. Erstellen Sie eine berüchtigte Tabelle mit Vorteilen mit wichtigen Faktoren für das Projekt.
Dieses Beispiel ist für ein fiktives Projekt:
Der Name der Projektfunktionalität.
| Projektbedeutungsverhältnis
|
---|
Mit Formularen arbeiten
| 3
|
Routing
| 1
|
Einfaches Schreiben von Animationen
| 0,3
|
Wie aus der Tabelle hervorgeht, sind die wichtigen Auswahlkriterien „Mit Formularen arbeiten“ und „Weiterleiten“. Die Einfachheit der Erstellung von Animationen für dieses Projekt ist nicht wesentlich. Als Nächstes werden wir die Tabelle durch Hinzufügen neuer Technologiespalten aktualisieren. In unserem Fall wird es zwei geben.
Der Name der Projektfunktionalität.
| Projektbedeutungsverhältnis
| Technologie 1
| Technologie 2
|
---|
Mit Formularen arbeiten
| 3
| +
| ±
|
Routing
| 1
| +
| ±
|
Einfaches Schreiben von Animationen
| 0,3
| +
| - -
|
Basierend auf den Daten in der Tabelle verstehen wir, dass die „Technologie 2“ -Arbeit mit Formularen und Routing lahm ist und das Erstellen einer Animation dem Anrufen von Satan gleicht. Infolgedessen beträgt das spezifische Gewicht dieser Technologie 2. Sie fragen, warum 2? Alles ist einfach! Wenn Sie ± einstellen, implementieren wir in dieser Technologie eine bestimmte Funktion, jedoch mit einer Art „Krücke“ oder arbeitsintensiver. In unserem Vergleich wird „Technologie 1“ mit insgesamt 4,3 rentabler sein. Ich halte die Erklärung zur Bildung der Beträge für unnötig. Diese Tabelle funktioniert nicht nur mit Technologie, sondern mit allem, was einen Vergleich und eine Auswahl aus der Liste erfordert. Die Hauptsache ist nicht zu vergessen, dass es für Sie umso einfacher ist, eine Wahl zu treffen, je mehr Kriterien Sie schreiben.
Architektur
Derzeit ist es möglich, aus einer Vielzahl verschiedener Dienste auszuwählen, die Werkzeuge für die architektonische Gestaltung bereitstellen. Zwar hat jeder von ihnen Nachteile, für einige sind sie kritisch, für jemanden jedoch nicht. Da ich "oldfag" bin, bevorzuge ich ein Stück Papier und einen Stift oder eine Tafel und einen Marker.
Um zu verstehen, was zuerst zu greifen ist, müssen Sie die Hauptteile des Systems skizzieren und dann den Weg zum Erstellen der Architektur auswählen. In der Praxis werden in der Regel nur drei verwendet:
Absteigend - Entwickler pushen von großen Knoten des Systems und gehen zu kleineren. Die Bedeutung der Architektur besteht darin, dass die Prioritätskomponenten große Knoten sind, die kleinere enthalten.
Aufsteigend - Entwickler pushen von kleinen Teilen zu größeren. Die Bedeutung von Architektur ist, dass zunächst viele kleine Komponenten erstellt werden und größere bereits daraus zusammengesetzt werden.
Monolith ist eine unteilbare Architektur, die oft als „Vermächtnis“ bezeichnet wird. Tatsächlich handelt es sich um eine starre Struktur, deren Änderung Lösungen ohne „Krücken“ erfordert. Dies ist die schlechteste Option, aber wie alles in unserer Welt hat sie das Recht zu existieren. Der Monolith wird verwendet, um bestimmte Funktionen zu implementieren, und plant nicht, sie in Zukunft zu warten. Im Vergleich zu anderen ist die Geschwindigkeit dieses Ansatzes um ein Vielfaches höher. Nun, nur weil Sie Ihre Augen vor vielem schließen können.
Die Wahl der Architektur hängt von den Zielen des Projekts und der Entwicklungsgeschwindigkeit ab. Normalerweise wird die erste Methode verwendet, wenn die Fristen nicht abgelaufen sind und die Anzahl der großen Module gering ist. Sein Merkmal ist, dass es möglich ist, die Beziehung zwischen bestimmten Modulen genau darzustellen. Von den Minuspunkten kann ich eine lange Entwicklungszeit feststellen, die mit einer Abfolge von Aktionen verbunden ist.
Die zweite Methode wird bevorzugt, wenn eine hohe Entwicklungsgeschwindigkeit erforderlich ist und die Architektur der obersten Ebene nicht verstanden wird. Ein Merkmal sind die vielen kleinen Komponenten, die manchmal in verschiedenen großen Einheiten verwendet werden. Es ist erwähnenswert, dass fast die gesamte Entwicklung parallel durchgeführt werden kann, ohne Rücksicht auf andere Aufgaben. Die Nachteile dieses Ansatzes sind Komponenten, die die Anforderungen der übergeordneten Architektur nicht erfüllen, und dementsprechend müssen sie neu geschrieben werden oder die Möglichkeit der Anpassung schaffen.
Wie die Praxis zeigt, werden alle Entwicklungstechniken auf einen spiralförmigen Ansatz reduziert, der durch einen schrittweisen Aufbau der Funktionalität gekennzeichnet ist. Ich halte es nicht für angemessen, es im Rahmen dieses Artikels zu betrachten.
Planung
Die sogenannte „Road Map“ hilft Ihnen dabei, Ihre Arbeit effizienter zu erledigen. Tatsächlich handelt es sich hierbei um einen Zeitplan mit bedingten Fristen für die Bereitstellung einer bestimmten Funktion. Termine können verschoben werden, aber wie die Praxis zeigt, wird die Änderung bei ordnungsgemäßer Umsetzung der oben genannten Punkte bis zu 30% betragen. In der Praxis sind dies normalerweise 10-15%. Durch die Planung können Sie den Projektfortschritt verfolgen, ein Absacken feststellen, Anpassungen in Form von Ressourcen oder eine Verschiebung von Fristen usw. vornehmen.
Dafür werden sie sich später bei Ihnen bedanken
Jedes Projekt beginnt mit der Dokumentation, und je mehr es ist, desto besser! Seien Sie also nicht faul - wir dokumentieren ALLES. Ja, es wird einige Zeit dauern, aber anschließend kann es Sie vor dem Zorn der Führung bewahren, wenn etwas schief geht, nicht Ihre Schuld. Vergessen Sie auch nicht, dass nach dem Erscheinen im Projekt Personen verstehen müssen, was Sie erstellt haben. Und ohne Dokumente wird dies nicht einfach sein.
Schlussfolgerungen
Dieser Artikel beschreibt, wie Sie handeln und worauf Sie beim Starten eines Projekts achten müssen. Diese Stufen sind universell für vorne, hinten, zum Testen oder für alle zusammen. Ich habe die Besonderheiten der Technologie bewusst vermieden, um nicht irreführend zu sein.
Wenn Sie die Wahl haben, welchen Technologie-Stack Sie verwenden möchten, welche Architektur Sie verwenden möchten und den Zeitrahmen für das Projekt festlegen müssen, kann Ihnen die folgende Tabelle helfen:
Projekttyp / Funktionen
| Einwegfahrzeug
| Start
| Informationssysteme
| Geschlossene Systeme
| Saas-Lösungen
| Einige andere Projekte
|
---|
Anzahl der Personen unter 5 Jahren
| | X.
| X.
| X.
| X.
| |
Anzahl der Personen von 7 bis 10
| | | | | | |
Anzahl der Personen von 10 bis 30
| X.
| | | | | |
Menge über 30
| X.
| X.
| | | | |
Fertigstellung bis zu 3 Monaten
| | X.
| X.
| X.
| X.
| |
Lieferzeit von 6 bis 12 Monaten
| | | | | | |
Zeitraum mehr als 12 Monate
| X.
| | | | | |
Die Dokumentation
| | | | | | |
Integrationsanforderungen mit anderen Systemen
| | | | | | |
Spezifischer Kunde bekannt
| | | | | | |
Weitere Unterstützung geplant
| | | | | | |
Planung
| | | | | | |
Die Rollen sind klar abgegrenzt
| | | | | | |
Externe Abhängigkeiten erlaubt
| | | | | | |
Es gibt Live-Daten zum Testen und Analysieren.
| | | | | | |
Sicherheitsanforderungen
| | | | | | |
Testen erforderlich
| | | | | | |
Erfordert Produktdokumentation oder Anleitung
| | | | | | |
Modulare Implementierung erforderlich
| | | | | | |
Mehrere Entwicklungsteams
| | | | | | |
Insgesamt
| | | | | | |
Wie man die Tabelle benutzt, hat wohl jeder schon erraten, aber nur für den Fall - genau das gleiche wie beim vorherigen, nur mit einem kleinen Zusatz in Form von gefüllten Zellen. Dies bedeutet, dass der Wert für dieses Projekt nicht verwendet werden kann. Beachten Sie außerdem, dass die Tabelle möglicherweise unvollständig ist. Fügen Sie die Zeilen hinzu, die Sie für erforderlich halten.