Софтуерна архитектура на ForexTrader – клиент-сървър приложение за извършване на търговия с forex-и



страница3/5
Дата14.02.2017
Размер0.52 Mb.
#14916
1   2   3   4   5

Back Office Wrapper

  • Back Office Communicator

  1. BODataChannel CreateSecureDataTransferChannel(Socket s) – създава защитен комуникационен канал чрез SSL посредством VPN

  2. CloseSecureDataTransferChannel(BODataChannel bodc) – затваря защитен комуникационен канал

  3. RepairDataTransferChannel(BODataChannel bodc) – поправя комуникационния канал при проблем със свързаността

  4. LogDataTransferChannelProblem(BODataChannel bodc, Error e) – записва данните свързани с проблеми в комуникационните канали (за да се проучат от администраторите в случай, че проблема по трасето е от страна на сървъра)

  5. BODatagram GetIncomingMessage() – приема новопостъпило съобщение и го записва в опашката на новодошлите BO съобщения

  6. SendOutgoingMessage(BODatagram bod) – изпраща съобщение към Back Office системата

  7. LogError(Error e) – записва в логовете данните свързани с възникнал проблем при комуникацията на Back Office системата и сървъра

  8. AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  9. AdminNotificationMails(List m) – записва списък от мейл адреси на отговорните за този модул администратори (за да бъдат известени при проблем касаещ тяхната намеса)

  10. SendBOErrorMessage(Error e, Message m) – изпраща съобщение за грешка към клиентските терминали

  • Back Office message translator

  • BODatagram ReadMessage() – прочита съобщения от опашката на новопостъпилите съобщения на Back Office Communicator–а

  • WriteMessage(BODatagram bod) – записва ново съобщение в опашката на заминаващите съобщения

  • BODatagram GenerateMessage(BOCommand boc) – генерира съобщение в подходящ за Back Office системата формат

  • LogError(Error e) – записва в логовете данни за възникналите грешки

  • AdminNotificationMails(List m) – записва списък от мейл адреси на отговорните за този модул администратори (за да бъдат известени при проблем касаещ тяхната намеса)

  • SendBOErrorMessage(Error e, Message m) – изпраща съобщение за грешка към клиентските терминали

      1. Configuration

  • Back office system’s parameters

  • List LoadParameters() – зарежда параметрите, нужни за конфигуриране на Back Office Wrapper–а

  • SaveParameters(List) – записва параметрите, конфигуриращи Back Office Wrapper–а

  • Incident notification parameters

  • List LoadParameters() – зарежда параметрите, нужни за конфигуриране на Intrusion Detection модула

  • SaveParameters(List) – записва параметрите, конфигуриращи Intrusion Detection модула

  • Client Terminals Configuration

  • List LoadTerminalSettings(User u) – зарежда потребителските настройки за клиентския терминал на даден потребител

  • SaveTerminalSettings(List, User u) – записва потребителските настройки на клиентския терминал на даден потребител

      1. Configuraton Data

  • String GetModuleOption(String modulename, String key) – взема стойността на определен параметър за даден модул

  • Hash GetAllModuleOptions(String modulename) – списък с всички двойки ключ-стойност от опции на даден модул

  • SetModuleOption(String modulename, String key, String Value) – записва дадена стойност за определен ключ от конфигурацията на даден модул

      1. Logger

  • AddLogMessage(Error e, Message m) – добавя ново съобщение в логовете

  • ClearLogs() – изчиства логовете по заявка на администраторите на системата




    1. Интерфейси на модулите на клиентския териминал




      1. Communicator

  • Message Gateway

  • DataChannel CreateSecureDataTransferChannel(SSLSocket ss) – създава защитен комуникационен канал чрез Security модула

  • CloseSecureDataTransferChannel(DataChannel dc) – затваря защитен комуникационен канал чрез Security модула

  • Datagram GetIncommingMessage() – взема поредно съобщение от опашката на новодошлите съобщения

  • SendOutgoingMessage(Datagram d) – изпраща съобщение към клиентски терминал

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • Message Protocol Processor

  • Datagram ReadMessage() – прочита съобщения от опашката на новопостъпилите съобщения на Message Gateway

  • WriteMessage(Datagram d) – записва съобщения в опашката на заминаващите съобщения на Transaction Gateway

  • List
    BuildProcessors()
    – създава набор от процесори, които да обработват резултатите идващи от сървъра и да опресняват данните на модулите, за които отговарят

  • Datagram GenerateMessage(Command c) – генерира съобщение от зададена команда

  • Result TranslateMessage(Datagram d) – транслира полученото съобщение в подходящ формат за по-нататъчна обработка от клиента

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

      1. Main Data Processor

  • Possition Manager

  • AddShortPosition(List
    params)
    – създава къса позиция с определени параметри (stop loss, take profit)

  • AddLongPosition(List
    params)
    – създава дълга позиция с определени параметри (stop loss, take profit)

  • RemoveShortPosition(Position p) – затваря къса позиция

  • RemoveLongPosition(Position p) – затваря дълга позиция

  • VerifyDataAccuracy(Account a) – проверява верността на данните (паричното състояние на сметките на потребителя)

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • Account manager

  • Account AddAccount(...) – добавяне на нова сметка в системата

  • CloseAccount(Account a) – затваряне на сметка

  • SuspendAccount(Account a) – временно замразяване на сметка

  • UpdateAccountSettings(Account a, String parameter, String value) – промяна на настройките на сметката

  • List GetAccounts() – връща списък с всички сметки на потребителя

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • UpdateRatesData(List) – обновява списъка с валутни курсове

  • List GetRatesData() – връща списък с валутни курсове

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • News manager

  • AddNews(News n) – добавяне на новина

  • RemoveNews(News n) – премахване на новина

  • List GetNews() – създава списък на актуалните новини

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

      1. News (този модул взема данни от MDP и няма активна комуникация с никой модул – независим е)

  • NotifyUpdate() - известява модула за новодошли новини, които да обработи

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • List GetNews() - връща списък с новини

      1. Security

  • SSLSocket EstablishSSLSocket(Socket s) – създава подсигурена връзка, по която да се комуникира със сървъра

  • CloseSSLSocket(SSLSocket s) – затваря подсигурена връзка

  • ServerAuthorizationConfirmation(Boolean b) – проверява дали потребителя ползващ клиента е ауторизиран от сървъра (ако не е потребителя трябва да се подкани да въведе потребителско име и парола)

  • ProcessServerAuthorizationResponse(Datagram d) – обработва съобщенията на сървъра при изпълнение на стъпките за регистрация/вход в системата или забравена парола

  • MAC CalculateMessageMAC(Message m) – изчислява MAC-овете на системата

  • Key GenerateMACKey() – генерира ключ, с който да бъде изчислен и криптира MAC-а на съобщението

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

      1. Inquiries Processor (този модул взема данни от MDP и няма активна комуникация с никой модул – независим е)

  • Inquiry GenerateInquiry(Account a) – генерира справка за дадена сметка

  • ExportInquiry(Inquiry i, FileFormat ff, String file) – записва генерираната справка в определен формат на твърдия диск

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

      1. Graphics

  • Graphics Data Engine

  • UpdateInterval(Integer ms) – времеви интервал през който данните и графиката се обновяват

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

  • Graphics View

  • DrawGraphic(GType gt, GData gd, CurrencyPair cp, Pane p) – изчертава графика на движението на курсовете

  • DrawMarketVolume(MVData gd, Pane p) – изчертава данни за обема на търговия

  • AddMarker(Marker m) – добавя хоризонтален/вертикален маркер на графиката

  • RemveMarker(Marker m) – премахва маркер от графиката

  • AddIndicator(TAIndicator tai) – добавя индикатор за технически анализ

  • RemoveIndicator(TAIndicator tai) – премахва индикатор за технически анализ

      1. Analysis

  • Expert Analysis

    1. Expert Analysis IDE

      1. Expert Analysis Simulator

        1. Run(List q) – изпълнява набор от заявки

        2. Suspend() - спира временно изпълнението

        3. Resume() - продължава спряно изпълнение

        4. StopExecution() - прекратява изпълнението на текущите заявки

      2. Expert Analysis Debugger

        1. AttachProcess(QProcess qp) - закача дебъгъра към изпълнение на експертен анализатор, който да се следи

        2. DbgData GetDebugData() - връща дебъг информация за текущия прикачен процес за дебъг

        3. Stop() - спира текущото изпълнение на процеса

        4. Continue() - продължава от спряно изпълнение на процеса

        5. StepOver() - постъпково изпълнение без влизане в извикваните функций

        6. StepInto() - постъпково изпълнение с влизане в извикваните функций

        7. Terminate() - прекратява изпълняването на процеса и го откача

      3. Expert Analysis Language Interpreter

        1. Boolean FormatValidation(String sc) – валидира формата на написания код на експертния анализатор

        2. List DecomposeSourceCode(String sc) – декомпозира кода на фрагменти подходящи за генериране на заявки

        3. Query SourceCodeCompile(String sc) – компилира фрагмент код до заявка

        4. QuerySet SourceCodeCompile(List sc) – компилира фрагменти код и създава списък със заявки, които представляват команди за изпълнение от Query Manger-а

        5. List GetCompilationErrors() - връща списък с възникнали грешки при компилиране на кода

    2. Queries Manager (QuerySet е списък със заявки, които представляват изпълнението на експертния анализатор)

      1. Market Obsever (този модул взема данни от MDP и няма активна комуникация с никой друг модул)

        1. AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

      2. Queries Analyser

        1. Boolean CheckQuerySet(QuerySet qs, MarketData m) – проверява дали са изпълнени условията за даденото множество заявки

        2. AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

        3. Boolean CheckQuerySet(QuerySet qs, MarketData m) приема данни за пазара и Куирита и връща тру или фолс

      3. Query Engine

        1. AddQuerySet(QuerySet qs) – добавя множество от заявки за изпълнение

        2. DeleteQuerySet(QuerySet qs) – премахва множество от заявки за изпълнение

        3. UpdateQuerySet(QuerySet old, QuerySet new) – обновява дадено множество от заявки с друго

        4. SuspendQuerySet(QuerySet qs) – деактивира множество от заявки за изпълнение

        5. ActivateQuerySet(QuerySet qs) - активира множество от заявки за изпълнение

        6. List GetAllQuerySets() - връща списък с всички множества от заявки

        7. AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул

        8. MailData GenerateMailData() – генерира данни за изпълнен експертен анализатор, които да бъдат изпратени към клиента под формата на e-mail

      4. E-mail Notification

        1. AssignEmailAddress(String mail) – добавя адрес, на който да се изпрати мейл при изпълнение на някой от експертните анализатори

        2. SendNotificationMail(String mail, MailData m) – изпраща е-mail с данните за изпълнен експертен анализатор

  • Technical Analysis

  • List GetActiveIndicators() - връща списък с всички активни индикатори (ползва се от Graphics модула)

  • Indicator CreateIndicator(Inducator Parameters p) – създава нов индикатор на технически анализ

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул




      1. Configuration

  • Shown Rates of Exchange Configuration

  • Hash GetRatesConfig() - взима настройките за курсовете и валутите

  • SetRatesConfig(Hash) - записва настройките за курсовете и валутите

  • Communication Configuration

  • Hash GetCommunicationConfig() - взима настройките за комуникация със сървъра

  • SetCommunicationConfig(Hash) - записва настройките за комуникация със сървъра

  • User Configuration (използва се от Communication модула, тъй като тези настройки се съхраняват в сървъра и идват от там)

  • Hash<String key, String value> GetUserConfig() - взима настройките на потребителя

  • SetUserConfig(Hash<String key, String value>) - записва настройките на потребителя




      1. Data Storage

  • Memento GetMemento() - връща мементо-обект за съхранение в History Data Storage

Всички подмодули трябва да имплементират следните методи:

T зависи от модула, върху който се извършват операцийте



  • List GetAll() – взема списък с всички елементи от дадения подмодул

  • Remove(T item) – премахва елемент от дадения подмодул

  • Add(T item) – добавя нов елемент в дадения подмодул

  • T Update(T item, Т newItem) – опреснява съществуващия елемент item в подмодула с данните от newItem




      1. History Data Storage

Всички подмодули трябва да имплементират следните методи:

T зависи от модула, върху който се извършват операцийте



  • List GetAll(TimeInterval ti) – взема списък с всички елементи от дадения подмодул

  • Remove(T item) – премахва елемент от дадения подмодул

  • Add(T item) – добавя нов елемент в дадения подмодул




      1. Configuration Data

  • ConfigData LoadConfigData(File f) – прочита конфигурационен файл в XML формат

  • SaveConfigData(File f, ConfigData cd) - записва конфигурационен файл в XML формат




      1. GUI (Модулът отговаря за изпълнение на функционалностите на клиента чрез графичен интерфейс)

  • AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул




  1. Връзки между модулите (Uses structure)




    1. Връзки между модулите на сървъра


Фиг.1 Връзки между модулите на ForexTrader сървъра


На фиг. 1 са изобразени отделните модули и тяхните подмодули на ForexTrader сървъра, заедно с връзките между тях. По-долу са е дадено описание на всяка от тях.


  • Връзки на Security модул

    • Inner Relationships

      • Secure Connection -> Firewall – подмодулът Secure Connection, отговарящ за изграждането на защитена връзка с клиента, използва Firewall подмодула при определянето дали IP адресът, от който се получава заявка за отваряне на защитена връзка, фигурира в списъка на разрешените адреси за връзка.

      • Secure Connection -> Intrusion Detection System – IDS следи действията на Secure Connection подмодула и ги сравнява с модели на предишни атаки.

      • Secure Connection -> Cryptography – подмодулът Secure Connection използва функционалностите на подмодул Cryptography по генерирането на публични и частни ключове, необходими за изграждането на SSL

    • Outer Relationships

      • Security-> Configuration – Security модулът изпраща команди към Configuration за получаване на настройките на системата, нужни за коректната му работа.

        • Intrusion Detection -> Incident Notification Configuration - Intrusion Detection подмодула получава настройките записани в Incident Notification Configuration и в зависимост от определените там приоритети на различните security events предприема действия по уведомяването на администраторите на системата по избрания начин за настъпилата ситуация.

      • Security -> Main Data Processor - Security модулът изпраща команди към Main Data Processor за достъп до данните, които са му необходими за коректната му работа.

        • Intrusion Detection -> Security Data Manager - Intrusion Detection подмодула изисква данните за модели на предишни атаки от Security Data Manager подмодула на MDP и ги сравнява с данните, които получава от Communicator модула. При съвпадение се установява настъпването на security event, уведомяват се администраторите по указания в Incident Notification Configuration начин и настъпилото събитие се изпраща на Security Data Manager за запис в Raised Security Events Repository от Data Storage модула. Освен това при установяването на нов модел на атака, IDS я изпраща към Security Data Manager за запис в Attack Patterns Repository от Data Storage модула

        • Firewall -> Security Data Manager – Firewall подмодулът използва със Security Data Manager-а при проверката дали IP адреса, от който някой от потребителите се опитва да осъществи защитена връзка, фигурира в списъка с оторизираните IP адреси.

      • Security <- Communicator – Communicator модулът използва услугите на Security за изграждане на защитена връзка с клиента.

        • Firewall <- Transaction Gateway – при получаване на заявка за отваряне на защитена сесия от клиентския терминал, Transaction Gateway подмодулът изпраща запитване към Firewall-а дали IP адресът, от който идва заявката фигурира в списъка с оторизираните адреси.

        • Secure Connection -> Transaction Gateway – при изграждането на връзка с клиентския терминал, Transaction Gateway-ът изпраща заявка към Secure Connection за изграждане на защитена сесия с потребителя на клиентския терминал.

  • Връзки на User Authentication модул

    • Inner Relationships

      • Sessions -> User Management – двата подмодула си комуникират в процеса на отваряне на нова сесия с клиентския терминал на потребителя. При установяването на такава Sessions подподула изпраща заявка на User Management за проверка на потребителското име и паролата, изпратени от потребителя.

    • Outer Relationships

      • User Authentication -> Data Storage – модулът User Authentication използва Data Storage модула за извличане на данните за потребителите, регистрирани в системата.

        • Users Registration -> Users Repository - в процеса на регистриране на нови потребители за системата User Registration подмодулът изпраща заявка към User Repository за добавянето на потребителя към списъка с вече съществуващите такива след като акаунтът бъде активиран от клиента. (При регистрацията на нов потребител клиента попълва форма с данните си и се изпраща заявка за създаване на нов акаунт към сървъра. От своя страна той я обработва и изпраща e-mail за активация на посочения от потребителя адрес. Същинското добавяне на акаунта в базата данни на потребителите се извъшва от User Repository, след като User Registration подмодула е получил съобщение за активацията му.)

        • User Management -> Users Repository - User Management изпраща заявка към Users Repository за получаване на данните за даден потребител при неговия login в ситемата и за презапис на данните за потребител при тяхата промяна от него или от администратор на системата.

      • User Authentication -> Security - User Authentication модулът използва Security за криптирането/хеширане на паролите при регистрация и login на потребителите.

        • User Registration -> Cryptography – при регистрацията на нов потребител в системата User Registration изпраща заявка към Cryptography модула за криптирането/хеширането на всички пароли и конфиденциални данни за него.

        • User Management -> Cryptography - User Management използва криптирането/хеширането от Cryptography при Login на потребителя за проверка за съвпадение между въведената парола и криптираната/хешираната такава, запазена в базата данни на регистрираните потребители.
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница