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