Back Office Wrapper
-
BODataChannel CreateSecureDataTransferChannel(Socket s) – създава защитен комуникационен канал чрез SSL посредством VPN
-
CloseSecureDataTransferChannel(BODataChannel bodc) – затваря защитен комуникационен канал
-
RepairDataTransferChannel(BODataChannel bodc) – поправя комуникационния канал при проблем със свързаността
-
LogDataTransferChannelProblem(BODataChannel bodc, Error e) – записва данните свързани с проблеми в комуникационните канали (за да се проучат от администраторите в случай, че проблема по трасето е от страна на сървъра)
-
BODatagram GetIncomingMessage() – приема новопостъпило съобщение и го записва в опашката на новодошлите BO съобщения
-
SendOutgoingMessage(BODatagram bod) – изпраща съобщение към Back Office системата
-
LogError(Error e) – записва в логовете данните свързани с възникнал проблем при комуникацията на Back Office системата и сървъра
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
AdminNotificationMails(List m) – записва списък от мейл адреси на отговорните за този модул администратори (за да бъдат известени при проблем касаещ тяхната намеса)
-
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) – изпраща съобщение за грешка към клиентските терминали
-
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) – записва потребителските настройки на клиентския терминал на даден потребител
-
Configuraton Data
-
String GetModuleOption(String modulename, String key) – взема стойността на определен параметър за даден модул
-
Hash GetAllModuleOptions(String modulename) – списък с всички двойки ключ-стойност от опции на даден модул
-
SetModuleOption(String modulename, String key, String Value) – записва дадена стойност за определен ключ от конфигурацията на даден модул
-
Logger
-
AddLogMessage(Error e, Message m) – добавя ново съобщение в логовете
-
ClearLogs() – изчиства логовете по заявка на администраторите на системата
-
Интерфейси на модулите на клиентския териминал
-
Communicator
-
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) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Main Data Processor
-
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 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) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
AddNews(News n) – добавяне на новина
-
RemoveNews(News n) – премахване на новина
-
List GetNews() – създава списък на актуалните новини
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
News (този модул взема данни от MDP и няма активна комуникация с никой модул – независим е)
-
NotifyUpdate() - известява модула за новодошли новини, които да обработи
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
List GetNews() - връща списък с новини
-
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) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Inquiries Processor (този модул взема данни от MDP и няма активна комуникация с никой модул – независим е)
-
Inquiry GenerateInquiry(Account a) – генерира справка за дадена сметка
-
ExportInquiry(Inquiry i, FileFormat ff, String file) – записва генерираната справка в определен формат на твърдия диск
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Graphics
-
UpdateInterval(Integer ms) – времеви интервал през който данните и графиката се обновяват
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
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) – премахва индикатор за технически анализ
-
Analysis
-
Expert Analysis
-
Expert Analysis IDE
-
Expert Analysis Simulator
-
Run(List q) – изпълнява набор от заявки
-
Suspend() - спира временно изпълнението
-
Resume() - продължава спряно изпълнение
-
StopExecution() - прекратява изпълнението на текущите заявки
-
Expert Analysis Debugger
-
AttachProcess(QProcess qp) - закача дебъгъра към изпълнение на експертен анализатор, който да се следи
-
DbgData GetDebugData() - връща дебъг информация за текущия прикачен процес за дебъг
-
Stop() - спира текущото изпълнение на процеса
-
Continue() - продължава от спряно изпълнение на процеса
-
StepOver() - постъпково изпълнение без влизане в извикваните функций
-
StepInto() - постъпково изпълнение с влизане в извикваните функций
-
Terminate() - прекратява изпълняването на процеса и го откача
-
Expert Analysis Language Interpreter
-
Boolean FormatValidation(String sc) – валидира формата на написания код на експертния анализатор
-
List DecomposeSourceCode(String sc) – декомпозира кода на фрагменти подходящи за генериране на заявки
-
Query SourceCodeCompile(String sc) – компилира фрагмент код до заявка
-
QuerySet SourceCodeCompile(List sc) – компилира фрагменти код и създава списък със заявки, които представляват команди за изпълнение от Query Manger-а
-
List GetCompilationErrors() - връща списък с възникнали грешки при компилиране на кода
-
Queries Manager (QuerySet е списък със заявки, които представляват изпълнението на експертния анализатор)
-
Market Obsever (този модул взема данни от MDP и няма активна комуникация с никой друг модул)
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Queries Analyser
-
Boolean CheckQuerySet(QuerySet qs, MarketData m) – проверява дали са изпълнени условията за даденото множество заявки
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Boolean CheckQuerySet(QuerySet qs, MarketData m) приема данни за пазара и Куирита и връща тру или фолс
-
Query Engine
-
AddQuerySet(QuerySet qs) – добавя множество от заявки за изпълнение
-
DeleteQuerySet(QuerySet qs) – премахва множество от заявки за изпълнение
-
UpdateQuerySet(QuerySet old, QuerySet new) – обновява дадено множество от заявки с друго
-
SuspendQuerySet(QuerySet qs) – деактивира множество от заявки за изпълнение
-
ActivateQuerySet(QuerySet qs) - активира множество от заявки за изпълнение
-
List GetAllQuerySets() - връща списък с всички множества от заявки
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
MailData GenerateMailData() – генерира данни за изпълнен експертен анализатор, които да бъдат изпратени към клиента под формата на e-mail
-
E-mail Notification
-
AssignEmailAddress(String mail) – добавя адрес, на който да се изпрати мейл при изпълнение на някой от експертните анализатори
-
SendNotificationMail(String mail, MailData m) – изпраща е-mail с данните за изпълнен експертен анализатор
-
Technical Analysis
-
List GetActiveIndicators() - връща списък с всички активни индикатори (ползва се от Graphics модула)
-
Indicator CreateIndicator(Inducator Parameters p) – създава нов индикатор на технически анализ
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
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>) - записва настройките на потребителя
-
Data Storage
-
Memento GetMemento() - връща мементо-обект за съхранение в History Data Storage
Всички подмодули трябва да имплементират следните методи:
T зависи от модула, върху който се извършват операцийте
-
List GetAll() – взема списък с всички елементи от дадения подмодул
-
Remove(T item) – премахва елемент от дадения подмодул
-
Add(T item) – добавя нов елемент в дадения подмодул
-
T Update(T item, Т newItem) – опреснява съществуващия елемент item в подмодула с данните от newItem
-
History Data Storage
Всички подмодули трябва да имплементират следните методи:
T зависи от модула, върху който се извършват операцийте
-
List GetAll(TimeInterval ti) – взема списък с всички елементи от дадения подмодул
-
Remove(T item) – премахва елемент от дадения подмодул
-
Add(T item) – добавя нов елемент в дадения подмодул
-
Configuration Data
-
ConfigData LoadConfigData(File f) – прочита конфигурационен файл в XML формат
-
SaveConfigData(File f, ConfigData cd) - записва конфигурационен файл в XML формат
-
GUI (Модулът отговаря за изпълнение на функционалностите на клиента чрез графичен интерфейс)
-
AssignErrorMessage(Error e) – приема ново съобщение за грешка възникнала в някой външен модул, която има отношение към този модул
-
Връзки между модулите (Uses structure)
-
Връзки между модулите на сървъра
Фиг.1 Връзки между модулите на сървъра
На фиг. 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 на потребителя за проверка за съвпадение между въведената парола и криптираната/хешираната такава, запазена в базата данни на регистрираните потребители.
|