CSPP 57100
Lab 2 Home Page
Laboratory in Object Oriented
Technologies
Spring 2011
NB: If you have not already signed up for the course list, do so here.
Lab Description:
This lab assumes that Lab 1 has been successfully completed.
If you are having trouble installing software, we will work on
those issues during this second lab.
Lab Schedule:
We will first review what you have produced during the first two weeks.
In this review, you will demonstrate to the class what you have
done during the first two weeks, showing your progress in the use case
model, showing your progress on the use cases, and discussing what you
are planning on accomplishing during the upcoming two weeks, with a
discussion of what you plan to demonstrate during the third lab.
We will then address any outstanding issues with software and
installation. Then we will continue our introduction to .NET and
C#.
LAB 2 ASSIGNMENT (Read PNFM chapters 3 and 4).
You are to continue fleshing out your use cases and begin to create a more thorough UML design for the
framework. Requirements for the framework will continue to be delivered
during the labs on an ongoing basis. Based on your initial
UML design, you are to begin to flesh out the high-level classes (code) that
support the framework's composition and continue to integrate these initial main
classes (with copious stubbed out functionality) into the trading
system code base, so that it compiles and executes. You can and
should start off small and simple, integrating your fledgling framework with just
the order matching engine to start with.
You should also begin to modify the two core components of the trading code, the matching engine, and the broadcast engine, so that:
1. The broadcast engine reads a data feed (to be provided) and
broadcasts the trades to the matching engine (note you will need to
code this communication mechanism--which should be implemented using
multicasting (see PNFM chapter 4, pp. 213-216, specifically,
MCastServer and MCastClient for examples on how to implement
multicasting);
2. The matching engine can accept trades from a simple program
that you will write, and match your trades to the incoming feed.
This program should be a separate "client" program, and should
communicate with the matching engine either via sockets, via WCF
Remoting. You are welcome to use another mechanism if you prefer.
Again, see PNFM chapter 4 for examples with sockets and see PNFM
chapter 5 on remoting).
In your class design for the framework, you will want to continue to
make
significant use of inheritance and abstract classes. In Lab 2,
you are to begin to think about hierarchies of Trades, and issues of
composition in the framework. Although the
framework itself is linked to applications via composition, the
internals of the framework should leverage abstraction and inheritance.
Specifically, you two pick two of the following services in the
framework, and begin to flesh out these services per your use cases,
and begin to integrate the fledgling framework into your modified
trading system code.
Log Information (allows application to log information based on severity)
Exception Framework (creates a hierarchy of exceptions for the framework with alerting)
Runtime Monitoring and Tracing Service (monitors the runtime execution of the application with alerting)
Auditing Service (allows for auditing of system activities)
Notification Service (notifies via email/paging/txt msg on events)
DELIVERABLES FOR LAB 2 (to be delivered during Lab 3):
For your review during Lab 3, you should be able to demonstrate a
running trading engine (you can focus on just the matching engine with
a few stubbed trades), and show how your fledgling framework is invoked
from the trading engine (for example, you could demonstrate how logging
is handled through the framework, or an exception hierarchy, or event
notification). You should also continue to demonstrate your use
cases and class model.
I can be reached at several email addresses, among them:
mark@cs.uchicago.edu
mshack@post.harvard.edu