Transkripte
1. Einführungsvideo: Hallo, alle, und willkommen zu Skill Share und diesem Software-Kurs. In diesem Kurs werden
wir hauptsächlich über den Software-Entwicklungszyklus diskutieren. So Software-Entwicklungszyklus ist wirklich nur eine Reihe von verschiedenen Schritten, die Sie ergreifen können, um bessere Software zu entwerfen. Wenn Sie
zum Beispiel
einen kleinen Taschenrechner entwerfen zum Beispiel , brauchen
Sie nicht viel vorher zu üben und die Details herauszufinden. Es ist eine kleine Anwendung. Es könnte sein, wissen
Sie, vielleicht 100 Zeilen Code. Vielleicht ist es größer und es ist, weißt
du, 1000 Zeilen Code oder sogar 10.000 Zeilen Code. Diese Projekte erfordern nicht viel Planung, um richtig zu werden, denn sobald Sie die 10.000 entworfen haben, können Sie irgendwie alles in Ihrem Kopf haben. Sie können zurückgehen und Sie können es überarbeiten, Dinge besser
machen, und es wird nicht allzu schwierig sein. Was anfängt, problematisch zu werden, ist, wenn Sie in größer als das zu bekommen. Wenn Sie 100.000 Codezeilen haben, gibt es
plötzlich viele Dinge, die miteinander interagieren. Bugs beginnen ins Spiel zu kommen, die Sie nicht erwartet haben, und diese Bugs beginnen wirklich,
wirklich komplex zu sein anstatt eines Bugs, der nur einen anderen Ort kontaktiert. Nehmen wir an, in einer kleineren Anwendung haben Sie einen Fehler, der sich so verbreitet, es ist einfach zu verfolgen. Du weißt schon, du fängt der Fehler hier an. Du siehst dir dieses Stück Code an. Sie schauen sich dieses Stück Code an, Sie beheben den Fehler, wenn Sie die größeren Stücke bekommen. Größere Programme haben plötzlich Fehler, die so aussehen, wo alles
miteinander spricht . Und wenn Sie keinen Plan und kein Diagramm haben, kann
ein Fehler so aussehen, als würde er an 100 verschiedenen Orten erscheinen,
und Sie müssen in der Lage sein, herauszufinden, wie man solche Sachen findet. Sie müssen auch herausfinden, wie Sie es so entwerfen, dass Sie später verlängern können. Wenn Sie Ihr Projekt vergrößern möchten, benötigen
Sie eine Bank, damit es sich in einem Zustand befindet, in dem Sie es leicht hinzufügen können. Und das ist es, was all das im Detail geht. Also werden wir anfangen, was den Software-Entwicklungszyklus durchläuft. Wir werden dann über Anforderungen und Spezifikationen sprechen. Dieser Schritt ist wirklich nur herauszufinden, was wir zu bauen versuchen, und dann, wie wir es bauen werden. Wir gehen dann in die Architektur, die eine Art wirklich,
wirklich große Sicht nach unten ist. Was sind die Muster zu verwenden? Was sind die verschiedenen Möglichkeiten, die verschiedenen Teile wirklich zu verbinden? Wie können wir es aufbrechen, damit ein Haufen Leute daran arbeiten können? Sie wollten sich das Software-Design ansehen. Sobald wir uns in einem Teil getrennt
haben, müssen wir herausfinden, wie jedes einzelne dieser Teile gebaut wird. Dort fängt man an, Dinge zu entwerfen. Du fängst an, auf welche Schleifen zu schauen? Welche Bibliotheken. Welche verschiedenen Möglichkeiten zum Speichern von Daten benötigen Sie für jedes dieser Teile. Dann werden wir in die Umsetzung gehen. Das ist, wenn Sie tatsächlich die Zehe übergeben haben. Entwickler und Entwickler beginnen, es zu programmieren. Also schauen wir uns so etwas an, wo wir ein großes Problem haben, und sie haben
es in,sagen
wir,
einen Haufen solcher Kisten zerlegt es in,sagen
wir,
einen Haufen solcher Kisten zerlegt sagen
wir, . Dann brechen wir diese Kisten noch weiter auf. Und dann beginnen wir jetzt, Entwickler auf jede dieser Boxen zu setzen, um sie
auszubauen . Dann schauen wir uns die Bereitstellung an. Wenn wir das alles zusammen haben, wie machen wir es zu einer großen, zusammenhängenden Einheit und wie nehmen wir dann diese zusammenhängende Einheit und bringen sie in die reale Welt für Aufbau einer iPhone-App? Wie kriegen wir es in den Laden? Wenn wir einen Desktop aufbauen, wie bekommen wir ihn, damit die Leute ihn kaufen können? Also Bereitstellung ist wichtig und dann schließlich, Testen und diese beiden Arten von hin und her gehen? Das Testen wird normalerweise vor der Bereitstellung durchgeführt, aber oft werden wir wie die heutige Welt bereitstellen, wird ein minimal lebensfähiges Produkt oder etwas, das schnell ist,
wird Feedback erhalten , Fehler und Fehler finden, und dann Wir werden sie danach reparieren und diese Art von Test-, Deployment-, Test- oder tatsächlich eine Art von Testen halten und dann zurück nach oben zurück nach oben. Und Sie gehen irgendwie in diesen Zyklus, um Ihre Software tatsächlich zu überarbeiten und ständig zu aktualisieren und zu
warten. In diesem Kurs werden wir das lernen. Wir lernen alle diese Schritte, wie Sie bessere Software erstellen, wie Sie Ihre Software organisieren können, und insgesamt, wie Sie sicherstellen, dass, wenn Sie etwas Großes bauen, es am Ende funktioniert. Am Ende
2. 1-1 Warum die Modelle verwenden: Lassen Sie uns über die Bedeutung des Kurses im Allgemeinen gehen. Warum setzen wir Software-Modelle und Software-Engineering ein? Warum programmieren wir das Ding nicht einfach? Warum springen wir nicht rein und machen das Projekt? Nun, das wird immer deutlicher, wenn wir an ein anderes Projekt denken,
etwas, das in der physischen Welt ist. Reden wir über den Bau einer Brücke. Stellen Sie sich vor, Sie bauen eine Brücke und beginnen von jeder Seite. Du hast also diesen Fluss und beginnst auf der linken Seite und auf der rechten Seite zu bauen, und du verbindest dich in der
Mitte. diesen Fluss und beginnst auf der linken Seite und auf der rechten Seite zu bauen, und du verbindest dich in der Viele Brücken werden so erstellt, weil Sie es zweimal schneller erstellen können, anstatt von rechts zu bauen und den ganzen Weg hindurchgehen zu müssen. Sie können tatsächlich auf beiden Seiten mit zwei Baumannschaften beginnen und sich nur in der
Mitte treffen . In Japan trainiert
die Kugel die großen alten Eisenbahnen. Es begann eigentlich in etwa acht oder neun verschiedenen Orten, und sie alle nur das Ende verbinden. Stellen Sie sich jedoch vor, wenn diese Brücke hier, wenn sie in der Mitte verbunden und es war wie 10 Meter voneinander entfernt, Also statt dieser perfekten geraden Brücke, wir haben jetzt einen Teil der Gassen auf der rechts und ein Teil der Gassen auf der linken Seite, die tatsächlich nur direkt in den Ozean gehen. Das wäre eine Katastrophe. Diese Brücke wäre nutzlos. Wir wären nicht in der Lage, damit zu arbeiten. Und Software-Engineering, wir könnten diese beiden Seiten in Betracht ziehen. Ach, Bug. Ah, ziemlich großer Käfer. Aber nur ein Käfer. Und von links und rechts, vielleicht von oben. Vielleicht wie die ganz, ganz zurück, könnte
es aussehen, als ob die Brücke funktioniert. jedoch Die Struktur istjedochunglücklich. Nicht auf Lee. Könnte es deswegen runterfallen? Aber
es könnte auch dieses Problem geben, bei dem die Leute einfach in den Ozean fahren. Es ist eine Katastrophe für die Baufirma, denn jetzt müssen sie
nicht nur bezahlen, um die Brücke zum ersten Mal zu bauen, sondern
sie müssen auch bezahlen, um sie zu dekonstruieren und dann die Brücke wieder aufzubauen. Und das hat eine ganze Menge Geld gekostet. Und vielleicht geht die Baufirma unter. Es muss aufgegeben werden. Und jetzt sitzen wir hier nur diese Brücke, die verrottet. Und wir haben keine Lösung für das Problem. Wir versuchen es zu reparieren. Das ist also, was die Bedeutung dieser ganzen Planung ist. Sie haben einen einzigen Plan verpasst. Akzeptiert. Es kostet Millionen. Viele Leute denken nicht, dass das passieren kann. Und Software-Engineering werde ich es später reparieren. Es ist alles Code. Schwächen, löschen und neu schreiben. jedoch Wenn Siejedochin Millionen von Codezeilen gelangen, wird
das zu einem Problem. Amazon, zum Beispiel, denke
ich, hat über 10 Millionen Codezeilen oder noch mehr gleiche mit Facebook und all diesen großen Entitäten. Sie haben all diesen Code. Stellen Sie sich vor, Sie hätten dort einen Fehler erstellt, der sich
beispielsweise
auf Facebook auf der Freundesseite darstellt beispielsweise . Aber es hat eigentlich etwas mit dem Timeline-Feed zu tun. Stellen Sie sich vor, wie schwer das zu debuggen wäre. Das ist etwas, was technische Schulden genannt wird. Das ist meine Definition davon. Ah, schlecht schwer zu verstehen hacky Implementierung, die später mit Zinsen zurückgezahlt werden muss. Das kommt also wirklich nur darauf an, am Anfang Ecken zu schneiden, nicht wirklich etwas zu planen und einfach nur hinein zu springen. Es könnte aussehen, als ob es jetzt funktioniert, wo Sie einen kurzen kleinen Test gemacht haben. Es gibt keine Bugs, also, wissen
Sie, sparen Sie die oder zwei Stunden der Planung, und jetzt können Sie mit der nächsten Sache fortfahren. jedoch Das könnte Siejedoch20 Stunden später kosten. Stellen Sie sich vor, es ist nur eine kleine Zeile in einer Datei, und Sie legen es hinein und Sie dokumentieren nicht und es gibt keine Pläne von Zehe. Warum du es da reinlegst. Auch keine Kommentare, um zu erklären, warum Sie es jetzt,
68 Monate später, dort . 68 Monate. Vielleicht ist es drei Jahre später, tatsächlich erzeugt diese Zeile, die Sie dort eingelegt haben, einen Fehler. Ein anderer Programmierer kommt herein, um zu versuchen, es zu beheben. Er muss nicht nur die ursprüngliche Zeile finden, die Sie dort eingefügt haben, aber vielleicht hat es keine Art von Fehler in diese Datei eingefügt. Vielleicht erzeugt es tatsächlich einen Fehler auf einem völlig anderen Teil des Servers. Also muss er den gesamten Ablaufverfolgungsprozess durchlaufen, um zu dieser Codezeile zurückzukehren. Und dann, wenn er es sieht,
ja, ja, um zu verstehen, was es sollte, um die richtige Art und Weise zu tun, zu
dokumentieren, die richtige Art und Weise, es zu tun, und dann fixieren Sie die Zeile. Das ist viel mehr Arbeit als nur Sie es am Anfang tun, wo Sie bereits verstehen, wie dieses Ding gebaut wird und Sie einfach die richtige Codezeile
reinlegen . Mit diesem Beispiel können
Sie schnell sehen, wie die Kosten gehen und steigen, je länger sie warten, denn vielleicht gibt es hier nur 10 Dateien. Und in vier Monaten gibt es möglicherweise bis 400 Dateien. Und wenn wir dann wieder in die Entwicklung einsteigen, haben wir
vielleicht etwas wie 1000 verschiedene Dateien zum Durchschauen. Und diese kleine Linie, die ein Mantel immer schwieriger und schwieriger zu finden ist, besonders wenn es an anderer Stelle in der Produktion schlechte Programmierpraktiken gibt. Und diese Art von Sache kann tatsächlich dazu führen. Diese Zahl 80 der 20% der Projekte scheitern. Ähm, das ist eine tatsächliche Statistik. Ich vergesse, von welcher Studie stammt, aber es war halbneu und stelle dir vor, all diese Unternehmen, die Software erstellen, die
Millionen von Dollar kosten kann . Das bedeutet, dass 20% dieser 1.000.000$ Software einfach ausfallen. Die Firma hat nur ihr Geld verschwendet und muss nichts davon zurückbekommen. Es gibt kein r a y, keine Return on Investment überhaupt. Das ist
wirklich schlecht für die Firma. Diese Kosten werden in einer aktuellen Studie tatsächlich auf 85 Milliarden Dollar pro Jahr berechnet. Und das kommt normalerweise darauf an. Ist das ein typischer Entwickler, Spence. 13,5 Stunden auf diese technische Schulden und dann 3,8 Stunden beim Fixieren oder Debuggen von zusätzlichem
fehlerhaftem Code oder sogar Hinzufügen von schlechtem Code. Sie wissen also, dass Sie hier sitzen und die ganze Zeit und Geld dafür ausgeben,
alte Fehler zu beheben , und Sie könnten später sogar MAWR-Fehler implementieren. Und das ist ein großer Preis. Dies ist für einen Entwickler, der $50 pro Stunde bezahlt hat. Es könnte sein, Sie wissen, das ist nach oben etwa $700 jede einzelne Woche für jeden einzelnen Entwickler, Sie gerade verschwenden, weil die Leute am Anfang Ecken schneiden. So ermöglicht es uns, alle zusammen zu kommen, einen zentralen Plan zu
erstellen und eine Menge dieser Fehler zu verhindern, die diesen Code betrachten,
dies ist nur ein wirklich schnelles Beispiel. So können Sie sehen, einfach etwas Physisches zu betrachten ist sich vorstellen. Sie stießen auf diese Codezeile und wollten herausfinden, was sie jetzt tut. Normalerweise ist
das nicht, weißt du, das ist nicht zu schwer, aber das könnte wirklich, wirklich,
wirklich,
wirklich schwierig sein wirklich, , wenn jemand einfach aus dem tiefen Ende ging, weißt
du, Beschichtung dieses Ding. Aber jetzt müssen wir uns das ansehen. Wir müssen verstehen, was das tut. Und so müssen wir vielleicht sogar, , weißt
du ein
schnelles Stück Papier schnappen und so sein, OK, wahr. Okay. Falsche Daten. Oh, okay. Diese Codezeile ist völlig äquivalent zu diesem ganzen Block, und dies kann sein, wirft uns weg. Vielleicht verschwendet es 10 Minuten unserer Zeit, um zu reparieren, obwohl es nur 10 Minuten sind. Wenn wir 50 Dollar pro Stunde bezahlen, das ein paar Dollar Betriebszeit. Und nicht nur das, aber lassen Sie uns sagen, dass die ganze Datei oder jedes Mal, wenn der Programmierer dies hier tun wollte, gibt es nur prüfen, ob a und B beide Noten Knoll sind. Zur gleichen Zeit, fügte
er hinzu, jedes Mal, wenn ein Programmierer begegnet, wird es diese Zeit verschwenden, und es erhöht nur die technischen Schulden immer und immer wieder. Am Ende versuche ich also zu
sagen, dass der wichtige Teil dieses Kurses darin besteht, zu lernen, dass Design
wichtig ist . Wenn du etwas erschaffen willst,
das
größer ist als nur ein winziges kleines Add-On oder ein kleines kleines Spiel oder so etwas,
dann entwerfen es so, dass es erweitert werden könnte,könnte
es zusammengearbeitet werden als nur ein winziges kleines Add-On oder ein kleines kleines Spiel oder so etwas, dann entwerfen es so, dass es erweitert werden könnte, auf, und es schafft diese wirklich schlechten Situationen später nicht ist wichtig. Und das ist, dass wir in diesem Kurs übergehen werden, ist wie zu tun. All das ist, wie man einen Plan erstellt und wie man einem Team beitritt und versteht wovon
sie sprechen.
3. 1-2-Entwicklungszyklus: Lassen Sie uns also in den Software-Entwicklungszyklus springen,
die Art und Weise, wie wir Software mit Software entwickeln. Es gibt eine Reihe von verschiedenen Möglichkeiten, wie Sie es tun können und diese normalerweise als Modelle bezeichnet werden, und so implementieren Sie tatsächlich diese Art von fünf Schritten. jedoch Diese fünf Schritte sindjedochin der Regel von entscheidender Bedeutung, um ein Stück Software den Standards gerecht zu
werden, die , wie
Sie wissen, sehr zuverlässig sind. Damit werden
Sie auch feststellen, dass diese auf wirklich alle Engineering-Praktiken wie in
der letzten Vorlesung angewendet werden können . Wenn ich über den Bau einer Brücke spreche, könnte das auch dafür verwendet werden. Wir würden Anforderungen und Design und Implementierung sowie Verifizierung und Wartung alles mit einer Brücke übergehen. Wenn wir also so darüber nachdenken wollen, während wir das durchmachen, könnte
es dazu führen, dass es ein bisschen besser bleibt. Das erste, worüber wir sprechen möchten, ist, dass wir über etwas namens
Anforderungen sprechen wollen, so dass die Anforderungen es ziemlich einfach sind. Die Anforderungen sind, was wir bauen? Also sind die Anforderungen die was? Was werden wir bauen? Wir wollen in der Lage sein, das zu einem Punkt zu bringen, wo niemand in der Lage sein wird, zu kämpfen, was wir bauen. Was ich damit meine, ist, dass wir nicht wollen, dass eine Gruppe von acht Leuten das alles mit einer
anderen Vorstellung davon aufbaut , was das Endprodukt sein wird. Wir wollen nicht, dass sie denken,
dass vielleicht eine Person denkt, dass sie acht Server benutzen wird. Man denkt, dass das nur ein lokaler Server sein wird. Man denkt, dass dort, wo es ein Geschäftslauf sein wird, als würde es hauptsächlich von Geschäftsleuten verwendet werden. Während jemand anderes denkt, dass es hauptsächlich von Verbrauchern benutzt wird. Das wäre ein großes Problem, wenn Sie versuchen, wie eine ganze Reihe von Menschen
zusammen an einem Projekt zu arbeiten , das jeder in eine andere Richtung bauen würde und es auseinander fallen würde . Also mit den Anforderungen, was wir versuchen zu bekommen, ist das, was wir bauen? Und es gibt eine ganze Reihe von verschiedenen kleinen Schritten in jedem von ihnen, und darum wird dieser ganze Kurs in die springen, also das ist
nur eine Ansicht von oben nach unten, und ich werde einen tiefen Tauchgang machen, ein bisschen später. So wie auch immer, Anforderungen ist 1. 2. ist Design. Design ist das Wie so Wie werden wir es bauen? Was werden wir benutzen? Welche Technologien werden wir zusammenstellen? Wie soll der Server eingerichtet werden? Wie soll die Front aufgebaut werden? Sollte das Frontend das oder jenes tun? Hier kommt Design ins Spiel und Design ist sehr wichtig. Viele Leute überspringen diesen Schritt. Ah, viele Leute werden die Anforderungen erfüllen, obwohl sie Anforderungen erfüllen, aber dann werden sie nicht wirklich zum Design gehen. Sie sind nur eine Art Sprung direkt in die Implementierung. Also wissen Sie, sie werden so sein, OK, wir haben eine gute Vorstellung davon, was wir bauen werden. Lassen Sie uns in der Implementierung springen. Und das könnte gefährlich sein, denn wieder gibt es hier draußen noch einige Variablen, und es gibt immer noch einige Dinge, die wir sicherstellen wollen, dass funktionieren, bevor wir sie implementieren. Denn
zum Beispiel, zum Beispiel, lassen Sie uns sagen, dass Sie ein acht-Server-Riesenmeisterwerk gebaut haben oder zumindest denken Sie, dass es ein Meisterwerk ist. Und wenn du dann klickst, kennst du den Play-Button, bekommst
du ihn endlich zum Laufen. Sie wissen, Oh, das funktioniert nicht mit acht Servern. Es funktioniert nur mit zu bedienen. Es funktioniert nur mit dieser Art von Technologie. Ich muss neu starten und von Anfang an beginnen. Das ist die Art von Dingen, die Sie im Entwurfsteil ausarbeiten möchten. Der wie Teil Nachdem Sie Design gehen, springen
wir in die Implementierung und jeder weiß, was Implementierung ist. Implementierung ist, dass Sie nur das Ding bauen. Also hast du die ganze Planung erledigt. Alle sind auf derselben Seite. Jetzt wirst du es hinauftauchen, vielleicht hast du Teams. Vielleicht ist es nur eine Gruppe von drei Personen. Vielleicht ist es nur du, und du wirst einfach in bestimmte und du wirst einfach in bestimmte
Aufgaben und Meilensteine einsteigen. Aber der Implementierungsteil ist der Bauteil, den Sie das
Produkt bauen werden , Sie werden erstellen, was Sie erstellt haben, und dann der nächste Schritt ist die Überprüfung. Also, mit der Verifizierung, was wir tun, ist etwas namens Testen. Also versuchen wir hier eine entscheidende Frage herauszufinden. Was wir gebaut haben, ist es, was wir bauen wollten? Dies ist oft mal ah, paar verschiedene Dinge. So zum Beispiel das, ist
zum Beispiel das,was wir gebaut haben, was wir bauen wollten, was wir gebaut haben. Unser Kunde wollte, dass wir bauen, ist das, was wir richtig gebaut haben. Ist es der Eingang, der eingeht? Und es ist, wissen
Sie, die richtige Ausgabe zu
schaffen. Und deshalb kommt das Testen in ein Spiel, und normalerweise müssen
Sie mit dem Testen die Anforderungen kennen. Sie müssen wissen, was es tun sollte, und dann mit dem Testen Utkan Test dagegen nicht tun, was es sollte dio. Das ist also ein sehr wichtiger Schritt. Und das ist eine andere, die oft irgendwie für bekommen ist. Wenn die Zeit knirscht Leute wie, Oh,
nein, nein, dir
keine Sorgen über das Testen wird nur ein paar schnelle große Tests machen und dann werden wir weitermachen. Und das könnte ein großes Problem sein, denn dann haben Sie diese riesigen Bugs in Ihrem Programm. Vielleicht manifestieren sie sich seit ein paar Jahren nicht, und dann führt es zu einer riesigen Datensicherheitsverletzung. Oder vielleicht ist es etwas sehr Kleines im Laufe der Zeit. Vielleicht sind alle Daten, die in die Datenbank gehen, um eins ausgeschaltet,
und es wird Ihre Daten irgendwie verzerren, und dann wird es eine ganze Menge später in der Wartungsphase kosten, was diese Phase genau hier ist, um sie am Ende zu reparieren. Daher sind Verifizierung und Tests wichtig. Wir werden einige Techniken dazu und einige der Möglichkeiten behandeln, die Sie testen sollten. Und schließlich, was wir haben, ist, dass wir Wartung haben. Und das ist diese Art von diesem End-Zyklus, in dem Sie Bugs beheben werden. Sie werden auch irgendwie vielleicht sogar noch mehr Tests durchführen, könnte einige
andere Dinge implementieren , vielleicht Dinge neu gestalten. Wartungs-Zeug ist eine Art, wie dies oft zurückgeht. Wenn Sie zum Beispielein zusätzliches Feature
entwickeln, ein zusätzliches Feature
entwickeln, würden
Sie tatsächlich den ganzen Weg zurück zu den Anforderungen gehen und dann diesen Prozess
neu starten . Aber der Wartungszyklus ist in der Regel nur Fehler zu beheben, stellen Sie sicher, dass, wie kleine Anpassungen, um es mehr im Einklang mit den Anforderungen
zu machen und es laufen zu lassen, um mich nicht zu tun Server-Updates und aktualisieren Sie diese Technologie in Technologie. Daher ist die Wartung wichtig und die Wartung kann
sehr, sehr schwierig sein, wenn Sie nicht alle diese Schritte ausführen. Es könnte also eine Menge Fehler geben, wenn Sie nicht alle diese haben, und vor allem, wenn es keine Dokumentation darin gibt. Also hast du nichts aufgeschrieben? Du hattest nicht wirklich diesen ganzen Plan ausgeschrieben. Dann könnte es sehr schwierig sein, weil man andere Programmierer nicht wirklich einbringen kann. Es dauert sechs Monate, um den Code basierend
zu lernen , usw. Aber wie auch immer, dies ist die Ansicht von oben nach unten aus dem typischen Software-Entwicklungszyklus. Jetzt werden natürlich anfangen, wir
natürlich anfangen,diese ein bisschen für Stück zu zerbrechen und dann irgendwie tief in jedes von ihnen
einzutauchen und dann auf nette Dinge wie Modelle zu schauen, die alle sind, wie, wie Sie diese verschiedenen Schritte am besten kombinieren, wissen Sie? Tun Sie es wie ein V, wo Sie irgendwie einige von ihnen auf jeder Seite davon setzen? Machst du es? Es gibt diese Dinge, die Scrum im Wasserfall genannt werden, bedeuten, dass das alles übergehen wird. Aber Software-Entwicklungszyklus, äh, wirklich gut zu wissen. Und du wirst es eine ganze Menge sehen
4. 1-3-Software-Zyklusbeispiel: Lassen Sie uns durch ein kleines Beispiel gehen, um zu helfen, dies nur ein wenig mehr einzureichen, bevor wir beginnen, tief in jede dieser Bereiche zu tauchen. Lassen Sie uns hier ein Beispiel gehen. Das Beispiel wird einfach sein. Es wird nur sein, wie man ein Formular erstellt. Oder vor allem, was wir tun, ist, dass wir dieses Ziel haben. Wir wollen ein Formular erstellen, es wird eine E-Mail-Adresse haben, und es wird einen Kommentarplatz haben, und das war's. Wir wollen nur überlegen, was gelaufen ist. Wir machen es. Die Anforderungen Design, Umsetzung
, etc. Auf. Dies ist ein sehr einfaches Beispiel. Sie könnten tatsächlich wirklich in die Tiefe kommen und tatsächlich mit großen Dokumenten für etwas so klein kommen. Aber ich möchte nur einige der Grundlagen durchgehen. Also verstehst du was? Wie jeder dieser Bereiche ein wenig mehr funktioniert. Der erste Bereich, den wir betrachten wollen, sind die Anforderungen. Also, was wollen wir, dass diese Form dio? Wir wollten E-Mail,
Adresse und Nachricht sammeln . Das ist es, was wir von der ursprünglichen Form wollen. Es wird eine E-Mail-Adresse und eine Nachricht sammeln, dann
auchgesündigt auch und in einer Datenbank gespeichert. So sendet es diese Informationen über das Internet in unsere Datenbank. Und dann wollen wir die verhindern, dass der Benutzer von schlechten Eingabe in diesem bedeutet in der E-Mail-Adresse, setzen alle diese zufälligen Symbole und nicht tatsächlich Erstellen einer E-Mail-Adresse im
Kommentarbereich . Wissen Sie, wenn Sie
versuchen, Code einzufügen oder einen SQL-Injektionsangriff oder so etwas durchzuführen, würde
diese Art von Dingen verhindern . Also drei grundlegende Anforderungen hier, dann gehen wir in unser Design. Was tun Wie wollen wir das jetzt entwerfen, mit dem Design, können
Sie mit einem Dokument kommen oder Sie können tatsächlich Art von ziehen es heraus. Viele Male brauchen Sie ein Front-End und zurück im Design. Also, weißt
du, vielleicht haben wir nur eine Schnellbox. Hier haben wir den E-Mail-Ort und dann den größeren Kommentarplatz, und wenn wir es herausziehen, würden
wir gehen, Oh, tatsächlich brauchen einen Knopf, um das zu übermitteln. Vielleicht wollen wir das in unsere Anforderungen einbringen. Benötigt einen Knopf. Genau. Also weißt du, nur etwas Zeh. Äh, Sie könnten immer zwischen den Anforderungen des Designs hin und her gehen, abhängig von der Verwendung des Modells und wir werden später darüber sprechen. Aber mit unserem Design wollen
wir HTML und CSS verwenden, um die Frameworks des Formulars zu erstellen. Also wollen wir die Art von dem bauen, was wir tatsächlich als HTML und CSS betrachten. Dann wollen wir JavaScript für die Überprüfung der Eingabe verwenden. Und dann wollen wir Jake müde in meinem SQL verwenden, um das Backend zu kontaktieren und Jake, von dem du nichts gehört
hast. Es ist nur JavaScript, aber irgendwie angepasst. So können Sie eine Art von Postanforderungen an eine Datenbank senden, und dann ist meine SQL nur eine Datenbank. Der nächste Teil ist die Implementierung, und das ist wirklich, wirklich einfach. Dies ist nur Code und Dokument. Die Arbeit wird leicht. In diesem Sinne wird
dies tatsächlich dort sein, wo die meiste Zeit verbracht wird. Nachdem wir diese beiden Dinge gemacht haben, ist es einfach irgendwie alles auszuarbeiten, einen Server
einzurichten, das Frontend und das JavaScript einzurichten usw. Jetzt in die Überprüfung Viele Male die Überprüfung, das Testen ist nur eine Art Erweiterung der Anforderungen. Wir stellen Fragen zu den Anforderungen, so sammeln Sie E-Mail-Adressen und Nachrichten. Erfasst ein Formular Informationen. Wir würden also einen Test erstellen, um die gesammelten Informationen zu testen, Sie zu
senden und in einer Datenbank zu speichern. Sendet das Formular diese Informationen an eine Datenbank? Wir könnten Tests machen. Wir können sehen, wissen
Sie, in, setzen Sie es in das Front-End und dann gehen Sie in unsere Datenbank und stellen sicher, dass es es im Backend schafft. Haben Sie vielleicht Eckfälle versuchen, 100 verschiedene Browser gleichzeitig einzufügen, oder versuchen, sie alle nacheinander einzufügen, vielleicht eine halbe Sekunde hintereinander. Vielleicht gibt es eine Warteschlange, die überlastet wird oder etwas, so dass diese Art von Tests dazu beitragen, sicherzustellen, dass Sie keine Informationen verlieren und dann schließlich Benutzer
davon abhalten. Aber versuchen Sie, einen SQL-Injektionsangriff auf sich selbst zu machen. Versuchen Sie, wirklich zufällige Zeichen überall zu setzen. Das wäre eigentlich keine Nachricht, vielleicht sogar Spam-Prävention. Vielleicht wollen wir hier eine Spam-Präventionssache aufbauen, und wir müssen das in eine Anforderung setzen, um zu entwerfen. Aber wir testen das auch, und dann haben wir endlich die Wartung, erstellen Sie einfach einen Lebenszyklusplan und beheben Sie alle Fehler. Lebenszyklusspiel könnte einfach sein, wie überprüfen Sie es alle sechs Monate, um sicherzustellen, dass
die gesamte Technologie verwendet die meisten auf dem neuesten Stand und die gleiche mit der Datenbank alle sechs Monate aktualisiert. Überprüfen Sie alle Fehler, aktualisieren Sie das
vielleicht alle sechs Monate. Oder vielleicht haben Sie einen wöchentlichen Zeitplan, wie Fehler in Ihr Unternehmen kommen oder was auch immer. Aber eine Wartung ist nur irgendwie mit einem Plan, um sicherzustellen, dass wir es anpassen können um die Anforderungen zu erfüllen, was wir tun wollten, und auch um sicherzustellen, dass es nicht anfällig ist. Und da haben wir es nur ein sehr, sehr einfaches Beispiel hier, wie Sie diese Schritte durchlaufen könnten, wie Sie irgendwie kategorisieren könnten, nur ein einfaches Formular zu erstellen. Nun, in diesen nächsten Vorträgen werden
wir anfangen, in den wirklich tiefen Teil zu springen, wo Sie tatsächlich einige der Werkzeuge
verwenden können , über die wir reden, um dies zu tun. Aber für etwas viel, viel größer im Maßstab
5. 2-1 Anforderungen 2-1: beginnen wir mit unserem tiefen Eintauchen in die Anforderungen. Das erste, was ich übergehen werde, ist die Anforderungsdefinition,
etwas, mit dem wir alle auf der gleichen Seite sind. Also verstehen wir alle, was ich mit Anforderungen meine. Daher sind Anforderungen eine Möglichkeit, die genauen Spezifikationen, was die Software tun
sollte, herauszufinden . Sie können sich Anforderungen wie eine Definition vorstellen. Sie definieren, was die Software tun soll. Es ist, als ob Sie es in einem Buch suchen und Sie in der Lage sind, genau zu lesen, was die Software sollte dio. Das ist wichtig. Wir versuchen nicht herauszufinden, wie es geschaffen werden soll. Wir versuchen nur herauszufinden, was es am Ende tun soll. Wenn der Benutzer hier oder für interagiert, wissen
Sie, und der Benutzer dort mit ihm interagiert, was wird passieren? Was wollen wir, dass der Zeh passiert? Was ist der Zweck dieses Systems? Und deshalb ist es ein Prozess, um die Ziele eines Systems zu ermitteln. Am Ende versuchen
die Anforderungen nur, die Ziele des Systems herauszufinden. Was wir erreichen wollten, fängt das Was ein und nicht das, wie das wichtig ist, ist, dass wir nur versuchen herauszufinden, was nicht, wie wir es schaffen wollen. Das Wie ist für Design. Viele Leute könnten mit einer Anforderung von C,
S S und HTML kommen, um das Front-End zu erstellen. Und das ist keine Voraussetzung. Das sind drei. Wie das ist, was wir verwenden werden, um das Front-End zu bauen. Und so das ist
dasein Teil der Designanforderung. Könnte sein. Verwendet ein E-Mail-Adressfeld, um die E-Mail-Adresse zu erfassen. Oder wir wollen die E-Mail-Adresse und einen Kommentar erfassen. Also sagen wir nicht, wie wir das machen werden. Wir versuchen nicht, Technologie zu definieren, wie wir das tun wollen. Wir sagen nur, was wollen wir, dass der Benutzer in der Lage sein kann? Was wollen wir? Das Endziel zu sein? Und insgesamt erstellt
die Anforderungen in der Regel ein Dokument, das alle diese Details enthält. Normalerweise gibt es als gäbe es Aufzählungslisten oder es gibt , weißt
du, wenn er wirklich offiziell ist ,
dann
hast du , weißt
du,
wenn er wirklich offiziell ist,
dann
hast dueine
Anforderung für zwei A oder so etwas. Aber oft, wenn Sie nur für ähnliche,
mittlere oder kleine Unternehmen arbeiten , wird
es einfach eine Liste der Dinge sein, die Sie erreichen möchten und die Anwendungsfälle , mit denen die Benutzer gehen sollen. Lassen Sie uns also die Bedeutung von Anforderungen abdecken. Warum haben wir Anforderungen verwendet? - Was? Was rettet es uns am Ende? Es hört sich einfach so an, würden wir nur mehr Zeit verbringen. Wir könnten gut mit allen Ingenieurskunst beschichten. Und das ist wichtig. Ist das irgendein Ingenieurwesen? Sie dio jede Technik Sie dio Sie haben diese Art von goldenen Regel und die goldene Regel ist , dass die Zeit strategisch im Voraus reduziert Kosten und Zeit später. Nun, das sind Daten aus einer Studie, die gezeigt hat, dass Sie strategische Auszeit verbracht haben, aus dem Grund, warum ich sage ,
strategisch ist, nicht nur darüber reden, wissen
Sie, bevor wir das Ding entworfen haben, nur hin und her zu reden, für Weißt du, 40 Stunden, die wir tatsächlich sein wollen, du weißt schon, fokussierte Arbeit hier ,
entwerfen , mögliche Probleme
finden, alle möglichen Anwendungsfälle finden, wissen
Sie, im Grunde den Code erstellen, bevor wir den Code berühren. Das ist es, wovon ich rede. also Zeit im Voraus strategisch verbringen, werden Kosten und Zeit später reduziert, und das ist eine Art Trend hier. Nein, Lotus, dass der Trend so etwas wie dieser Trend der verschwendeten Zeit ist. Es gibt also einen Punkt, an dem es
Ihnen nicht hilft, mehr Vorabzeit zu nutzen. Also, wissen
Sie, wenn wir innerhalb von 50% aller Zeiten gehen, wird
es hier nicht viel ändern. Es wird nicht tatsächlich die Überschreitungskosten reduzieren. Sie bemerken, dass das nicht auf Null sinkt. Das liegt daran, dass die meisten Projekte immer über 40% hinausgehen. Das Budget ist irgendwie die Norm, und oft steigt es in dieser großen Zahl auf, weil die Leute nicht entsprechend planen. Aber das sagt nur von der Gesamtzeit hier. Also, das ist Zeit insgesamt. Worüber wir reden, ist, wenn wir 0% unserer Zeit verbringen, also verbringen wir absolut keine Zeit im Voraus. Die typischen Kosten über auf sind 200%. Wenn wir ungefähr 3% und ungefähr 5% ausgeben, hatten wir 100% und 50%, also waren wir nur 5% unserer ganzen Zeit sehr, sehr kleiner Teil der Zeit, weißt
du, wenn er 100 Stunden verbrachte, reden wir über fünf Stunden im Voraus, Ich gehe einfach über dieses Ding. Wir können uns 150% der zusätzlichen Überschreitung sparen. Und das ist sowohl in Dollar als auch in der Zeit gekostet. Also ist es auch, es ist beide üblich, weil die beiden Hand in Hand miteinander gehen. Wenn es länger dauert, wird
es mehr kosten. Sie zahlen Ihren Ingenieuren Ihre Bezahlung für die Gesundheitsversorgung, Ihren Schmerz für Steuern. Du zahlst das ganze Zeug. Und je länger es dauert, bis du anfängst, dein Geld zurück zu verdienen, desto mehr wird es kosten. Und dann, wenn wir 10 bis 20% gehen, bekommen wir das goldene Gebiet, wo wir nur die 40% Überschreitung bekommen. Und so wissen Sie, was ist der Unterschied zwischen dem? Nehmen wir an, wir verbringen 0% im Voraus und das Produkt hätte 200 Stunden dauern müssen. Nun, das ist nur eine einfache Mathematik hier wird eine 200% Überschreitung haben, was bedeutet, dass wir 100 insgesamt 400 suchen, so dass ein 200% über auf es ungefähr 600
Stunden sein wird , um dieses Projekt abzuschließen, wenn es nur 200 Das ist ein riesiger Riesensprung genau dort der Zeit, den es hätte nehmen sollen, wo, wenn wir nur 5% setzen. Also in diesem 200 unser Projekt, wenn wir nur 5% oder 10 Stunden bestimmt hätten, dann wären wir auf Lee bei einer 50% -Überschreitung,
was bedeutet, dass unsere Gesamtsumme 300 Stunden betragen würde. Mit 10 Stunden Aufwand hier haben wir uns tatsächlich 300 Stunden Back-End-Probleme gespart. Und das ist einfach so, wie die Macht von all dem ist, dass die Zeit im
Voraus hilft , Anforderungen. Dokument ist eines dieser Dinge, um die Zeit im Voraus und gleich mit dem
Entwurfsdokument zu verbringen . Aber beide sind sehr wichtig. Sie bringen uns auf die gleiche Seite und sie bringen uns dazu, effizient zu arbeiten.
6. 2-2 Anforderungen und Spezifikationen: Es gibt ein paar verschiedene Kategorien, wenn wir über den gesamten Bogenschritt
der Anforderungen sprechen . Und diese Kategorien definierten verschiedene Aspekte des Systems, das wir in
dieser Vorlesung aufbauen wollen . Worüber wir sprechen, sind Anforderungen und Spezifikationen, also gibt es einen großen Unterschied zwischen den beiden und Sie werden zunächst sehen, dass sie ziemlich
ähnlich aussehen . Aber wenn du anfängst, in dieses Zeug einzutauchen, verstehst du, dass es eine Bedeutung zwischen den beiden gibt. Der Vers, über den wir reden werden, wird die Anforderungen sein. Also mit Anforderungen, was unsere Anforderungen werden. Eine Anforderung ist eine nicht technische Definition von etwas, das der Benutzer vom System benötigt . Also, was das bedeutet, ist, dass es in die Bedingungen des Laien gebracht wird. Es sollte von fast jedem verstanden werden. Also kein Jargon. Diese Art von kein Jargon spricht über keine Informatik, kein Programmierjargon. Wenn du wie eine medizinische Form
machst, kennst du unsere Suche nach Behandlungsform. Sie können im Fachjargon im medizinischen Bereich oder im Baubereich in die
Benutzeranforderung setzen , denn unser Publikum wird entweder, wissen
Sie, das medizinische Feld des Baufeldes oder die App Entwicklungsfeld. Das ist vollkommen in Ordnung. Aber wir wollen nicht in Jargon wie mein SQL oder Jason alles, was dies in der
Lage sein sollte , vom Bauleiter oder von,wissen
Sie,
dem Automobil-Fabrikmanager zu lesen wissen
Sie, . Er sollte in der Lage sein, das zu lesen und zu verstehen. Ja, das ist es, was wir in unserem System wollen. Mit den Anforderungen wollen
wir also keinen Informatik-Jargon. So, zum Beispiel, eine Anforderung könnte die Fähigkeit sein, einen Antrag auf Behandlung medizinische Form einzureichen. Wissen wir, was ein Antrag auf Behandlung ist? Nicht wirklich? Es spielt keine Rolle für uns. Was wir wissen, ist, dass wir den Kunden gesprochen haben und sie sagen, sie wollen die Fähigkeit, einen
Antrag auf Behandlung, medizinische Form und mit diesem schwächen Anfrage später einreichen. Aber wir wissen, dass es eine medizinische Form sein würde, also sollte es dort etwas Sicherheit geben. Es wird eine Art Kontaktformular aus dem Antrag auf Behandlung sein, und so wird das unsere Anforderung für diesen Schritt sein. Und dann, wie ich später sagte, können
wir mit ihnen genau klären, was sie bedeuten. Dann haben wir diese Spezifikationen, so dass die Spezifikationen sind im Grunde technische Hinweise, Hinweise darüber, was getan werden muss, um die Anforderung zu erfüllen. In dieser Situation ist
es also eine technische Definition dessen, was vom System benötigt wird. Wir werden es einfach halten. Wir versuchen nicht, es hier zu entwerfen. Das ist sehr wichtig. Dies ist der größte Fehler, den du nicht versucht hast, ihn zu entwerfen. Was wir versuchen zu tun, ist nur,
im Grunde, im Grunde, obwohl einige Top-Level-Schlüsselwörter hier drin. So verstehen wir die Bedeutung bestimmter Aspekte der Anforderung. In dieser Situation, die von dieser Anforderung ausgehen, könnte
eine Spezifikation darin bestehen, in A s an 56 verschlüsselte Formulardaten vom Frontend an
den Backend-Server zu senden . Du wirst bemerken, dass wir ein bisschen Jargon da drin haben. Wir haben vorne und sind wieder reingekommen. Wir haben einen S C 2 56 verschlüsselt, aber nichts davon definiert die Technologie. Wir werden nichts davon benutzen und sagen, dass wir es nehmen und es so
durch dieses Medium übergeben werden,
wie, weißt
du, weißt
du, eine Art von dieser sehr tiefen Erklärung. Sie werden feststellen, dass dies falsch ist. Dies ist, was wir in das Design-Dokument setzen wir verschlüsseln verwenden,
die eine Technologie ist, um Daten in JavaScript zu verschlüsseln, um A S bis 56 verschlüsselt zu senden. Jason hat sich wieder daran gebildet. Das ist eine Art, sich auszubilden. Wir müssen nicht genau wissen, welche Technologie wir verwenden, die aus JavaScript besteht. Das ist eine Technologie für meinen SQL-Server, etcetera, etc. Da ist zu viel Jargon drin. Es gibt zu viel, was im Grunde definiert, wie das Projekt gebaut werden soll. Darum geht es in dieser Phase nicht. Alles, was wir sagen wollen, ist, dass wir verschlüsselte Daten brauchen. Wir würden es vorziehen, die Secure A es 2 56 Und wissen Sie, heutzutage ist es wahrscheinlich, dass wir eine andere Technologie verwenden wollen, aber das ist nur für das Beispiel. Aber wie auch immer, wir wollen A S verwenden 56 wir wollen es vom Front-End nehmen, wo der Benutzer kann sich mit dem Back-End verbinden. Danach werden keine weiteren Informationen benötigt. Wenn wir zum Designset kommen, können
wir damit beginnen, die Technologien einzubringen, die wir verwenden werden. Also lasst uns hier ein paar Beispiele durchgehen. erste Beispiel ist, gehen wir zurück in die reale Welt. Lassen Sie uns über die Erstellung eines SUV-Reifens sprechen. Und mit diesem SUV-Reifen, worüber wir reden werden im Grunde nur eine einfache Anforderung und in einigen Spezifikationen, die mit dieser Anforderung passen könnten, so dass wir wieder den Unterschied
zwischen den beiden sehen können . In der Regel, wenn wir reden von diesem Zeug, werden
wir sagen, Benutzeranforderungen und System Sessa Urlaub. Was das bedeutet, ist, dass es irgendwie definiert wird. Also jeder ist auf der gleichen Seite, wenn wir über Anforderungen sprechen, die darüber sprechen was der Benutzer in der Lage sein will, dio. Nie. Wir sprechen über die Systemspezifikationen. Wir sprechen darüber, wie das System im Grunde funktionieren sollte, so dass einige der Einschränkungen einige der Anforderungen an das System selbst. Die Benutzeranforderung sagte also, dass der Reifen auf einem SUV-Typ Automobil arbeiten muss. Oder vielleicht muss der Benutzer sein, um den Reifen auf einem SUV-Typ Automobil zu setzen. Jede Warnung davor erfasst den Punkt. Wir haben einen Benutzer. Er will in der Lage sein, diesen Reifen zu nehmen und ihn an ein Automobil anzulegen. Das war's. Jetzt die Spezifikationen. Was hat dieser Reifen zu tun? Was bedeutet das? , um einen Reifen zu nehmen und es auf einem SUV-Typ Automobil. Und wieder, sehen
Sie, das ist ein kleines bisschen Jargon, aber das ist okay, weil wir in der Automobilindustrie sind. Deshalb können
wir hier oben den Fachjargon der Automobilindustrie verwenden. Wir reden nicht über etwas Bestimmtes, bis wir zu diesem Teil gekommen sind. Also, was wir gerade sagen werden, ist, dass der Reifen in der Lage sein muss, bis zu £7500
Abwärtsdruck zu unterstützen . Der Reifen muss alle uns Punkt-Standards für die Montage des Reifens passen muss alle ust Sicherheit. Uh dot Sicherheitsstandards und der Reifen muss Tee oder eine höhere Geschwindigkeit Qualität haben. Sie müssen nicht wissen, was jemand von Ihnen weiß, das bedeutet, aber was Sie sehen können, ist, dass wir hier oben die Grundvoraussetzung haben. Und hier unten spezifizieren wir nur einige der Dinge, die der Reifen dio-sollte. Wir reden nicht von der exakten , Chemie des Gummis,der verwendet werden sollte. Wir reden nicht über den Luftdruck innerhalb des Reifens, um die £7500
Luftdruck zu erwerben . Wir reden nicht von Design. Alles, worüber wir reden, sind nur einige der Einschränkungen, einige der Dinge, die wir in diesen Reifen umsetzen müssen. Schließlich nehmen
wir es nur ein bisschen zu zurück in die Technologie-Welt. Also jetzt haben wir diese andere Anforderung. Die Benutzer sollten in der Lage sein, ein Video auf die Website hochzuladen. Wir haben diese große Website. Es gibt 100 dieser Anforderungen und dies ist nur eine der Anforderungen. Diese sollten in der Lage sein, ein Video auf die Website hochzuladen. Also, jetzt haben wir nur einige Spezifikationen hier unten. Was sollte der Benutzer akzeptieren? H 0.264 bewegen und mpg-Dateien für Upload Diese nur Kategorien. Wir sagen nicht, wie sie sein werden, außer wir sagen nicht die Technologie, die wir verwenden müssen, um sie zu akzeptieren. Wie geht's ihnen? Was sollten wir akzeptieren können? Was wir mit einem Video meinen. Und so spezifizieren wir, dass damit nur ein wenig, und dann der Upload sollte der Uploader das Video komprimieren und drei verschiedene Kopien wieder
auf dem Server speichern . Das ist nicht etwas, was der neue Benutzer wirklich wissen muss. Das ist nur etwas, das wir als Designer dieser Website betrachten und spät sagen, wir werden dieses Video nehmen und es auf bestimmte Weise verwenden wollen. Wir sollten es komprimieren und erneut auf dem Server speichern. Wir erwähnen nicht den Typ des Servers. Wir erwähnen nicht die Dimensionen der drei Videos. Nur sollte es die Fähigkeit haben, dies zu tun. Und schließlich ein Link zu dem komprimierten Video oder Video davon ab, wie wir es wollen. Sollte per E-Mail an den Benutzer nach Abschluss gesendet werden. Auch hier sprechen
wir nicht über E-Mail-Server oder wie wir die E-Mail formatieren wollen, oder Sie wissen der Link aussehen soll. Wie der Videoplayer, irgendetwas von dem Zeug. Wir reden nicht darüber. Wir reden hier nur über eine Spezifikation. Der Link, nachdem er fertig ist, sollte an den Benutzer gesendet werden. Und natürlich ist das vielleicht nicht alles inklusive. Es könnte mehr geben, dass wir uns hinsetzen und anfangen müssen, etwas mehr zu markieren. Das und dann haben wir vielleicht eine andere Anforderung. Daher brauchen
wir noch mehr Spezifikationen, usw
cetera, etc. Aber ich hoffe insgesamt, dass Sie die Vorstellung bekommen, was der Unterschied zwischen einer Anforderung und den Spezifikationen ist Anforderung mit dem Benutzer befasst. Es ist sehr einfach. Es ist in Laien ausgedrückt,
etwas, das ein Klient betrachten und gehen kann. Ja, das Programm sollte definitiv in der Lage sein, das zu tun oder nein,
Vielleicht, dass das nicht genau definiert, was wir wollen. Und dann sind die Systemspezifikationen wie unsere Notizen. Es ist wie die Entwicklernotizen sagen:
Okay, Okay, also will der Benutzer, dass Bill dies tut, und was er wirklich will, ist, dass er in der Lage sein muss, diese Arten von Dateien hochzuladen. Er muss in der Lage sein, dies mit dem Reifen zu tun, um diese Standards zu erfüllen, und das ist, was die Systemspezifikationen kommen auf.
7. 2-3 Funktionale vs 2-3: die anderen beiden Kategorien, die wir wirklich besprechen müssen, wenn wir über Anforderungen sprechen, sind nicht-funktionale Vers, funktionale Anforderungen. Also, was ist der Unterschied zwischen diesen beiden? Sind die funktionalen Anforderungen Anforderungen und Spezifikationen, die sich auf die
Funktion des Programms beziehen ? Das ist das Schlüsselwort hier. Es ist die Funktion des Programms hier. Worüber wir reden, ist, was sollte das System schulden? Am Ende sollte
das System in der Lage sein, ein Formular zu erstellen. Wir gehen die Liste der Dinge, die das Formular sollte in der Lage sein, dio Es sollte Daten sammeln. Es sollte Daten senden, die es vor Eingabe schützen sollte. Es sollte das tun. Das sollte es jetzt tun. Nicht funktionell sind die Anforderungen und Spezifikationen darüber, welche Ziele erreicht werden sollten. Zum Beispiel, Sicherheit. Wie soll das Formular jetzt verschlüsselt werden oder kosten? Wie wird die Zeit eingeschränkt? Vielleicht Wie lange sollte das Formular dauern, bis es einreicht? Vielleicht sollte das Formular Daten an den Server und hier unten in der nicht funktionalen Anforderung senden. Darüber hinaus sollte
es Daten innerhalb von 500 Millisekunden einreichen. Nehmen wir an, dass dies nicht etwas ist, dass das System insgesamt so tut. Daher ist
es nicht funktional. Es ist etwas, das es Einschränkung ist. Es ist etwas, das mit dem Funktionellen hier unten passieren muss, wir können einen Blick auf ungeprüfte werfen, die früher übergegangen sind. Also denken Sie daran, die Send A s zu 56 verschlüsselt aus Yada Yada gebildet. Wir können das aufschlüsseln, um es irgendwie in funktionale und nicht-funktionale zu zerlegen. So wird die 1. 1 gesündigt, gebildet aus einem Front- und einem Back-End-Server. Was macht das? Nun, es ist eine Funktion. Es nimmt Daten, und es sendet ihm seine Definition. Was genau sollten Produkte tun? Und für diesen hier sprechen
wir von einer funktionalen Anforderung. Jetzt ist der untere ein nicht funktionaler. Sie können sehen, dass ich den ganzen Verschlüsselungsteil davon herausgenommen habe, um sie irgendwie zu zerbrechen und Sie werden sehen, dass, wenn Sie die richtigen Anforderungen haben, die Dinge ein wenig Wunschwaschy
tatsächlich kombinieren könnten , und das ist keine genaue Wissenschaft. Jedoch, gehen durch sie, Sie könnten einige dieser Dinge zu klopfen und Figur Warten, Wir sollten diese in zwei separaten Kategorien setzen. Irgendwie Dinge. Jede Hoffnung. Der untere Teil. Der Verschlüsselungsteil ist der nicht funktionale, der nicht funktionale. Viele Male wird an seine NFR nicht-funktionale Regierung verwiesen, und das ist fr. Viel musste abnehmen, die sind so funktionsfähig,
äh, äh, aber trotzdem, das ist nicht etwas, was das Programm tun sollte. Es ist keine Operation. Es ist nicht etwas, das der Benutzer tut, das Sie wissen. Wenn er es nicht kann, dann stimmt etwas nicht mit dem Produkt. Es ist eine Voraussetzung. Es ist etwas, das mit den funktionalen Anforderungen passieren sollte. Die funktionale Anforderung besteht also darin, die Formulardaten zu senden. Und dann ist die nicht funktionale Anforderung, dass es verschlüsselt sein sollte, dass es nur 500 Millisekunden
dauern sollte, dass es es an drei verschiedene Server senden sollte, bevor es zu unserem Server kommt. Aus irgendeinem Grund ist
es jetzt das nicht funktionale dahinter. Nonfunctional hat auch ein paar verschiedene kleine Kategorien, und was diese Kategorien sind, sind im Grunde einige der verschiedenen Arten von Tränen von nicht-funktionalen, und Sie werden beginnen, sie nur ein wenig hier zu verstehen. Mehr noch die 1. 1 sind die Produktanforderungen,
etwas, das das Produkt wieder tun muss. Es ist nicht etwas, das Produkt ist, wissen
Sie, mit der Umwelt zu
handeln, ohne etwas zu verändern. Dies ist nur ein Weg, dass das Produkt entworfen werden sollte, eine Möglichkeit, dass es in die Welt integriert werden sollte. Und sagen wir, dass Sie einen Kunden haben, der ist, vielleicht vermietet er die Fähigkeit, diese Software zu erstellen, aber am Ende will
er sie selbst pflegen. Daher braucht
er es in einer bestimmten Sprache beschichtet. Java. Es ist hier keine Rede von Design. Es gibt kein Hin und Her. Das ist eine Voraussetzung. Es ist etwas, was er sagt. Das Programm muss in Java codiert sein. Das war's. Es gibt keine Diskussion über diesen Punkt. Aus diesem Grund wird
das jetzt zur Voraussetzung. Ist es die Art und Weise, wie das Problem das Problem funktioniert? Zum Beispiel könnten
wir eine Webseite erstellen, die ein Formular hat, das wir in Java oder CSS und HTML und
JavaScript erstellt haben, oder vielleicht sogar Python oder Ruby. Wir können in all diesen verschiedenen erstellen, also spielt es keine Rolle, was die Codierungssprache ist. Das ist nicht Teil der Funktion des Programms, das eine nicht funktionale Anforderungen ist,
etwas, das wir tun müssen. Aber das Programm reagiert deswegen nicht. Daher haben
wir diese nicht-funktionale und es ist eine Produktanforderung. Dann gehen wir auf organisatorische Anforderungen ein, und das hängt normalerweise von den Richtlinien und Standards sowie von den Stilen und Regeln
der Organisation ab, in der Sie arbeiten. Zum Beispiel ist die Organisation,mit der du arbeitest,
vielleicht eine militärische Organisation. Zum Beispiel ist die Organisation, Und sie sagen, jedes Mal, wenn Daten die Hände wechseln, müssen
sie verschlüsselt werden. Es spielt keine Rolle, ob es intern oder extern verschlüsselt werden muss. Deshalb, einer unserer organisatorischen Verbrechen. Es wäre die Produktdaten müssen von ES verschlüsselt werden 2 56 Und wieder, Ich benutze dies die ganze Zeit. Ähm, nur weil es ein einfacher Verschlüsselungsalgorithmus ist, natürlich militärischer Standard. Wahrscheinlich wird es etwas geben,
viel stärker, aber spielt keine Rolle. Das ist die Technologie hier. Worüber ich rede, ist, dass sie uns sagen, dass wir das benutzen müssen. Oder vielleicht ist es unsere eigene Unternehmenspolitik. Was auch immer
es ist, es geht nicht um die Funktion des Programms und wie es mit der Welt
um es herum interagiert . Es geht darum, wie es entwickelt werden sollte und was innerhalb des Programms passieren sollte. Und schließlich, für die Organisation, die wir haben, wird
das Projekt mit der Scrum-Methodik entwickelt werden. Wir sind in einer Firma, die Scrum verwendet, und darüber gibt es kein Streit. Es gibt keine Rede darüber, also wenn wir in die Entwurfsphase kommen, ist
das keine Frage, die nicht etwas ist, das ein Haufen Ingenieure
zusammenkommen und sich einfallen lassen. Daher ist
es eine Voraussetzung. Wir sind in einer Firma. Es benutzt Scrum. Deshalb ist
das eine Anforderung. Und es geht nicht darum, wie das Programm mit der Welt interagiert, was ich immer sage, aber ich versuche, dieses Haus zu bohren. Daher ist
es eine nicht funktionale Anforderung. Dann kommen wir endlich in die externen Anforderungen und das ist einfach etwas. Wann immer wir über externe Dinge sprechen, die irgendwie auf unser Produkt stoßen, und dies könnte externe Gesetze oder Vorschriften oder sogar Trends sein, denen wir folgen müssen, und deshalb haben wir diese, die in diese Anforderungen zusammenkommen. zum Beispiel an, Nehmen wirzum Beispiel an,dass die U die Europäische Union ein Gesetz hat, wissen
Sie, das Freedom Act, Artikel 1, Abschnitt 2, das besagt, überhaupt Daten müssen diese Art von Verschlüsselung SSL-Verschlüsselung zwischen Datenpunkten oder was auch immer. Das muss eine Voraussetzung sein, denn wenn wir uns entwerfen wollen, ist
er eine Software, die wir im U verkaufen. Sonst wird es niemand kaufen. Und wenn sie es tun, werden
wir von der Regierung verklagt, und unser Produkt wird im Grunde eine Haftung für uns sein, anstatt einen Vermögenswert. Und das wollen wir nicht. Das ist also eine externe Anforderung. Es könnte auch bestimmte Trends geben. Vielleicht gibt es einen bestimmten Sicherheitstrend oder einen bestimmten Trend, wie die Webseite muss in der Lage sein, innerhalb von zwei Sekunden zu laden. Ah, viele Leute werden Webseiten verlassen, wenn sie nicht innerhalb von zwei Sekunden geladen werden. Es zeigt nicht etwas, das nicht genau ist, ah, Gesetz oder Regulierung, aber das ist ein Trend. Das sollten wir schuld haben. Das sollte in unser Programm umgesetzt werden, wenn wir auf dem Markt wettbewerbsfähig
sein wollten , damit wir hier und auch externe Anforderungen festlegen können. Aber das ist die letzte Klassifikation der Anforderungen hier. Wir haben diese nicht funktionstüchtig. Wir haben diese funktionalen Anforderungen. Denken Sie daran, eine funktionale Anforderungen, wie das Programm mit der Welt um sie herum interagiert . Es verändert etwas. Es bewegt etwas. Der Benutzer ist aufgrund dieser Anforderung in der Lage, etwas zu tun. Während die nicht-funktionalen Anforderungen sind die Dinge, die das Programm sollte in der Lage sein,
ihre Dinge zu tun , die nicht unbedingt die Welt interagiert. Aber sie beschränken uns. Sie machen uns dazu, etwas zu tun. Deshalb müssen sie in ihre Voraussetzungen Dokumente gestellt werden.
8. 2-4 WRSPM Modellvorstellung: Also lasst uns in das erste Modell des Kurses springen, und das wird ein Modell sein, das die gesamte Software-Produktion kapselt . Es ist etwas, das W.
R S P M Modell oderkurz
das Weltmaschinenmodell genannt R S P M Modell oder kurz wird. Und was dieses Modell, die Bilder, ist die Interaktion zwischen der Umwelt und dem System. Und das ist wichtig, weil Sie verstehen müssen,
dass es viele verschiedene Aspekte gibt , die in ein Stück Software gehen, dass viele verschiedene Dinge, die Sie vielleicht nicht denken , dass Sie denken, wenn Sie ein Stück Software zu entwerfen. beispielsweise Wenn Siebeispielsweiseeine Anwendung auf Ihrem Computer haben, Sie über ein Eingabe- und Ausgabegerät verfügen, um mit dieser Anwendung zu kommunizieren. so zum Beispiel Wenn wir
zum Beispielsoetwas wie eine Fotobearbeitungssoftware verwenden, um die Fotos tatsächlich zu bearbeiten, müssen
wir nicht nur das Programm selbst machen, sondern auch die Hardware, auf der es läuft, was Ihr PC sein wird, und Sie müssen Eingabegeräte haben. Also, zum Beispiel, eine Tastatur und eine Maus, und dann oben darauf, müssen
Sie den Menschen haben, der tatsächlich mit all dem interagiert und versteht, wie
man alles benutzt. Dies ist also eine Möglichkeit, das zu kategorisieren, so dass wir uns die Anforderungen eines Systems ansehen
und sehen können , ob uns etwas fehlt, um es zu betrachten. Und fehlt uns eine Annahme, die man machen sollte? Gibt es ein bestimmtes Element, das wir nicht gebührend berücksichtigen? Es erlaubt uns nur, diese an den richtigen Ort zu bringen. Also dann ist die linke Seite dieses Venn-Diagramms etwas, das die Umgebung genannt wird, und das ist, wo das System arbeiten wird, um zu denken. Zum Beispiel ist
ein Team etwas, das häufig verwendet wird, um dies zu kategorisieren. Zum Beispiel Zum Beispiel haben
wir hier eine A T M Maschine, und wenn Sie in einem anderen Land leben, ist
es eine Geldspendermaschine. Ich weiß, dass verschiedene Länder verschiedene Dinge in Amerika genannt haben. Es nennt sich eine T M Automat. Grundsätzlich gehst du zu ihm und bekommst Geld daraus. Ziemlich einfach, aber du musst denken, dass das ein Team ist. Es funktioniert in der Welt, der Sphäre der Welt, und dann ist da ein Programm drin. Es läuft ein kleines Programm, und dann verbindet es sich mit etwas außerhalb. Vielleicht geht es an einen großen Server oder Banken oder so etwas. Aber es gibt all diese verschiedenen Elemente, die hineingehen. Die linke Seite der Umgebung. Worin arbeitet unser System? Und hier haben wir zwei verschiedene Bereiche oder zwei verschiedene Dinge, die wir betrachten, und die 1. 1 ist W. und das W ist, wir werden sehen, dass wir alle diese Briefe durchmachen werden. Hier ist die Welt. Es ist das W hier. Also die Welt, das kommt normalerweise auf Annahmen, die wir machen müssen, wenn wir eine Software
machen. Und diese könnten wirklich,
wirklich einfach sein und fast unzitiert dumme Annahmen zitieren. Aber sie müssen
zum Beispiel
in einem Team gemacht werden , das wir müssen. Eine der weltweiten Annahmen ist, dass es eine Bank auf der anderen Seite gibt, die Geld hat, dass dies einen Zweck für dieses ein Team gibt, dass es eine Entität gibt, die tatsächlich den Überblick über diese Transaktionen hat, und deshalb hat das Team Zweck. Eine der Annahmen könnte also sein, dass es Banken gibt, dass Geld existiert, dass ihr Geld eine Art Entität ist. Nun, natürlich, Sie nicht in der Lage sein, Sie wissen, einen besseren Weg, um Ihr Programm mit dieser Annahme zu entwerfen. Aber indem Sie die Annahme dort hineinsetzen, beginnen
Sie, das Programm nur ein wenig besser zu verstehen. Und dann kommt man zu Dingen, die wichtig sind, wie das A-Team. Müssen wir die Annahme haben, dass das A-Team, in dem diese Maschine immer mit Strom verbunden
sein wird . Nun, das ist ein wichtiger, weil Sie vielleicht denken, dass Sie es in eine Stadt bringen wollen, die vielleicht nicht die bestes Stromnetz. Vielleicht schaltet es alle 30 Sekunden ein und aus, sind 30 Minuten. Vielleicht, weißt
du, ein oder zwei Tage die Woche. Es hat einen Stromausfall von einer Stunde oder mehr. Das ist eine Annahme, an die du denken musst. Okay, wollen wir, dass das A-Team einfach abschaltet? Wollten wir eine Ersatzbatterie haben? Soll das Programm zurückgesetzt werden? Was wollen wir mit all dem machen? Und so ist das sehr wichtig. Wann immer Sie irgendwie über dieses Zeug gehen, ist es, diese Annahmen zu verstehen, so dass Sie keine Anforderungen verpassen, und das ist der nächste Teil sind die Anforderungen. Das System ist also eine Art von dieser Seite der Dinge. Und bevor wir das System tatsächlich bauen, müssen
wir in einer konzeptionellen Idee verstehen, Was bauen wir? Was macht dieses System? Was ist der Zweck? Was versucht es zu erreichen? Welches Problem löst es? Und so kommen die Anforderungen ins Spiel. Das ist Teil der Umwelt, weil die Umwelt ein Problem verursacht hat. Die Umgebung hat ein Problem erzeugt, ob es nur ein passives Problem ist,
etwas, das wir denken,
Hey, Hey, das könnte behoben werden oder ob es sich um ein tatsächliches Problem handelt,
etwas, wo etwas waren dass vielleicht Menschen erzeugt oder dass Überstunden Gesellschaft geschaffen hat und deshalb arbeiten wir. Wir schaffen unsere Anforderungen. Der nächste Schritt ist, dass wir in diese Art der Mischung zwischen Umwelt und System kommen, und hier kommen wir in Spezifikationen. Also haben wir das S genau hier gesetzt. Spezifikationen gehen über die Art der, ähm, die feinen Details des Systems. Also sind wir immer noch in dieser Umwelt Sache. Wir sind immer noch in der Lösung des Problems, aber auch das System wurden auch bestimmen, was das Beste für das System ist. Wir holen technische Details aus dem Weg, also hier ist die Mischung, die wir tatsächlich bauen. Dieser Teil wird oft als Schnittstelle bezeichnet, die den Zweig zwischen der Umgebung und
dem System, das Terminal für
die Verbindung der Welt mit diesem Programm. Und das natürlich führt uns
natürlichzum nächsten hier unten, das Programm ist. Und jetzt stehen wir auf dem System. Das Programm ist also der Code selbst. Das Programm ist, was ausgeführt wird. Es sind die If else Aussagen. Es kontrolliert die Hardware. Es packt die Daten. Es sendet die Daten. Das ist es, was das Programm ist. Es gibt nichts zu fortgeschritten, aber es ist irgendwie der größte Teil der Softwareentwicklung ist das Erstellen des Programms , und deshalb werden wir im Grunde für den Rest des Kurses darüber sprechen, und dann haben wir endlich die Maschine, und das ist wichtig, weil wir verstehen müssen, auf welcher Hardware es läuft? Die Maschine ist das A-Team selbst. Es sieht die eigentliche Einheit Ah, der RAM, die CPU die Netzwerkkabel, die Internet-Service-Provider-Server. Das ist das ganze Zeug. Es ist die physische Entität, auf der das Programm ausgeführt wird. Und das ist wichtig zu wissen, denn vielleicht lösen wir das Programm auf, das ein Internet verwenden muss. Das ist, ich weiß nicht, vielleicht 100 Megabyte pro Sekunde. Und wir erkennen, dass nicht überall trägt, dass Internet für ein t. M. Also müssen wir unsere Anforderungen überarbeiten. Vielleicht müssen wir eine Anforderung hinzufügen, bei der es unter 10 Megabyte pro Sekunde liegen muss, Dinge wie diese. Also, das ist nur wichtig zu betrachten, während dies jetzt ist auch eine andere kleine Kategorie hier, und wir können diese anderen kleinen Kreise wie so erstellen. Und was wir damit haben ist, dass wir etwas namens E h E V und dann haben wir, ähm SV s H Und was? Dies sind sie nur bedeuten Umwelt, versteckte Umgebung, sichtbare Software sichtbar und Software versteckt. So Umgebung, versteckte Umgebung, sichtbare Software oder System sichtbares System versteckt. Und was das sind, ist, dass sie nur ein bisschen mehr von der Art der Klassifizierung
der Umgebung bestimmt . Also mit der Umgebung versteckt, wir haben Dinge wie Ideen und Teile von Daten, die ah, Mensch weiß zum Beispiel, e h wäre eine Pin-Nummer. Das ist ein Stück Daten. Es ist ein „Es ist ein Konzept“. Es ist etwas, das wir integrieren müssen. Wie auch immer es versteckt ist, wird
es eigentlich nicht zur Verfügung stehen. Der Benutzer ist nicht auf der Seite des A T. M. Es ist etwas auf Lee. Ein Mensch weiß es in seinem Verstand. Daher ist
es eine Umgebungsvariable, die ausgeblendet ist. Dann haben wir die Umgebung sichtbar. Eine sichtbare Umgebung ist die Dinge, die tatsächlich der realen Welt ausgesetzt sind. Immer wenn Sie diese Pin-Nummer tatsächlich in das System eingeben, wird
sie nun sichtbar. Es wird Zitat unquote Stahl Kräuter. Jemand könnte dir über die Schulter schauen und das nehmen. So viele Male Umgebung sichtbar sind die Daten, die tatsächlich
diese Art dieser Konzepte in Ihrem Kopf eingegeben werden, wenn sie tatsächlich in das System eingegeben werden. Und dann haben Sie etwas bekannt, ein System sichtbar, und das ist ziemlich einfach. Es sind die sichtbaren Teile des Systems. Es sind die Dinge, mit denen wir auf einem Computer interagieren, die Tastatur und die Maus auf
einer A T M Maschine wären . Es ist der Ort, an dem Sie die Karte einlegen. Das ist das Stift-Pad. Es sind die Wege, es durchzugehen. Das ist also die Art der Außenseite des obwohl die Schnittstelle,
die Art, wie wir uns mit Dingen verbinden. Und deshalb können Sie sehen, dass dies alles Teil dieser Schnittstelle ist. Hier haben wir Daten, die aus der Zusammenfassung kommen, was bedeutet, wie nicht konkret. Es sind nur Informationen, die in unseren Köpfen gespeichert werden oder vielleicht auf einem anderen Gerät, das in
die Schnittstelle kommt . Und damit geben
wir es in den sichtbaren Teil der Maschine ein. Das ist
also also der sichtbare Teil, der sichtbare Teil der Maschine. So zum Beispiel wäre
es
zum Beispielder kleine Bereich, in dem er die Dinge eintrat. Und dann haben wir Software versteckt und Software versteckt oder immer wieder sagt Software. Aber System versteckt ist das Backend. Es ist der Widder drinnen. Wir müssen das innere Funktionieren eines A T nicht kennen. Wir drücken einen Knopf. Die A-Team-Innenarbeitungen tun, was sie für dio ausgelegt sind. Dasselbe mit einer Menge Software. Wir, weißt
du, wenn wir zwei Seiten eines Bildes greifen, das sie in einem Bild gelesen haben und wir wollen. Das Bild sieht so aus, und wir möchten das Bild nach rechts drehen. Wir klicken auf die Schaltfläche Was auch immer ist in unserer Software, die , wissen
Sie ,
vielleicht hat, wie diese Pfeiltaste drauf, und es dreht sich. Wir müssen den Code nicht kennen, der darin eingeht. Wir müssen es nicht wissen. Nehmen Sie alle Einsen und Nullen und wenden Sie eine Formel darauf an und machen Sie all diese Sachen. Das ist der versteckte Teil. Das sichtbare System ist der Knopf, den wir drücken können. Und so dass diese Luft wieder Dinge, die Sie berücksichtigen möchten, wenn Sie diese
Variablen erstellen oder einfach nur, ah, diese Anforderungen oder die Art von Problembereich wollen nur verstehen, was ist die Umgebung Versteckt? Was ist die Umgebung sichtbar? Was ist das System sichtbar? Was ist das System versteckt? Du machst ein wirklich großes Stück Software. Diese Dinge sind von entscheidender Bedeutung, um das vollständige Nous des Problems zu verstehen. Als nächstes gingen
die Vorträge tatsächlich. Wir werden weiter in das eintauchen, also lasst uns weitermachen
9. 2-5 WRSPM tiefe Tauchgang: Jetzt haben wir ein besseres Verständnis des WRS PM-Modells kann eine Art grobes Verständnis davon sein. Lassen Sie uns in ein paar Beispiele springen und jede dieser Bereiche näher erklären. Also waren sie alle auf der gleichen Seite hier, und wir könnten das vielleicht umsetzen, wenn wir jemals ein Anforderungsdokument machen müssten . Also lassen Sie uns in jede der Kategorien springen und wollen sie einfach ein
wenig definieren . Wir haben die Welt, und wie ich schon sagte, die Welt ist im Grunde die Annahmen, die Annahmen über das, was wir entwickeln. Sie könnten etwas sein, das sehr,
sehr einfach ist , wie Strom zur Verfügung gestellt wird. Oder sie könnten etwas ziemlich nicht Grundlegendes sein. Zum Beispiel, mit einem Auto, es sein, dass Menschen wissen, wie man Autos fährt oder dass Menschen wissen, wie man ein Pedal und ein
Bremssystem benutzt . Das wäre eine Annahme, die wir wissen müssen, denn wenn wir ein neues System aufblasen, müssen wir
vielleicht ein Tutorial hinzufügen. Vielleicht gehen wir von dem Benutzer zu viel davon aus, und das wird unser Produkt scheitern lassen, weil wir keine Zeit damit verbringen ein System oder ein Tutorial zu
entwickeln. Vielleicht muss das eine Voraussetzung sein. Ein richtiges Tutorial, das getestet wird, wird dem Benutzer vorgestellt. Das ist sehr wichtig für neue Software, die anständig komplex ist. Wenn Sie nicht über eine gute Reihe von Tutorials verfügen, auch wenn es erstaunliche Dinge tun könnte, verwendet
niemand es. Dann ist die 1. 1 die Welt. Die Annahmen darüber, was wir entwickeln die nächste. Andere Anforderungen, die unser Problem in generischen,
leicht verständlichen Begriffen definieren . Wir müssen wissen, was unser Problem ist. Wir könnten sagen, wir brauchen eine automatisierte Bankiermaschine. Wir könnten sagen, wir müssten Geld bekommen, indem wir nicht zur Bank gehen. Das ist ein tolles Übersichtsproblem. Aber jetzt müssen wir definieren. Was das eigentlich bedeutet, bedeutet nicht, dass wir Menschen in der Stadt installieren müssen, zu denen wir hinaufgehen und mit ihnen reden
könnten. Geld zu bekommen bedeutet nicht, dass wir es schaffen wollen. Automatisiert bedeutet nicht, dass wir es,wissen
Sie,
extrem sicher haben wollen wissen
Sie, . Vielleicht wollen wir den Zugang nutzen. Noch wichtiger ist, dass wir das Problem definieren müssen. Was ist das Problem? Welche Lösung ist unserer Meinung nach am besten, um die Problemspezifikationen zu lösen, ist der nächste Schritt davon. Wir definieren die mehr technischen Details der Schnittstelle, wo Gebäude. Also definieren wir tatsächlich diese Schnittstelle, wo wir mit den Spezifikationen diese Art von Problem definiert haben. Wir wissen, was das Problem ist. Wir wissen, was die Annahmen sind, und jetzt schauen wir uns an Wie verbinden wir den Benutzer mit dem Programm? Wie machen wir das? Welche Technologien sollten wir einsetzen? Welche Technologien müssen wir nutzen? Was sind einige der technischen Details darüber, wie das alles funktioniert? Dann kommen wir zum Programm, welches die Code-Frameworks und Entwicklungsprozess ist? Das Programm, das Sie als Rest dieses Kurses definieren könnten, gehen über die
Entwurfsdokumente , gehen über die tatsächlichen Codierungsaspekte, die Wartung davon, die Möglichkeiten, die Sie entwickeln können, gehen über die tatsächlichen Codierungsaspekte,
die Wartung davon,
die Möglichkeiten, die Sie entwickeln können,
das ist die Art des Programmaspekts. Und dann ist die Maschine Dieb physische Hardware läuft auf. Irgendwann, wenn wir ein neues Stück Technologie wie in einem TM bauen, müssen
wir es vielleicht tatsächlich an einen Hersteller und einen Elektrotechniker schicken, um das innere Funktionieren dieses Dings
zusammenzustellen. Ansonsten haben
wir nur dieses Programm, das irgendwie cool wäre. Aber es gibt nichts, auf dem es läuft, also müssen wir auch die Maschine verstehen. Ist ihre vorhandene Technologie da draußen, oder müssen wir diese Technologie selbst entwickeln? Also lasst uns hier ein wenig wie ein Beispiel gehen. Was wir haben, ist eine Smartphone-Fotodruckstation. Wir haben die bei Walmart gesehen. Vielleicht, wenn du sie nicht gesehen hast, werde
ich es etwas beschreiben. Es ist im Grunde wie ein A T M, außer es ist ein bisschen anders. Sie haben diese Art von
Maschine
hier, hier, Maschine
hier, und Sie können nach oben gehen, und Sie können entweder ein USB-Laufwerk in wie einen kleinen Port stecken, oder Sie können über Bluetooth mit Ihrem Smartphone verbinden. Und im Grunde, was Sie tun, ist, dass Sie Fotos auf die Maschine übertragen. Es hat diese große Schnittstelle, die mit, wissen
Sie, vielleicht wie eine Tastatur oder Tasten hier drüben, und wenn die Fotos dort laufen , bearbeiten
Sie
sie ,
und dann am Ende tatsächlich druckt die Fotos am unteren Rand fast in Echtzeit aus. So können Sie, wenn Sie jemals in einen Urlaub gegangen, Sie haben eine Reihe von Fotos auf Ihrem Handy gemacht. Du kannst da rauf gehen. Du kannst bezahlen. Normalerweise gibt es hier einen Pay-Slot, wie mit Geld oder mit einer Kreditkarte. Du
bezahlst, du bekommst die Fotos und du bist gut zu gehen. Das ist also die Maschine, von der wir hier reden. Nun, ich würde dringend empfehlen, dass Sie das Video hier pausieren und einfach durchgehen. Ich rede nicht. Du musst diese ganze Sache definieren. Ich meine, das würde ein Team dauern, vielleicht vier oder fünf Tage, um jede kleine Vorstellung davon herauszufinden, was
das braucht . Ich rede. Gehen Sie durch jedes von ihnen und legen Sie ein paar Dinge, wo einige der Annahmen, die wir zu machen
haben. Was ist das Problem, das wir hier beurteilen wollen? Was sollte der Benutzer tun können? Was sollte die Maschine in der Lage sein, zu dio? Was sind einige der Spezifikationen? Wie sollten Maschinen Dinge kontaktieren? Ähm, das Programm und die Maschine. Ich gebe Ihnen einen Hinweis. Da ist die Maschine genau das und das Programm ist die Software, die wir für uns entwickeln. Du brauchst dich nicht wirklich darauf zu konzentrieren, worauf wir uns wirklich konzentrieren, ist die Einzahlung im ersten 3 Jahr über das
gehen? Und wie gesagt, ich empfehle dies dringend und dann werde ich meine Antworten auf. Also habe ich gehofft, dass du es innehast und du deine Antworten nochmal durchgegangen bist. Ich kann mich nicht anziehen. Es ist genug. Je mehr du in den Kurs bringst, desto mehr wirst du rauskommen. Also bitte, nur wenn Sie so viel wie möglich lernen möchten, tun Sie
einfach ein wenig und es wird Ihnen viel helfen, weil Sie tatsächlich beginnen können, dieses Ding zu
implementieren. Es wird dich viel besser daran erinnern. Wie auch immer, lasst uns das hineinspringen. Also die Welt, welche Annahmen müssen wir machen? Nun, was ich war Einige der Annahmen, die ich erfunden habe, sind einige sehr grundlegende und einige Dinge , die wir für selbstverständlich halten könnten. So haben die Menschen eine standardisierte Foto-Formate, der Druck, der sehr wichtig ist. Stellen Sie sich vor, es gäbe keine Standards oder wenn die Leute wirklich, wirklich zufällige finden. Vielleicht hatte jedes einzelne iPhone oder jedes einzelne Telefon eine andere Art, Fotos zu speichern. Dies wäre, es gäbe keine Möglichkeit, dies zu schaffen. Wir konnten nicht,
Ah,
System,das Sie entschlüsselt, haben Ah,
System, nicht 800 Arten von Fotos. Es würde einfach nicht funktionieren. Also gehe ich davon aus, dass es sehr Standard-Fotoformate gibt, von denen man drucken kann. Die Leute werden in der Lage sein, die Eingabeaufforderungen und Tutorial zu lesen. Uh, Menschen
sind im Grunde lesbar. Daraus ergibt sich eine Art, dass es in einer Sprache geben wird, die Menschen
lesen und verstehen können . Wenn Sie in einen analphabeteren Teil der Welt gegangen sind, vielleicht irgendwo, wo es nicht viel Bildung oder Lesen Wissen gibt. Vielleicht ist das ein Problem für dich. Vielleicht gibt es eine andere Möglichkeit, dies mit Bildern oder etwas zu implementieren, das ihnen besser helfen
würde. Jetzt, gerne. Weißt du
, ein wenig Es verschwindet Teile der Welt mit Weiterbildung, aber das ist etwas, das du vielleicht im Hinterkopf behalten möchtest. Ähm, die nächste ist Geschichten werden weitere Materialien wieder. Wir gehen davon aus, dass jemand hier reingehen wird und die Tinten und das Papier und so
was nachfüllen wird. Wir gehen davon aus, dass wir diese in Läden bringen, in denen die Leute das tatsächlich tun, sonst müssten wir eine Lösung und ein Verteilernetz finden, um sicherzustellen, dass diese Luft immer wieder aufgefüllt wird. Das ist also eine gute Annahme. Das ist etwas, das wir tatsächlich sicherstellen müssten. Ist es eine richtige Annahme, oder, na ja, wir müssen so etwas entwickeln. Die Leute haben Debitkarten, die mit Standard-Debitkartentechnologie oder in diesen Kreditkarten oder
jeder Kartentechnologie oder Geld arbeiten . In diesem Fall wird
es eine gemeinsame Währung geben, die wir auf dieser Maschine verwenden können, die funktionieren wird. Es wird leicht verfügbar Strom, der wichtig ist. Ohne Strom würde
diese Maschine nicht funktionieren und sie werden verfügbar sein. INTERNET. Vielleicht muss diese Maschine Server kontaktieren. Vielleicht hat es nicht die Hardware, um die Foto-Bearbeitungen durchzuführen und tatsächlich an einen
Serverserver zu senden . Bearbeitet das Foto und sendet dann die Daten zurück. Das ist heutzutage ziemlich üblich, also in dieser Situation können wir Internet brauchen. Und wenn wir ein wie das Hinterland betreiben, das vielleicht nicht funktioniert, haben
wir dort möglicherweise kein Internet zur Verfügung, und wir müssen entweder eine sekundäre, ein wenig Rechenleistung, und dies nur für den Fall, dass es kein Internet hat, kann
es versuchen, es hier zu tun. Es wird nur eine Weile dauern. Oder vielleicht gibt es andere Lösungen, die wir finden können. Das ist eine wichtige Annahme, den nächsten Teil der Anforderungen zu erkennen. Was soll das Ding dio? So ist es ein Benutzer kann ein Smartphone mit dem System verbinden. Und wenn Sie bemerken, dass Sie vielleicht zuerst die Anforderungen durchgehen wollen, bevor Sie in die
Welt springen , möchten Sie
vielleicht das Problem definieren und dann eine Art von Arbeit daraus verstehen und sehen, wie Was sind einige der Annahmen, die ich gemacht habe, wenn ich die Anforderungen, die ein guter Satz für diese Dinge sein könnte, könnte auf viele,
viele verschiedene Arten getan werden . Nur einige Ideen hier, jedenfalls, Anforderungen der Benutzer kann ein Smartphone mit dem System verbinden. Das Smartphone in Übertragen von Bildern über Benutzer kann Fotos bearbeiten. Die Fotos könnten maschinell ausgedruckt werden, und die Nutzung kann für den Service bezahlen. Im Allgemeinen, wenn Sie jemals Zweifel über Anforderungen haben, gehen Sie
einfach über einen Anwendungsfall, im Grunde eine Möglichkeit, Maschine zu verwenden. Wenn Sie zu dieser Maschine gehen, wie würden Sie es verwenden wollen. Und wie würden Sie wollen, dass die Dinge interagieren? Das ist eine gute Möglichkeit, mit jedem Schritt mit Anforderungen zu beginnen. Schreiben Sie es einfach auf und dann könnten Sie von dort aus die nächsten Teile-Spezifikationen bauen . Also, jetzt haben wir diese Art von dieser Idee hier einige der Anforderungen. Jetzt gehen wir in ein wenig mehr von der nitty gritty. Wie verbinden wir uns damit? Wird blau zur Technologie? So verbindet sich ein Smartphone. Das ist die beliebteste Art, sich zu verbinden. Bluetooth wäre also eine gute Idee. Und wir brauchen ein richtiges Bluetooth-Übertragungsprotokoll installiert werden und um die
Transaktion gesichert zu machen , so dass niemand sonst irgendwie dort hineinspringen kann. Wir brauchen eine richtige oder das System wird eine Editing-Suite haben, um Fotodaten zu emulieren. Das ist wichtig. Wir müssen unsere Editing-Suite definieren. Wollen wir es von jemandem kaufen, der es selbst gestalten möchte? Dieses System wird Verschlüsselung und Chip-Technologie verwenden, um Finanzserver zu kontaktieren. Das ist eine tolle Sache zu wissen. Wie soll es mit den Banken in Kontakt treten? Wie wird es benutzen? Wir verwenden diese Verschlüsselung und diese Chip-Technologie. Also spezifizieren wir die genaue Art und Weise, wie die Finanztransaktionen stattfinden werden. Und dann wird das System Standard-Druckgerät zum Drucken von Fotos haben. Es wird also eine Möglichkeit geben, die Fotos auszudrucken. Wir könnten das vielleicht noch tiefer definieren, wenn wir anfangen, es zu entwickeln. Und dann haben
wir endlich das Programm,
das ich gesagt habe, es ist nur Systemcode und Maschine, das sind nur
die Systemspezifikationen, der RAM , der Prozessor, usw. Insgesamt, obwohl, das ist irgendwie das, was Sie mit World Model machen, in nur ich meine, das dauerte vielleicht 10 Minuten. Wir haben tatsächlich eine Art Blaupause für das, was wir mit diesem Ding machen wollen, das wir in einer
allgemeinen Idee haben . Niemand geht überall mit, wie es gebaut werden soll. Jeder könnte auf die gleiche Seite kommen, und wir konnten das vorstellen und das noch weiter ausarbeiten. Wir könnten wirklich anfangen, diese Dinge zu durchlaufen und tatsächlich entwickelt, wie ein bisschen Dokumentation, vielleicht wie eine 20-Seiten-Sache, die das Problem definiert, um zu finden, wie wir das Problem lösen wollen die Spezifikationen
definiert Technologie benötigt und vielleicht sogar die Systemspezifikationen dessen, was es wäre, dass wir ein Budget entwickeln könnten. Wir könnten entwickeln, was Teams dabei sein müssen. Es ist ein guter Ausgangspunkt, und das ist alles sehr wichtig für die Anforderungen, um unser Problem zu finden. zu setzen und sich dann bereit zu machen, in die nächste Phase zu gehen, ist wie Design und tatsächlich Beschichtung das Ding.
10. 2-6-Anforderungsbeispiel: Also lassen Sie uns beenden diesen Abschnitt mit einem anderen Beispiel von Beispielen sind wirklich wichtig weil sie uns erlauben, tatsächlich unsere Hände schmutzig zu machen und das Ding zu tun, um tatsächlich
durch einige Anforderungen zu gehen . Das ist sehr hilfreich, denn viele dieser Informationen können irgendwie in ein Ohr gehen und das andere heraus. Aber wenn Sie tatsächlich ein Beispiel tun, dann können Sie das wirklich in Ihrem Kopf zementieren. Und wenn etwas auftaucht, werden
Sie sich vielleicht nicht an jedes bisschen an die Anforderungen und die Definitionen zwischen den beiden erinnern Aber Sie erinnern sich genug, dass Sie die Kaution verlassen, um eine intelligente Google-Suche dafür durchzuführen, . oder Sie werden in der Lage sein, eine Gliederung zu machen und dann vielleicht einige andere Dinge nachschlagen, die Sie in Ihre Anforderungsdokumentation
aufnehmen sollten . Also mit diesem Beispiel, was wir tun werden, ist,
dass wir im Grunde einfach
ein Szenario der realen Welt nehmen was wir tun werden, ist,
dass wir im Grunde einfach
ein Szenario der realen Welt nehmenund es einfach mit diesen Beispielen durcharbeiten. Denken Sie daran, wir versuchen hier nicht zu 100% zu gehen. Wir versuchen es nicht. Denken Sie an jede denkbare Möglichkeit in der realen Welt, die Sie vielleicht, aber das dauert in der Regel Wochen, um dies zu tun in diesen Dingen waren nur versucht, raus. Die 80% versuchten,
die 80% der Anforderungen,die in das gehen könnten, auszuschalten , und dann, wenn
Sie wirklich wollen, können
Sie sich später hinsetzen und den Rest erledigen. Oder wir könnten einfach weitermachen und irgendwie darauf aufbauen, während wir vorwärts gehen. Also, was wir haben ist, dass wir noch keine Schach-App gebaut haben. Also lassen Sie uns sagen, dass wir ein Telefon haben und wo wir mit einer App beauftragt wurden, im Grunde Brust. Also wissen Sie, Schach, das Spiel des Schachs. Wenn Sie nicht wissen, was Schach ist, kommen Sie mit jedem Spiel, das Sie kennen. Und so haben wir eine Spiele-App, und wir wollen diese App monetarisieren, um Geld zu verdienen. Also, das ist unser Ziel ist es, diese App zu nehmen, was auch immer es ist, aber es funktioniert, Vielleicht gibt es. Vielleicht ist es ein Online bei. Vielleicht ist es wirklich alles. Wir werden dieses Spiel nehmen und anfangen zu monetarisieren, also müssen wir darüber nachdenken, welche weiteren Schritte wir unternehmen sollten. Wie sollten wir das Problem definieren und was sowohl dem Kunden als auch den Benutzern zugute kommt, und mit all dem können
wir dieses Weltmodell wieder verwenden. Denk dran, wir werden nach der Welt suchen. Also die Annahmen werden wir für die Anforderungen zu suchen. Also, was genau von dieser App benötigt wird, und dann werden wir nach diesen Spezifikationen suchen. Was sind also einige der technischen Details, wie wir dies mit welchen
Einschränkungen umsetzen wollen , die wir befolgen müssen? Nehmen wir an, dass die vorherige App in Java gebaut ist und der Client es so behalten möchte. Also das ist, wenn die Einschränkungen, die ich Ihnen auch geben kann, wie auch immer, es wäre sehr vorteilhaft für Sie, das Video zu pausieren und einfach irgendwie durch diese
drei hier gehen . Und wenn Sie bemerken, dass wir nicht darüber gesprochen haben, wie wir das Geld verdienen können. Also kommen Sie mit etwas kommen mit einer Idee, wie Sie es monetarisieren könnten. Vielleicht gibt es keine Anzeigen darin und Sie möchten Anzeigen hinzufügen Möglicherweise ist Ihre Vorstellung von dieser App. Ist es bereits Hades Anzeigen Und Sie möchten ein Abonnement Modell hinzufügen? Oder vielleicht möchten Sie eine kostenpflichtige Version erstellen. Was in der kostenpflichtigen Version gehen würde, kommt mit einer Idee über eine App und dann, wie Siediese App
vorantreiben und dann irgendwie die Annahmen,
die Anforderungen und die Spezifikationen dazu finden diese App
vorantreiben und dann irgendwie die Annahmen, könnten. Und wieder, es ist eine Übung. Sei einfach kreativ, hab ein bisschen Spaß damit, verbringe
vielleicht fünf Minuten damit und komm dann zurück und du könntest den Weg sehen, den ich
damit gemacht habe . Wir können vergleichen, ähm, sehen Sie die Unterschiede darüber, wie das und Sie sehen auch, dass es eine Reihe von verschiedenen Möglichkeiten gibt, wie wir all das tun
können, Video
einzahlen, das
tun und gleich zurück sein können. In Ordnung, ich hoffe, du hast es getan, weil ich denke, dass es alleine zu tun und es dann wieder zu sehen wird
es eine gute Möglichkeit sein, diese Informationen in deinen Kopf zu zementieren. Also das erste, was ich ging über die Welt Annahmen,
die Dinge, die wir über diese App annehmen, die Annahmen sind wichtig, weil es uns erlaubt, die Anforderungen mit den
Annahmen zu definieren waren dann in der Lage, herauszufinden, dass wir nicht Wir müssen nicht definieren, wissen
Sie, dumme Anforderungen wie Telefone existieren oder so etwas. Wir müssen ein Telefon schaffen, dass es Apsis mit Annahmen unterstützen kann. Wir gehen davon aus, dass die Welt eine bestimmte Art und Weise ist und es uns erlaubt, diese Dinge einfach irgendwo anders in eine
Kiste zu legen und tatsächlich an den Dingen zu arbeiten, die uns helfen werden. Also in dieser Situation haben wir, dass es eine Möglichkeit gibt, auf Smartphones zu bezahlen. Es muss etwas Finanzdienstleistung auf Smartphones geben. Damit wir diese Transaktionen durchführen können,
gibt es Möglichkeiten, Geld aus einer APP zu verdienen. Es muss eine praktikable Marketing-Technik da draußen geben, um Geld aus einer APP zu verdienen. Wenn es diese beiden nicht gibt, müssen wir das alles selbst erfinden. Und diese Aufgabe wird plötzlich wirklich, wirklich groß, denn jetzt müssen die Anforderungen genau beschreiben, wie man weiß, wie der Markt ist,
wie die potenziellen Risiken sind, Dinge wie diese. Aber wenn wir davon ausgehen können, dass diese beiden Dinge existieren, dann müssen wir nur an Ok denken, was sind die besten Möglichkeiten,
es zu tun ? Die App ist erweiterbar. Vielleicht ist die Codebasis so schlecht, dass es keine Möglichkeit gibt, die App auf etwas anderes zu erweitern, also gehen wir davon aus, dass sie erweiterbar ist. Sonst wird
dieses Projekt einfach, weißt
du
, im Wasser stehen. Es wird nirgendwohin gehen. Es wird die Möglichkeit geben, das Internet und das Finanzinstitut zu kontaktieren. So hat das Telefon wieder Internet-Funktionen. Wir müssen keinen neuen Weg für Telefone definieren, um sich mit dem Internet zu verbinden. Wir gehen davon aus, dass es Internetfähigkeiten hat. Der Abfall der Transaktion könnte sicher genug gemacht werden. Wir gehen davon aus, dass es einen Weg gibt, Transaktionen zu sichern. Die Leute machen es überall mit verschiedenen Transaktionen, also gibt es wahrscheinlich einen Weg, um sie sicher zu machen. Das Telefon verfügt über Verarbeitungsleistung, um die Anfrage zu bearbeiten. Wir hoffen, dass diese Anfragen ein Low-End sein werden und dass die Rechenleistung da
sein wird . Wenn nicht, dann müssen wir auf neue Technologie warten. Verschiedene Währungen werden in der Lage sein, akzeptiert zu werden. Wir haben eine weltweite App. Vielleicht hoffen wir, dass es Währungen aus der ganzen Welt
geben wird, die irgendwie übertragen werden können. Vielleicht, zum Beispiel, es Nehmen wir an, der am Markt hat uns nur Dollar akzeptiert. Das würde unsere Herangehensweise um eine Tonne ändern. Aber wenn wir davon ausgehen, dass es einen Weg gibt, Währung aus der ganzen Welt zu akzeptieren, dann müssen wir nicht einmal darüber nachdenken. Hoffentlich wird der Markt es selbst tun, und dann ist es legal, Zahlungen über ein Telefon zu akzeptieren. Das ist wichtig, weil es vielleicht ein Land gibt, in dem es nicht legal ist, Zahlungen zu akzeptieren ohne dass sie persönlich sind oder so etwas. Also müssen wir die Gesetze verstehen, damit wir nicht in rechtliche Schwierigkeiten geraten. Wir müssen verstehen, dass es, was auch immer wir tun, ein legales Verfahren ist, das wir nicht brauchen, um Tiefen einzubeziehen. Wir müssen keine Gesetze ändern oder einige Formulare ausfüllen, um es legal zu machen. Das ist also ein wichtiges anzunehmen und etwas, über das Sie mit den
Anforderungen nur für den Fall nachdenken sollten . zum Beispiel Wenn Siezum Beispieldarüber nachdenken, Daten zu sammeln, müssen Sie
vielleicht sicherstellen, dass es eine Datenschutzrichtlinie gibt. Vielleicht muss das in Ihre Anforderungen gehen ist, dass es legal ist mit einer Datenschutzrichtlinie, Also jetzt müssen Sie in, dass die Anforderung setzen. Also wissen wir es, dann haben wir unsere weltweiten Annahmen. Als nächstes sind die Anforderungen. Also ging ich einfach,
mache Dinge, von denen ich dachte, dass es funktionieren würde. Ich dachte nur an eine App, die bereits Anzeigen hatte. Und dann würde ein Abonnement-Modell die Anzeigen entfernen Etwas sehr, sehr einfach. So hat die Pro-Funktion Anzeigen für den Benutzer, den ich definiere, entfernt. Was genau sind Pro-Funktionen? Going Dio wird etwas Einfaches tun. Es wird einfach entfernen, hinzufügen So das wird unser Pro Feature direkt dort sein. Der nächste Schritt ist also, dass die Funktion die Zahlung von einem Benutzer akzeptieren muss. Dies ist ziemlich wichtig, wenn es keine Zahlung von einem Benutzer akzeptiert, als es keine Möglichkeit gibt, dass wir sie tatsächlich berechnen
können, wo es nirgendwo gibt, wo wir Buddy bekommen. Daher sollten
wir dem Benutzer nichts geben. Die Funktion muss bei erfolgreicher Transaktion Pro-Funktionen bereitstellen. Wir könnten das Geld der Person akzeptieren und nichts in der APP tun. Dann wird unsere App wahrscheinlich im APP Store heruntergefahren werden, so müssen wir in der Lage sein, die Pro-Funktionen auf eine erfolgreiche und das ist wichtig, eine erfolgreiche Transaktion. Wir müssen überprüfen, ob es erfolgreich ist oder nicht erfolgreich ist. Der Lehrer muss die Transaktionen auf sichere Weise wieder abschließen. Wir wollen keine Datenschutzverletzungen. Das ist schlecht für wirklich alle. Das ist schlecht, weil es anderen Menschen erlaubt, ausgenutzt zu werden und ist schlecht, weil es
uns schlecht macht . Die Funktion oder die Vote Pro Funktionen, sobald ein Abonnement ungültig wird. Wenn also jemand aufgehört hat zu zahlen, sollten
wir die Funktionen entfernen. Andernfalls wird
jemand es einfach beim ersten Mal tun und dann einfach nie wieder bezahlen und immer noch alle
Pro-Funktionen bekommen . Die Funktion bietet eine Schaltfläche zum Abbrechen innerhalb der APP. Das ist nicht etwas, was du tun musst. Vielleicht heutzutage, in der App sortieren, die anfängt, etwas zu werden, das Sie zu dio haben. Aber vielleicht
legen wir mit unserer App Wert auf Vertrauen in unser Unternehmen. Also werden wir diesen Stornierungs-Button innerhalb der App haben, der ein Signal sendet, das
das Abonnement für alle zukünftigen Monate storniert . Das Übliche erstreckt sich von der vorhandenen Codebasis. Wir wollen diese App nicht neu gestalten, also werden wir versuchen, sie von der aktuellen Codebasis zu erweitern. Die Funktion darf nicht mehr als fünf Megabyte zur Gesamtgröße des Downloads hinzufügen. Vielleicht hat der Überbrückungsboss das gesagt. Oder vielleicht ist es etwas, das der Kunde gesagt hat, dass unsere App bereits wirklich groß ist und die
Leute sich darüber beschweren, also kann es nicht mehr als fünf Megabyte sein,
etwas, das passieren könnte. Also warf ich es da rein, und das Feature muss die Transaktion rechtzeitig abschließen. Wir wollen nicht, dass es ein sehr,
sehr langsames Feature ist. Also haben wir diese Idee, dass es rechtzeitig fertiggestellt werden sollte und dann mit ihren Spezifikationen, können
wir tatsächlich irgendwie etwas tiefer in die Tiefe gehen. Also jetzt haben wir die weltweiten Annahmen. Wir haben die Anforderungen, und jetzt haben wir die Spezifikationen. Die Funktion wird in Java mit der vorhandenen APS-Sprache codiert. Denken Sie daran, worüber wir gesprochen haben, ist, dass die APP in Java codiert wurde, also ist das eine Spezifikation an der Technologie. Wenn Sie Ansichten die vorhandene APS-Sprache ist, würden
wir vielleicht nicht, dass wir keinen Job in diesen Spezifikationen angeben müssen. Wir könnten nur sagen, die bestehende APS Sprache, aber ich mag es, eine Art stumpf und wirklich, wirklich transparent und diese Art von Dokumenten, die Funktion wird den Android Play Store für seine Transaktionen verwenden. Das ist etwas, das wir wissen, es gibt eine Reihe von verschiedenen Möglichkeiten, wie Sie Zahlungen akzeptieren können. Sie könnten
zum Beispiel etwas namens Stripe
implementieren, namens Stripe
implementieren, das eine Technologie ist, die Zahlungen akzeptiert. Es ist eine Transaktionssoftware. Aber für diese Situation, was wir tun werden, ist, dass wir den Android Play Store verwenden wollen, um alle Transaktionen zu
erledigen . Wenn wir das tun wollten, passierte vielleicht auch IOS. Wir benutzen dort den Apfelladen. Die Futural-Check für aktive Abonnement täglich mit Google's bereitgestellt eine P I. Dies ist sehr technisch, aber etwas, das wichtig ist, etwas, das die Entwickler wissen müssen, ist, wie oft wollen wir überprüfen, ob ein -Abonnement noch gültig ist? sagen, dass wir den Googles AP I benutzen, um täglich zu überprüfen. Wenn die Beschreibung gültig ist, tun Sie
nichts davon, was ungültig ist. Nehmen Sie die Privilegien weg. Oder vielleicht eine Gnadenfrist setzen. So etwas wie das. Die Funktion wird ausgeschaltet. Mob hinzufügen. Sobald der Abonnementschlüssel gültig wird, add mob ist eine Möglichkeit der Werbung innerhalb Ihres APS. Es könnte sich zu einer neuen Technologie bewegen, wenn Sie das ansehen. Vielleicht ist dies eine Technologie, die Art von defunct, die niemand mehr verwendet, aber das ist OK, Alles was ich sage ist, dass wir diese Technologie in unserer App haben, und wir sagen, dass, sobald der Abonnementschlüssel gültig wird, wir entfernen Sie diese Art von. Wir entfernen diese Technologie aus der APP, so dass der Benutzer über diese Pro-Funktionen verfügt. Und dann ist das das letzte, das hier unten in einer zeitnahen Art und Weise. Nehmen wir an,
wir haben aus irgendeinem Grund einen Timer, den es in der Lage sein muss, in 500 Millisekunden zu beenden. Wenn Sie erneut auf die Schaltfläche OK klicken, wird dies
möglicherweise vom Client weitergegeben. Oder vielleicht ist es nur etwas, das Ihr Unternehmen gerne macht. Sie haben diese Art von Fastness und wollen sie definieren. In dieser Situation haben wir also die Anforderung, dass es rechtzeitig in die
Spezifikationen eingehen sollte . Wir geben irgendwie die Genauigkeit von dem und dem. Wie ich schon sagte, es ist hier kein 100% -Beispiel, aber stellen Sie sich vor, Sie hätten nur dieses Dokument zu verlassen, und jemand überreichte Ihnen dieses Dokument und sagte:
Ich möchte, dass Sie das codieren. Sie haben plötzlich eine sehr starke Richtung dessen, was Sie tun wollen. Und Sie haben jetzt auch die Möglichkeit, Fragen zu stellen. Sie haben vielleicht 85% definiert. Und vielleicht kommen Sie in eine Situation, in derhier nichts
drin ist und jetzt können Sie tatsächlich die entsprechenden Fragen an Ihren
Kunden oder an Ihr Geschäft von Hey stellen,
welche Farbe sollten die Tasten haben, hier nichts
drin ist und jetzt können Sie tatsächlich die entsprechenden Fragen an Ihren
Kunden oder an Ihr Geschäft von Hey stellen , welche Farbe sollten die Tasten haben, oder so etwas, das nirgendwo hier definiert wurde? Ist das etwas, was ich wählen sollte? Ist das etwas, das ihr wählen wollt
, und so weiter. Mit diesem Anforderungsdokument ist
es eine großartige Möglichkeit, Software zu erstellen. Als nächstes gehen
wir ins Design Gesicht. Sobald wir das alles bekommen, ist
es an der Zeit, tatsächlich ein wenig in die unheimliche Gritty zu gehen und zu überlegen
, wie genau wir wollen, was auch immer Stück Software, die wir bauen wollen, zu bauen versuchen.
11. 3-1 Architecture: Beginnen wir mit dem höchsten Niveau des Designs und mit höchstem Niveau, meine
ich das am wenigsten spezifische. , Zum Beispiel, wenn Sie vielleicht eine Stadt entwerfen,
können Sie damit beginnen, die verschiedenen Bereiche in Zonen zu teilen. Wir wollen hier ein Wohnhaus. Wir wollen etwas Werbespot hier drüben. Wir wollen etwas Industrie hier unten, sonst
nichts. Das ist nur ein sehr, sehr grundlegender Plan darüber, wie die Stadt funktionieren könnte. Und so läuft die Architektur so. Wir nehmen es von Anforderungen und jetzt tatsächlich eine Idee darüber, wie die App funktionieren sollte. Und deshalb ist Architektur auf höchstem Niveau oder auf höchstem Niveau des Designs. Architekten sind das Bindeglied zwischen Idee und Realität, daher sind Architekten Menschen, die Architektur umsetzen. Nehmen wir an, Sie haben ein Gebäude, das Sie bauen werden, bevor Sie den Boden brechen. Bevor Sie überhaupt eine Idee oder irgendwelche Leute vor Ort haben, um dieses Gebäude zu bauen , werden
Sie mit einigen Blaupausen kommen. Es wird im Grunde Ingenieure geben, die die verschiedenen Teile testen, wie sagen, wir brauchen mindestens einen 15 Fuß Ibeam hier oder wir brauchen diese Art von Konstruktion
hier drüben und Sie werden im Grunde diesen Plan verwenden, um das Gebäude zu bauen. Es wird noch nichts implementiert. Es ist nur ein Entwurf, und das macht der Architekt. Jemand hatte eine Idee für ein Gebäude. Der Architekt nimmt diese Idee an, und sie bauen einen Plan, um sie in die Realität umzusetzen. Deswegen sind sie das Bindeglied dazwischen. Sie sind nicht wirklich diejenigen, die es erschaffen, und sie sind nicht die, die Sie normalerweise ausgedacht haben. Die Idee. Sie sind diejenigen, die die Verbindung zwischen den beiden bauen, so dass ein Bauteam es bauen
kann, und die Person, die die Idee hatte, sieht es gebaut. Das ist also die Bedeutung der Architekten und der Software Engineering. Oft müssen wir die Architekten werden,
also müssen wir unser Anforderungsdokument nehmen, und wir müssen es in einen Plan überführen, wie man es tatsächlich baut, so dass wir wieder vielleicht auch mit einem Software-Programmierer. Wir können die Idee umsetzen. Das ist die Bedeutung der Architektur ist die Bereitstellung dieser Verbindung. Jetzt ist Architektur wichtig. Es ist etwas, das nicht behoben werden kann, einmal implementiert oder in Software in der Weltrolle, die nicht behoben werden kann und
Software-Engineering Es könnte einfach wirklich, wirklich,
wirklich, wirklich schwer zu beheben, aber irgendwie betrachten Sie es als etwas, das nicht behoben werden kann. Einmal in Software implementiert, ist
schlechte Architektur etwas, das nicht mit guter Programmierung behoben werden kann. Wenn Sie die Architektur einer App schlecht entwerfen, egal wie gut Ihre Programmierer sind, wird
es immer noch als ein schlechtes Produkt herauskommen, das viel zu lange dauert, um zu warten, und das ist sehr schwer zu erweitern und besser im Laufe der Zeit zu machen. Stellen Sie sich vor, versuchen Sie, das Fundament eines Wolkenkratzers zu reparieren, nachdem es 20 Stockwerke hoch war. Sagen wir mal, sie haben mit dem Bau auf diesem Wolkenkratzer begonnen und sie sind so hoch. Weißt du, sind immer noch Kräne, die das Ding bauen, aber sie erkennen, dass es ein grundlegendes Problem gibt. Das Ding, auf dem der Wolkenkratzer gebaut ist, hat ein Problem. Was tun Sie, um das zu beheben? Es ist so viel schwieriger, ihn zu reparieren, wenn du 20 Geschichten hast,
dann, wenn du nur die Fundamentspitze hast, sieh es dir an. Eigentlich wird
dieses Fundament nicht funktionieren. Lasst uns zerstören und es wirklich schnell wieder aufbauen. Es wird wirklich schnelle Durchlaufzeit hier oben sein, obwohl Sie einen Weg entwerfen müssen, um das Fundament zu reparieren, ohne den
Wolkenkratzer zu zerstören . Oder vielleicht ist der einzige Weg, es zu beheben, dass Sie das Ganze abreißen müssen, bevor Sie es wieder
bauen können . Das ist eine Menge Male, was passiert und Software-Engineering als auch. Wir müssen ein Projekt verschrotten und von vorne anfangen. Architektur ist also wirklich wichtig. Lassen Sie uns das irgendwie aufschlüsseln und einfach in ein bisschen mehr von einem
Software-orientierten Beispiel springen . Nehmen wir an, wir haben diesen Server direkt hier, der in unserer App nimmt. Nehmen wir an, wir haben eine Komponente hier drüben,
etwas, was unsere App tut, und es kontaktiert diese Serverrate so. Und sagen wir, wir haben eine andere Komponente hier drüben, und es kontaktiert den Admin. Es bekommt Feedback, und dann haben wir eine andere hier unten kontaktiert diese. Es kontaktiert das, und dann kommt das raus und geht hier hinein, und dieser geht nach oben und du weißt, also bekommen wir diese Art von wirklich komplexen App, die nicht viele, ähm, Dinge hat. Es hat eine Menge davon, wie Querstangen, die vielleicht rein und herum gehen. Und so können Sie sehen, dass die Architektur, diese App möglicherweise nicht die beste. Und warum könnte es nicht das Beste sein? Nun, sagen
wir, wir haben ein Problem mit unserer Kernschnittstelle, unserem Kernserver, dass die Art und Weise, wie wir es entworfen haben, vielleicht unsicher ist. Vielleicht gibt es für Hacker eine Möglichkeit, sich darin zu hacken, und die einzige Möglichkeit, es zu beheben, besteht darin, den Server zu ersetzen und alle
Protokolle zu ändern . Nun, mit einer Architektur wie dieser,
stellen Sie sich vor, diese Komponente herauszunehmen und eine neue einzufügen, weil sie
mit allem hier verbunden ist , müssen
wir jede einzelne dieser Komponenten neu programmieren kleine Schritte jede einzelne Art von Lupin hier, die diesen zentralen Server kontaktiert. Wir können den Server nicht im laufenden Betrieb austauschen. Wir müssen unsere gesamte App neu programmieren. Jede einzelne Komponente hat mehrere Bereiche, die wir im Grunde wieder programmieren müssten, um wieder richtig zu
arbeiten. Also in diesem allein müssten wir vielleicht Straßenprogramm drei oder vier verschiedene Endpunkte,
und dann, wenn sie hier kommen und ausgehen, würde
die andere Seite wieder programmieren müssen, dass, wie diese Daten empfangen, wie diese Daten empfangen, wie sie es könnte werden sehr, sehr komplex. Und man kommt zu einem Punkt, an dem man sich die Software anschaut und man geht, es gibt
auch keine Möglichkeit, das zu ändern . Wir müssen bei einer unsicheren Software bleiben oder sie zerstören und ganz neu
anfangen oder die Software aufgeben und sie im Grunde nicht mehr unterstützen. Das passiert auch eine anständige Menge. Also Architektur, sehr, sehr wichtig. Wir werden einige Wege durchgehen, die man irgendwie mit der Idee über die
Architektur einfallen kann und das irgendwie verfeinert. Also hast du wenigstens ein gutes Verständnis über dieses Zeug.
12. 3-2 Architekturübersicht und Beispiel: Beginnen wir unsere Diskussion über Architektur mit dem Grund, dass wir sie abdecken wollen. Und das ist die Softwarearchitektur. Wie gilt Architektur für den Softwareentwicklungsprozess? Bei Software Architecture geht es darum, größere Systeme in kleinere,
fokussierte Systeme zu zerlegen . Dies gibt uns viele verschiedene Vorteile, nicht nur um Kosten zu senken, sondern Sie helfen, es einfach zu entwickeln, um es so zu machen. Unsere Ingenieure warten nicht untätig auf andere Menschen, Menschen und so viele andere Dinge. Also die ein paar Schlüsselaspekte hier ist, dass gute Architektur schwierig ist. Es ist nicht etwas, das einfach ist, das wir alle tun können. Und deshalb vermeiden viele Leute, diesen Teil zu tun, weil es etwas Nachdenken braucht, etwas Kreativität, um mit guter Architektur zu kommen. Und viele Leute wollen einfach reinkommen und anfangen zu programmieren, damit sie nicht einmal an die Architektur
denken . Und wenn Sie das tun, bauen
Sie etwas, das einen Spaghetti-Code bekannt ist, wo Sie anfangen, eine Datei zu erstellen und dann eine andere Datei zu erstellen, und Sie sind wie, Warte, das braucht einen Link dort. Also, dann haben wir eine andere Datei und, wie, oh, das muss auch dort verlinken. Aber es muss auch eine Verknüpfung zu dieser Datei herstellen. Und langsam fängst du an, dieses Web, dieses Spaghetti-Netz von Code zusammen zu bekommen und anstatt diese nette,
du weißt schon, du weißt schon, vielleicht organisierte Architektur zu haben, wo vielleicht alles einen zentralen Server kontaktiert oder es gibt ah , -Konstantenseite, die alles enthält. Wenn wir also etwas ändern wollen, müssen
wir es nur ändern. Ein Ort. Sie fangen an, dieses wirklich seltsame Netz von Aufrufen und solchen Dingen zu bekommen und wird sehr schwer, Probleme zu verfolgen, weil vielleicht das Problem hier beginnt, und es ruft hier die falsche Funktion auf, was es dann dazu bringt, hier einen Aspekt zu brechen was es wieder ins Hier geht und eine andere falsche Funktion aufrufen lässt, geh rauf zu hier und dann rüber. Das ist also, wo wir denken, dass der Fehler ist. Und jetzt müssen wir es durch all diese Aufrufe zurückverfolgen, um herauszufinden, dass Oh, nein, es war eigentlich eine Codezeile hier drüben. Wir sind hier drüben. Wir haben weniger von diesen Verbindungen, und vielleicht ist die Pause hier oben. Oder vielleicht ist die Bremse hier unten und sie manifestiert sich nur Hier können wir einen schnellen Rückwärtsblick machen und wir sehen, dass sie genau hier ist. Nun, natürlich, diese Luft wie sehr hypothetische Dinge. Aber das passiert. Viel ist, dass, wenn wir eine sehr saubere Architektur haben, Pausen leicht zu finden sind. Eine gute Architektur ermöglicht auch eine schnellere Entwicklung und eine intelligentere Aufgabenzuweisung. Dies ist wichtig, weil es und dann sagen, es ist der Punkt, dass es wird uns Geld sparen im Laufe der Zeit. Wenn wir unsere Architektur in so etwas aufteilen können, dann können wir sagen, dass wir Ingenieur eine Arbeit an einer Aufgabe hier haben, einen Ingenieur für einen Ingenieur. 34 und fünf. Wir bekommen fünf verschiedene Aufgaben, die auf einmal entwickeln, wo, wenn wir nur eine riesige Datei haben, oder vielleicht sogar, wie nur zwei riesige Dateien, die irgendwie hin und her miteinander kommunizieren, wie wir fünf Ingenieure dazu bringen würden, an verschiedene Aufgaben. Nun, wir könnten sie haben,wissen
Sie, wissen
Sie, vielleicht alle zur gleichen Zeit an derselben Datei arbeiten,
aber das würde tatsächlich dazu führen, dass normalerweise Zusammenführungskonflikte auftreten, was bedeutet, wie ich hier oben an Code gearbeitet habe, Er arbeitete hier unten an Code, aber um seinen Code hier unten zu arbeiten. Er oder sie musste hier oben etwas ändern. Also, jetzt schiebe ich meinen Code, er schiebt seinen Code, und plötzlich gibt es diesen großen Konflikt. Ich ändere den Code. Er ändert den Code, und wir müssen tatsächlich zusammenkommen und Zeile für Zeile gehen, um es zu beheben. Es ist ein sehr schmerzhafter Prozess. In dieser Situation passiert es viele Male, wenn wir beide an demselben Code arbeiten müssen, müssen
Sie nur warten. Also, wissen
Sie, Ingenieur One erledigt seine Aufgabe,
entwickelt, um seine Aufgabe zu erledigen. Und jetzt kann Ingenieur drei endlich dort hineinspringen und damit beginnen, ihre Aufgabe zu erledigen. Es ist also etwas, das die gesamte Leerlaufzeit reduziert. Wenn wir eine gute Architektur erhalten und ermöglicht es dem Unternehmen auch entscheiden, wo zu kaufen und wo zu bauen. Wenn wir so etwas haben und so wären, haben
wir vielleicht nur vier Ingenieure, nun ja, vielleicht gibt es eine gute Lösung da draußen, und wir müssen nicht die ganze Zeit damit verbringen,
es zu entwickeln haben
wir vielleicht nur vier Ingenieure,
nun ja,
vielleicht gibt es eine gute Lösung da draußen,
und wir müssen nicht die ganze Zeit damit verbringen,
es zu entwickeln. Sagen Sie einfach OK, wir werden daran arbeiten und wir werden einfach etwas kaufen, das dazu passt. Vielleicht ist es wie eine Form oder so. Es gibt viele, viele tolle Form Dinge online bilden kleine Projekte, die wir kaufen und in unsere
Software integrieren könnten , die uns Schuhe der Käufer bauen ermöglicht. Und insgesamt müssen
wir uns immer daran erinnern, dass Architekturfehler fast unmöglich zu beheben sind, sobald Programmierung begonnen hat. Sobald wir beginnen, ist
es unmöglich, das zu nehmen und es zu machen, und was auch immer ich sage, unmöglich. Ich meine nicht, dass es so ist, einfach nicht möglich. Es gibt keine Möglichkeit, dass du es jemals tun könntest. Was ich meine, ist, dass es Maurin sowohl Zeit als auch Geld kosten würde, um dies zu beheben, dass es wäre, ein neues Produkt wie dieses zu bauen. Also, zum Beispiel, wenn wir ein bestehendes Produkt hier haben, um es so zu machen, müssten
wir mehr Geld ausgeben, als es dauern würde, um einfach neu zu starten, um
alles zu löschen und einfach von neu zu beginnen. Und das meine ich, wenn ich unmögliche Affixe sage, die die Verzweiflung Insee zwischen den
beiden kosten . Also lassen Sie uns hier wie ein kleines Beispiel gehen,
etwas, von dem wir irgendwie nur eine Idee haben können. Nehmen wir an, dass wir eine Website erstellen, und so beginnen wir zunächst mit dieser schlechten Architektur. Also haben wir eine einzelne Webseite, die vielleicht 1000 Codezeilen enthält. Oder für dieses Beispiel ist er
es. Es hat 10.000 Codezeilen darin. Wenn ich Sie damit beauftragt habe, ein bestimmtes Element hier zu finden, wie einfach wäre es dann? Wie viele verschiedene Anrufe denkst du? Wohin müsstest du von hier
runter nach hier gehen , rüber nach hier. Glauben Sie, würde passieren, wenn Sie zu einem 10.000 Zeilendokument gehen? Und das ist eine kleine Website? Ich meine, sie sind ihre Websites, die 100.000 Codezeilen haben. Stellen Sie sich vor, sie sind alle auf einem einzigen. Wie würdest du es aufbrechen, damit ich es nicht weiß, vielleicht 15 Ingenieure daran arbeiten können. Denk darüber nach. Nehmen wir an, dass der nächste Schritt davon in Ordnung ist. Wir wollen nicht unsere gesamte Website auf einer einzigen Seite, also werden
wir wie was sein? Wir brauchen A, sagen wir, ein Frontend. Also haben wir das Frontend, und dann brauchen wir einen wieder rein. Also, jetzt erstellen wir zu Folk-Dateien. Wir haben vorne und hinten, und sie kommunizieren miteinander, immer ein bisschen besser. Jetzt können wir hier drüben einen Ingenieur zurückstellen, eine Front und Ingenieur. Und wenn wir
zum Beispiel
eine Schaltfläche in der falschen Farbe angezeigt haben zum Beispiel , wissen
wir, dass wir vielleicht diesen Ordner anstelle dieses Ordners betrachten werden. Weißt du, der
hier hat vielleicht 5000 Zeilen oder in dieser Situation 50.000 Zeilen. Und das hier hat 50.000 Zeilen. Macht es nur ein bisschen einfacher, es herauszufinden. Wir müssen nicht 50.000 Zeilen von Dingen durchlaufen, die einfach nicht mal wichtig sind. Wir haben nur Front und so. Und dann können wir jetzt anfangen, es zu brechen und zu tun, anstatt nur Front-End. Vielleicht haben wir die Webseiten zerbrochen, also haben wir hier eine Hauptwebseite. Wir haben vielleicht die Login-Seite hier drüben, und dann haben wir das Formular hier drüben. Und vielleicht ist das Formular auf Lee Ah, 100 Zeilen. Und dann ist die Hauptseite, weißt
du, vielleicht 49.000 Zeilen und dann ist die
Anmeldeseiteetwa Anmeldeseite 900 Zeilen. Also sind es immer noch diese 50.000 Zeilen, aber wir haben und dann bleiben wir einfach das Ende vorbei. Hier sind das Backend. Ja, das hätte zurück sein sollen und nicht nur das Eso-Front-End-Back End beenden sollen. Also haben wir das Backend hier drüben, das immer noch kommuniziert. Aber jetzt haben wir ein bisschen bessere Vorstellung davon, wie es mit Dingen kommuniziert. Jetzt haben wir das nur noch ein bisschen mehr kaputt. Also haben wir die Fähigkeit, dass, wenn wir sagen, dass die Tastenfarbe falsch ist, wir in die Datei mehr gehen können wie, Nun, es ist auf der Formularseite. Schauen wir uns die Formularseite an. Wir lesen die 100 Zeilen oben durch, machen die Änderung. So sehen Sie, wir es mawr und mehr und mehr aufteilen, fangen
wir an, dieses Projekt ein wenig mehr aufrechtzuerhalten,
und wir fangen an, in der Lage zu sein, im Grunde ein besseres Produkt zu schaffen, über das wir in der Zukunft. Jetzt haben wir eine Art von dieser sehr, sehr allgemeinen Vorstellung davon, was wir mit Architektur machen. Indem wir die Dinge aufbrechen, lassen Sie uns über ein paar ihrer sie Muster oder Modelle verschiedene Möglichkeiten, wie Sie Ihr Projekt nehmen und es aufbrechen können und einige der Art von bewährten und wahren Methoden dies zu
tun.
13. 3-3-Rohr- und Filtermuster: Lassen Sie uns über unser erstes architektonisches Muster gehen. Also die architektonischen Muster gibt es nie wirklich eine Einheitsgröße passt alle Ansatz,
was bedeutet, dass wir nicht auf ein Muster schauen und jedes einzelne Stück Software mit diesem
Muster entwickeln können . Mit diesen Mustern erstellen
wir hier eine Toolbox, aus der wir aufbauen können. Also, wenn wir verstehen, vielleicht fünf oder sechs populäre Muster, wenn wir zu einem Problem bekommen, verstehen, wie genau wir darüber gehen sollten, oder zumindest eine allgemeine Richtung, wohin wir gehen sollten. Und dann für dieses spezifische Problem. Wir können tatsächlich eine Architektur dafür entwickeln. Also denke nicht, dass du diese Muster einfach anwenden könntest, du weißt ganz und gar ein Projekt. Das sind schon wieder. Es sind Ideen,
ihre Art und Weise, wie Dinge getan werden können. Und du könntest dir ein Problem vorstellen. Sei wie, Oh ,
ja, ich werde eine Pipe und Filter benutzen und dann einen Client-Server und dann, weißt
du, irgendwie mit meiner eigenen Architektur verknüpfen. Also, nur mit diesem kleinen Haftungsausschluss, lasst uns damit anfangen. Die 1. 1, wie ich sagte, ist das Rohr und Filtermuster die Rohre sind die Verbindungen von Daten. Und die Filter sind Dinge wie diese. Wie teilbar durch 10. Sogar seltsam. Also, wenn wir
zum Beispiel einen kleinen Datensatz hier hätten, wenn wir
einen kleinen Datensatz von 357 haben , ,könnten wir ihn an unseren ersten Filter senden, unseren zweiten Filter. Und dann ist das vielleicht der Ausgang. Das hier sind also die Pfeifen. Das hier ist also die Pfeife, und das hier sind die Filter. Nun, es gibt einen wichtigen Aspekt, den wir übergehen müssen. Bei diesen Rohren und Filtern ist etwas sehr Wichtiges. Die Eingabe muss mit der Ausgabe übereinstimmen. Und was ich damit meine ist, ich meine nicht,
dass ,
dass 357 in jeden Filter gehen muss und dann 357 rauskommen muss. Was ich meine ist, dass die gleiche Art von Input muss aus jedem von ihnen kommen, so dass
wir diese vollständig und völlig Art von intermix Kräuter schwächen. Nimm das und stell das hier. Wir können das hier nehmen und das hier abstellen. Wir können noch fünf hinzufügen. Wir konnten nur einen machen. Das ist der wichtige Teil. Also, zum Beispiel, wenn wir 357 haben und es in eins geht, ist
das zum Beispiel, Times 10, es wird mit einem Beispiel von 30 50 70 herauskommen. Und dann geht das in den nächsten Filter. Hast du bemerkt, dass es genau das Gleiche ist? Es ist nur eine andere Zahl gesetzt, vielleicht für diese eine anstelle von Malen. Ted, wir sagen, Onley will vielleicht eine andere Nummer hier setzen, damit das funktioniert. Wir wollen nur seltsam. Also kommt das raus und jetzt wird es 357 sein und das geht in die nächste. Die Größe ändert sich. Das ist vollkommen in Ordnung. Aber der Typ blieb gleich. Sie sind immer noch nur Zahlensinn, und wieder werde
ich das nach Hause fahren. Das ist die Pfeife und Filter dreht sich alles um. Sie nehmen einen bestimmten Typ auf, Sie setzen ihn durch einen Filter und Sie erhalten einen bestimmten Typ zurück aus dem anderen Ende. Und dann können
wir mit der Leitung und dem Filter auch Aktionen anwenden. Und was das sind, ist, dass sie nur die Daten nehmen und etwas mit ihnen machen, und dann geben sie genau die gleichen Daten zurück. So, zum Beispiel, sagte der Chef, vielleicht haben wir die 357 Wir haben es in. Judy, schicken Sie den Boss, also hat er es in den Boss gelegt. Es wird dauern, dass es ihn ihm schicken wird. Aber was? Was ist das? Die Ausgabe gibt die Nummernfolge erneut aus. 357, damit wir es dem Chef schicken konnten, es mit 10
multiplizieren und es dann an die Kunden schicken oder so etwas. So Untätigkeit ist vollkommen in Ordnung als Filter, da es etwas tun wird. Es wird die Daten nehmen. Vielleicht wird es an einen Server senden. Vielleicht wird es eine Berechnung durchführen und eine andere Variable setzen. Aber der wichtige Teil ist, dass die Ausgabe genau der Eingabe sein muss, wenn sie in ist. Wenn es eine Aktion ist, meine
ich, Sie könnten in der Aktion ändern und sie anders herauskommen lassen, aber es muss eine Ausgabe geben, mit der wir arbeiten können. Also lassen Sie uns hier ein paar kleine Beispiele betrachten und wie Sie das verwenden könnten. Nehmen wir an, Sie haben eine Investmentgesellschaft und arbeiten mit , Aktien,die nach oben und unten gingen. Also haben Sie diese Liste von Gewinnen und Verlusten auf Ihrer Aktie, also vielleicht die 1. 1 Vielleicht sind sie alle in Dollar. Sie haben die 1. 1 ist eine positive 10 und dann vielleicht eine negative 30 und dann vielleicht eine positive 11 und dann negative 15. Nehmen wir an, dass dies nur die Zahlen sind, mit denen Sie arbeiten. Also, was wir jetzt tun können, ist, dass wir tatsächlich ein Modell bauen können, um uns dabei zu helfen. Also wollen wir alles nehmen, was größer als Null ist. Also nehmen wir die Größere als 01 hier. Und dann wollen wir das an die Klienten schicken. Wir wollen den Kunden zeigen, dass es uns gut geht, dass wir hier wirklich gute Sachen machen. Also alles, was größer als Null ist, werden wir den Klienten schicken, und dann alles, was weniger als Null ist, werden wir dem Boss schicken wie So? Also holen wir uns das, wir schicken es dem Boss. Und jetzt, was wir tun werden, ist, dass wir diese Daten tatsächlich nehmen und sie reinlegen. Also, wenn wir diese Daten hier reinlegen, wird
es größer als Null sein. Und was kommen wird, sind nur die 10 und die 11, die in den
Senatskunden weitergegeben werden . Die werden an die Klienten geschickt, und dann wird es eine Ausgabe übergeben. Es ist nichts mehr übrig, was genau dort aufhört, und dann geben wir es auch in weniger als Null. Und dann schicken wir das dem Boss, und dann wird das alles sein. Hier ist negativ 30 und dann negativ 15. Also bekommen die Kunden, was gut läuft, und unser Boss bekommt, was schlecht läuft. Vielleicht kann er helfen, die Situation zu korrigieren. Und viele Male, Rohre und Filter werden dies tun. Wir werden diese Architektur haben, wo Sie gehen und Sie irgendwie in diese separaten
Dinge einbrechen , und vielleicht kommen sogar die Daten wieder zusammen, und es funktioniert weiter. Vielleicht beginnen die alle ihre eigenen kleinen Ketten oder so etwas. Aber die Pipe und Filter erlaubt uns nur, die gleichen Daten zu nehmen und sie in irgendeiner Weise zu werfen, die wir wollen. Zum Beispiel
noch einmal, noch einmal, nur um der Klarheit willen. Dies wird ein wenig weniger machen, da, aber sagen wir, anstatt die Kunden aus irgendeinem Grund zu senden, wollen
wir nur Kunden ungerade Zahlen senden. Also nehmen wir die Center-Kunden und wir bewegen es hierher und dann gehen wir hier hoch und wir sagen, wir wollen
nur ungerade Zahlen verwenden. Und wieder, das ist ein seltsames Beispiel, aber das funktioniert perfekt. Der Code funktioniert, weil es kleine Laden kleine Blackboxen gibt. Solange seine Zahlen hereinkommen, spielt
es keine Rolle, wie Sie das einrichten. Also, jetzt wird es alle Zahlen größer als Null greifen wird dann nur die
Chancen nehmen . Das bedeutet, dass wir nur mit 10 hier bleiben werden, und dann wird es die an die Klienten schicken. Und wieder können
Sie diese in irgendeiner Weise,
Form oder Form vermischen . Aber das ist über den ganzen Rohr- und Filteransatz. Ein Element der Schlüsselpunkte hier ist, dass die Eingabe mit der Ausgabe übereinstimmen muss. Also, wenn Sie eine Reihe von Zahlen haben und als eine Reihe von Zahlen herauskommen müssen, wenn Sie eine Reihe von Strings haben, die als eine Reihe von Strings oder irgendeine Weise herauskommen mussten , die mit der gleichen Art von Typen hier und dann auch, äh, selbst wenn Sie eine Aktion verwenden, müssen
Sie diese Aktion auch ausgeben. Alles muss anpassbar sein, wo Sie sie in beliebiger Reihenfolge per Drag & Drop ablegen können , und sie werden mit dieser Reihenfolge perfekt funktionieren.
14. 3-4 Client-Server: Lassen Sie uns nun über das Client-Server-Muster sprechen. Dies wird manchmal auch wieder als Client-Server-Modell bezeichnet. Aber das Client-Server-Muster ist ein Muster, das wir alle zuvor verwendet haben, und viele von Ihnen könnten sich das ansehen und wie, Warte, das ist ein Muster. Das ist etwas, was wir lernen können, das nur wie gemeinsames Wissen klang. Aber ja, es ist ein Muster. Es ist ein Weg, dass die Dinge aufgestellt werden. Mit dem Client-Server-Muster haben
wir also einen zentralen Server. So, zum Beispiel, lassen
Sie uns mit einem Farbschema dieses kleinen Bildes auf der rechten Seite hier halten. Also haben wir hier einen Server, und dann haben wir Kunden, die den Server für Informationen kontaktieren, also haben wir kleine Kunden hier und da. Also lasst uns wieder, gehen
wir mit dem Farbschema hier. Also haben wir Kunden Client Client Client, und sie alle haben den Server um Informationen gebeten. Der Server verteilt diese Informationen dann zurück an die Clients,
so dass Anfragen kommen und der Server verteilt die Anfragen wieder heraus, und so funktioniert im Grunde die Gesamtheit des Internets. Wenn Sie zu Facebook dot com gehen. Sie kontaktieren den Facebook-Server. So
könnte dies zum Beispiel zum BeispielFacebook sein. Sie kontaktieren den Facebook-Server, Sie fragen ihn nach einer ganzen Reihe von Informationen, und es gibt Ihnen jede einzelne Information, die es Ihnen gibt. Zum Beispiel die neuesten Updates auf der Timeline. Es gibt Ihnen den HTML-Code, so dass Sie die Webseite laden können. Es gibt Ihnen alle Bilder, sagt Ihnen, wo alles ist, und es sendet Ihnen tatsächlich die Daten. Und jedes Mal, wenn Sie eine Seite jedes Mal aktualisieren, wenn Sie auf
eine neue Seite gehen, wird eine neue Anfrage an den Server gesendet und eine neue Antwort vom Server zurückgegeben. Und was also? Deshalb ist dies ein Muster ist es, weil es eine Möglichkeit ist, dass wir alle mit einem zentralen
Teil von Daten oder einem zentralen Hub von Informationen verbinden können . Nehmen wir an, dass Ah, weg ein guter Weg, um dies zu erklären, ist auf einem Spielserver. Wenn zum Beispiel Sie
zum Beispielein Online-Spiele wie Call of Duty oder Spieler Unbekannte Schlachtfelder oder
zwei Wochen spielen , alle diese Spiele, die Sie alle auf der exakt gleichen Zeit auf dem gleichen Server spielen, und das ist, wo viele Leute verstehen. Sie haben schon mal die Worte Server gehört. Sie haben also all diese Leute und sie spielen das Spiel genau zur gleichen Zeit. Nun, was der Server tut, ist, dass er alles berechnet. Es nimmt eine Information, also nimmt es jede Sekunde auf, oder vielleicht sogar alle 10 Mal pro Sekunde. Ich weiß nicht, wie oft der Server aktualisiert wird. Ihr Klient. Ihr Computer sendet dem Server Ihren Standort, wie schneller sich bewegen, welche Elemente Sie haben. Und der Server aktualisiert sein kleines Datenprotokoll mit all dem Zeug. Es nimmt diese Daten nicht, und es sendet sie an jeden der Clients jede X Anzahl von Millisekunden oder Sekunden. Auf diese Weise, wenn Sie spielen Ihr Spiel, wenn jemand geht in. Also, zum Beispiel, sagen
wir, dies ist die Karte im Spiel. Du bist genau hier. Wenn jemand in Ihre Vision geht, erhalten
Sie eine Nachricht, die Ihrem Computer mitteilt, wo seine Standorte an diesem hilft, da dies jetzt Ihrem Computer ermöglicht, diese andere Person in Echtzeit zu rendern oder zu zeigen,
so dass Sie anfordern, dass es Ihnen sendet Anfrage sendet und es gibt 100 oder 200 Leute, die dies genau
zur gleichen Zeit tun. Und das ist es, was die Karte aufbaut und jedem erlaubt, herumzulaufen. Wenn Sie jemals Serververzögerung haben, wenn es jemals eine Verzögerung im Spiel gibt, dann liegt das daran, dass dies zu lange dauert. Sie haben nach Daten gefragt, und dann, wenn die Daten zu Ihnen zurückkommen, hat sich
diese Person bereits sehr weit nach vorne bewegt. Jetzt versucht Ihr Computer, sie hier anzuzeigen. Und dann bekommt es eine weitere Nachricht, dass nein, die Person ist tatsächlich weit hier oben, so dass sie über den Bildschirm hinken, und das ist ein häufiger Untergang Ihrer Server. Zu verlangsamen ist, dass die Clients die Informationen nicht erhalten können. Aber das Client-Server-Muster ist ein ziemlich einfaches Muster, das wir alle wieder verwenden. Es hat nur einen zentralen Server, und Sie haben eine ganze Reihe von Clients, die alle vielleicht Client-Software haben, die den
Server kontaktiert , normalerweise Serversoftware hat. Es gibt also normalerweise zwei Arten. Sie haben die Server-Software, und dann hier unten haben Sie die Client-Software auf jedem dieser, Clements Anforderungsdaten und in den Daten werden zurückgesendet
15. 3-5 Master-Slave Muster: Unser nächstes Muster, über das wir sprechen wollen, ist etwas, das als das Master-Slave-Muster bekannt . So wie die Beschreibung so geht, gibt es zwei Elemente dazu. Sowohl der Master
, der normalerweise an der Spitze einer Hierarchie dargestellt wird und dann darunter eine ganze Reihe von Slaves. Also haben wir in dieser Situation werden nur drei verschiedene Sklaven hier erstellen, also könnte es drei geben. Es könnte sechs geben. Es könnte 1000 verschiedene Sklaven geben. Es spielt keine Rolle, was das alles zählt, ist, dass diese Art der Kontrolle unidirektional ist, was bedeutet, dass sagen wir, dass diese Farbe hier die Befehle sind. Die Befehle auf Lee gehen nach unten. Also sagt der Meister den Sklaven immer, was die Sklaven nie,
eigentlich,
irgendwie zu dio eigentlich, . Sie kontrollieren den Meister nicht. So sagen sie es nicht. Es sollte etwas tun. Ein Beispiel dafür ist für, ähm mit Datenbankreplikation. Lassen Sie uns sagen, dies ist unsere Hauptdatenbank auf unseren wichtigsten Datenbankkontakte. Nehmen wir an, unser Server, ebenso wie unsere Serverkontakte. Eine Datenbank umgekehrt, und dann liefert unser Server die Daten ins Web. Mit dem Meister ist
es immer derjenige, der am aktuellsten sein wird. Es wird Daten aktualisieren und Daten jetzt mit den Slaves
senden. Die Slaves müssen die Daten vom Master duplizieren . So sagt der Meister, dass es um Mitternacht oder um 3 Uhr zu aktualisieren sein kann. Es wird also einen Befehl an einen Sklaven hier senden, der Sklave eins sagt. Beginnen Sie mit dem Kopieren meiner Daten in Ihre Daten. Und so wird es dauern. Es wird alle neuen Änderungen greifen, und es wird sich selbst aktualisieren. Und dann wird der Sklave ruhig gehen. Es wird nichts tun, bis es wieder vom Meister befohlen wird. Uh, USB-Laufwerke oder Peripheriegeräte verwendet auch. Sagen wir mal, wir haben hier einen Computer und wir haben, wissen
Sie, die zentrale CPU und dann den RAM und
etcetera , etc. Aber was wir haben, ist, dass wir hier ein USB-Laufwerk anschließen. Das USB-Laufwerk fungiert als Slave. Es sagt nicht, den Prozess oder was zu dio-Prozessor. In dieser Situation haben
wir die Prozessorrate hier, hört
nie auf dieses USB-Laufwerk. Es hört nicht auf, du weißt schon, es sind Befehle oder so. Der Prozessor kontaktiert das USB-Laufwerk und sagt ihm, OK, tun Sie jede Aufgabe, die wir der Wissenschaft. Nehmen wir an, wir kopieren Daten davon. Es steht, Okay, nehmen Sie Ihre Daten und entladen Sie es, auch, sind Festplatte. So wird das USB-Laufwerk auf die Festplatte geladen, und dann macht der Prozessor seine anderen Aufgaben. Und wann immer wir das USB-Laufwerk tatsächlich kontaktieren müssen, tut
es genau das. Er kontaktiert ihn, und dann macht der U. S. B. S.
B.
Drive, was er sagt. USB Drive versucht nie, etwas anderes zu kontrollieren, es sei denn, es wird ein Virus. In diesem Fall bricht
der Master-Slave irgendwie zusammen. Aber in dieser Situation mit einem normalen USB-Laufwerk ist
das USB-Laufwerk in dieser Situation ein Slave. Und so das. Wissen Sie, wir haben hier über Hardware gesprochen, aber mit Software können
wir das auch tun. In der Regel tun
wir dies mit einem sogenannten Controller. Also ist der Controller immer derjenige, der alle kleinen Stücke kontaktiert und ihnen sagt, was zu dio. Mit dieser Art von Architektur haben
wir also keine Kommunikation zwischen unseren kleinen Stücken, die nie passiert. Also mit einem Controller und einem Master-Slave-Muster, was wir haben, ist dieser Controller, der Befehle gibt. Also gibt der Controller die Befehle. Dann haben wir Nachrichten, die wieder auftauchen, damit die Nachrichten wieder hochkommen. Und dann, wenn Daten in diese anderen eingegeben werden müssen, als der Comptroller tut das selbst. Also im Grunde ist es eine Möglichkeit, jede Einheit hier,
jedes Modul zu isolieren, vollständig voneinander zu isolieren, so dass wir entweder schwächen, sie
austauschen können . Wir könnten sie markieren oder austauschen und ob es erlaubt, so dass wir hier nicht diese
quer Kommunikation haben ,
wo es sehr schwer ist, den Informationsfluss aufzuspüren. Wir wissen, dass, wenn hier schlechte Informationen kommen, sie vom Controller kommen müssen. Der Controller muss einen Fehler haben, oder es muss eine Kette geben, und es erlaubt uns, eine Art rückverfolgter. Das ändert sich etwas besser, anstatt so zu haben, sieht ein wenig kompliziert aus, aber stell dir vor, ob er kommuniziert wird. Weißt du, so wo es nur Kommunikation gibt, hier und hier, als dieser
hier runterkommt . Es ist unmöglich zu verfolgen. Also, was wir oft mögen, ist Zehe haben diesen Controller. Der Master-Slave ist also ein sehr wichtiges Muster. Es wird ziemlich viel benutzt, und einer von Leuten merkt nicht einmal, dass sie dieses Muster verwenden. Aber es ist sehr gut, Ah, eine
ganze Reihe von verschiedenen Problemen anzugehen .
16. 3-6-Muster: Unser nächstes Muster ist das geschichtete Muster. So ist das geschichtete Muster im Grunde nur, dass es eine Reihe von verschiedenen Schichten ist und diese weiche für Rom. Das bedeutet, dass wir diese Technologieschichten haben, so dass die Technologieschichten nur innerhalb ihrer eigenen Schichten kommunizieren. Beispiel ZumBeispiel ist
dies eine Ebene, und dies ist eine Ebene, und das ist eine Ebene. Was wir also nicht haben, ist, dass wir keine Cross-Kommunikation haben. Wir haben keine, die versuchen, Informationen von dort so anzurufen. Was wir haben, ist, dass wir die Fähigkeit haben, hin und her über die Fähigkeit, hin und her zu kommunizieren, so zu kommunizieren. Und dann rufen diese Onley innerhalb ihrer jeweiligen Schichten an, so dass Sie sehen können, dass vielleicht ein kleiner Nachteil ist, wenn Sie etwas hier haben, es könnte bis zu einer anderen Ebene durchlaufen müssen. Sie müssen vielleicht ein paar zusätzliche Dateien durchlaufen, oder? Ein kleiner Extra-Code. Was es tut, ist, dass es die Daten klassifiziert, so dass, wenn wir suchen, sagen wir,
äh, äh, wissen
Sie, wir haben das ist unser Front-End. Das ist unser Backend, und das ist die Verbindung zwischen den beiden. Wenn wir wieder ein Problem haben, wissen
wir,
dasswir
das Programm innerhalb dieser Ebene betrachten dass . Und so ist das immer noch ziemlich abstrakt, also ist es tatsächlich ein bisschen ein Beispiel hier durchlaufen. Beispiel, das ich übergehen möchte, ist ein sehr beliebtes, geschichtetes Muster, und Sie könnten dieses ein Modell nennen, weil es eine tatsächliche Sache ist, die Sie implementieren können. Es heißt also der Model View-Controller. So zum Beispiel werden
wir
zum Beispielden Controller hier setzen und auf der rechten Seite werden wir die Ansicht und die
linke Seite setzen . Wir setzen das Modell so ein, dass der Modellansicht-Controller die drei verschiedenen Aspekte hier
auf der rechten Seite aufteilt . Wie ich schon sagte, wir haben die Aussicht. Die Ansicht ist, was dem Benutzer angezeigt wird. Die Ansicht ist, was wir anklicken können, womit wir interagieren können. in dieser Situation an, Nehmen wirin dieser Situation an,wir haben eine Profilseite,
also wissen Sie, dass es das Profilbild gibt, und dann haben wir hier ein kleines Formular, um das Profil zu aktualisieren. Also haben wir ah, Box eine Box und dann die Möglichkeit, diese Box tatsächlich einzureichen. Und vielleicht ändern wir den Namen hier. Das ist also, was wir versuchen werden, den Namen und die E-Mail jetzt mit dem
Model View-Controller zu ändern . Was wir auf der linken Seite haben, ist das Modell. Das ist also die Datenbank. Dies ist unsere Datenbank, die den Benutzer hier hat. Es wird also die Zeile für den Benutzer haben und dann seinen Namen und seine E-Mail-Adresse. Also haben wir den Benutzernamen und dann die E-Mail-Adresse direkt dort. Undweißt
du, weißt
du, es hat einen ganzen Haufen davon. Eine ganze Reihe von
Benutzernamen
E-Mail, Benutzername E-Mail, , usw. Das ist das Modell. Dies ist die eigentliche Entität selbst. Also auf der linken Seite haben
wir das Modell,
die Entität. Oft ist
es die Datenbank, in der die Art der Daten tatsächlich gespeichert wird. Nun, wir wollen nicht haben, ist diese Cross-Kommunikation diese Fähigkeit für die Ansicht, mit dem
Modell zu sprechen ? Also, was wir tun, ist, dass wir etwas in der Mitte schaffen, das den Controller genannt wird. Also in der Mitte, was wir haben, ist, dass wir den Controller haben und der Controller übernimmt die gesamte Kommunikation . So wird das Modell den Controller kontaktieren und der Cullen Troller wird die Ansicht kontaktieren und dann umgekehrt. Die Ansicht kontaktiert einen Controller und der Controller kontaktiert das Modell. So zum Beispiel haben wir
zum Beispielhier auf die Schaltfläche „Senden“ geklickt. Die Daten, die wir aktualisiert haben, gehen an den Controller. Der Controller wird keine Funktion haben, wie vielleicht wird es eine Funktion namens
Update-Benutzer sein . Und dann mit dieser Funktion wird
es dann zum Modell zurückrufen. Das Modell wird in gehen, um all die Informationen, die hier eingefügt wurden, zu greifen und es wird den Benutzer zu aktualisieren. Was macht das? Was hilft uns das zu erreichen? Nun, es hilft uns herauszufinden, wo Probleme sind. Wir haben diese Datenbankschicht auf der linken Seite, und wir haben diese Controller-Schicht in der Mitte. Und dann haben wir diese Ansichtsebene auf der rechten Seite. So sind wir jetzt in der Lage, Probleme herauszufinden. Wir haben das Frontend. Dies ist das Java-Skript im HTML. Also, äh, die Art der Sicht der Dinge. Und wenn hier drüben etwas durcheinander ist, schauen
wir uns einfach den HTML an. Wir schauen uns die Website selbst an. Wenn wir ein Problem mit Daten haben, die hier eingegeben werden, und es wird nicht zum Modell. Was wir wissen, gibt es ein Problem mit dem Controller. Also schauen wir in der Controller-Klasse. Wir schauen uns die Hauptsache an, die beide Seiten tatsächlich kontrolliert, und dann, wenn die Datenbank durcheinander ist, wenn wir das haben, wissen
wir, dass der Controller richtig macht. Aber einige, aus
irgendeinem Grund wird das Modell nicht richtig aktualisiert. Was wir wissen, um zu gehen, schauen Sie sich die Datenbanken an, um die meine SQL, die verschiedenen Arten von Arten der Datenbanken, die Dinge speichern, zu betrachten. Es erlaubt uns diese Schicht. Es ermöglicht uns diese Fähigkeit, verschiedene Elemente zu klassifizieren und auch zu bauen. Wir können Front und Entwickler hier könnten wir Middle End-Entwickler haben. Hier. Wir kommen zurück in die Entwickler hier. Normalerweise werden diese beiden Klassen von hinten in Entwicklern abgedeckt, aber Sie können auch ein wenig Überlappung haben, wo die Front-End-Entwickler auch ein
wenig hier wissen . Insgesamt jedoch ziemlich viel verwendet, wird
das geschichtete Muster
jedoch ziemlich viel verwendet,um unsere Programme zu klassifizieren, um sie auseinander zu brechen, so dass sie leicht gepflegt werden können, so dass es nicht eine ganze Reihe von Spaghetti-Code gibt und so dass es macht Sinn für alle Beteiligten
17. 3-7-Software-Muster: also tun Sie das alles aus. Wir versuchen, den Software-Architekturprozess zu erstellen, den Prozess, mit dem wir eine Architektur für ein Problem für ein Programm entwickeln können, das wir zu entwerfen
versuchen. Nun, das ist eine ziemlich schwierige Aufgabe, und die waren sehr weit in der kreativen Welt hier. Was ich damit meine, ist, dass es keinen angebrachten x y Z Erster Schritt zweiten Schritt geben wird. Der dritte Schritt zu diesem Prozess, müssen
wir kreativ sein. Wir werden über unser Problem nachdenken. Wir werden über andere Probleme nachdenken, die abgeschlossen wurden, und sie greifen davon aus und entwickelten eine einzigartige Lösung für das, was wir zu tun versuchen . In diesem Sinne,
anstatt einen Prozess ein 123 zu haben, haben wir irgendwie eine Liste von Zielen, die wir mit unserer Architektur zu
erreichen versuchen,
und dies könnte so anstatt einen Prozess ein 123 zu haben, haben wir irgendwie eine Liste von Zielen, die wir mit unserer Architektur zu
erreichen versuchen , tief oder so hoch wie wir wollen, so können wir dies sehr un in Tiefe. Und damit meine ich, es ist irgendwie nur eine allgemeine Blaupause. Wir können sehr ausführlich darüber eingehen, wie genau jede Datenmenge kommuniziert werden soll. In der Regel mit größeren Projekten und größeren Konzernen. Sie werden Maurin Tiefe und mit schnelleren Unternehmen oder
schnelleren Navy Startups bekommen . Wir verbringen nicht so viel Zeit hier drin, was versucht, das Produkt da rauszuholen. Und dann entscheiden wir später über diese Dinge, was sehr teuer
sein könnte . Oder es könnte für Ihr Projekt funktionieren,
je nachdem, wie alles eingerichtet ist. Aber
wir versuchen zu kontrollieren, wie ein Programm zerlegt wird und wie es mit sich selbst und der Außenwelt
interagiert. Das ist auch für die Außenwelt wichtig. Also versuchen wir herauszufinden, wie das Programm zu tun hat. Es sind alles kleine Verbindungen. Und wie kommuniziert es mit den Nutzern? Wie kommuniziert es mit anderen Softwaresystemen? Wie macht es das auch? Und wir versuchen herauszufinden, wie es sich im Grunde in die Welt integriert? Und wie bauen wir das dann auch? Wie strukturieren wir das so, dass es richtig funktioniert und wir versuchen auch zu modellieren, wie das Steuerelement oder wir versuchen, die Kontrollstruktur des Systems zu modellieren und wie es sich verhalten wird . Die Kontrollstruktur ist eine Art von all diesen Mustern, die wir gemacht haben. Werden wir eine Kontrollstruktur haben, die irgendwie so ist wie,weißt
du, weißt
du, vielleicht das oder wir werden vielleicht diesen Sklaven haben, der Master-Slave, wo wir so
etwas haben , werden wir die Pipe im Filter haben Kontrollstruktur, in der wir weiterhin Daten hineinlegen und sie dann nach unten filtern werden? Oder vielleicht werden wir so etwas haben, wo wir diese Subsysteme alle zusammenstellen. Wir werden eine Pfeife im Filter haben. Es wird zu einem Meister-Slave gehen. Die Master-Slaves werden nicht so wie ein Model View-Controller
usw. gehen . Also nehmen wir das alles auf und versuchen, es zu einer Weise zu kombinieren, die für
unsere Lösung funktioniert . Und wie gesagt, es gibt keinen klaren Schnitt. Probleme sind Lösung. Wir könnten ein Team von Ingenieuren haben. Ein weiteres Team von Ingenieuren und ein weiteres Team von Ingenieuren versuchen, die beste Architektur für unser Projekt zu finden. Und sie werden alle völlig anders sein. Einige von ihnen können
völlig anders sein. Vielleicht denken diese Typen, was wir ein Rohr und Filter benutzen sollten. Diese Typen sind wie:
Nein, nein, nein, nein, der Meistersklave. Plus das und dieses Modell, wie wir es machen. Diese Jungs haben eine ganz andere Art, es zu tun, und das ist die Wichtigkeit der Architektur im Grunde. Ist es das? Etwas, das wir selbst entwerfen müssen. Wir müssen es rausfinden. Es ist ein kreativer Prozess, weshalb viele Leute ihn überspringen. Es ist schwer. Es ist sehr schwierig zu entwerfen. Nun, der nächste Schritt, den wir tun müssen, ist, dass wir das Projekt in den Subsystemen und
Modulen brechen müssen . Wenn Sie diesen Schritt einfach machen können, befinden
Sie sich in einer ziemlich guten Situation für Ihre Architektur. Also, was ich damit meine, ist, dass wir die beiden Dinge haben, die die bestehen, um, und das Modul und das Subsystem sind ein unabhängiges System, das unabhängigen Wert hält. Und was ich damit meine, ist, dass Sie dieses System nehmen können und Sie es in
ein anderes Programm stecken und es würde richtig funktionieren. Oder du könntest dieses System sogar verkaufen. Jemand könnte das System tatsächlich kaufen wollen, weil es eine Art unabhängigen Wert hat Ah, . Modul jedoch eine Komponente eines Subsystems, ist
jedoch eine Komponente eines Subsystems,das nicht als Standalone funktionieren kann oder wenn es als
Standalone funktioniert . Es ist sehr unbedeutend. Es gibt nichts, was es wirklich tut, das revolutionär ist. Also lassen Sie uns sagen, dass wir
zum Beispiel
ein kleines Modul haben , das durch 10 dividiert dann 30 addiert und dann mit 62 einige seltsame kleine
Modul hier unten multipliziert . Und der Grund, warum ich das Modul verwende, ist Ursache. Denk darüber nach. Dies ist ein Stück Information. Wir können jetzt in das hineinfallen und es ausgeben und es bekommt eine neue Nummer. Es ist es hat eine gewisse Bedeutung für uns, und wir können es kombinieren und vielleicht einen wichtigen Weg. Aber glaubst du, jemand würde das kaufen? Es ist sehr spezifisch, und es erfüllt auch nicht wirklich eine Aufgabe von selbst. Es gibt keine Aufgabe, die wir haben. Vielleicht erfüllt es eine sehr kleine Aufgabe in einem großen System von Aufgaben, aber für sich hat es keinen unabhängigen Wert. Nun sagen wir, wir haben eine ganze Reihe von diesen kleinen mathematischen Gleichungsmodulen, also haben wir hier eine kleine hier, eins hier, eins hier, eins. Hier haben wir all diese kleinen Module arbeiten, und jetzt sind sie alle quer Kommunikation, unabhängig von der Struktur dieses Subsystems. Und wir haben jetzt dieses Subsystem gebaut und sagen wir, dieses Subsystem berechnet vielleicht unsere Steuern. Also ist dieses Subsystem jetzt gut genug, dass mit all diesen kleinen mathematischen Gleichungen Also sind alles, was Sie wissen, wie mal 10 Sie wissen, minus 62. Und vielleicht berechnet das unsere Hypothekenversicherung usw. Weißt du, all diese verrückten kleinen Gleichungen gehen hier zusammen, und dann gibt es endlich aus, wie viel du Steuerschulden schuldest. Also gibt es Ihr vielleicht Ihr Einkommen ein, vielleicht Sie Ihr Einkommen oder so, und gibt dann aus, wie viel Sie in der Steuer schulden. Das ist ein wichtiges Modul. Das könnten wir tatsächlich gebrauchen. Das ist etwas, das wir jemandem verkaufen könnten, den sie vielleicht nicht mit der
Entwicklung verbringen wollen . Dies hat einen geschäftlichen Wert. Es hat einen unabhängigen Wert. Es besteht aus einer ganzen Reihe von Komponenten, die für sich keinen Wert haben. Ich meine, wir die Berechnung, wissen
Sie, Ihre Hypothek hat vielleicht ein bisschen Wert, aber wenn Sie es in diesen riesigen Kontext stellen, kommen
wir zu der Fähigkeit, dass wir tatsächlich können, Sie wissen schon, kommen zu einem Punkt, es zu verkaufen. Und lassen Sie uns sagen, dass dies nur unsere persönlichen Steuern sind. Hier drüben haben wir genau das Gleiche. Wir haben eine ganze Reihe von kleinen Modulen hier drin und Sie importieren es aus. Und jetzt haben Sie vielleicht Gewerbesteuer. Und so importierst du Geschäfte, Taxi aus Hafengeschäften und dann, und es wird ein wenig schlampig hier, aber ich will diesen Punkt jetzt einfach nach Hause fahren. Was wir haben, ist, dass wir tatsächlich eine Art Subsystem von Subsystemen haben. In diesem Fall haben
wir fast unsere gesamte Software. Oder vielleicht ist unsere Software wie eine ganze persönliche Finanzsache, also könnte es auch andere geben. Aber wir haben dieses andere System, das wir auch an Menschen verkaufen könnten. Dies könnte also ein ganzes Subsystem sein, und jedes davon könnte vielleicht wieder mehr Subsysteme sein. Sie können dies so gestalten, wie Sie wollen, aber versuchen Sie einfach, die Point-Home-Modulkomponente eines Subsystems zu steuern, das nicht alleine funktionieren kann. Wenn es also diese kleinen Gleichungen oder einen Offs gibt, die nicht wirklich verkauft werden können, dann wird es wahrscheinlich ein Modul sein. Und dann haben wir auch das Subsystem,
das sich an diesem Modul befindet, wenn sie alle zusammengebaut und verkauft werden. Und selbst mit diesem kleinen bisschen Gedanken und Planung haben
wir jetzt einen Weg, den wir vielleicht sogar auftauchen könnten. Howard-Teams arbeiten. Wir werden ein Team auf der geschäftlichen Seite arbeiten lassen. Wir werden auf der persönlichen Steuerseite zusammenarbeiten. Wir werden vielleicht eine Teamarbeit hier haben, ein Team daran arbeiten,
ein Team arbeitet an diesem hier. Vielleicht wird ein Team an diesem Abschnitt arbeiten und ein Team wird an diesem Abschnitt arbeiten und Sie können sehen, dass wir bereits die Fähigkeit bekommen, die Aufgabe zu verbreiten und effizienter zu werden. Und schließlich, mit dem Software-Architekturprozess, müssen
wir eine ganze Reihe von Dingen im Auge behalten. Und man konnte sehen, dass diese Liste wirklich, wirklich,
wirklich,
wirklich schwer ist wirklich, . Es ist eigentlich von Wikipedia, dieser Website, wenn Sie das nicht hineingeben, um einen Blick darauf zu werfen, was diese Links gehen, aber es sind all diese Art von Begriffen, über die wir nachdenken wollen. Vielleicht wollen wir nur über fünf oder sechs dieser Begriffe wirklich,
wirklich eingehend nachdenken . Aber wir wollen sicherstellen, dass wir über Dinge nachdenken, wie, weißt
du, ist das zuverlässig? Die Zuverlässigkeit dieser Architektur? Wie effektiv ist es, unser Projekt zu lösen? Wie haltbar ist es? Vielleicht werden wir es den Test der Zeit aushalten. Wird es mit mehr Daten darin kaputt sein? Vielleicht wollen wir uns die Reproduktionsfähigkeit ansehen. Wird es einfach sein, wieder auf ein anderes Problem zu kopieren? Vielleicht haben wir das gleiche Problem immer und immer wieder angegangen. Vielleicht möchten wir also eine Lösung entwerfen, die mehrfach in
verschiedene Teile reproduziert werden kann . Die Verwundbarkeit. Wie sicher ist es? Wird es hackbar sein? Wird es etwas sein, das bereits ein bekanntes Risiko darin hat? Jeder dieser Partner stellt ein paar neue Fragen, die uns vielleicht zurückgehen lassen und
unsere Architektur ein wenig weiter verfeinern lassen. Im nächsten Abschnitt werden
wir irgendwie in die nächste Schicht von Architekturen springen. Also vielleicht haben wir nur ein bisschen davon entwickelt, wie unser Projekt funktioniert und haben eine Kontrolle . Full Flow funktioniert und das nächste Jetzt werden wir anfangen, in nur ein bisschen des
Designs zu springen , ein wenig mehr in die Tiefe
gehen, um diese Module und die verschiedenen
Teile zu hashen und wie sie interagieren sollten, außer
18. 4-1 4-1: Unser nächster Schritt auf der Software-Engineering-Reise wird das
Software-Design entwickelt . Also haben wir die Anforderungen durchlaufen. Wir haben die Anforderungen, die Anforderungen natürlich in die Spezifikationen übernommen, die wiederum nur eine Art mehr von den technischen Anforderungen aus den Spezifikationen sind . Dann gehen wir in die Architektur ein. Wir haben eine Art Idee mit den Anforderungen Spezifikationen. Also versuchen wir, einen großen Spielplan zu finden. Wie sind diese gigantischen Module? Wie werden sie miteinander interagieren? Wie die Subsysteme aufgeteilt werden. Aber dadurch haben
wir nicht wirklich über Dinge gesprochen wie, welchen Code werden wir verwenden? Welche Software wir benutzen werden, welche Datenbanksoftware wir benutzen werden. Und da kommt dieser nächste Schritt ins Spiel, und das wird Design sein. Daher ist Design ein Schritt, bei dem wir anfangen, unseren Plan und unsere Idee auf die realen Lösungen anzuwenden. Was ich also mit Riel Rose Solutions meine, ist, dass wir anfangen, mit uns zu beginnen, wie wir
unsere Architektur, Architektur,unseren Gesamtplan und wie gestalten wir sie? Wie finden wir verschiedene Lösungen, um diese Architektur zu schaffen? Also, wenn unsere Architektur zum Beispiel, für einen Rücken und Server
aufgerufen. Also werden wir wie ein Server-Symbol dort tun. Und dann haben wir vor, dass wir vielleicht eine Art Controller-Klasse und dann vielleicht eine Webseite haben. Vielleicht ist unser Ding so. Wir machen so etwas wie eine Model-View-Controller-Art. Welche Technologien werden wir also verwenden? Was ist wieder da, wird es auf einem vielleicht Lennox-basierten
Betriebssystem laufen ? Und von diesem ist unser Server wird eine Datenbank laufen? Vielleicht ist so etwas wie mein SQL Was wird unsere Mitte sein? Wird es Ah sein, wird es das JavaScript sein? Wird es vielleicht auf dem Server selbst sein, vielleicht etwas wie PHP oder das auf beiden ist, weshalb es normalerweise eine mittlere Sache ist. Es könnte sich auf der Webseite befinden, aber es führt tatsächlich Serverbefehl aus. Also vielleicht ist es eine PHP-Controller-Klasse auf unserer Webseite wird HTML sein. Wird es ein Rahmen sein? Vielleicht verwenden wir etwas wie, wenn Sie davon gehört haben, WordPress, was diese Art von einem Framework ist? Es ist wie eine Drachendropfen-Front im Schöpfer oder sogar, ah, Gesellschaft wie Wicks. W I. X ist ein Unternehmen, in dem Sie Ihre Lösungen per Drag & Drop entwerfen und entwerfen können, aber es deckt auch das alles ab. Also vielleicht ist das eine Idee. So können Sie sehen, dass wir irgendwie einen Gesamtplan finden, wie wir die
Dinge einrichten wollten , auch wenn es komplizierter ist mit, wissen
Sie, Ah, Ah, ganze Haufen Boxen bewegen sich auf unterschiedliche Weise und Zeug, und jetzt ist es an der Zeit, in jede dieser Boxen zu schauen und zu bestimmen, was die reale Lösung ist, die das jetzt wieder lösen wird, genau wie in den Anforderungen, wo wir unsere Grenzen nicht überschreiten wollten und versehentlich gehen in das Design das Design hat eine Beschränkung auf. Wir wollen nicht versehentlich in die Implementierung gehen, was der nächste Schritt hier unten ist. Design ist nicht codiert und Codierung ist nicht entworfen,
was bedeutet, dass wir nicht damit beginnen, das Framework oder so etwas auszubauen. Alles, was wir versuchen zu tun, ist, herauszufinden, welche Lösungen es gibt. Was müssen wir schaffen, welche Technologie wir verwenden werden, um das zu schaffen. Und welche Art von unserem Spielplan, das zu tun? Das ist Design. Nun, natürlich, machen
Sie ein wenig explorative Codierung hier und da. Sehen Sie, ob eine Idee funktioniert wie, ja, wissen
Sie, diese drei Codezeilen hier, sie tun, was ich denke. Also werden wir das ein Design setzen. Es gibt hier keine strenge Grenze,
aber was wir sagen, ist,dass wir
nicht direkt von diesem Schritt in die Beschichtung springen. strenge Grenze, aber was wir sagen, ist, Das ist nicht das, was Design ist. Ähm, Design kommt rein mit einem detaillierteren Plan aus der Architektur. Und auch, wenn wir über Design sprechen, müssen
wir auch verstehen, dass es hier eine Art doppelter Bedeutung hat. Design ist sowohl die Aktivität als auch das Produkt. Die Aktivität arbeitet also daran, eine Software so zu entwerfen, wo man ein Team von Menschen hat und sie alle tatsächlich aktiv daran
arbeiten , ,wie diese Software interagieren soll. Also Leute hier, wie dieses Angebot interagieren sollte. Jetzt ist das Produkt auch das Design. Das ist das Entwurfsdokument. Und so ist es ein Substantiv,
was bedeutet, dass es das Dokument selbst ist. Es ist das Endprodukt,
etwas, das Sie so im Haus bewältigen können und sie würden verstehen, wie genau Ihre Software funktioniert. Wenn wir also über Designs sprechen, können
wir darüber sprechen, diese beiden Dinge beide das Produkt entwarfen, und wir erstellen ein Design für das Produkt. Im nächsten Schritt beginnen
wir, in die Phasen des Designs zu gehen, in welche Fragen wir stellen müssen in welchen Problemen wir lösen müssen.
19. 4-2 Designphasen: lassen Sie uns über eine allgemeine Reihe von Phasen des Designs für Software gehen. Also, warum ich das sage, sagte
der General,
ist, dass dies keine Einheitsgröße für alle Lösung ist. Es könnte eine andere Art von Gestaltungsprinzipien bei Firma A Uses im Vergleich zu Firma B . jedoch Wenn diesjedochIhre Einführung in Design ist, ist
dies ein guter Anfang,
ein guter Ort, um zu beginnen, wenn Sie über Design nachdenken. Also haben wir hier acht Schritte, und diese Schritte könnten so detailliert oder undetailliert sein, wie Sie wollen. Irgendwie. Was du reinlegst, ist das, was du bekommst, wenn du so etwas machst. Wenn Sie mehr Zeit hier verbringen, verbringen
Sie weniger Zeit und Realisierung und Beschichtung. Es hängt also wirklich davon ab, was du tun willst. Denn viele Male werden Sie tatsächlich Fehler und architektonische Probleme und
Designprobleme innerhalb des Designs finden , die Sie nicht finden würden, bis Sie das
Ding bereits beschichtet haben , bis Sie bereits verbracht haben, wissen
Sie, 400 Stunden Beschichtung und dann merkt man, dass man zurückgehen und etwas wiederholen muss Wenn man
also viel Zeit hier verbringt, kann
man in Zukunft viel Zeit sparen. Also funktionieren unsere Schritte zuerst so, dass wir das größere Problem in kleinere
Probleme zerlegen . Wenn wirzum
Beispiel
Amazon entwerfen, zum
Beispiel
Amazon entwerfen, wenn wir wollen. Wenn wir diese Idee von dieser Firma namens Amazon haben und wir diese Website entwickeln wollen wo es ein Online-E-Commerce sein wird und die Leute,wissen
Sie,ihre Produkte an uns und eine Reihe von Unternehmen
senden und in Yada kommen können wissen
Sie, , yada, etcetera wird es eine Menge von vielen Problemen innerhalb ihrer geben. Dies ist ein Problem, das eine Menge von übergeordneten Problemen haben
wird. Und von diesen übergeordneten Problemen werden
wir kleinere Probleme haben und kleiner und kleiner, bis wir zu etwas kommen , das ein bisschen überschaubarer ist. Wenn wir mit einem etwas kleineren Beispiel gehen
, , sagen wir
zum Beispiel das mit dem Arbeiten,
das eine Website erstellt, sagen
wir, eines unserer Probleme ist die Datenbank, die Art und Weise, unsere Daten in das hintere Ende. Und damit ist
das unser Problem. Das wird das große Problem sein, das es in ein kleineres Problem zerbrochen hat, wie machen wir die Datenbank? Was tun wir, um die Datenbank in Gang zu bringen? In dieser Situation haben
wir es nun in ein Problem des Datenbankentwurfs aufgeschlüsselt. Jetzt müssen wir jedes dieser Probleme verstehen. Also, zum Beispiel, wenn wir das tun, können
wir das eins nach dem anderen tun. Oder wir können es in eine ganze Reihe von kleinen Unterproblemen zerlegen und dann zu Schritt zwei übergehen. Und wenn wir es dann noch weiter zerlegen, könnten
wir zu Schritt 3 usw. übergehen. Ich werde nur eine Art Ziel oder Top-Down-Ansatz treffen, wir werden ein Problem haben, das eines von vielen Problemen
sein kann , zum Beispiel, und dann gehen wir einfach nach unten, Schritt für Schritt, über und über so. Dann brauchen wir das. Verstehst du dieses Problem? Was ist der Zweck dieses Problems? Warum haben wir dieses Problem? Das Anforderungsdokument könnte sich hier als nützlich erweisen, weil die Anforderungsdokumente uns sagen
sollten, was wir zu lösen versuchen. Und so haben wir jetzt eine Art Weg, dass wir zurückgehen und schauen könnten, vielleicht Anforderungen. Dokument sagt so etwas wie, wir müssen Benutzerinformationen speichern. Also, wenn wir Benutzerinformationen speichern müssen. Nun, dafür brauchen wir natürlich eine Datenbank. Vielleicht ist es. Wir müssen Transaktionen durchführen. Wenn wir Transaktionen machen wollen, brauchen
wir dafür eine Datenbank. Und wir können alle verschiedenen Teile dieses Problems Benutzerinformationen,
Transaktionen,
Bilder
usw. sortieren Transaktionen, , um unser Problem zu passen. Und sobald wir das alles verstanden haben, haben
wir jetzt eine Vorstellung davon, welche Datenbank wir entwerfen müssen. Jetzt müssen wir potenzielle Lösungen identifizieren. Welche Lösungen gibt es da draußen, um uns zu helfen? Es gibt etwas, das AWS Amazon Web Services genannt wird. Wir haben, wir könnten bauen. Unsere eigenen Server sind vielleicht unser eigener Server. Wir könnten Serverspeicher auf einem anderen Land Unternehmen kaufen, damit wir ihn irgendwo kaufen können . Wir bauen unsere eigenen, aber dann schicken wir es an einen Kaufort. Wir könnten verschiedene Technologien wie eine meine SQL-Datenbank verwenden. Eine regelmäßige gerettet fehl am Platz, vielleicht eine keine SQL-Datenbank. Sind all diese verschiedenen Optionen Und hier müssen wir unseren Geist wirklich öffnen und so viele Lösungen für das Problem wie möglich finden. Wir wollen nicht mit einer Art Denkweise von Ok kommen, wir werden mit AWS arbeiten, und es wird dies und das ohne Grund dafür sein. Vielleicht sagt die Firma vielleicht, wie die Designfirma oder der Kunde sagt, wir müssen acht
von uns benutzen . Das ist in Ordnung. Das ist eine Anforderung, dass etwas, das Einschränkung, wir haben keine Wahl darüber. In diesem Fall wird
das in unseren Entwurfsdokumenten gehen, nur acht von uns. Aber wenn wir diese Einschränkung nicht haben, wenn wir die Möglichkeit haben, verschiedene Lösungen zu entwickeln, dann müssen wir diese Mini-Lösung wie möglich finden, damit wir sicherstellen, dass wir die beste
auswählen . Denn wenn wir nur Tunnelsicht selbst sind und uns nicht konzentrieren oder ah, zu viel
konzentrieren, werden
wir ein Problem haben, bei dem eine bessere Lösung zur Verfügung stehen könnte. Der nächste Schritt besteht darin, Lösungsabstraktionen zu beschreiben. Also, was sind Lösung? Abstraktion? Lösung? Abstraktionen sind Dinge wie Designdokumente, die nicht technisch sind. Es sagt also, wir haben hier ein Modell X, das Kontakte, Modell, warum und was diese Steuerung fließt. Es geht zurück auf das Modell W. und das kontaktiert das. Es ist so etwas wie diese Art, Diagramme und Modelle wie diese hier zu verwenden,
um einen Gesamtplan für unsere Software zu finden. Das ist also eine Abstraktion. Dies ist, wie wir wollten unsere Datenbank einrichten, so dass Sie sehen können, dass wir ah Benutzer Spalte eine Hauptbeiträge oder Benutzer Tabelle Hauptpost Mitarbeiter Post, Admin-Post haben. Und dann verbinden sich all diese und sie alle auf diese Weise. Nun, das ist ein bisschen weiter auf der technischen Seite, als vielleicht einige Abstraktionen gehen könnten, aber das ist in Ordnung. Wir lassen Sie wissen, anstatt, wissen
Sie, all
das hier unten zu platzieren, könnten
wir einfach die Tabellennamen finden. Das wäre eine gute Abstraktion, so dass wir beschreiben können, wie wir die Daten speichern werden . Aber Sie können sehen, was dieser Tisch genau hier. Wir haben eine sehr gute Idee, wie die Datenbank funktionieren wird. Also wählten wir ihn irgendwie aus. Wir werden die meine SQL-Datenbank in dieser Situation verwenden, und der nächste Schritt ist die Art von Abstraktionen kommt mit diesen Modellen. Vielleicht funktioniert der Controller so. Und das Diagramm, das ich Ihnen gerade gezeigt habe, dass Graph vielleicht dieses Modul hier ist. Und dann ist vielleicht hier unten die, ähm, wie Daten die organisatorischen Dinge ein- und rauskommen werden, und damit wir das irgendwie in weitere aufteilen können. Und im Grunde, was wir tun, ist, dass wir diesen Prozess immer und immer wieder wiederholen, bis wir mit all
diesen Problemen gehen . Auswendiglernen sagte, wir hätten
es, wie wir es hatten. Vielleicht sind diese Probleme, die in diese Probleme eingebrochen sind, usw. Also werden wir versuchen, alles zu abstrahieren, bis wir im Grunde fertig sind. Bis wir diese wirklich,
wirklich von oben nach unten Art von Ebene über all die verschiedenen Komponenten und Ideen darüber haben, wie alles zusammen funktioniert, bis diese Abstraktionen fertig sind. Dann, wenn wir das alles tun, sobald alle diese Abstraktionen hier herausgefunden sind. Dann gehen wir weiter zu den nächsten Schritten hier. Also oft wollen wir eine Schleife hier oben, bis wir alles herausfinden und dann können wir dem nächsten Schritt und den nächsten Schritten ein bisschen weiter
vorankommen. Als Nächstes drauf. Viele Leute überspringen, nur weil es irgendwie schwierig ist, und Sie müssen die
Erfahrung haben, es zu tun,
aber das wird sein, das Ding im Grunde zu codieren, ohne das Ding zu beschichten. Denken Sie daran, wir sagten, Design ist kein Code. Es ist kein Code, der wichtig ist. jedoch nicht, Es bedeutetjedoch nicht,dass wir nicht feststellen können, wie alles interagieren wird. Also, was ich mit diesem Schritt sagen will, ist, dass wir tatsächlich die Komponenten
wie diese erstellen , und dann mit jeder dieser Komponenten kommen würde mit vielleicht wird es diese
Klasse verwenden und diese Klasse wird diese Methode, diese Methode, diese Methode. Wissen Sie, diese Methode spricht, um diese Methode spricht zu hören. Um zu hören, dass diese Methode hier spricht und dann schauen wir noch weiter. Was ist diese Methode zu übertragen? Vielleicht wird es im Array übertragen. Und wie sortieren wir dieses Array? Vielleicht verwenden wir einen Algorithmus namens T sort. Vielleicht verwenden wir einen Algorithmus namens Merge Sort. Also, dann kommen wir in, wirklich ,
wirklich, dreckige Details davon. Wir beginnen Stück für Stück zu gehen und kommen mit dieser riesigen Art von Klassenbaum, , wirklich, wirklich,
wirklichgroß sein könnte ,
wirklich , wenn Sie das Ganze planen. Aber am Ende haben
wir tatsächlich dieses große Dokument, in dem jeder hingehen kann, um es zu betrachten und zu verstehen, wie das Programm funktioniert, ohne jemals einen Server oder eine Entwicklung zu drehen. Sie sehen nur den ganzen Code dort, diesen Prozess. Es ist wichtig. Aber das werde ich. Ich werde es irgendwie damit bekennen, und wir werden später darüber reden. Im Kurs. Es ist sehr, sehr mühsam. Und es gibt eine ganze Menge Overhead und die meiste Zeit. Sobald Sie dies entwerfen, ändern sich die
Dinge und dann wird es nicht aktualisiert, so dass es veraltet und im Grunde nutzlos wird. Auch wenn dies zitiert unzitiert wichtige Schritte im Designprozess sind, verzichten
neuere Modelle heutzutage tatsächlich irgendwie auf diese für die Entwicklung schnellerer, schnellerer Lösungen. Auf, wir werfen die Dokumentation irgendwie ein wenig weg, weil wir keine Bücher brauchen. Wir brauchen keine Bücher über die Dokumentation unserer Software gestapelt hoch und
haben dann keine Software, die wir dafür zeigen können. Wir haben nur dieses wirklich, wirklich gute Design, also gibt es eine Balance dort, und hier beginnen wir später über die agile Methodik zu sprechen, aber wir wollen das einfach reinwerfen. Es gibt, wenn Sie nur zu diesem Kurs gehen, wissen
Sie, Vortrag für Vortrag. Denken Sie nicht, dass Sie das 100% tun müssen, weil viele Male nicht realistisch sind, und die Leute werfen es einfach raus. Aber das
Verständnis der Kernprinzipien hilft Ihnen, wenn Sie zu diesem anderen Teil kommen, denn jetzt verstehen Sie, was Sie aufgeben, um diese Geschwindigkeit zu bekommen usw. Aber das ist die Etappen des Designs. Wie ich schon sagte, diese ändern sich ständig. Ihr Unternehmen könnte einen anderen Satz haben, aber das ist ein guter Satz, um es irgendwie von dieser Ideenebene zu nehmen und es
wirklich zu beginnen eine gute Idee fast auf einer Code-Ebene darüber zu bekommen, wie Ihr Programm funktionieren sollte.
20. 4-3-Modularität: Wir sprechen also über gutes Software-Design. Was wir versuchen zu erreichen, ist diese Idee der Modularität. Modularität ist also diese Idee, unser Programm zu nehmen und es in verschiedene
Module zu zerlegen . Denken Sie daran, wir sprachen über Subsysteme und Module. Es ist die gleiche Terminologie hier, aber mit Modularität haben
wir eine Reihe von Zielen im Auge. Wir wollen es nicht einfach nur aufbrechen. Wir wollen es auf kluge Weise aufbrechen. Und damit versuchen wir, die Hauptziele zu erreichen. wir an,
wir haben mit unserem Modul Nehmenwir an,
wir haben mit unserem Moduleinen Code direkt hier mit unserem Modul. Wir wollen, dass dieses Modul unabhängig ist, und das ist der Kupplungsteil. Unabhängig bedeutet, dass alle seine Aktionen und Daten auf Lee selbst wirken. Wir haben kein Modul hier drüben, das es an einem Modul steuert. Und dann steuert es vielleicht ein Modul hier drüben. Und dieser kontrolliert das, etcetera, etc. Dann geraten Sie in dieses wirklich große Problem eines Fehlers hier, könnte sich tatsächlich hier oben darstellen. Oder tatsächlich, es könnte gehen und sich den ganzen Weg hier drüben repräsentieren. Sie bekommen ein Problem, wenn sie nicht unabhängig sind, also ist das eines unserer Ziele. Und das ist es, was Kopplung ist. Wir werden einen ganzen Vortrag darüber halten. Und dann ist Kohäsion, wie einzigartig existiert ein Modul? Wie das, was ich mit Singular meine,
ist, sind es seine Ziele einzigartig gestaltet? Wenn die Ziele Luft einzeln entworfen schwächen, nehmen Sie das Modul, wir können es aus dem Programm entfernen und es in ein anderes Programm setzen. Wenn wir eine Webseite hätten und diese Webseite diesen Controller drin hätte
und dieser Controller alles kontrolliert, meine
ich, meine
ich, es spricht mit einer ganzen Reihe von anderen Controllern. Vielleicht hat es also vielleicht eine ziemlich gute Kopplung in dem Sinne, dass, obwohl es all diese
kontrolliert, nichts es kontrolliert und seine Daten sehr in sich selbst verkapselt sind. Aber das Problem hier ist, dass es sehr, sehr fein auf genau dieses Problem abgestimmt ist,
was bedeutet, dass, wenn wir jemals versuchen, das herauszunehmen oder ein neues Stück einzupacken, es nicht funktionieren würde. Dies ist sehr, sehr spezifisch für dieses genaue Problem, so dass es kein einzigartiges Designziel erfüllt. Es macht alles. Es gibt kein Ziel. Ich meine, du könntest, du weißt schon, Kontroll-Website
sagen. Das könnte Ihr Ziel sein, aber das ist ein sehr weites Ziel, und es ist nicht etwas, das sehr einzigartig gestaltet ist,
und das ist es, was wir über Kohäsion sprechen. Mit Modularität versuchen
wir also, diese beiden Aspekte zu bekommen. Wir versuchen, beide so optimal wie möglich zu bekommen. Wir versuchen, es sehr unabhängig zu machen und dann sehr einzigartig gestaltet. Die Ziele der Modularität sind also die Ziele der Modularität wie folgt. Es gibt ein anderes Set. Ich, wenn du die Ziele nachsiehst, wird es andere Sets geben. Für alle Leute, die darüber sprechen, jedoch ist
dies
jedochein Set, von dem ich gerne losgehe. Das erste und wichtigste Ziel der Modularität ist die Abstraktion. Es nimmt im Grunde unser Modul und setzt in eine Blackbox, um Komplexität zu beseitigen. Wir sprechen darüber in Informationen, versteckt sich in ein wenig, aber Abstraktion ist sehr wichtig, weil es uns erlaubt, eine höhere Ebene Ideen zu entwerfen. Wenn wir
zum Beispielan Maschinensprache
arbeiten müssten zum Beispiel ,
was bedeutet, dass wir tatsächlich,
du weißt schon, ständig Einsen und Nullen
kontrollieren. Wir würden nichts tun wollen. Es wäre zu komplex, aber jemand hat das in eine Assemblersprache abstrahiert, also ist dies Assembly, und dann hat jemand diese Assemblersprache tatsächlich bis zu einer anderen abstrahiert und dann bis zu unserem Sprache, wie Java, so dass wir Java mit seiner verwenden können. Es ist relativ einfach, Funktionen es zu verwenden, dann zu dekomprimieren, in was auch immer diese Sprache, die in die Assemblersprache
geht, die in die Maschinensprache geht. Maschinensprache steuert tatsächlich den ram etcetera. Wenn wir also über Abstraktion sprechen, sprechen
wir von der Fähigkeit, diese komplexen Ideen zu nehmen und sie langsam heraus zu bringen, um diese komplexe Stadt zu entfernen , so dass wir mehr und mehr fortgeschrittene Programme bauen können, Fähigkeit in der
Kompositionsfähigkeit zerlegen können. Das bedeutet, dass wir das Ding auseinander nehmen und wieder zusammensetzen können. Dies hilft beim Debuggen. Dies hilft beim Hinzufügen neuer Funktionen. Dies hilft im Grunde,
alles, was mit Wartung zu tun hat, ist, dass wir in der Lage sein wollen,
dieses Programm zu öffnen Teile von nehmen alles auseinander und dann wieder zusammenzusetzen. Und das hilft wirklich, wenn Sie beide haben. Und die Linie ist, weil Sie diesen Controller herausnehmen können und es nicht die gesamte
Website bricht . Sie können tatsächlich, wissen
Sie, Art Hot Swap einen neuen Controller und vielleicht einen, der Sachen etwas anders
effizienter macht . Es wird sehr einfach, nach diesem Modul zu pflegen, Fähigkeit
zu verstehen oder einfach nur Fähigkeit zu verstehen, wenn Sie sie alle behalten möchten. Ist ein Wort hier. Was verstehen Fähigkeit bedeutet, ist, dass ich in ein Modul springen und sofort verstehen könnte worüber es mit diesem spricht. Es ist sehr, sehr tief. Dies könnte vielleicht, sagen
wir, 35.000 Zeilen Code sein. Glaubst du, du könntest verstehen, was dieses Modul gerade macht? Wahrscheinlich nicht. Aber sagen wir, wir haben dieses kleine Modul hier drüben, und alles, was es tut, ist vielleicht Updates auf der Datenbank zu machen. Alles, was es tut, ist die Datenbank zu aktualisieren, und vielleicht ist das sein Name. Und es gibt, wissen
Sie, Funktionen wie update, integer,
update, update, string up des Benutzer-Update-Passworts. Wir schauen uns das an. Wir sagen, dass es ein Problem mit Aktualisierungen in unserer Datenbank gibt. Wir können leicht gut gehen, lassen Sie uns das Update, die
Datenbank,den
Ordner oder die Datei überprüfen Datenbank, , und es ist sehr einfach. Sehr schnell zu verstehen. Der nächste ist die Kontinuität. Kontinuität ist ein bisschen eine Idee, wo Sie haben, sagen
wir, Sie verwenden Constance Constance ist eine sehr gute Möglichkeit, dies zu setzen. Wir haben X gleich drei. Also statt in jedem dieser Aspekte,
eine Variable von X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei X gleich drei ist. Stellen Sie sich vor, wenn jetzt in unserer Situation, X gleich vier ist. Nun, jetzt müssen wir jede von ihnen durchgehen und sie in vier ändern, was sein wird, oder wir wollten einen verpassen und dann werden wir seltsame Fehler haben, die anfangen zu knallen. Es würde schwer zu pflegen werden. Aber wenn wir einen konstanten Ordner hatten, hatten
wir eine konstante Datei hier oben mit dem besagten, X gleich vier. Nun, dann könnten alle diese nur auf die Konstanz-Datei verweisen und das wird jetzt ein bisschen chaotisch. Aber ich versuche, diesen genau Punkt
genauda nach Hause zu
bringen. Wenn wir diesen konstanten Ordner da oben hätten, dann müssen wir ihn nur an einem Ort ändern,
und es ist durchgehend in unserem gesamten Projekt. Das ist also auch sehr wichtig und schließlich die Fähigkeit zu schützen, so
wie wir Daten schützen können, ist, wenn wir sie sehr, sehr irgendwie in bestimmten Dateien freischalten, haben
wir nicht, wissen
Sie, 85 verschiedene Dateien Kontakt in der Datenbank. Wir haben einen einzigen Controller oder einen einzigen Satz von Controllern, die es tun. Dies hilft uns nicht nur bei unbeabsichtigten Konsequenzen, es hilft uns auch gegen Hacks und so. Denn wenn wir 86 verschiedene Einstiegspunkte in unsere Datenbank haben, muss nur einer von ihnen scheitern, bevor jemand einspringt. Das unter Kontrolle zu bekommen ist also sehr, sehr wichtig. Ähm, und Modularität hilft Ihnen, eine stärkere Sicherheit zu erhalten und zu erhalten. Das ist also die Einführung von Modularität. In den nächsten Vorträgen werden
wir über das Verstecken von Informationen und die Verkapselung von Daten sprechen, die andere wichtige Mieter der Modularität sind.
21. 4-4-Informations-Hiding und Data: Also die nächste Art von Schritten der Modularität oder die nächsten Mieter der Modularität, unsere Informationen verstecken Enddatenverkapselung. Und beides sind wirklich nur Wege der Abstraktion und die Bedeutung der Abstraktion. Die 1. 1 ist also das Verstecken von Informationen, und das heißt, Sie verbergen die Komplexität in einer Blackbox. Aber wenn wir über Abstraktion sprechen und darüber sprechen, wie Sie es aus der
Maschinensprache nehmen und es den ganzen Weg nach oben bringen können, damit wir Dinge auf höherer Ebene tun können, na ja, das ist, was Informationen versteckt. Es verbirgt die Komplexität in einer Blackbox. Jeder von ihnen ist eine Blackbox, die die Komplexität verbirgt. Wenn Sie Sachen für Assemblersprache schreiben, verwenden
Sie Dinge, die diese Sprache hier unten, die Maschinensprache einige AP Augen enthüllt. Einige befehlen einige Funktionen. Sie verwenden diesen Code, um dies zu erstellen, und dann erstellen
Sie mit der Assemblersprache einen neuen Satz von Funktionen, Steuerelementen und Befehlen, die diese nächste Sprache bringen wird. Sobald seine nächsten Sprachen fertig, erstellen
Sie einen weiteren Satz von Codes und Befehlen, und dann Java. Obendrein wird anfangen, diese Codes und Anforderungen aufzurufen, die diese Codes und Befehle aufrufen, die weil diejenigen, die Dinge tun, wie Speicher bewegen. Mit diesem hier drüben versuchen
wir also, diese Komplexität in einer Blackbox zu verbergen. Wir könnten dies mit Dingen tun, die wie Funktionen Makro-Bibliotheksklassen genannt werden, Methode thes Luft, alles nur die technischen Begriffe, die wir verwenden, wenn wir programmieren. Aber sagen wir, wir haben eine richtige Blackbox hier und eine andere richtige Blackbox hier und was sie sind, ist ein Verschlüsselungsgerät, Verschlüsselung und dann ein Entschlüsselungsgerät. Also, wenn zum Beispiel wir
zum Beispiel35 hier einlegen und es herauskommt, weiß ich nicht, warum 62? Das ist also die Ausgabe. Und dann nehmen wir jetzt t, warum 62 es in die Entschlüsselung er gesetzt. Und es kommt als 35. Müssen wir verstehen, wie es Verschlüsselung und Entschlüsselung ist, um diese beiden
Boxen verwenden zu können, um diese beiden Programme verwenden zu können? Nein, überhaupt
nicht. Alles, was wir wissen müssen, ist, was ist das? Eingang. Und wurde es ausgegeben? Und wir sind völlig und völlig in Ordnung, es für alle seine Zwecke zu verwenden. Die Internale müssen nicht bekannt sein, und das ist sehr wichtig. Das ist etwas, das sehr hilfreich ist. Wann immer wir Programme entwerfen, vor allem mit sagen
wir, wir entwerfen ein Programm für eine lassen uns,
sagen wir, sagen wir, ein Autohersteller. Wir haben all diesen Code, der vielleicht selbst Code im Hintergrund erzeugt, würde sagen, dass es ,
ah, ah, selbstfahrendes Auto etwas ist. Aber wir sind keine Automenschen. Wir verstehen nicht, wie Autos gemacht werden sollen. Wir verstehen nicht, wie alles programmiert werden soll. Also, was wir tun, ist, dass wir eine Reihe von Tasten programmieren, eine Reihe von Tabellen und Schaltern und so weiter, wie ein kleines Bedienfeld genau hier und mit dieser Programmierung. Wir abstrahieren dann die ganze Menge der eigentlichen Programmierung. Die vier Schleifen, die while-Schleife die Funktionen der Macron-Bibliotheksklassen. Wir abstrahieren das alles aus, und wir erlauben einem Techniker, einfach Tasten zu drücken und Werte einzugeben, und dann wird unser Code den Rest erledigen. Also haben wir dem Automobilingenieur Mawr die Kontrolle gegeben. Wir haben ihnen die Macht gegeben, unseren Code mit ihren Sachen zu verwenden, und das ist die Wichtigkeit des Informationsverborgens ist es, dass immer komplexere Dinge
gebaut werden können . Es ermöglicht Ihnen, eine Art Grundlage zu schaffen und dann auf diesem Fundament aufzubauen und im Laufe der Zeit immer stärkere und stärkere Dinge zu
schaffen. Und das ist, wie Programme im Laufe der Zeit immer komplexer werden, ist, dass wir langsam besser in dieser Abstraktion und gehen mehr und mehr als Informationen. Ich denke, es ist die Idee, Komplexität in einer Blackbox zu verstecken. Der nächste ist etwas namens Data Encapsulation, und das werden Sie feststellen, dass diese tatsächlich ziemlich nah sind. Diese ist eine Art von Informationen versteckt, während diese als Daten versteckt werden könnte, so dass sie eine Beziehung haben. Aber bei diesem geht es darum, die Implementierungsdetails vor dem Benutzer zu verstecken und Onley eine Reihe von Tools zur Verfügung zu
stellen, um die Daten zu manipulieren. Was wir damit meinen, ist, sagen wir, wir haben eine Klasse hier und eine ihrer Variablen ist, sagen
wir,
um, um, Transaktionsdaten. Also vielleicht die Menge an Geld, also setzen wir Transaktion hier. Nun, warum sollten wir eine get-Funktion und die set-Funktion setzen müssen? Warum haben wir nicht einfach das, was in dieser Klasse ist, heißt Banking. Warum erlauben wir nicht einfach, dass dieses Programm hier drüben so etwas wie Banking Dot Transaktion gleich 50. Warum lassen wir das nicht einfach zu? Warum? Warum lassen wir nicht zu, dass dies einen direkten Anruf zur Transaktion macht? Nun, diese Art bricht die Idee der Datenkapselung. Wenn wir das tun, dann können unsere Daten plötzlich in irgendeiner Weise,
Form oder Form manipuliert werden , und wir haben keine Kontrolle darüber. Wir können den Benutzer nicht daran hindern, ungültige Daten zu setzen und nicht nur unsere
Algorithmen,
sondern vielleicht die Gesamtheit unserer Datenbank zu vermasselen Algorithmen, . Also, mit der Datenkapselung, was wir tun, ist, dass wir diese Getter und Zentren erstellen. Also, wenn wir hier drüben wissen wollen, was die Transaktion ist. Es ruft den git auf, also würde es den git aufrufen, und dann würde die get-Funktion den Wert zurückgeben Diese get-Funktion könnte sehr wichtig sein , weil vielleicht eine Authentifizierungsschicht darauf hat. Vielleicht hat es eine Authentifizierungsebene damit. Das bedeutet, dass ein Passwort eingegeben werden muss, bevor diese Klasse Daten ausgibt. Und das ist sehr wichtig in der Bankenwelt. Sie wollen nicht nur, dass Menschen Dinge programmieren und direkt vom Server greifen können. Alles, was sie wollen. Also holen Sie sie hilft darin zu beschützen. Und dann ist ein Zentrum viel Male mawr wichtig. Das Zentrum wird uns daran hindern, bestimmte Dinge zu tun. Also rufen wir eine Funktion auf, die gesetzt werden soll. Vielleicht sagen wir, dass wir die Transaktion auf negative 50 setzen wollen. Nun, das Zentrum wird eine einfache kleine, wenn Aussage hier drin haben, wenn Sie weniger als
Null Rendite wissen . Also, wenn weniger als Null Rückkehr, ich weiß nicht, Fehler etwas wirklich, wirklich einfach. Und das ist eine weniger einfache, weniger als Null Rückluft. Und warum ist das wichtig? Nun, wir machen Transaktionen und wir sehen, dass die Leute immer negativ belasten. 50 Dollar. Nun, wir werden tatsächlich anfangen, Geld auf unsere Art zu bekommen, und das ist ein Problem. Wir wollen nie, dass eine Transaktion unter jedes Geld geht, denn dann nehmen
wir anstatt unser
Konto zu belasten , tatsächlich nur Geld von Menschen. So würde ein einfaches Center auch dort eine weitere Sicherheitsebene hinzufügen und würde auch
die Integrität unseres Banking in dem Sinne schützen , dass es hier mehr Schecks haben kann. Und wir konnten nichtzufällig $1.000.000.000 einzahlen, entweder gibt es ein oberes Ende, das es potenziell eskaliert, um einen Manager zu mögen oder
so. zufällig $1.000.000.000 einzahlen, entweder gibt es ein oberes Ende, das es potenziell eskaliert, um einen Manager zu mögen oder Aber insgesamt die Idee der Datenkapselung eine Art Schutz von Daten, so dass sie. Wir stellen also nur diese Art von Werkzeugen zur Verfügung, um die Daten zu manipulieren, anstatt nur den Zugriff auf Daten zu
ermöglichen und jede Art,
Form oder Form zu ändern , die wir wollen. Und so mit gutem Software-Design denken
wir
mit gutem Software-Designauch über diese Datenkapselung nach. Wir denken darüber nach, warum. Warum lassen wir die Leute einfach diese Daten schnappen? Warum machen wir nicht einen Getter in einer Center-Funktion? Warum schützen wir es nicht in irgendeiner Weise
oder erstellen eine ganze Klasse, die sich mit dieser Art von Sache befasst, um die Integrität unserer
Datenbank zu schützen ?
22. 4-5 Coupling: In der letzten Vorlesung haben wir diese Idee der Kopplung vorgestellt. Und so mit Kopplung, Worüber wir reden, ist die Stärke der Verbindungen zwischen Modulen und Subsystemen. Mit dem Begriff dieser Stärkehaben
wir irgendwie diese Idee von einer positiven Konnotation. Mit dem Begriff dieser Stärke jedoch Mit der Kopplung wollen
wir diese Stärkejedochnicht. Wir wollen eine tatsächliche Schwäche zwischen den Modellen. Wir wollen nicht, dass Modelle, Module und Subsysteme eng miteinander gekoppelt werden. Und wenn wir über Kopplung sprechen, meinen
wir fast so, als ob sie voneinander abhängig sind. Also, zum Beispiel, wenn wir eine ganze Reihe von Modulen und Subsystemen hier hatten , sagen
wir, es gibt nur diese Art von Link und Kette, so und, wissen
Sie, als komplex oder nicht komplex Ihr Programm ist, dass wir einen Abschnitt haben, der eng miteinander
verbunden ist , und wenn ein Abschnitt eng miteinander verbunden ist, bedeutet
das, dass, wenn wir hier eine Änderung vornehmen, zum Beispiel, wir gehen, um dann zu dieser Datei zu gehen und eine Änderung vornehmen. Gehen Sie zu dieser Datei, und sie könnten sich ändern. Gehen Sie zu dieser Datei, und nehmen Sie eine Änderung vor. Gehen Sie zu dieser Datei und sie könnten etcetera usw. ändern, bis wir im Grunde alles
geändert haben , so dass es die Änderung hier tatsächlich funktioniert. Das hat eine ganze Reihe von Nachteilen. Die 1. 1 ist nur Zeit. Es wird uns Zeit brauchen, um herauszufinden, was genau mit diesem verbunden ist Normalerweise tun Versuch und Luft. Wir führen das Programm, da steht. Ich hoffe, es gab eine Pause hier. Also gehen wir es dort ändern, führen das Programm erneut aus. Hier gab es eine Pause. Wechseln Sie es dort, wenn Sie eine bessere Dokumentation haben ,
vielleicht ein bisschen schneller, aber oft können Sie. Ich muss zu dieser Pause gehen und reparieren. Der nächste Teil ist,
ist, dass es nur gehen, um im Grunde die Fähigkeit, das Programm zu halten und
es zu verringern nehmen . Denn jetzt, wenn wir diese Änderung vornehmen, haben wir
vielleicht all diese Änderungen vorgenommen. Aber wir haben den Fall hier oben vergessen. Und dieser Fall Onley funktioniert, wissen
Sie, vielleicht einmal im Monat,
vielleicht ist es ein seltsamer Code, der wie,
ah, ah, Server-Sache, die einmal im Monat funktioniert, und wir vergessen, es hier zu ändern. . Also gehen wir durch alle Tests und so, und es sieht toll aus und dann in einem Monat haben wir diesen riesigen Fehler, der auftaucht. Wir wissen nicht, woher es kommt. Nun, es liegt daran, dass du eng miteinander verbunden bist. Es ist wegen dieser Veränderung, dass dies geschieht. Und es ist noch schlimmer, wenn wir zu so etwas kommen, wo es tatsächlich hier unten ist,
wo dieses Problem ist, weil wir jetzt denken müssen Was ändern wir? Vielleicht schauen wir uns nur diese beiden Dateien an, oder als hätten wir uns hier nicht wirklich viel verändert. Oh, es war eigentlich diese große Veränderung hier oben, die diese kaskadierende Luft so eng gekoppelt hat . Programme sind in der Regel schlecht. Sie werden nicht wirklich an den Punkt kommen, der keine Kopplung hat, aber Sie wollen versuchen, es so locker wie möglich zu bekommen. Mit enger Kopplung haben
wir also die Idee von gemeinsam genutzten Variablen und Kontrollinformationen. All das hier drüben ist die Idee von Kontrollinformationen. Also haben wir diese Methoden und Klassen, die alle direkt mit anderen Modulen sprechen,
steuern alle direkt andere Module, so dass Änderungen in einem erfordern Änderungen in allen anderen. Und dann, wenn wir die Idee von gemeinsamen Variablen haben
, dann haben wir diese Art von riesigen Liste von Variablen, und jedes Programm auf der Unterseite verwendet diese Variablen. Also, wenn wir hier eine Änderung vornehmen, werden wir oft auch Änderungen in allen untersten Dateien
vornehmen müssen . Und diese Struktur kann tatsächlich vorteilhaft in einigen Situationen sein, die helfen können,
andere Bereiche von Problemen zu reduzieren . Aber es könnte auch ein Problem verursachen. Deshalb haben wir diese ganze Idee des Designs diese Art von Balance, die wir ziehen müssen. Es gibt nichts, was perfekt sein wird. Also mussten wir herausfinden, was am perfektesten ist, um es zu bekommen. Was am optimiertesten ist, können wir es bekommen, und das ist die Richtung, die wir in die Richtung gehen müssen. Und dann Zustand Dezentralisierung schafft man sein sehen ihre schafft lose Kopplung. Was wir damit meinen, ist die Dezentralisierung des Staates, wo wir diese kleinen
Segmente hier haben . Vielleicht sind diese beiden miteinander gekoppelt, aber dann haben wir einen weiteren Abschnitt, in dem diese beiden miteinander gekoppelt sind und ,
weißt
du , etc. Aber insgesamt haben
wir nicht das gesamte Programm, das in,
du weißt schon,
überall miteinander verbunden du weißt schon, ist. Wir haben fast diese kleinen Zustände, die alle ihre eigenen Dinge tun, mit wenig Kommunikation dazwischen geschieht. Und das hilft uns wieder mit dem ganzen Debugging und so etwas später. In der nächsten Vorlesung sprechen
wir über die drei Ebenen der Kopplung, die enge
Kopplung,
mittlere Kopplung und dann lose Kopplung sein wird . Und in es gibt kleine Kategorien in jedem von ihnen Inhaltspaar in gemeinsamer externer Kontrolle, Datenstruktur, Datennachricht und dann keine. Und wieder, wie ich schon gesagt habe, ist
keines ziemlich unpraktisch. Es gibt wahrscheinlich fast keine Anwendungen, die keine Kopplung verwenden. Aber wir wollen in der Lage sein, alle diese Schritte durchzugehen, damit wir uns ein Programm ansehen
und verstehen können ,
wie eng es an dieses Programm
gekoppelt ist und, wissen
Sie, ist das gut oder schlecht?
23. 4-6-Entsorgung: Lassen Sie uns über unsere erste Art von Klassifikationen der Kopplung sprechen, und das wird die Art schlimmster Fall der Kopplung sein. Und das ist die Idee der engen Kopplung. Also eine enge Kopplung haben wir eine Reihe von Modulen, die zusammen gestrickt werden. Ein eng zusammen mit diesem bedeutet, dass, wenn wir eine Änderung in einem Modul vornehmen, wir eine Änderung in einer ganzen Reihe von anderen Modulen vornehmen müssen, um es zu machen, damit das Programm dies nicht bricht, könnte es irgendwie in diese Art von Sub , diese Luft gemeinsame Strumpfhosen, von Arten von engen Kupplung und das wird in Inhalt, gemeinsame und dann extern sein. Also werden wir eine nach dem anderen Aufgaben gehen und Sie werden sehen, dass sie sehr leicht Fehler zu machen sind. Aber sie können sehr große Probleme verursachen. Die 1. 1 ist mit Content-Kopplung. Also, was das ist, ist es, wenn ein Modul ändert über liegt auf dem internen Funktionieren eines anderen Moduls. In diesem Szenario haben
wir Modul A und dann Modul B und Modul A greifen direkt aus Modul B. Es packt die Datenrate aus Modul B und verwendet es für seine eigenen Dinge. Nehmen wir an, zum Beispiel, dass das Modul die fraglichen Daten eine Art Entfernung ist. Es ist also eine Art Distanz. Nehmen wir an, in B wird es als Meter dargestellt. Eine typische Sache, die passieren könnte. Vielleicht nehmen wir es von einem A P I ... Vielleicht ist es genau so, wie wir es programmiert haben. Aber die Daten hier in B sind Meter. Nun, das Modul A will das in Miles umwandeln, also wird es von Metern nehmen und versuchen, es in Meilen umzuwandeln. Also alles, was es tut. Ist es packt direkt aus sein. Es sendet einen do no Conversion-Algorithmus und macht dann, was es damit zu tun hat. Kannst du jetzt das Problem hier sehen? Das Problem
ist, dass, wenn jemand reingeht und modifizieren will, sagen wir, wir haben auch einen anderen hier unten, der das gleiche tut. Grabbing von Beat-Out-Daten kann es auf andere Weise konvertieren, aber es geht davon aus, dass B gleich bleiben wird. Und das ist das Problem. Hier ist die Annahme, dass B sich nie ändern wird. Nun, wie ich schon sagte, ein anderer Programmierer kommt herein, um es zu sein. Er merkt, dass wir zwei Meilen überall umwandeln. Vielleicht ist der Standard heutzutage, alle Entfernungen in Kilometern darzustellen. Vielleicht ist es, alle Entfernungen in Zentimetern darzustellen, sogar nur innerhalb des metrischen Systems. Du fängst an, diese Fähigkeit zu haben, Dinge zu ändern. Wir könnten auch alle Entfernungen in Meilen darstellen. Nehmen wir an, dass wir uns entscheiden, dies von Metern,
zwei Kilometern zu ändern ,
etwas, das eine sehr einfache Änderung sein könnte. Also in B, geht
er und macht die Änderung, Vielleicht dieser kleine schnelle Konvertierungsalgorithmus und jetzt schlagen Daten aus. Die Daten hier stehen für Meter. Das Problem
ist, dass man nicht sehen kann, wer sich im Grunde auf diese Daten von hier verlässt. Es könnten 1000 Leute anrufen oder 1000 Module geben, die dieses kleine Daten-Snippet aufrufen. Nun, wann immer wir das ändern, plötzlich wird all diese Luft ein A und C brechen, und dann wird alles, was sonst verbunden ist brechen, weil jeder davon annahm,
dass es Meter war und sich dann basierend auf diesem Annahme. Aus diesem Grund wird A
jetzt ein Problem haben. Es wird brechen, wird diesen seltsamen Bug repräsentieren, wo die Dinge sind. Vielleicht, wissen
Sie, eine Größenordnung ein wenig zu größerer Größe, ein wenig klein,
aber, Siehe, Siehe, Konvertierte es. Es wird nicht weit weg sein. Vielleicht hat es es es hier drüben in etwas anderes umgewandelt. Also wegen der Veränderung wird
es auch hier eine Größenordnung von unserer Gleichgültigkeit sein. Also wegen einer einzigen Änderung haben
wir jetzt eine ganze Reihe von Modulen gebrochen. Und jetzt müssen wir jedes dieser Module durchlaufen und sie immer wieder ändern. Zwei Module, nicht der größte Deal der Welt. Aber wenn wir 100 Module hätten, wird
das zu einem großen Problem, weil wir Ah,
100 Module manuell korrigieren müssen. Und wo haben wir keine Blaupausen, um uns zu sagen, welche kaputt sind? Wir müssen nur eine wieder laufen zu beheben,
sehen, welche Bremsen behoben, eine läuft wieder,
sehen, was bricht und so weiter. Ah, ein besserer Weg, das zu tun. Die Art und Weise, wie Sie hier rauskommen, ist mit Gettern und Zentren. Also, was das ist, dass Sie diese Art von Schnittstelle erstellen, die im Grunde andere Module
Spaß machen können und warum das wichtig ist, ist, weil wenn wir Meter hier geändert
haben, wir würden einfach die beiden Funktionen hier unten ändern, Meile
bekommen und Kilo für Kilometer. Also in dieser Situation, wenn wir uns von Metern zwei Kilometer jetzt ändern, müssen wir nur das direkt zurückgeben . Vor, Vielleicht gab es wie, mal 10 oder eigentlich ah,
dividieren durch ich denke, 100 Abschleppkilometer zu bekommen und dann senden Sie das aus und dann eine Meile. Dafür gibt es eine große Gleichung. Alles, was wir tun, ist, dass wir dies ändern, um Kilometer zu verändern, diese beiden Getter und Zentren und jedes einzelne, das von diesem ergriff. Jeder, der all
diese packte , ist jetzt vollkommen in Ordnung, weil sie die gleichen Informationen bekommen. Wir haben eine einzige Änderung in einer einzigen Datei vorgenommen und alles wird aktualisiert, anstatt dass wir es haben, anstatt
es zu haben, so dass alles kaputt ist. Das nächste, was wir hier haben, ist, dass wir gemeinsame Kopplung haben. also Mit gemeinsamer Kopplung haben
wiralsodiese Idee, wenn mehrere Module Zugriff auf die gleichen globalen
Daten haben und diese manipulieren . Damit Sie diese sehen können, werden wir alle irgendwie ähnlich sein. Aber nur ein bisschen anders in dieser Situation. Was wir haben, ist, dass wir vielleicht eine große Konstanz-Datei haben oder wir haben diese Art von fast internen Datenbank, in der wir Daten speichern und sie herausnehmen. Und wir machen das alles aus all diesen Modulen. Das Problem dabei ist, dass wir die Fähigkeit haben,
zum Beispiel, wenn dieser es schreibt, und dann dieser von dort packt und dann während des Prozesses der Berechnung schreibt
dieser einen neuen Wert, und dieser greift diesen Wert und dieser schreibt einen neuen Wert. Wir werden anfangen, diese seltsamen Inkonsistenzen zu bekommen, diese Bugs, diese Art von Änderungen werden sich überall bewegen. Eso haben Sie diesen Mangel an Datenintegrität, Sie haben nicht die Fähigkeit, die Daten zu kontrollieren, die kommen und Variablen können anfangen ändern. Und sagen wir, wir haben einen kleinen Fehler in diesem hier. Also dieses Modul hier, all diese anderen funktionieren und irgendwie lüftet es nicht aus. Aber dieser macht nur eine etwas falsche Umwandlung. Und wenn es diese Daten sendet, macht
es diese Variable beschädigt. Diese Variable ist jetzt. Es gibt keine Integrität damit. Es ist eigentlich eine falsche Variable. Nun, das Problem ist, weil alle aus denselben globalen Daten greifen, lesen, schreiben, schieben, diese Art von wenig Luft
ziehen, die dieser erzeugt, wird sich hier und hier ausbreiten und hier und hier und hier und hier und hier und so weiter und so weiter. Und du wirst dieses Problem haben, bei dem du einen Fehler haben wirst, der unglaublich schwer zu verfolgen ist, weil der Fehler sich in jedem einzelnen Modul repräsentieren wird. Und Sie werden nicht wissen, dass die kleine kleine Codezeile hier die Luft war. Und deshalb ist die gemeinsame Kopplung, die Idee, alles zu manipulieren, die gleichen globalen Daten schlecht. Wenn Sie
zum Beispieleine Liste von Konstanten haben, zum Beispiel , die sich nie ändern, ist
das nicht in Ordnung, die Zeit, diese Art von jedem von der gleichen Art von riesigen Liste von Konstanz. Jetzt könnte es bessere Möglichkeiten geben, eine riesige Liste von Konstanz zu entwickeln, aber ich möchte irgendwie unterscheiden, dass, solange ihr alle von dort kommt und sich das nie ändert,
das ist vollkommen in Ordnung. Das Problem scheint, dass Rolle es manipuliert. Und wenn wir es manipulieren, dann haben wir das Problem, bei dem winzige Erben alle Module kaskadieren und brechen können. Also wollte nur diesen kleinen Unterschied machen. Die letzte ist eine externe Kupplung. Externe Kopplung ist, wenn mehrere Modelle direkten Zugriff auf das gleiche haben, was ich schulde. Also, was das ist, könnte dies ein A p I sein. Dies könnte zum Beispiel die
Steuerung der Maus sein. Vielleicht haben Sie ein Programm, das eine ganze Reihe von Modulen verwendet, um Mausdaten zu erfassen und damit
Dinge zu tun . Aber wir werden darüber reden, als wäre es eine KI. Das Problem ist das A P I. Das Problem dabei ist, wenn das A p I seine externe ändert, das ist die Art des Schlüsselwortes hier, was bedeutet, dass wir keine Kontrolle haben. Wir haben keine Kontrolle darüber, wie das Externe funktioniert. also Nehmen wiralsoan, dass wir mit Google arbeiten. Wir benutzen eines ihrer AP-Augen. Wenn wir 1000 Module,
1000 verschiedene Module haben , so haben wir ein Modul. Hören Sie sich die Tausenden von Männern hier an, und sie alle wenden sich an Google a p I und rufen eine einzige Funktion an. Was passiert, wenn Google entscheidet, dass wir diese Funktion nicht mehr mögen? Wir werden es ändern und wir werden uns ändern. Es kann drastisch oder vielleicht nur ein bisschen sein. Wir werden seine Ausgabe nur ein wenig ändern. Das Problem
ist, dass wir jetzt 1000 Module wieder haben, die kaputt sind. Wir müssen durchgehen und die Art und Weise ändern, wie unsere Module Daten 1000 verschiedene Male
verarbeiten . Und das könnte ein wirklich,
wirklich großes Projekt und ein großes Problem sein, besonders wenn Sie eine ganze Reihe von AP Augen verwenden und das passiert wöchentlich, können
Sie den Overhead sehen, der hier sein würde. Was ist, wenn die wir stattdessen ap I Controller hatten. Also haben wir diesen kleinen Kontrolleur hier, und sie alle reden damit mit richtigen Gettern und Zentren. Und dann spricht das mit dem coolen ap I. Also macht Google eine Änderung, dann müssen wir nur einen einzigen Zeilenwechsel vornehmen. Und dann wurden alle diese Luft entsprechend aktualisiert, weil sie nur mit dem reden. Diese Funktion, die dem Google ein p I liefert. Und so ist das ein Weg, dass Sie diese Art von Idee beheben. Und wieder, das ist Ihr Anfang, von der A P gekoppelt zu werden, die ich höre. Aber es ist ein Schritt besser als dieser, und wir können es irgendwie mit etwas mehr Denkprozess später zusammenbrechen. Aber das sind die schlimmsten Kupplungen. Ich hoffe, es gibt andere. Sie sind
natürlichmehr Fälle natürlich für enge Kopplung verschiedener Vincent-Szenarien. Das kann passieren. Aber ich hoffe, du verstehst es. Tun Sie das. Das Problem beim Gesamtthema hier ist, dass wir alle darauf zugreifen. Die gleichen Daten waren Reiten und greifen davon. Und wenn wir diese Idee haben, wo eine einzelne Codezeile 1000 verschiedene Module brechen kann, kann eine
einzelne Codezeile sogar nur zwei Module brechen, dann gibt es wahrscheinlich ein Problem. Es gibt wahrscheinlich etwas, das wir tun könnten, um diesen Controller zu
extrahieren, einige dieser Informationen zu extrahieren und dieses Problem zu beheben. Der nächste Vortrag wird über die nächste Stufe sprechen, was etwas besser ist, und das wird mittlerer Kopplung sein
24. 4-7 Koppelung: Also lasst uns zu unserer nächsten Art von Träne der Kupplung übergehen. Und das wird eine etwas bessere Kupplung sein, aber immer noch einige Probleme, und das ist mittlere Kupplung. So, wie wir näher und näher an Paar verlieren, werden
Sie sehen, dass vielleicht einige Szenarien tatsächlich für diese Bereiche funktionieren könnten. Und vielleicht fangen wir an,
über die Optimierung unseres Codes zu kommen . Und diese Art von Entscheidung, die Designer treffen müssen,
ist Wollen sie die zusätzliche Zeit verbringen,wissen
Sie,
umfassend Dinge zu wissen
Sie entwerfen, oder ist es besser, nur das Produkt auf den Markt zu bringen? Oft ist es besser, das Produkt auf den Markt zu bringen,
so dass die Leute einige dieser Dinge dort reinlegen und hoffen, sie später zu beheben oder einfach nur sagen, Sie wissen, was ein Problem ist. Aber wir werden uns sowieso damit auseinandersetzen. Und so denken Sie daran, dass wir beim Programmieren von Software nicht perfekt sein müssen und es gibt unterschiedliche Anforderungen, abhängig von verschiedenen Projekten. Aber wie auch immer, die nächste Ebene der Kopplung, über die wir sprechen, ist die mittlere Kopplung, und so die erste Art von Klassifikationen. Auf der Seite dieses gemeinsamen Problems, das wir haben, ist diese Idee der Steuerkopplung. Wenn Daten vorbei sind, beeinflusst die interne Logik eines anderen Moduls. Was das tut, ist, dass es diese Blackbox-Mentalität durchbricht. Das Modul nimmt nicht mehr nur Eingaben, tut etwas und produziert dann Ausgabe. Jetzt haben wir diese Idee, dass wir tatsächlich in die Blackbox schauen müssen, um herauszufinden, was wir brauchen, um zu dio. Anstatt nur drei eingeben zu können, müssen
wir jetzt Flags und Controller und Schalter eingeben, so dass wir tatsächlich
die Interna davon steuern ,
was wiederum diese Blackbox-Mentalität bricht. Und es erfordert jedes Modul, das wir irgendwie mit dieser Zehe kommunizieren. Sind diese Schalter involviert? Nun, wo wird das zu einem Problem? Nun, lassen Sie uns sagen, dass wir diese Idee von Set-Daten haben, also haben wir diese Getter und Zentren funktionierten gut, aber statt in der Mitte statt Strände, die ihr eigenes Schicksal entscheiden, ihre eigenen Dinge
tun, es wartet auf ein Flag von einem A sagt ihm, wie es funktioniert, indem es dieses Flag sendet. Wenn Sie noch nicht von einer Flagge gehört haben, die nur wahr,
falsch oder einen anderen Wert kämpft , senden Sie ihre. Und abhängig von diesem Wert ändert
es das Verhalten. Flaggen sind intern vollkommen in Ordnung. jedoch Wenn wir siejedochextern machen, wie hier drüben haben wir dieses Problem, bei dem der Benutzer jetzt genau wissen muss, was in diesem Modul
vor sich geht , um zu kontrollieren, ob wahr oder falsch, sollte aktiviert. Und das wird zu einem Problem, denn wieder könnten wir 1000 verschiedene Module haben diese Set-Datenfunktion
kommunizieren und aufrufen. Was ist, wenn wir das ändern statt wahr, Wir haben vielleicht nur ein kleines Ding statt wahr gemacht. Wir gehen nur mit Tee statt, ähm, falsch. Wir gehen nur mit EPH. Statt dieser beiden wir einfach nur eine Art Veränderung sein,
die nur die Semantik betrachtet, die Ästhetik davon statt, du weißt schon, echte sinnvolle Veränderung. Aber wie auch immer, das würde jedes einzelne Modul brechen. Da jedes Modul trainiert ist, ist
es nun so eingestellt, dass es diese Flagge aufruft. Also werden alle Änderungen in hier jetzt jedes Modul brechen und Sie sehen, dass dieses Muster wieder nicht in der Lage war, ein Modul zu ändern, ohne zu brechen. Ah eine ganze Reihe von anderen Modulen, und das ist irgendwie das Gesamtbild. Das gewölbte Problem mit eng paar Dingen ist diese Idee, dass wir, wenn wir eine Änderung vornehmen , einen ganzen Haufen brechen. Diese Idee der Steuerkopplung ist also wieder, wenn wir Flags oder Steuersignale an
ein anderes Modul senden , um zu versuchen, den Datenfluss oder die Operationen in diesem Modul zu steuern. Dies muss in einer intelligenteren Weise auseinander gebrochen werden, so dass wir vielleicht eine Menge Daten, einen
bestimmten Typ in den eingestellten Daten,einen
anderen Typ haben bestimmten Typ in den eingestellten Daten, und dann Daten anderen Typ setzen. Weißt du, ich sage, wir haben drei verschiedene Set-Daten, und das erlaubt uns, anstatt Kontrollflags in
setzen zu müssen, können
wir einfach die gesetzten Daten aufrufen, die wir in dieser Situation brauchen. Und anstatt diese Art von seltsamen Steuermodul zu haben, wo alles es steuert, haben
wir jetzt ein P I und wir rufen alle nur das A P I an. Also, wenn Sie Änderungen vornehmen, können
wir klug machen Änderungen daran, a p I. Die nächste Idee ist diese Datenstruktur Kopplung und mit der Datenstruktur. Paar in dem, was wir haben, ist es, wenn mehrere Module sagen, teilen die gleiche Datenstruktur. Und so ist die Datenstruktur genau so in Array oder einer verknüpften Liste oder einer anderen Art von Struktur, wie wir Daten zusammen halten Jetzt ist das Problem damit, wenn wir direkt von dieser Datenstruktur
aufrufen. Was ist, wenn wir die Datenstruktur ändern wollen? Was ist, wenn es etwas klügeres gibt, einen besseren Weg, es zu implementieren? Nun,
wieder, die Linie der schlechten Kopplung runtergehen? Es wird mehrere Module brechen. Sagen wir hier, wir benutzen einen Ray-Anruf. Also sagen wir,
du weißt schon, , Array, sagen
wir einfach, das ist ein Strahl A, also sagen wir wie eine Fünf. Also machen wir hier direkte Anrufe. A von tun tatsächlich ein von zwei und dann Null. Es ist Löschungen. Das ist ein 101234 vier und fünf. Und so ist das ein von drei. Vielleicht setzen wir eine gleiche Sechs oder etwas
Yada, Yada, etc. Aber das Problem damit, das Problem, das wir haben, wenn wir direkt von diesem Array aufrufen, ist was, wenn wir dies in eine verknüpfte Liste und eine verknüpfte Liste
ändern wollen ? Sieht in etwa so aus, dass die verknüpfte Liste. Diese Anrufe funktionieren nicht. Wenn wir uns also verändert haben, haben
wir jetzt plötzlich dieses Problem, bei dem alle diese brechen jeden einzelnen Anruf wie diesen
jetzt kaputt ist . Wir müssen eine ganze Reihe von Modulen wechseln. Eine intelligentere Art, dies zu tun, wäre, dass Zehe fast eine Datencontroller-Kontrollklasse haben. Anstatt also direkte Funktionen in das Array aufzurufen, würden wir hier einen Getter und ein Zentrum nennen, und dies würde mit der Datenstruktur sprechen. Auf diese Weise, wenn wir die Datenstruktur ändern, ändern
wir einfach jeden Getter und Setter hier drin. Und diese würden alle wieder perfekt funktionieren. Eso wie statt, du weißt schon, diese Art von Fünf hat einen direkten Anruf gemacht. Wir werden sagen, vielleicht bekommen Index und dann übergeben wir es eine Fünf. Auf diese Weise. Die internen Abläufe, wie wir Nummer fünf bekommen. Wir müssen es nicht wissen. Wir rufen es nicht direkt an. Stattdessen nehmen
wir tatsächlich diese Art von wir erhöhen diese Abhängigkeit, und wir erlauben dies, all diese Steuerlogik zu kontrollieren. Deshalb wieder, wenn wir es nur zu einer anderen Datenstruktur austauschen, inju durchgesickerte Liste oder eine andere Art der Speicherung von Informationen, die wir erstellt haben. Wir können nicht einfach ein paar schnelle Updates in dieser Controller-Klasse in all unseren Modulen wieder perfekt
funktionieren. Das ist also eine Datenstrukturkopplung. Das ist ein bisschen häufiger. Es ist nicht das Schlimmste auf der Welt, weil, wissen
Sie
, das Auswechseln von Datenstrukturen ist nicht etwas, das die ganze Zeit passiert, und wir haben normalerweise nicht eine ganze Reihe von Modulen, die mit der gleichen Datenstruktur spricht, aber es passiert. Und in diesen Situationen möchten wir darüber nachdenken, anstatt vielleicht direkt mit dieser
Datenstruktur Kontakt aufzunehmen, um eine Kontrollklasse zu erstellen, so dass wir abstrahieren, dass diese Kontrolle nur ein wenig. Das sind also zwei Hauptideen der mittleren Kopplung. Sie würden sehen, wie sie nicht so schlimm sind wie die anderen, wo wir einzelne Änderungen vornehmen Tausende von Dingen zu
brechen. jedoch schlecht sein, Sie könnenjedoch schlecht sein,wenn wir kleine Änderungen in bestimmten Bereichen auf bestimmte sehr spezifische Weise vornehmen, wir brechen immer noch eine ganze Reihe von Modulen. nächsten Wahl decken
wir die letzte Art von Dingen ab, was die losen Kopplungsdinge sein wird, die irgendwie für Bereiche
gelten, die wir ein wenig Kopplung für strategische Zwecke verwenden wollen , aber halten Sie es so locker wie möglich.
25. 4-8 lose Kopplung: Die letzte Stufe der Kopplung ist also die dieser Idee der losen Kopplung. Bei loser Kopplung haben wir
also diesen sehr optimalen Kommunikationszustand zwischen den Modulen. In dieser Situation wurden also nur sehr relevante Informationen von einem
Modul zum nächsten weitergegeben . Also das sehr lose zusammen gekoppelt,
was bedeutet, dass wir irgendwie einen für einen anderen auswechseln könnten und es gäbe kein großes Problem . Vielleicht müssen wir hier und da eine Codezeile ändern, damit es funktioniert. Aber es wird nicht dieses riesige Projekt sein. Außerdem werden
wir nicht das Problem dieser seltsamen kaskadierenden Bugs überall haben, weil
der Datenzug, der weitergegeben wird, sehr einfach zu verfolgen sein wird. Jetzt wollen wir nicht darauf abzielen, ist keine Kopplung. So gibt es diese Kategorie der keine Kupplung. Aber das bedeutet nur, dass es keine Kommunikation zwischen Modulen gibt. Oder vielleicht haben wir nur ein wirklich, wirklich, wirklich großes Modul. Also wissen Sie, dieses Modul, das nur Informationen den ganzen Weg nach unten hat, Es ist völlig und total verrückt. Und Sie können schon verstehen, dass das auch ein Problem wäre. Ist es? Ich habe nur ein einziges Modul und sei wie, Jep, hier ist
kein Paar. Das ist ein Problem, das kein „Das ist ein Anti“ -Muster ist. Das nennen wir ein Anti Muster, das das Gegenteil eines produktiven Musters ist. Und das kleine bricht auch das, was unser nächster Mieter ist, nämlich Kohäsion, denn das hätte keinen einzigartigen Zweck. Dies hätte im Grunde den Zweck der gesamten Anwendung. Also das ist auch nicht, dass wir Dio werden. Also keine Kopplung ist nicht, wo wir vorangegangen sind. Das ist überhaupt keine Kommunikation. Und unsere Module müssen miteinander reden. Sie müssen in irgendeiner Weise kommunizieren. Es muss eine Verbindung zwischen ihnen geben. Das bedeutet also, dass wir irgendwie mit diesen beiden Bereichen der Kopplung übrig sind. Und das wird die Idee der Datenkopplung und die Idee der Nachrichtenkopplung sein. Also was? Sind sie ein Paar in dem, was wir haben? Es ist, wenn zwei Module die gleichen Daten teilen oder vorbei. Und was das bedeutet, ist, dass wir nur Daten in einem haben, und wir übergeben sie an andere Daten oder ein anderes Modul, das diese Daten an ein anderes Modul weitergibt . Denken Sie daran, wir reden darüber, einen Getter oder ein Zentrum gut für das Zentrum zu setzen. Was müssen wir passieren? Wir müssen Daten übergeben, um die Informationen hier in diesem Modul zu setzen. Das ist eine Weitergabe von Daten. Das ist eine Verbindung zwischen den beiden. Wenn wir die Daten hier ändern, wird sich hier
etwas ändern. Wenn wir uns entscheiden, dass wir eine andere Art von Daten übergeben wollen, um zu sein, na ja, dann wird das passieren. Möglicherweise müssen wir eine Änderung vornehmen und diese neue Art von Daten akzeptieren. Obwohl die Änderung klein wäre,
dass nur eine kleine Codezeile dort zu ändern, gibt es immer noch eine winzige Menge an Verknüpfung. Allerdings können
wir das nicht wirklich überstehen, weil Module kommunizieren müssen. Wir müssen in der Lage sein, Daten von einem Ende zum nächsten zu übergeben. Diese Kupplung ist also nicht schlecht. Dies ist nur eine Art der optimale Zustand der Kopplung wieder. Es wird ein bisschen davon geben. Das ist vollkommen in Ordnung. Die andere Idee ist das Koppeln von Nachrichten, und das ist, wenn Nachrichten oder Befehle zwischen Modulen übergeben werden. Was wir damit meinen, ist, wenn wir das vielleicht unsere anfängliche Isar haben, also haben wir eine App, und diese Initialisierung ist die App. Und dann vielleicht hier unten haben wir vielleicht startet das die Hintergrunddienste oder so, und dann ruft das an und macht das wird der Benachrichtigungsmanager sein. Das hier drüben ist vielleicht der Backup-Manager. Das hier drüben ist potenziell, ich weiß nicht, vielleicht wie einige zurück in Berechnungen. Also Berechnung Nur Couch für kurz da. Und so können Sie sehen, das ist eigentlich ein ziemlich gutes Set hier oben. Wir haben es nicht drin. Es ruft zu einem Befehl auf, um das Hintergrundmaterial zu starten, das Hintergrundmaterial, das es sehr intelligent auf die Hintergrundrechner-Task, dieHintergrund-Backup-Aufgabe,
die Hintergrundbenachrichtigungsaufgabepartitioniert Hintergrund-Backup-Aufgabe,
die Hintergrundbenachrichtigungsaufgabe . Und die starten alle. Und sie übergaben Befehle für ihr Erzählen, ihr wisst schon, dass es alle 12 Stunden operieren soll. Dies funktioniert alle drei Stunden zu stoppen Rate alle 14 Stunden, etcetera, usw cetera, ihre Befehle übergeben, ihre Nachrichten. Sie sagen, Hey, sehen
Sie, Sie sollten mit dieser Aufgabe beginnen. Hey d, du solltest mit dieser Aufgabe beginnen. Sie gehen nicht in die unerschrocken, die sie nicht kontrollieren, denken Sie daran, das ist der Unterschied. Ist die Steuerkopplung nicht bedeutend? Wir übergeben Flags in jede von ihnen, um die Steuerung zu ändern, haben nur gesagt, was erreicht werden muss. Also in dieser Situation, wir sagen es, der Berechnungsprozess sollte laufen. Und dann ergibt sich das, was auf den Parametersatz im aktuellen Zustand der App gegeben wird, was das bedeutet und dasselbe mit dem Backup. Wir übergeben keine Befehle oder nicht. Passieren Flags waren nur sagen, Führen Sie die Operation, die Sie dio und in der Backup-Verwaltung soll tun,
dass nur , dass es auf den Zustand der APP schauen und es tun wird. Es ist Job. Es wird den Status der APP an jedem Ort sichern, wo sie hingehen muss. Und so ist das, was Message Kopplung ist, und Sie können sehen, was die Kombination von Durcheinander, Kopplung und Datenkopplung. Wir können jede Anwendung erstellen, die wir brauchen. Wir brauchen nichts von diesem anderen Paar ing im Grunde unsere Anwendung oder unser
Programm in irgendeiner Weise,
Form oder Form zu bearbeiten Programm in irgendeiner Weise, . Nun, wenn man etwas bedenkt, gibt es einige Situationen, in denen man es vielleicht nur ein bisschen mehr koppeln muss . Vielleicht, wenn Sie das nur einen kleinen Handschuh mehr koppeln. Vielleicht sind Sie auf die mittlere Kupplung für einen Abschnitt Ihrer Anwendung gegangen, der
200 Stunden Arbeit sparen könnte . Oder es könnte Mormon wartbar sein. Und diese Situationen sind in Ordnung. Aber unser Ziel hier, unsere Idee ist, dass wir so locker wie möglich werden wollen. Wir wollen das Netz von Abhängigkeiten innerhalb unserer Anwendung reduzieren. Und das ist die Art der Zielsetzung von all dem hier wieder lose Kopplung. Wir wollen nicht ohne Kupplung gehen. Wir wollen diese Idee der losen Kupplung.
26. 4-9-Konzipation: einer seiner Wrap-up-Kupplung mit ein paar letzten Gedanken hier. Also sind wir alle auf der gleichen Seite. Messung der Kupplung ist wichtig, wenn wir uns entwerfen und entwickeln. Das ist es, was wir die ganze Zeit durchgemacht haben. Da hast du dich auf eine Menge konzentriert. Und es ist nicht nur genug, um zu planen, was wir brauchen, um es zu planen. Nun, was ich damit meine, ist, dass wir eine wirklich tiefe 1000 Seiten Blueprint haben können. Aber wenn es nur wirklich schreckliche Designs von wirklich eng gekoppelten Modulen sind, ist es egal, dass wir die Blaupause davon haben. Wir haben es schlecht gestaltet. Wir haben noch nicht an ein Paar nachgedacht. Wir haben nicht über Kohäsion nachgedacht. Wir haben nicht über die Idee nachgedacht, sie zu pflegen und die
App im Laufe der Zeit zu verschieben und zu ändern . Alles, was wir getan haben, ist, dass wir unsere Ideen auf das Papier gebracht haben, nicht an eine intelligentere Lösung gedacht haben, und dann werden wir das weiterentwickeln. Nur weil wir einen Plan haben, bedeutet das nicht, dass es ein guter Plan ist. Und das ist, was die Idee von Design ist, nicht nur Planeten, sondern es zu einem guten Plan zu machen. Und schließlich versuchen
wir, auf lose Paarkopplung zu zielen und zu schwächen rechtfertigen, indem wir etwas
Stärkeres schreiben . Und so, wie ich in der vorherigen sagte, vielleicht gibt es eine Situation, in der man sich keine bessere Lösung vorstellen kann,als die Kopplung leicht zu , stärken wie ich in der vorherigen sagte,
vielleicht gibt es eine Situation, in der man sich keine bessere Lösung vorstellen kann,als die Kopplung leicht zu
stärken. machen es in diesen Situationen nur ein wenig enger. Schlagen Sie sich nicht über den Kopf, versuchen Sie, es so locker wie möglich zu machen, versuchen, hinzuzufügen ,
Sie wissen, 85 zusätzliche Module, so dass Sie nicht müssen, so dass Sie es auf diese sehr lose Kupplung . Da wollen wir nicht hingehen. In diesen Situationen, rechtfertigen Sie es
einfach schriftlich, nur, wissen
Sie, erklären Sie jemandem, der sich das ansehen könnte. Warum haben wir eine engere Kupplung verwendet, auch wenn
der andere Plan nur , zusätzliche Entwicklungszeit benötigt hätte,ohne uns
Wartungszeit zu sparen . So etwas wie das. Schreiben Sie es aus und, Sie wissen schon, gehen Sie weiter, bewegen Sie sich mit dem Design. Aber insgesamt versuchen
wir, auf diese lose Kopplung zu zielen. Es ist unser Ziel. Es ist wie ein Ziel. Wir versuchen, so nah wie möglich an der Mitte zu treffen. Wenn wir ab und zu hier draußen sind, oder vielleicht ab und zu hier draußen, ist
das völlig in Ordnung. Aber wir zielen auf das Zentrum. Wir versuchen, es so nah wie möglich an das Ziel des Zentrums zu kommen. Und wenn wir das tun, machen
wir unsere Jobs richtig. In der nächsten Vorlesung werden
wir über die andere Seite gehen, was die Idee des Zusammenhalts ist. Kohäsion ist interessant, und es geht fast gegen die Kopplung in gewisser Weise, was ein wenig Gleichgewicht erfordert. Also lasst uns da drüben springen.
27. 4-10 Cohesion Einführung: Also lassen Sie uns auf die andere Seite der Münze gehen, wenn Sie so wollen, und sprechen über die andere wirklich wichtige Idee, wenn Sie Dinge in Module zerteilen. Und das ist diese Idee des Zusammenhalts. In den letzten Vorträgen haben wir also über die Idee der Kopplung gesprochen, bei der wir nicht wollen, dass die Module zu eng miteinander verbunden sind, sondern mit dem Zusammenhalt. Was wir wollen, ist, dass jedes Modul so definiert wie möglich ist. Es zu treffen, führt nur eine einzige Aufgabe aus. Also wollen wir nicht, dass eine ganze Reihe von Modulen eine ganze Reihe von Dingen tun,
was bedeutet, dass wir weder wirklich große Module wollen oder dieses Modul ein wenig in dieser
Kategorie tut . Dieses Modell macht ein wenig in dieser Kategorie unten hier und in dieser Kategorie. Und dann Beispiel
natürlich ist
das andereBeispiel
natürlichnur ein wirklich großes, wo Sie nur eine einzige Datei haben, die alles macht. Wir wollen, dass sie sehr fokussiert sind, damit wir Dinge herausnehmen können, und wir können sie fast mischen und zusammenpassen. Uh, wir haben die Idee der Modularität, wo wir ein Modul nehmen und es durch ein anderes
Modul ersetzen könnten , und es würde perfekt funktionieren. Also, zum Beispiel, wenn dies die Farbe rot Modul war und das eine Farbe war, vielleicht grünes Modul, könnten
wir das rote Modul herausnehmen und das Grün direkt an seinen Platz kleben, und es würde perfekt funktionieren , weil, wie definiert und wie spezifisch diese beiden sind. Und das ist es, wonach wir mit Kohäsion suchen. Jetzt diese beiden. Wie ich schon sagte, sie arbeiten gegeneinander. Sie können einen wirklich,
wirklich starken,
zusammenhängenden Satz von Modulen haben wirklich starken, , die sehr,
sehr eng gekoppelt sind , und Sie können eine sehr,
sehr lose gekoppelte Reihe von Modulen haben , die sehr, sehr schwach in der Kohäsion. Das Beispiel, das ich gerne dafür verwende, ist, wenn wir eine riesige Datei haben, Wenn wir eine einzige Riesendatei haben, die alles gut macht, per Definition haben
wir tatsächlich sehr lose Kopplung. Es gibt hier keine Verknüpfung zu anderen Dateien. Dieses Modul ist lose Paar, das keine Links hat. Wir könnten eigentlich sagen, dass dies in dieser Situation keine Kopplung ist, also wäre das in Ordnung und Kopplung. Aber damit haben wir den schwächsten aller Kohäsion. Also, was wir hier haben, ist eine Datei, die alles tut und daher keinen Zweck hat. Es hat keinen entscheidenden Faktor dessen, was es dio soll. Und deshalb, anstatt nur nach dem einen oder anderen zu suchen, müssen
wir versuchen, die beiden dazu zu bringen, sich zu treffen. Wir müssen ein Gleichgewicht finden. Und das ist, wo wir mit diesem Prinzip des starken Zusammenhalts und der lockeren Kopplung gehen. Wir werden nicht in der Lage sein, perfekt auf jeder Seite zu werden, aber was wir suchen, wenn sie beide wie Grafiken wie, äh wie diese hier sind, wir versuchen, Toe mah zu versuchen, es direkt in der Mitte hier
zu maximieren. Wir versuchen, unser Programm so zu optimieren, dass es ziemlich schön und locker gekoppelt und gleichzeitig ziemlich stark zusammenhängend ist. Wenn wir das schaffen, haben
wir ein großartiges Programm. Wir haben ein tolles Design und es wird den Prozess der Wartung und des Bauens so viel
einfacher machen . Also, in den nächsten Vorträgen, lasst uns beginnen, in einige der verschiedenen Ebenen des Zusammenhalts zu gehen, wie wir es mit der Kopplung getan haben und einige der gemeinsamen Fallstricke und Zeug sehen, die mit dem Bau in Bezug auf
Kopplungkommen Kopplung
28. 4-11 schwache Kohäsion: Beginnen wir also unsere erste Kategorie mit schwacher Kohäsion. Wir Kohäsion ist also die unzitierte schlechteste Form des Zusammenhalts. Das bedeutet, dass wir nicht viel Kohäsion haben. Und denken Sie daran, wir wollen starken Zusammenhalt und lockere Kopplung. Mit schwacher Kohäsion haben wir also diese Module, die gebaut werden, aber sie haben keinen Zweck. Dies schafft diese Idee, Spaghetti-Code zu sprechen, was bedeutet, dass es vielleicht 1000 verschiedene Module in einer Datei geben könnte. Aber keiner von ihnen hat einen Zweck, und keiner ist in irgendeiner denkbaren Weise miteinander verbunden. Daher hätte
jeder andere, der versucht, dem Projekt beizutreten, keine Ahnung, wie irgendetwas funktioniert. Es gäbe keinen Satz oder eine Richtlinie,
nichts, dem sie folgen könnten, um es herauszufinden. Sie müssten nur damit herumspielen, bis sie es gelernt haben. Und das verlangsamt wirklich die Produktion, weil man keine zusätzlichen Leute einstellen kann, ohne die ganze Zeit, die es brauchen wird, um sie auf dem Laufenden zu bringen. Bei schwacher Kohäsion haben
wir also ein paar Kategorien, mit denen wir anfangen müssen. Die 1. 1 ist seine Idee des zufälligen Zusammenhalts, so dass der zufällige Zusammenhalt bedeutet, dass der einzige Grund, dass diese Ideen und Aktivitäten und Dinge in diesem Modul zusammen sind, nur weil sie in der gleichen Datei sind, zufällig zusammen. Also haben wir eine Datei, und wir haben einfach eine ganze Reihe von verschiedenen zufälligen Sachen in sie. Zufällig haben
sie diese Assoziation. Sie sind eine Gruppe zusammen, weil wir sagen, sie sind Gruppe zusammen und Sie wissen, ein Beispiel
dafür könnte sauber sein, den Autositz Restaurant rechts Buch Bericht Flug von Dallas, Texas. Es gibt keine logische Kombination dieser Dinge. Darauf hat sich nichts konzentriert. Es ist nur eine zufällige Reihe von Aufgaben hier, und das ist eigentlich, dass dies tatsächlich einen Schritt weiter als zufällig sein könnte. Nur weil das alles Aktivitäten sind, könnten
wir sogar so etwas haben, wo wir E genau hier setzen. Und es ist so etwas wie ein Substantiv wie Hund. Und dann bist du jetzt. Jetzt sind sie nicht einmal alle Aktivitäten. Jetzt sind sie nur noch zufällig. Und wenn Sie jemals zu diesem Punkt der Zufälligkeit kommen, bringt Sie
das zu zufällig. Und wie ich schon sagte, es ist unmöglich, so etwas zu entlarven,
weil Sie
eine ganze Reihe von Dateien haben werden es ist unmöglich, so etwas zu entlarven,
weil Sie
eine ganze Reihe von Dateien haben werden. Tun Sie dies und dann sind sie alle zufällig verlinkt, die anderen Dateien und es macht keinen Sinn, den Fluss des Programms. Einige Beispiele dafür sind wie ein einzelnes Dateiprogramm. So wie wir mit dieser riesigen Einzeldatei über das ganze Programm reden läuft von dieser vielleicht Java-Skriptdatei oder Java-Datei oder so etwas. Das ist ein zufälliger Zusammenhalt. Es gibt nichts, was das zusammen verbindet, außer dass sie alle Teil desselben Programms sind, und sie sind alle in derselben Datei, dem Mismatch Controller als auch. Also, wenn wir
zum Beispiel
wie einen Modellansicht-Controller haben zum Beispiel , haben
wir eine Controller-Klasse, in die wir versuchen,
alleszu ,
alles übergeben. Wir haben diese Ideen und wir versuchen, einen besseren Code zu erstellen. Aber wenn wir ihm nicht wirklich einen Zweck geben, und wir einfach alles in diese Controller-Klasse stecke