Sunday 19 March 2017

Handels System Uml Diagramme

Anwendungsfalldiagramme Anwendungsfalldiagramme Neben der Einführung von Anwendungsfällen als primäre Elemente in der Softwareentwicklung stellte Jacobson (1994) auch ein Diagramm zur Visualisierung von Anwendungsfällen vor. Das Anwendungsfalldiagramm ist auch Teil der UML. Viele Leute finden diese Art von Diagramm nützlich. Allerdings muss ich betonen, dass Sie nicht brauchen, um ein Diagramm zu verwenden Use Cases. Eines der effektivsten Projekte, die ich kenne, dass benutzte Use Cases involviert jedes halten auf einer Karteikarte und Sortierung der Karten in Haufen zu zeigen, was brauchte Gebäude in jeder Iteration. Abbildung 3-2 zeigt einige Anwendungsfälle für ein Finanzhandelssystem. Abbildung 3-2. Anwendungsfalldiagramm Ein Akteur ist eine Rolle, die ein Benutzer in Bezug auf das System spielt. Es gibt vier Akteure in Abbildung 3-2: Trading Manager, Trader, Salesperson und Accounting System. (Ja, ich weiß, es wäre besser, die Wortrolle zu verwenden, aber anscheinend gab es eine Fehlübersetzung von den Schwedischen.) Es wird wahrscheinlich viele Händler in der gegebenen Organisation geben, aber was das System angeht, spielen sie alle Die gleiche Rolle. Ein Benutzer kann auch mehr als eine Rolle spielen. Zum Beispiel kann ein Senior Trader die Rolle des Trading Manager spielen und auch ein normaler Trader sein, ein Trader kann auch ein Verkäufer sein. Im Umgang mit Akteuren, ist es wichtig, über Rollen zu denken, anstatt Menschen oder Jobtitel. Schauspieler führen Anwendungsfälle durch. Ein einzelner Akteur kann viele Anwendungsfälle umgekehrt durchführen, ein Anwendungsfall kann mehrere Akteure haben, die ihn ausführen. In der Praxis finde ich, dass Schauspieler am nützlichsten sind, wenn sie versuchen, mit den Anwendungsfällen zu kommen. Angesichts eines großen Systems, kann es oft schwierig sein, kommen mit einer Liste von Anwendungsfällen. In diesen Situationen ist es leichter, zuerst in die Liste der Akteure zu kommen und dann die Anwendungsfälle für jeden Akteur zu erarbeiten. Schauspieler müssen nicht menschlich sein, obwohl Schauspieler in einem Anwendungsfalldiagramm als Strichmännchen dargestellt werden. Ein Akteur kann auch ein externes System sein, das einige Informationen aus dem aktuellen System benötigt. In Abbildung 3-2 sehen wir die Notwendigkeit, die Konten des Rechnungswesens zu aktualisieren. Es gibt verschiedene Varianten, was die Leute als Schauspieler zeigen. Einige Leute zeigen jedes externe System oder menschlichen Akteur auf dem Anwendungsfall Diagramm andere bevorzugen den Initiator des Anwendungsfalles zu zeigen. Ich ziehe es vor, den Schauspieler zu zeigen, der Wert aus dem Use Case erhält, den manche Leute als primären Schauspieler bezeichnen. Allerdings nehme ich das nicht zu weit. Im glücklich, das Buchhaltungssystem zu sehen, erhalten Wert, ohne zu versuchen, herauszufinden, der menschliche Akteur, der Wert aus dem Buchhaltungssystem, die mit der Modellierung des Rechnungsführungssystems selbst. Das heißt, sollten Sie immer Frage Anwendungsfälle mit System-Akteure, um herauszufinden, was die tatsächlichen Nutzerziele sind, und betrachten alternative Wege zur Erfüllung dieser Ziele. Wenn Im, das mit Schauspielern und Gebrauchfällen arbeitet, sorge ich nicht zu viel über, was die exakten Verhältnisse unter ihnen sind. Die meisten der Zeit, was Im wirklich nach ist die Use Cases die Schauspieler sind nur ein Weg, um dorthin zu gelangen. Solange ich alle Use Cases, Im nicht besorgt über die Details der Schauspieler. Es gibt Situationen, in denen es sich lohnt, die Schauspieler später zu verfolgen. Das System muss möglicherweise für verschiedene Arten von Benutzern konfiguriert werden. In diesem Fall ist jede Art von Benutzer ein Schauspieler, und die Use Cases zeigen Ihnen, was jeder Schauspieler tun muss. Tracking, die Use Cases kann Ihnen helfen, verhandeln Prioritäten zwischen verschiedenen Akteuren. Einige Anwendungsfälle haben keine klare Links zu bestimmten Akteuren. Betrachten Sie ein Versorgungsunternehmen. Eindeutig ist einer der Anwendungsfälle Send Out Bill. Es ist nicht so einfach, einen assoziierten Schauspieler zu identifizieren. Keine bestimmte Benutzerrolle fordert eine Rechnung an. Die Rechnung wird an den Kunden gesendet, aber der Kunde würde nicht widersprechen, wenn er nicht geschehen würde. Die beste Vermutung bei einem Schauspieler ist hier die Abrechnungsabteilung, indem sie Wert aus dem Anwendungsfall erhält. Aber die Abrechnung ist in der Regel nicht bei der Wiedergabe der Anwendungsfall beteiligt. Seien Sie sich bewusst, dass einige Anwendungsfälle nicht Pop-out als Ergebnis der Prozess des Denkens über die Anwendungsfälle für jeden Schauspieler. Wenn das passiert, nicht zu viel Sorgen. Das Wichtigste ist das Verständnis der Anwendungsfälle und der Nutzerziele, die sie erfüllen. Eine gute Quelle für die Identifizierung von Use Cases sind externe Ereignisse. Denken Sie über alle Ereignisse von der Außenwelt, auf die Sie reagieren möchten. Ein gegebenes Ereignis kann eine Systemreaktion hervorrufen, die keine Benutzer involviert, oder es kann eine Reaktion in erster Linie von den Benutzern verursachen. Die Identifizierung der Ereignisse, die Sie benötigen, um zu reagieren hilft Ihnen, die Anwendungsfälle zu identifizieren. Anwendungsfallbeziehungen Zusätzlich zu den Verknüpfungen zwischen Akteuren und Anwendungsfällen können Sie verschiedene Arten von Beziehungen zwischen Anwendungsfällen zeigen. Die Include-Beziehung tritt auf, wenn Sie ein Stück des Verhaltens haben, das in mehr als einem Anwendungsfall ähnlich ist, und Sie möchten nicht die Kopie der Beschreibung dieses Verhaltens beibehalten. Zum Beispiel, beide Analyze Risk und Preis Deal verlangen, dass Sie den Deal Wert. Beschreiben Deal Bewertung ist ein faires Stück des Schreibens, und ich hasse copy-and-paste. Also habe ich eine separate Value-Deal-Use-Fall für diese Situation und bezogen, um es aus dem ursprünglichen Use Cases. Sie verwenden Anwendungsfallverallgemeinerung, wenn Sie einen Anwendungsfall haben, der einem anderen Anwendungsfall ähnelt, aber ein bisschen mehr macht. In der Tat, dies gibt uns eine andere Möglichkeit, alternative Szenarien zu erfassen. In unserem Beispiel ist der grundlegende Anwendungsfall Capture Deal. Dies ist der Fall, in dem alles reibungslos läuft. Dinge können die reibungslose Erfassung eines Deals jedoch aufregen. Einer ist, wenn eine Grenze überschritten wird, zum Beispiel die maximale Höhe der Handelsorganisation für einen bestimmten Kunden etabliert hat. Hier führen wir nicht das übliche Verhalten, das mit dem gegebenen Anwendungsfall verbunden ist, durch, den wir eine Alternative durchführen. Wir könnten diese Variante innerhalb des Capture Deal-Use-Case als Alternative, wie mit dem Buy a Product Use-Fall, den ich zuvor beschrieben habe. Allerdings können wir fühlen, dass diese Alternative genügend verschieden ist, um einen gesonderten Anwendungsfall zu verdienen. Wir setzen den alternativen Pfad in einen spezialisierten Anwendungsfall, der sich auf den Basiskonsum bezieht. Der spezialisierte Anwendungsfall kann einen beliebigen Teil des Basiskonsums überschreiben, obwohl es immer noch darum geht, dasselbe wesentliche Nutzerziel zu erfüllen. Eine dritte Beziehung, die ich nicht in Abbildung 3-2 gezeigt habe, wird als verlängert bezeichnet. Im Wesentlichen ist dies ähnlich wie die Generalisierung, aber mit mehr Regeln für sie. Mit diesem Konstrukt kann der erweiterte Anwendungsfall dem Basisebenen-Fall ein Verhalten hinzufügen, aber dieses Mal muss der Basis-Use-Case bestimmte Erweiterungspunkte deklarieren und der erweiterte Use Case kann nur an den Erweiterungspunkten ein zusätzliches Verhalten hinzufügen. (Siehe Abbildung 3-3) Abbildung 3-3. Extend-Beziehung Ein Anwendungsfall kann viele Erweiterungspunkte aufweisen, und ein erweiterter Anwendungsfall kann einen oder mehrere dieser Erweiterungspunkte verlängern. Sie geben an, welche auf der Linie zwischen den Anwendungsfällen auf dem Diagramm liegen. Beide Verallgemeinerungen und Erweiterungen ermöglichen es Ihnen, einen Anwendungsfall aufzuteilen. Während der Ausarbeitung, habe ich oft Split alle Anwendungsfälle, die immer zu kompliziert. Ich spaltete während der Bauphase des Projekts, wenn ich finde, dass ich nicht den ganzen Anwendungsfall in einer Iteration bauen kann. Wenn ich split, mag ich den normalen Fall zuerst und die Variationen später zu tun. Wenden Sie die folgenden Regeln an. Verwenden Sie, wenn Sie sich wiederholen, sich in zwei oder mehr separate Anwendungsfälle und Sie Wiederholungen vermeiden möchten. Verwenden Sie Verallgemeinerung, wenn Sie eine Veränderung des normalen Verhaltens beschreiben, und Sie möchten es beiläufig beschreiben. Verwenden Sie erweitern, wenn Sie eine Variante auf normales Verhalten beschreiben und Sie möchten die kontrolliertere Form, Deklaration Ihrer Erweiterungspunkte in Ihrem Basis-Use-Case. Algorithmic Trading System Architecture Bisher auf diesem Blog habe ich über die konzeptionelle Architektur eines intelligenten Algorithmus geschrieben Handelssystem sowie die funktionalen und nicht-funktionalen Anforderungen eines produktionsalgorithmischen Handelssystems. Seitdem habe ich eine Systemarchitektur entworfen, von der ich glaube, dass sie diese architektonischen Anforderungen erfüllen kann. In diesem Beitrag werde ich beschreiben die Architektur nach den Richtlinien der ISOIECIEEE 42010 Systeme und Software Engineering Architektur Beschreibung Standard. Nach dieser Norm muss eine Architekturbeschreibung enthalten: Mehrere standardisierte architektonische Ansichten (z. B. in UML) enthalten und die Rückverfolgbarkeit zwischen Entwurfsentscheidungen und architektonischen Anforderungen beibehalten Softwarearchitekturdefinition Es gibt noch keinen Konsens darüber, was eine Systemarchitektur ist. Im Rahmen dieses Artikels wird sie als die Infrastruktur definiert, innerhalb der Anwendungskomponenten, die funktionalen Anforderungen genügen, spezifiziert, implementiert und ausgeführt werden können. Funktionale Anforderungen sind die erwarteten Funktionen des Systems und seiner Komponenten. Nicht funktionale Anforderungen sind Maßnahmen, durch die die Qualität des Systems gemessen werden kann. Ein System, das seine funktionalen Anforderungen voll erfüllt, kann die Erwartungen nicht erfüllen, wenn nicht funktionale Anforderungen unbefriedigt bleiben. Um dieses Konzept zu veranschaulichen, betrachten Sie das folgende Szenario: ein algorithmisches Handelssystem, das Sie gerade gekauft haben, macht ausgezeichnete Handelsentscheidungen, ist aber völlig inoperabel mit den Organisationen Risikomanagement und Buchhaltungssysteme. Würde dieses System Ihren Erwartungen entsprechen Konzeptionelle Architektur Eine konzeptionelle Sicht beschreibt hochrangige Konzepte und Mechanismen, die im System auf höchster Granularität existieren. Auf dieser Ebene folgt das algorithmische Handelssystem einer ereignisgesteuerten Architektur (EDA), die über vier Schichten aufgebrochen ist, und zwei architektonische Aspekte. Für jede Schicht - und Aspektreferenz werden Architekturen und Muster verwendet. Architektonische Muster sind bewährte, generische Strukturen, um spezifische Anforderungen zu erfüllen. Architektonische Aspekte sind Querschnittsaufgaben, die sich über mehrere Komponenten erstrecken. Ereignisgetriebene Architektur - eine Architektur, die Ereignisse erzeugt, erkennt, konsumiert und reagiert. Ereignisse umfassen Echtzeitbewegungen, komplexe Ereignisse oder Trends und Handelsereignisse, z. B. Einreichung einer Bestellung. Dieses Diagramm veranschaulicht die Konzeptarchitektur des algorithmischen Handelssystems Referenzarchitekturen Um eine Analogie zu verwenden, ähnelt eine Referenzarchitektur den Blaupausen für eine tragende Wand. Dieses Blau-Druck kann für mehrfache Gebäudeentwürfe wiederverwendet werden, unabhängig davon, welches Gebäude gebaut wird, da es einen Satz von allgemein auftretenden Anforderungen erfüllt. Ähnlich definiert eine Referenzarchitektur eine Vorlage, die generische Strukturen und Mechanismen enthält, die verwendet werden können, um eine konkrete Softwarearchitektur zu konstruieren, die spezifischen Anforderungen genügt. Die Architektur für das algorithmische Handelssystem verwendet eine raumbasierte Architektur (SBA) und einen Modellansicht-Controller (MVC) als Referenzen. Gute Vorgehensweisen wie der Betriebsdaten-Speicher (ODS), das Extrakt-Transformations - und Belastungsmuster (ETL) und ein Data Warehouse (DW) werden ebenfalls verwendet. Modellansicht-Controller - ein Muster, das die Darstellung von Informationen von der Benutzerinteraktion mit ihr trennt. Raumbasierte Architektur - spezifiziert eine Infrastruktur, in der lose gekoppelte Verarbeitungseinheiten miteinander über einen gemeinsamen assoziativen Speicher mit dem Namen Space interagieren (siehe unten). Strukturansicht Die Strukturansicht einer Architektur zeigt die Komponenten und Unterkomponenten des algorithmischen Handelssystems. Es zeigt auch, wie diese Komponenten auf physische Infrastruktur eingesetzt werden. Die in dieser Ansicht verwendeten UML-Diagramme umfassen Komponentendiagramme und Bereitstellungsdiagramme. Im Folgenden finden Sie eine Übersicht der Implementierungsdiagramme des algorithmischen Handelssystems und der Verarbeitungseinheiten in der SBA-Referenzarchitektur sowie zugehörige Komponentendiagramme für die einzelnen Schichten. Architectural Tactics Nach dem Software Engineering Institute ist eine architektonische Taktik ein Mittel zur Befriedigung einer Qualitätsanforderung durch Manipulation eines Aspekts eines Qualitätsattributmodells durch architektonische Designentscheidungen. Ein einfaches Beispiel, das in der algorithmischen Handelssystemarchitektur verwendet wird, ist, einen operativen Datenspeicher (ODS) mit einer kontinuierlichen Abfragekomponente zu manipulieren. Diese Komponente würde das ODS kontinuierlich analysieren, um komplexe Ereignisse zu identifizieren und zu extrahieren. Folgende Taktiken werden in der Architektur verwendet: Das Disruptormuster im Ereignis - und Auftragswarteschlange Gemeinsamer Speicher für die Ereignis - und Auftragswarteschlangen Ununterbrochene Abfragesprache (CQL) auf dem ODS Datenfilterung mit dem Filterentwurfsmuster auf eingehenden Daten Vermeidungsalgorithmen auf allen Eingehende und ausgehende Verbindungen Active Queue Management (AQM) und explizite Staubenachrichtigung Rohstoffrechenressourcen mit Kapazitäten für Upgrade (skalierbar) Aktive Redundanz für alle Single Points of Fail Indexierung und optimierte Persistenzstrukturen im ODS Planen Sie regelmäßige Datensicherungs - und Bereinigungsskripts für ODS Transaktionshistorie auf allen Datenbanken Prüfsummen für alle Aufträge, um Fehler zu erkennen Annotieren von Ereignissen mit Zeitstempeln, um veraltete Ereignisse zu überspringen Bestellen von Validierungsregeln zB Maximale Handelsmengen Automatisierte Händlerkomponenten verwenden eine Speicher-Datenbank für die Analyse Zwei-Stufen-Authentifizierung für Benutzerschnittstellen, die eine Verbindung zu den ATs herstellen Verschlüsselung auf Benutzerschnittstellen und Verbindungen zu den ATs Observer-Entwurfsmuster für das MVC zur Verwaltung von Ansichten Die obige Liste ist nur ein paar Design Entscheidungen, die ich bei der Gestaltung der Architektur identifiziert habe. Es ist nicht eine vollständige Liste der Taktiken. Da das System entwickelt wird, sollten zusätzliche Taktiken auf mehreren Ebenen der Granularität eingesetzt werden, um funktionale und nicht-funktionale Anforderungen zu erfüllen. Unten sind drei Diagramme, die das Disruptor-Designmuster, das Filterentwurfsmuster und die kontinuierliche Abfragekomponente beschreiben. Verhaltensansicht Diese Ansicht einer Architektur zeigt, wie die Komponenten und Schichten miteinander interagieren sollen. Dies ist hilfreich bei der Erstellung von Szenarien zum Testen von Architekturentwürfen und zum Verständnis des Systems von Ende zu Ende. Diese Ansicht besteht aus Sequenzdiagrammen und Aktivitätsdiagrammen. Aktivitätsdiagramme, die den internen Prozess der algorithmischen Handelssysteme zeigen und wie Händler mit dem algorithmischen Handelssystem interagieren sollen, sind nachfolgend dargestellt. Technologien und Rahmenbedingungen Der letzte Schritt beim Entwerfen einer Softwarearchitektur besteht darin, mögliche Technologien und Rahmenbedingungen zu identifizieren, die zur Verwirklichung der Architektur genutzt werden könnten. Grundsätzlich ist es sinnvoll, bestehende Technologien auszuschöpfen, sofern sie sowohl funktionale als auch nicht funktionale Anforderungen adäquat erfüllen. Ein Framework ist eine realisierte Referenzarchitektur, z. B. JBoss ist ein Framework, das die JEE-Referenzarchitektur realisiert. Die folgenden Technologien und Frameworks sind interessant und sollten bei der Implementierung eines algorithmischen Handelssystems berücksichtigt werden: CUDA - NVidia verfügt über eine Reihe von Produkten, die eine hochleistungsfähige Computational Finance Modellierung unterstützen. Man kann bis zu 50x Performance-Verbesserungen in der Ausführung von Monte Carlo Simulationen auf der GPU anstelle der CPU erreichen. Apache River - River ist ein Tool-Kit zur Entwicklung verteilter Systeme. Es wurde als Rahmen für den Aufbau von Anwendungen auf der Grundlage der SBA-Muster Apache Hadoop - für den Fall, dass pervasive Logging ist eine Anforderung, dann die Verwendung von Hadoop bietet eine interessante Lösung für die Big-Data-Problem. Hadoop kann in einer Clusterumgebung eingesetzt werden, die CUDA-Technologien unterstützt. AlgoTrader - eine Open-Source-algorithmische Handelsplattform. AlgoTrader könnte an Stelle der automatisierten Händlerkomponenten eingesetzt werden. FIX Engine - eine eigenständige Anwendung, die die Financial Information Exchange (FIX) - Protokolle einschließlich FIX, FAST und FIXatdl unterstützt. Obwohl es sich nicht um eine Technologie oder ein Framework handelt, sollten Komponenten mit einer API (Application Programming Interface) aufgebaut werden, um die Interoperabilität des Systems und seiner Komponenten zu verbessern. Fazit Die vorgeschlagene Architektur wurde entwickelt, um sehr allgemeine Anforderungen für algorithmische Handelssysteme zu erfüllen. Im Allgemeinen werden algorithmische Handelssysteme durch drei Faktoren kompliziert, die bei jeder Implementierung variieren: Abhängigkeiten von externen Unternehmen und Tauschsystemen Herausforderung an nicht funktionale Anforderungen und Entwicklung von architektonischen Zwängen Die vorgeschlagene Softwarearchitektur müsste daher im Einzelfall von Fall zu Fall angepasst werden Um spezifische organisatorische und regulatorische Anforderungen zu erfüllen sowie regionale Zwänge zu überwinden. Die algorithmische Handelssystemarchitektur sollte nur als Referenz für Einzelpersonen und Organisationen betrachtet werden, die ihre eigenen algorithmischen Handelssysteme entwerfen wollen. Für eine vollständige Kopie und Quellen verwendet, laden Sie bitte eine Kopie meines Berichts. Vielen Dank.


No comments:

Post a Comment