OwlSimulation Developer`s GuideV2

advertisement
OwlSimulation Developer’s Guide
Please contact Daniel (IRC, Skype, or dpodder@gmail.com) if you want to edit this document. DO NOT
UPLOAD A NEW COPY UNDER ANY CIRCUMSTANCES!
Introduction
The purpose of this guide is to give you a quick yet informative introduction to the OwlSimulation
codebase. If you are planning on working with the OwlSimulation code—whether debugging it,
extending it, or using it as the foundation for a new project—this is the guide for you!
Formal Specifications
The official OwlSimulation System Requirements and Specifications document is a painstakingly detailed
reference document, and if you haven’t read it yet, start by reading the spec document first. Pay
particularly close attention to the terminology section, the conceptual system overview diagram, and
the implementation section (which also contains a top-level system block diagram). These diagrams are
not duplicated in this document, but the rest of the sections assume that you have a broad
understanding of their structure, and that you have them in front of you for reference.
Team Foundation Server (TFS)
The OwlSimulation code is maintained in a Microsoft Team Foundation Server (TFS) project. Please
contact the Rice University COMP 410 Staff (headed by Dr. Steven Wong) for details on how to access
the server.
The code in TFS is separated into several branches. The principal root of the branching structure is the
MAIN branch; all other branches are descendants of MAIN.
MAIN has two direct descendants (children), DEMO and DEV/Master. DEV/Master is the “master”
development branch, which is where all developed features are propagated into and merged from.
DEMO is a snapshot of MAIN, containing a frozen feature set for the latest demonstration, in addition to
temporary hacks and/or fixes that were necessary to get the code up and running. Changes from DEMO
are never integrated back into MAIN.
DEV/Master itself has four children:




DEV/Framework, the developer branch for the Framework team
DEV/Simulation, the developer branch for the Simulation team
DEV/UI, the developer branch for the UI team
DEV/ITB ("Inter-Team Branch"), a developer branch for code that is written outside of any one
team’s domain
Each team actively worked in these four developer branches. As features were finished and tested in
each developer branch, they would be Reverse-Integrated (RI-d) into the DEV/Master branch. Other
teams’ finished, integrated features could be Forward-Integrated (FI-d) from DEV/Master into any of the
four developer branches.
The four developer branches may themselves have descendants, but any such branches were created
for team-specific needs and will not be documented in detail here. There are also several branches in a
folder called “OLD”; these branches are archived versions of obsolete branches and should generally be
disregarded.
Solution Structure Overview
AspProviders: 3rd party utility code from MSDN to deal with Azure Table
No need to change anything within this project
Refer to AzureTableWrapper for usage examples
OwlSimCloudFabric: Azure Cloud service definitions
Right click and select "Properties" to modify
OwlSimulation.Domain:
Abstract:
ISessionNetworkLayer: Interface for SessionNetworkLayer
Concrete:
AzureTableWrapper: Utility class for storing stuff in Azure Table
COutputResult: Container for the simulation output data
OwlQueueMessage: Container for message between frontend and backend
Packer: Utility class for serializing OwlQueueMessage and put in Azure Queue
QueueSessionNetworkLayer:
Queue Implementation of Session NetworkLayer handling communication
between frontend and backend
SimulationNetworkLayer:
Simulation NetworkLayer Encasuplation that distriute modules, connections to
the workerHandler lists
StorageLayer: Database encapsulation
Entities:
Entities classes used in Azure Table
SimulationManager:
SimulationManager: Class that manages the Simulation Instances
WorkerRole: Azure WorkerRole that hosts the SimulationManager
Building OwlSimulation
TODO
Deploying OwlSimulation
TODO
Download