it-swarm-eu.dev

Frontend zuerst oder Backend zuerst. Welches der beiden ist eine gute Praxis für das Systemdesign?

Ich habe gerade einen Kunden, der mich auffordert, ein Einschulungssystem zu entwickeln. Dies ist das erste Mal, dass ich diese Art von Herausforderung habe. Die meisten der früheren Software, die ich erstellt habe, sind nicht so komplex.

Ich weiß, dass fast alle von Ihnen komplexe Software erstellt haben. Ich möchte nur Ihren Rat dazu. Sollte ich zuerst das vordere oder hintere Ende entwerfen?

vielen Dank!

Hier ist eine Schlussfolgerung eines Artikels, den ich vor einiger Zeit im Internet gefunden habe. Ich möchte nur teilen

http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157

Front-End- und Back-End-Entwickler (meine Meinung)

Meine persönliche Einstellung

Wieder ist es eine Frage des Trainings, einige allgemeine Verallgemeinerungen von Schlaganfällen:

Frontend-Entwickler

  • Normalerweise haben Sie keinen CS-Abschluss oder einen CS-Abschluss von einer Schule der 3. Klasse.
  • Arbeiten Sie in Sprachen, die Basic ähneln (siehe PHP ist Basic)
  • Haben Sie visuelle Fähigkeiten beim Konvertieren von Photoshop-Dokumenten in CSS/HTML/etc.
  • Aufgrund typfreier Sprachen haben Sie eine hohe Toleranz für iterative Programmierung

Backend-Entwickler

  • Haben Sie einen CS-Abschluss oder viel Erfahrung
  • Neigen Sie zu mir systematischer in ihrem Problemlösungsansatz
  • Es macht nichts aus, Tage damit zu verbringen, das eine Objekt zu finden, das undicht ist
  • Versuchen Sie, Tools zu erstellen, um Probleme zu lösen
30
drexsien

Wenn Sie hinten anfangen und vorwärts gehen, laufen Sie Gefahr, den Kunden falsch zu verstehen. Da Sie Dinge erstellen, die sie nicht leicht sehen und verstehen können, können sie nicht leicht daran teilnehmen, zu überprüfen, ob Sie die Anforderungen erfüllen. Dies bedeutet, dass Sie möglicherweise viel Arbeit verschwenden.

Wenn Sie vorne beginnen und rückwärts gehen, laufen Sie Gefahr, dass der Kunde denkt, dass es fast fertig ist, wenn Sie nur ein einfaches Formular auf dem Bildschirm gezeichnet haben. Sie fragen sich dann vielleicht, warum es so lange dauert, da Sie es meistens in ein paar Tagen fertig hatten. Sie laufen auch Gefahr, sich in eine Ecke zu streichen, wenn Sie feststellen, dass Sie komplizierte Arbeiten ausführen müssen, um die Vorderseite mit der Rückseite zu verbinden, wenn ein geeigneteres Frontend einfacher gewesen wäre.

IMO, Sie sollten zuerst daran arbeiten. Schreiben Sie das vordere und hintere Ende für jede Funktion im System zusammen. Dies gibt dem Kunden eine bessere Sichtbarkeit des Fortschritts und gibt ihm die Möglichkeit, "Nein, das habe ich nicht gemeint" zu sagen, ohne Sie zu sehr zu belasten.

Wenn dies jedoch ein sehr großes Projekt ist, bei dem Sie die Serverhardware oder die Funktionen einer Software berücksichtigen müssen, auf die Sie sich verlassen (z. B. welche Datenbank Sie verwenden), sollten Sie wahrscheinlich zuerst über diesen Teil nachdenken.

42
Paul Butcher

Software hat viele Dimensionen, daher ist ein übermäßig vereinfachtes Front-vs-Back eine schlechte Frage und es ist sehr, sehr schwierig, eine vernünftige und nützliche Antwort darauf zu geben.

Eine Ansicht ist die statische Struktur der Daten. Diese Ansicht hat mindestens drei Dimensionen: Architekturebenen ("von vorne nach hinten"), Anwendungsfälle und Akteure sowie Kosten oder Risiken der Implementierung.

Eine Ansicht ist die dynamische Struktur der Verarbeitung. Diese Ansicht hat ebenfalls mindestens drei Dimensionen.

Eine dritte Ansicht sind die Architekturkomponenten, die auf natürliche Weise in Schichten fallen, Anwendungsfälle unterstützen und Kosten und Risiken aufweisen.

Ich könnte weitermachen, aber der Punkt ist der folgende.

Front-End- und Back-End-Entwickler (meine Meinung)

Ist ungefähr der am wenigsten nützliche Weg, um das Problem zu betrachten. Die tatsächlichen Entwickler - und Ihre Meinung dazu - spielen hier nur eine sehr geringe Rolle. Was zählt, ist

  • Anwendungsfälle und Akteure

  • Logisches Datenmodell zur Unterstützung dieser Anwendungsfälle

  • Prozess, der als Teil des Anwendungsfalls ausgeführt wird

  • Komponenten, mit denen Sie diese logischen und verarbeitenden Elemente des Anwendungsfalls erstellen.

Aus diesem Grund sagen die meisten Leute, dass Sie Ihr System nach User Story oder Anwendungsfall zerlegen müssen.

Machen Sie keine allgemeinen Verallgemeinerungen über Menschen, die sich weiterentwickeln werden.

9
S.Lott

Weder. Was muss Ihre App können? Stellen Sie sicher, dass das heiße Ventil heißes Wasser liefert, das kalte Ventil kaltes Wasser liefert, dass das Wasser an erster Stelle fließt, dass Sie die Rohre überall dort verlängern können, wo es benötigt wird, und sorgen Sie sich dann darum, dass alle Räume des Hauses tatsächlich installiert werden oder was das Haus will eigentlich genau so aussehen.

Das vordere Ende ist nur eine Maske mit einigen Schaltern und Hebeln. Das Back-End ist nur eine Sache, die Anforderungen zum Abrufen und Verarbeiten von Daten empfängt. Kommen Sie zu einem Punkt, an dem Sie beide schnell in jeder gewünschten Kombination implementieren können.

Aber was auch immer Sie tun, lassen Sie nicht zu, dass das Design des einen das Design des anderen bestimmt. Auf diese Weise liegt der Wahnsinn.

Stellen Sie die Tools bereit, mit denen Ihre Entwickler alles bauen können, was sie für Ihren Kunden benötigen, unabhängig davon, wie oft sie ihre Meinung ändern. Bauen Sie es dann nach den Spezifikationen und lösen Sie es erneut aus, bis die kleinen Flüche endlich glücklich sind.

Auch der Vergleich von Front-End-Entwicklern mit Back-End-Entwicklern im Jahr 2008 ist in Webjahren lange her. Zum Spaß möchte ich ein paar Dinge zu dieser alten Kastanie korrigieren/hinzufügen, da wir sie in der Frage verlinkt haben, aber auch (hoffentlich) ein paar Tipps darin einbetten:

Frontend-Entwickler

Normalerweise haben Sie keinen CS-Abschluss oder einen CS-Abschluss von einer Schule der 3. Klasse.

Handzeichen. Wie vielen Personen mit CS-Abschluss wurden am Frontend Best Practices beigebracht? Oder wie man kein Chaos mit JavaScript macht? Oder wie man CSS-Probleme von IE6-IE9 behandelt? Die Schulbuchbranche, in der Akademiker tätig sind, ist zu fett, faul und aufgebläht, um mit sich ständig verändernden Technologien umgehen zu können, so dass sie an Hochschulen nur sehr wenig „ernsthafte“ Aufmerksamkeit erhalten hat. Dies war hervorragend für Spätblüher wie mich.

Arbeiten Sie in Sprachen, die Basic ähneln (siehe PHP ist Basic)

Weil PHP ist clientseitige Technologie? Oder weil JavaScript, das hauptsächlich von Scheme inspiriert wurde, mehr mit Basic gemeinsam hat als Visual Basic, das jetzt im Front-End kein Problem mehr darstellt und nie mehr Der Blog vergleicht autodidaktische Open-Source-Webentwickler mit Webentwicklern mit CS-Abschluss, die zu diesem Zeitpunkt die von Unternehmen beliebte Technologie verwenden. Ich bin auf unerträgliche und kompetente Mitarbeiter gestoßen Aktien auf beiden Seiten dieses bestimmten Kampfes, aber er ist immer noch Weg OT dort.

Haben Sie visuelle Fähigkeiten beim Konvertieren von Photoshop-Dokumenten in CSS/HTML/etc.

Mehr Liebe zum Detail als "visuelle Fähigkeiten", die etwas breit sind. Nicht alle von uns haben irgendwelche ästhetischen Designfähigkeiten. Aber ja, die meisten von uns müssen dieses Zeug auf der Jr.-Ebene lernen und es ist tatsächlich sehr wichtig, eine gute Benutzeroberfläche zu schreiben, die keine JS-Hämmer verwendet, wenn CSS-Skalpelle ausreichen.

Haben Sie eine hohe Toleranz für iterative Programmierung aufgrund typfreier Sprachen

Aus diesem Grund möchten Sie die zuvor erwähnten Teile zuerst an Ort und Stelle haben. Wir geben die gedrückten Knöpfe weiter, Sie produzieren/holen die Ware ab. Wir verpacken und liefern sie. Es gibt keinen Grund, warum diese Dinge in irgendeiner Weise eng miteinander verbunden sind. Auch wirklich, striktes Tippen sollte einen iterativen Prozess nicht stören, wenn Sie nicht an OOP saugen), was die meisten Leute, die über eine Sprache hochmütig werden möchten, die technisch keinen Unterricht hat, tatsächlich tun Aber selbst wenn sie stinken, benötigt das Front-End nur einen vorhersehbaren Zugriffspunkt, und Sie können im Back-End alles tun, was Sie wollen, solange Sie nichts Dummes tun, wie dynamisch JavaScript zu schreiben, das nicht JSON ist oder binden Sie erfolgreiches Back-End-Verhalten fest an die HTML-Struktur, die "nur so" ist. * husten * Java devs */husten *

6
Erik Reppen

Darauf gibt es keine einzige richtige Antwort. Jeder Ansatz kann in bestimmten Situationen gut (und schlecht) sein.

Ich empfehle Ihnen, den TDD-Ansatz in Betracht zu ziehen, bei dem man von (Akzeptanz- und Einheits-) Tests geleitet wird.

Stellen Sie zunächst ein Grundgerüst des Systems zusammen: die Basisinfrastruktur mit der absoluten Mindestfunktionalität. Dies soll nur zeigen, dass Ihr Konzept funktioniert und die verschiedenen Komponenten zusammenarbeiten können. Dies beinhaltet auch eine Bare-Bones-Benutzeroberfläche (falls zutreffend), die gerade ausreicht, um tatsächlich etwas Minimales zu tun und/oder zu zeigen.

Dann konkretisieren Sie die Details Feature für Feature : Schreiben Sie einen Abnahmetest für ein bestimmtes Feature/Szenario, lassen Sie es fehlschlagen, und schreiben Sie dann Code, um es zu erfüllen . Dadurch können Sie von außen nach innen arbeiten : Das System empfängt eine Eingabenachricht. Sie müssen diese Nachricht also verarbeiten/konvertieren und dann etwas damit tun Weitergabe der Ergebnisse an die Benutzeroberfläche. Unterwegs entdecken Sie die Domänenkonzepte und stellen sie mit neuen Klassen dar, von der Benutzeroberfläche bis zur Domänenebene und zurück.

Für diesen Ansatz wird empfohlen, Wachsende objektorientierte Software, die von Tests geleitet wird .

5
Péter Török

API zuerst

Ingenieure beider Teams sollten an der API zwischen Front-End und Back-End zusammenarbeiten. Dann können beide Teams basierend auf der entworfenen API mit der Arbeit beginnen. Dies hat den Vorteil, dass neben dem offensichtlichen Vorteil, dass Teams parallel arbeiten können, auch ein anderes Front-End-Team mit der Arbeit beginnen kann (möglicherweise mobil, nach dem Web-Client).

Kombinieren Sie mit einem iterativen Ansatz und sollte so aussehen:

  1. Entwerfen Sie eine einfache API
  2. Beide Teams entwickeln und testen basierend auf der API
  3. Integrationstest
  4. Zeigen Sie dem Kunden und erhalten Sie Feedback.
  5. API erweitern und wiederholen.
1
m3th0dman

Beginnen Sie mit dem Frontend, aber warum können sie keine bereits vorhandene Anwendung finden? Dies würde mehr Einblick in dieses Projekt geben. Haben sie spezielle Anforderungen oder glauben sie, dass Sie billiger bauen können?

Machen Sie sich ein Bild von ihren Sicherheitserwartungen und den gesetzlichen Bestimmungen. Ich bin mir nicht sicher, um welche Art von Schule es sich handelt, aber die Informationen der Schüler erfordern normalerweise eine gewisse Vertraulichkeit.

Wenn die potenziellen Schüler die Daten auf einer Website eingeben, wird das grafische Design eher ein Problem sein.

Zeichnen Sie auf der Grundlage ihrer Anforderungen Modelle des Frontends. Wenn Sie der Meinung sind, dass die GUI nicht direkt vorwärts ist, müssen Sie möglicherweise etwas funktionsfähig machen, damit sie es in Aktion sehen können. Sie sehen die Registrierung möglicherweise als eine Art "Assistent", der je nach Dateneingabe in verschiedene Richtungen verzweigt.

Dann können Sie damit beginnen, Informationen in der Datenbank zu speichern.

0
JeffO

Erweitern Sie meinen Kommentar:

Sammeln Sie zuerst Anforderungen und wandeln Sie sie dann in Anwendungsfälle und Design um.

Zuerst kommt eine detaillierte Datenbankdefinition. Es ist mir egal, ob der Kunde es nicht vollständig versteht, ich zwinge ihn, sich zu setzen und es anzusehen - und es abzumelden (möglicherweise dann zu zwingen, zu erkennen, dass einer ihrer technisch versierteren Leute dies tun sollte ), bevor Sie fortfahren.

Wie kann man mit FE ohne BE beginnen? FE für was ??? Definieren Sie Ihre Datenbank! Das manipuliert die FE.

Ok, es wird Probleme und spätere Optimierungen geben, und ich do stimme zu, dass es gut ist, so schnell wie möglich eine einfache Beispiel-GUI vor dem Client zu erhalten, da diese bestimmte Spitze des Eisbergs am meisten ist die meisten verstehen.

I 1) Stress dass dies nur ein grobes Modell für Schweinswale ist, und 2) absichtlich es hässlich machen, aber funktional , damit diejenigen, die es nicht verstehen, nicht auswählen und mir sagen können, dass ich das Eingabefeld genau 400 Pixel breit und den Hintergrund hellblau machen soll.

Ich bin der Meinung, dass sich die meisten Antworten hier (und ich bin ihnen gefolgt) zu sehr auf den Kunden konzentrieren, aber aus rein s/w-Sicht behaupte ich, dass Sie keine FE entwerfen können, um eine BE ohne vorher zu manipulieren das BE entwerfen.

Ja, ich habe festgestellt, dass das OP vor einiger Zeit gefragt hat. Beginnen Sie am hinteren Ende, aber MOCKIEREN Sie das vordere Ende, damit der Benutzer sehen kann, was Sie sich vorstellen. Das Frontend ist, soweit es sich lohnt, nur das Schnickschnack. Das hintere Ende ist dort, wo das Geld ist, und sobald Sie das gerade haben, ist die FE nur die Soße über dem Fleisch.

0
Fabasard