Git Product home page Git Product logo

iddd_nyse's Introduction

The IDDD_NYSE repository contains a set of projects
that reflect my take on the SpringTrader project
(formerly NanoTrader). It's my attempt to improve
the model using a DDD approach.

This is a work in progress. The various Bounded Contexts
(iddd_nanotrader, iddd_algotrader, iddd_nanoreports) and
the Supporting Subdomains and reusable tools found in
iddd_tradercommon are not complete. In particular when
a market order and a slice order are executed, the
requests just fall off a cliff. Currently the models
go no further than to track the number of shares
conceptually purchased, and that's it. There are other
holes in the models, too, and it will require more time
with my volunteer domain expert before this effort
provides a more realistic simulation of stock purchases.

In all this example provides a fairly decent look at
Aggregate design and the use of Domain Events in a simple
Event-Driven Architecture. Actually none of the Events
are currently crossing Context boundaries. Still, you
can look at the tests to see how the Events would be
handled if the Bounded Contexts were actually deployed.
You can also see a bit of Published Language in the
Notifications that (would) arrive in the iddd_algotrader
and iddd_nanotrader Bounded Contexts.

Note that the Account Subdomain in iddd_nanotrader has
lost its way. This should (very likely) be in its own
Bounded Context. It seems like many trading providers
are full-on financial services organizations, and user
accounts may include checking, savings, 401K, etc., in
addition to a standard brokerage/trading account. Yet,
leaving the Account Subdomain in this model allows me
to use it to teach some Context Mapping and Subdomain
identification techniques in class. It's a darling of
a legacy smell, even though I have cleaned up the model
substantially compared to the original.

I created a simple Pub-Sub messaging mechanism that I
named SlothMQ. (Yeah.) The tests that run the Sloth are
a bit slow since they pause to allow time for the creature
to scoot messages across the wire like a sloth drags its
butt across the ground. Anyway, it works, if even at a
slothful rate, and it can be run just about anywhere.

The run the tests:

1. Install Java SDK 1.7.?
2. Install Gradle 1.5 (doing all the GRADLE_HOME and PATH set up)
3. Grab the code using git into a project root named IDDD_NYSE
4. In the IDDD_NYSE root, run: gradle clean build

That's just about it. You should see the gradle test
output in each of the subprojects:

iddd_algotrader/build/reports/tests/index.html
iddd_nanoreports/build/reports/tests/index.html
iddd_nanotrader/build/reports/tests/index.html
iddd_tradercommon/build/reports/tests/index.html


Actually iddd_nanoreports doesn't do anything yet. It's
just a placeholder to remove the reporting type things
from the iddd_nanotrader Bounded Context. This may change
quite a bit by the time it's done.

If you get a chance to help, I welcome your participation!

Vaughn Vernon
Author: Implementing Domain-Driven Design

iddd_nyse's People

Contributors

vlingo-java avatar

Watchers

Steve Swing avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.