Ich muss Nicht-Programmierern MVC erklären. Nämlich an Manager anderer Abteilungen im Rahmen des Fortschrittsberichts. Eines der Dinge, die ich tue, ist die Umgestaltung unserer Codebasis in Richtung MVC-Trennung.
Was ist die MVC-Trennung, die sie fragen könnten? Warum wird es gebraucht, könnten sie fragen?
Nach dem Lesen einer ziemlich technischen Antwort wie dieser: Was ist MVC wirklich? Ich bin nicht ganz zufrieden, da ich mit Nicht-Programmierern sprechen werde. Sie können ihre Köpfe nicken, aber sie werden wahrscheinlich nicht verstehen, was es ist und warum es gebraucht wird.
In Wirklichkeit verstehe ich nicht ganz, was MVC anders ist als "Trennung von Bedenken, Pflichten, Funktionen, Klassen, Blöcken, Aufgaben, Dingen, um die Flexibilität beim Vornehmen von Änderungen an der Software zu verbessern". Die Trennung von Datenbank und Ansicht von Geschäftslogik mithilfe von Techniken wie DI- und OO-Tools und -Techniken ist für mich eine MVC-Trennung.
Wenn Sie also das nächste Mal MVC einem Nicht-Programmierer erklären, der beispielsweise über Hintergrundwissen in Vertrieb und Buchhaltung verfügt, was würden Sie ihm sagen?
Antworten:
Du erklärst MVC nicht.
Was Sie tun, ist zu erklären, dass dies eine Umstrukturierung der Codebasis ist.
Eine Umstrukturierung, die die Codebasis vereinfacht und es den Entwicklern ermöglicht, Fehlerberichte und Featureanfragen schneller und besser zu ändern, und zwar mit weniger Fehlern.
Sie müssen nicht die technischen Details kennen, nur warum es gemacht wurde, was damit erreicht wurde und wie das Geschäft davon profitiert.
Mit anderen Worten - sprechen Sie ihre Sprache mit ihnen.
quelle
Während ich Odeds Antwort unterstütze , dass Sie den Geschäftsführern technische Projekte in "ihrer Sprache" erläutern sollten, habe ich ein Bedenken: "Sie müssen keine technischen Details wissen, nur warum es getan wurde."
Wenn Sie an einem Projekt- oder Investitionsbesprechungstreffen mit Abteilungsleitern teilnehmen und erklären, dass "das ist, was wir tun", möchten sie möglicherweise fragen: "Ähm ... warum? Das scheint eine große Investition von Zeit und Energie zu sein. Könntest du uns ein bisschen mehr Verständnis dafür geben, was du tust und warum? " Das scheint eine überaus vernünftige Frage zu sein. Sie wollen nicht in die Lage versetzt werden, "Nun ... es ist kompliziert." oder "Nein, ich kann es nicht wirklich erklären." oder "Mach dir darüber keine Sorgen." Je älter die Mitarbeiter sind, für die Sie die Projektüberprüfung durchführen, desto unwahrscheinlicher ist es, dass sie "nur Dinge, die ich nicht gut erklären kann" fliegen lassen. Besser, wenn Sie mindestens eine Stufe tiefer gehen können, damit sich andere wohl fühlen. 1) Sie wissen, was Sie '
So haben Sie eine Skizze von MVC in Ihrer Gesäßtasche, bereit zu gehen. So etwas wie:
"Es ist ein bisschen technisch, aber ... MVC unterteilt Code in Modelle (verantwortlich für die Kerndaten und die Geschäftslogik), Ansichten (die die Daten anzeigen) und Controller (die Benutzerinteraktionen und -aktualisierungen verarbeiten). Es ist eine bewährte Architektur - - Möglicherweise das erfolgreichste "Entwurfsmuster" von Software Engineering. Ich weiß, dass es wie "nur ein Klempner" erscheinen mag, aber um alle eingehenden Anforderungen zu erfüllen, benötigen wir eine stärkere Grundlage Funktionen und Beheben von Fehlern schneller. "
Selbst wenn sie MVC am Ende nicht vollständig verstehen und selbst wenn Sie es zu stark vereinfachen mussten, um es verständlich zu machen ("brechen Sie ein paar Eier, um ein Omelett zu machen"), werden Sie es wahrscheinlich viel angenehmer finden Halten Sie eine Erklärung bereit, als vor Führungskräften zu sagen: "Ich kann es nicht erklären" oder "Sie sind nicht qualifiziert, es zu verstehen".
quelle
So, have a sketch of MVC in your hip pocket, ready to go.
- oder vielleicht eine pp Präsentation ;-) was benutzer angeht "ihre sprache"?Manager interessieren sich für das Endergebnis. Je weniger technisch sie sind, desto unwahrscheinlicher ist es, wie Sie dorthin gelangen. MVC ist sehr verbreitet, beliebt und bewährt.
Wenn in Zukunft Änderungsanforderungen gestellt werden, können Sie das Management darüber informieren, dass diese einfacher und schneller durchgeführt werden können. Jeder hört das gerne.
Es ist eine gängige Strategie, daher sollte die Einstellung neuer Entwickler kein Problem darstellen. Tatsächlich ziehen Sie möglicherweise bessere Entwickler an, die starke Befürworter sind.
Dies alles wird sehr schwierig, wenn es in diesem speziellen Projekt viele dringende Probleme gibt. Sie sind möglicherweise nicht bereit, einen Schritt zurück zu machen, sodass Sie zwei Schritte vorwärts machen können. Zur Lösung kann es sein, in kleineren Stücken zu warten oder umzusetzen.
quelle
Relativ einfach auszutauschende Bauteile (Leuchte, Lichtschalter / Dimmer). Vielleicht nicht so sehr die Verkabelung, aber es kann trotzdem gemacht werden, ohne andere Komponenten zu beeinflussen. Jeder sollte in der Lage sein, dies in seinem Kopf zu visualisieren, selbst Marketing- / Verkaufstypen. (Klare Trennung usw.)
Teilen Sie Ihrem Chef / Ihren Mitarbeitern nun mit, dass in unserer Anwendung / unserem System der Schalter in die Leuchte eingebettet und die Leuchte mit Kupferdraht umwickelt ist. Stellen Sie sich nun vor, Sie würden versuchen, die Leuchte, den Schalter oder das Kabel zu aktualisieren. Sehr teuer, Auswirkungen auf andere Komponenten sehr hoch und möglicherweise gefährlich, ohne etwas anderes zu zerbrechen.
MVC wendet ein Muster auf die Codebasis an, das das durcheinandergebrachte (aber funktionierende) Durcheinander in etwas verwandelt, bei dem Änderungen schneller und einfacher mit weniger Fehlern durchgeführt werden können.
quelle
Ein einfacher Weg, MVC zu verstehen : Das Modell sind die Daten , die Ansicht ist das Fenster auf dem Bildschirm und der Controller ist der Klebstoff zwischen den beiden .
Wie bei anderen Software-Entwurfsmustern drückt MVC den " Kern der Lösung " für ein Problem aus und ermöglicht gleichzeitig die Anpassung an jedes System. Es ist besser als ein Konzept zu sehen, als eine spezifische Implementierung. Es gibt viele Implementierungen des Konzepts.
Alle MVC-Varianten verwenden dieselbe Aufteilung der Komponenten, unterscheiden sich jedoch in der Regel im Zusammenspiel dieser Komponenten.
quelle
Ich bin mit Oded einverstanden - zu lernen, wie Sie Ihre nicht-technischen Kollegen und Manager davon überzeugen, dass das, was Sie tun, wichtig und nützlich ist, ohne die Details zu erklären, ist eine notwendige Fähigkeit, die Sie entwickeln sollten.
Ich glaube jedoch, dass die Fähigkeit , komplexe Konzepte in einfachen Worten zu erklären, tatsächlich dabei hilft - ein Problem, das nicht-technische Manager häufig haben, ist, dass sie dazu neigen, zu verstehen, was genau die Techniker tun, da sie Probleme haben misstraue ihnen. Es ist nur die menschliche Natur: Es ist einfacher zu glauben, dass etwas, das Sie nicht verstehen, nutzlos oder falsch ist, als sich darauf zu verlassen. Wenn Sie also Konzepte nach Belieben leicht verständlich machen können, können Sie diese verwenden, wann immer Sie sie benötigen, und im Laufe der Zeit werden Ihre nicht-technischen Manager feststellen , dass sie sie verstehen können, wenn sie wollen - Sie ziehen keine vor auf sie - Sie ersparen ihnen nur die Details für ihre eigene Gesundheit. Sie werden dir mehr vertrauen.
Abgesehen davon beantworten wir die Frage:
Ich finde es nützlich, Analogien zu verwenden, die Geschäftsleute verstehen. Für MVC beschreibe ich es als Geschäft.
Die Erklärung mit dieser Analogie hat den Vorteil, dass ein guter Manager die Weisheit darin sieht, Bedenken auf diese Weise zu trennen, und möglicherweise entscheidet, dass sie controllerähnlicher sein und sich in Zukunft nicht zu sehr auf Details einlassen sollten!
Das wird hoffentlich das "Was" beantworten - das "Warum" ist auch mit dieser Analogie einfach:
Stellen Sie sich ein ideales Unternehmen vor, in dem jede Abteilung für eine Reihe von Aufgaben verantwortlich ist und weiß, dass sie immer über die erforderlichen Ressourcen verfügt, ohne sich Gedanken darüber machen zu müssen, was andere tun. Ein Vertriebsmitarbeiter findet einen Kunden, erhält seinen Auftrag, gibt ihn an das genehmigende Management zurück und geht dann zur Erfüllung an das Lager / die Produktion / das Engineering. Das Feedback ist direkt - niemand muss sich einmischen, es sei denn, es gibt ein Problem. Das ist ein gutes MVC-Design - jedes Teil hat einen Job und muss sich nicht um andere Teile kümmern. Auf diese Weise ist es einfach, Änderungen vorzunehmen, wenn dies erforderlich ist. In einem Nicht-MVC-Design sind die Verantwortlichkeiten nicht klar. Der Vertriebsmitarbeiter versucht möglicherweise, das Produkt zu ändern, wenn der Kunde etwas anderes wünscht. Oder sie geben unterschiedliche Preise an, je nachdem, wie sie sich an diesem Tag fühlten. Der CEO befindet sich möglicherweise in der Fabrik und arbeitet an der Produktionslinie, wenn er sich Gedanken darüber macht, wie eine zuverlässigere Lieferkette eingerichtet werden kann. Die Lagerarbeiter sind möglicherweise auf der Verkaufsfläche und sprechen mit den Kunden, wenn sie die bereits angenommenen Bestellungen erfüllen sollen.
Mit anderen Worten, gutes MVC-Design ermöglicht es jedem Teil, sich auf eine Sache zu konzentrieren, damit es es richtig macht - genau wie ein gut organisiertes Unternehmen.
** Haftungsausschluss - Wenn Ihr Unternehmen schlecht organisiert ist, kann dies zu Beleidigungen führen. In diesem Fall benötigen Sie eine andere Analogie. Möglicherweise benötigen Sie auch einen anderen Job.
quelle
Die Vorteile von MVC liegen hauptsächlich in der Trennung von Bedenken:
So können sich die Menschen auf das konzentrieren, was sie am besten können.
Dies senkt die Kosten, da ineinander verschlungene Systeme erfordern, dass die Mitarbeiter entweder Experten in all diesen Bereichen sind, oder es ist wahrscheinlicher, dass Sie Probleme haben, wenn sich eine Änderung in einem Bereich auf die anderen auswirkt.
Bieten Sie Beispiele für MVC-Architekturen in der Praxis: Handys, Desktop-Telefone, Skype usw. Das Ändern der Ansicht (Art der Wähltastatur, Lautsprecher, Mikrofone) hat keinen Einfluss auf das Modell (das Audiosignal) Das Telefon, das Schallwellen in Audiosignale umwandelt.
quelle
Ich würde ihnen sagen, dass MVC meine Bedenken trennt.
Mein erstes Anliegen ist die Codelogik - was ich hinter den Kulissen tue, damit die Website die Aktionen ausführt, die sie ausführen möchten.
Mein zweites Anliegen ist die Geschäftslogik - was sie (der Benutzer) von der Anwendung erwarten.
Meine dritte Sorge ist, wie die Seite aussieht - Die Seite, die sie besuchen, um das zu tun, was sie wollen.
(Ich werde ihnen diesen nächsten Teil nicht erzählen.) Also, in der richtigen Reihenfolge, waren meine Erklärungen für das Modell, den Controller und die Ansicht.
quelle
Erläutern Sie die Vorteile
Ich würde MVC in Bezug auf Geschäftsvorteile erklären. Ihre Manager werden dies verstehen und einsteigen, wenn die Vorteile überzeugen.
Mit MVC können Sie Ihre Anwendung in sinnvolle Einheiten aufteilen, von denen jede unabhängig von den anderen existiert. Sie erhalten sauberen, wartbaren, testbaren Code und können ihn möglicherweise zwischen Systemen wiederverwenden.
Das Model
Jedes Modell kapselt eine einzelne Art von Geschäftsinformationen, z. B. einen Kundendatensatz oder ein Produkt, zusammen mit der gesamten zugehörigen Geschäftslogik.
Wenn Sie dies herausfiltern, können Sie Ihre Geschäftslogik auf einfache Weise unabhängig von anderen Teilen Ihrer Anwendung testen.
Sie können die Anwendung auch einfach erweitern, indem Sie zusätzliche Modelle hinzufügen. Sie ist sehr modular und übersichtlich.
Jedes Modell kann theoretisch unabhängig von den anderen existieren. Sie können dies erzwingen, indem Sie Serviceobjekte verwenden, um die Beziehungen zwischen Modellen zu behandeln. Sie können Modelle austauschen, ohne den Rest des Systems zu beeinträchtigen.
Die Aussicht
Durch die Trennung Ihrer Ansicht können Sie Ihr Front-End problemlos aktualisieren, ohne das zugrunde liegende Back-End zu beschädigen.
Sie können Ihren Front-End-Code an einen anderen Entwickler weitergeben, ohne dass dieser auf das gesamte System zugreifen muss.
Sie können auch alternative Frontends erstellen, die mit dem vorhandenen System funktionieren. Sie können Ihre Daten als mobile App, API, PDF oder Excel-Tabelle anzeigen. Sie können dies tun, ohne in den Rest des Systems einzugreifen. Es ist weniger wahrscheinlich, dass Dinge versehentlich zerbrochen werden. Sie können problemlos Integrationspunkte für vorhandene Systeme erstellen, an die Sie sich anschließen können.
Der Controller
Der Controller verbindet die Modelle mit der Ansicht. Es hält alles getrennt. Sie können ganz einfach eine andere Ansicht aufrufen. Wenn Sie Ihren Modellcode ändern, muss die Ansicht nicht einmal wissen.
Andere Vorteile
Es ist ein verbreitetes Muster. Andere Entwickler können Ihren Code verstehen und daran arbeiten. Wenn Sie Jahre später zu Ihrem Code zurückkehren, können Sie ihn wahrscheinlich verstehen und Änderungen vornehmen. Es ist weniger wahrscheinlich, dass Ihr Code für einen zukünftigen Entwickler zu einem weiteren Problem wird.
Da alles seinen Platz hat, ist es viel einfacher, sauberen Code zu erstellen. Das Risiko einer Spaghettifizierung wird drastisch verringert (wenn auch nicht beseitigt). Ihr Code wird wartbar.
Da alles modular aufgebaut ist, können Sie Teile davon isoliert testen. Ihr Code ist testbar und birgt mit geringerer Wahrscheinlichkeit Fehler oder Sicherheitslücken. Zukünftige Upgrades werden viel einfacher, da Sie das gesamte System problemlos testen können.
quelle