New User Special Price Expires in

Let's log you in.

Sign in with Facebook


Don't have a StudySoup account? Create one here!


Create a StudySoup account

Be part of our community, it's free to join!

Sign up with Facebook


Create your account
By creating an account you agree to StudySoup's terms and conditions and privacy policy

Already have a StudySoup account? Login here


by: Cleora Stiedemann


Marketplace > Rice University > ComputerScienence > COMP 410 > SOFTWARE ENGINEERING METHODOLOGY
Cleora Stiedemann
Rice University
GPA 3.72

Stephen Wong

Almost Ready


These notes were just uploaded, and will be ready to view shortly.

Purchase these notes here, or revisit this page.

Either way, we'll remind you when they're ready :)

Preview These Notes for FREE

Get a free preview of these Notes, just enter your email below.

Unlock Preview
Unlock Preview

Preview these materials now for free

Why put in your email? Get access to more of this material and other relevant free materials for your school

View Preview

About this Document

Stephen Wong
Class Notes
25 ?




Popular in Course

Popular in ComputerScienence

This 13 page Class Notes was uploaded by Cleora Stiedemann on Monday October 19, 2015. The Class Notes belongs to COMP 410 at Rice University taught by Stephen Wong in Fall. Since its upload, it has received 25 views. For similar materials see /class/224947/comp-410-rice-university in ComputerScienence at Rice University.

Similar to COMP 410 at Rice University




Report this Material


What is Karma?


Karma is the currency of StudySoup.

You can buy or earn more Karma at anytime and redeem it for class notes, study guides, flashcards, and more!

Date Created: 10/19/15
Areas of Different Thrusts Model View Controller Networking Research ModelViewNetworking Teams Team of Team Leaders write Controller Customer wants a proposal for project in 2 weeks View Team Tablet Interface Chelsea Hy AleX K Jay Kristen Model Team Chase DaVid AleX S Khadir Networking Team Barnaby Patrick KeVin Adam The following folders and les are missing from the source control but can be found in the uploaded zip le in Final Documents library The following list may be over speci ed that is you may not need all the les for the solution to compile The underlined les may be all that is really missing clientextem folder missing contains ICSharpCodeShare2pubdll moved to clientexternz and Irrlichtdll server extem 7 missing les GentleCommondll moved to serverexternz Gentlecon 9 only the one in serverSkyNet is needed and needs to be set for copy to outgut 2 ICSharpCodeSharpZipLibdll QuickGraphAlgorithmsdll clientProtoView 7 IrlichtNETdll missing Is this the right place for this le 7M oved to clientextern and reference in Proton39ew adjusted to re ect this clientControllerResources 7 folder is missing contains skynetlogosmjpg moved to images clientControllerskynetico 7 le missing moved to images After les are copied you need to click on the erroneous references in the solution explorer to refresh them so they can nd the new les Note On Skynetl My Documents will be mapped back to Ownet so don t use the VS default project directory Make a directory for yourself and have VS put the local les there when downloading from TFS The SQL Server instance must be the default unnamed instance The SQL Express instance installed by VSNET 2005 is a named instance SQL2005 so another install is needed Use the install from the SQL Express web page at Microsoft which will eventually in the install process allow you to do a default instance installation SQL Server defaults to the default instance installation so there is no problem there To run the view or the dummy network set the startup project to be clientcontroller To start the server only set the startup project to be ServerMain See the rest of the documentation for the input parameters and operation of the view and server When the SkyNET server is run for the rst time the Windows Firewall should ask if vshostexe should be allowed through the rewall The le to allow is actually called serverServerMainbinDebugServerMAinvshostexe in case you have to set it manually Irrlicht may not run properly if the hardware acceleration of the graphics card is not set to full acceleration You may get strange error messages such as Cannot load builtin font A way to check if the problem is in the Irrlicht Engine is to download and run the prebuilt demos from the Irrlicht site If the problem is in the hardware acceleration setting the demos will run in OpenGL or software rendering modes but not in DirectX modes As of 73 106 the code in the source control should compile and run with no problems other than known bugs with regards to nonoperational features Model Design Document Description of the primary elements of the Model Agents An agent is similar to a virtual client that exists within the server This agent has two primary roles in the system event handling and behavior requests Several of the implementation details of the agent are still not very clear at this moment but we have a good idea of the features we want this part of the program to have Agents will exist in a common process that has clearly de ned interfaces between both itself and the clients as well as between itself and the SkyNet world Traveling between itself and the SkyNet world will be behavior requests event noti cations and data returning from query entity behaviors An Agent has the ability to request a behavior on the world In the standard agent an agent will simply relay any request that a client has on to the SkyNet world In a more advanced client the agent itself will be able to make decisions query the world and run behaviors under the direction of the user or completely autonomously If we later wanted to implement a computer player using AI all it would need would be to implement the same Agent interface which allows it to request behaviors on the world and receive noti cation when the state of the world changes in different ways The behaviors are passed from the Agent to the SkyNet world by handing it off to the Judge This Judge is the one to determine if an agent has the permission to run this behavior on the world Also an Agent can request a query on the world for a particular entity a group of entities or all entities that have a particular attribute or set of attributes These requests are formed via an IQuery object that the agent can generate This IQuery object has several methods that can be used to specify search parameters for entities in the world This again goes to the Judge which determines if that Agent has the permission to view that entity in the world or which attributes of that entity the Agent has the permission to view Finally an agent can register an attribute listener on an attribute eld of an entity This will add tell the world that this agent would like the Judge to notify the agent when that attribute eld of the particular entity is changed and the appropriate listener code will be run in the agent accordingly This gives the ability to have automatically responding behaviors and rapid noti cation of the client if something that it cares about changes without needing to poll the world for information Judge A stateless class which is responsible for both insuring that any request on an Entity to perform a behavior is valid and also that when an Entity requests a behavior be performed on the world that the behavior is checked by the rule set before it get executed Since the Judge is stateless either a new Judge instance will be initialized for each behavior request called from an agent or all of the methods in the class will be static allowing numerous threads to call that method without any need for internal state Included in the behavior request is enough information is enough information for the Judge to query the appropriate permissions and allow or disallow the behavior from being requested on the entity Similarly a Judge instance will receive a behavior request from an Entity with the necessary associated data for it to search the Rules database as well as any necessary Entities in the world in order for the Judge to nd any rules that will apply to this behavior After the rules have been applied to the behavior changing it in some way the Judge then applies the behavior to the world changing the world s state The Judge interfaces with a back end SQL rules database These rules will require the Judge to get certain information from the requesting entity and the surrounding world to know if they apply to the behavior Additionally these rules can have a precedence ordering that will allow them to be chained in a hierarchy and have lower precedence rules not interrupt the action of higher priority rules SkyNet World A dataset including entities and rules and a judge Inside the world there will be entity database rule database judge class that will be initialized every time a run behavior request being called So the whole world is stateless All entities in the world are database entries and will be managed by the sql database The stateless attribute of the world will give us the ability that in out future implementation we can extend it to a distributed system Entities Database entries that defines what attributes behavior and permission the entity have These are database entries that keep track of several things First it maintains a list of attributes which are simply key value pairs Common attributes will be location hit points ammunition and other such values that it is important for the system to know but are only defined by what type of game is being played The use of attributes holding the location allows the server model to remain unchanged even if the gametype is drastically changed only needing changes on the view side to understand a different gametype These entities also maintain a list of behaviors that they are allowed to do For example a tank might have the behaviors move and fire Finally the entities maintain a permission table of which agents have the permission to do a number of things with the entity The permission table will be roughly similar to the user permissions in Unix where each attribute and behavior will have ags determining who is allowed to read or change an attribute and who is allowed to execute a behavior Additionally the permissions will support granting or denying permission to a group of users defined by the administrator and not only the owner of the Entity Behaviors A behavior is something that is enacted by an entity on the world It can change the entity itself another entity or even a collection of entities The basic set of behaviors is to create a new Entity to destroy an Entity and to change the attributes of an Entity These three basic behaviors will define most interactions that an entity could want to do to another entity since changing attributes equates to doing damage moving using ammunition and any other concrete attribute of the entity The other options of creating and destroying an entity allow the entity to both build new units or destroy ones that it has the permission to For example when a entity execute a behavior which is do damage to another entity if the judge see that the damage will change the hit point of another entity to equal or smaller than 0 the judge will call the destroy behavior of an administrator entity and then actually destroy the entity Interfaces To facilitate testing and exibility a number of interfaces will be agreed upon Among those that are going to be created are IClientToAgent which is the interface for the outside world to talk with the model IAgentToWorld for Agents to enact behaVior and information queries on the world Additionally we have already developed an IQuery interface which allows for the creation of an Entity query request that an Agent can send the world Finally there will need to be an IAgent interface since we want the capability for many different types of Agents to eXist in the world at the same time while operating in the same manner Sarah how the database is organized Entities attributes attribute types rules behaviors assemblies query parameters The database is divided into two sets of tables the relationship between entities attributes and attribute types and the relationship between rules behaviors assembles and query parameters In case you were wondering Sn stands for SkyNet When designing the tables we noticed that a class called Attributes already existed in MSDN so as a convention we added the letters Sn before all of the database classes what is stored in the database Entities and Attributes Many to Many Relationship Entities can have many attributes Attributes can be of many types Entities and attribute type have a many to many relationship Entities can have many attributes and each attribute type can be used by many attributes For example two fairies have an HP attribute and an MP attribute The HP and MP are attribute types and therefore there will be two entries in the attribute type table However there will be four entries in the attribute table because each fairy has its own HP and MP values The attribute table is a way of mapping two one to many relationships into a many to many relationship to keep track of the value of the attribute Type Safety The type of the attribute value is specified by the attribute type Two columns in the attribute table for attribute value Edited Gentle code for placement updating and retrieval The attribute value can either be a double or a string The type of the attribute value is specified by the attribute type There are two columns in the attribute table for attribute value string value and double value By looking at the attribute type table the Gentle code is able to determine which column to place update and retrieve the attribute value Rules and Behaviors Stored in database Keyed by Name Rules and behaviors are also stored in the stored in the database They are keyed by their name and mapped to the assembly table Assembly Table Keyed by guid Store the assembly filename Pull rulebehavior from dll The assembly table maps a guid to the path name of a dll A dll can store rules behaviors or both how we search for everything and how it is returned Querying Attribute types Entities Behaviors Rules By using the database adapter and different parameters the model is able to query the database for lists of attribute types entities behaviors rules Attributes Add attribute type Get attribute type from string name or guid Get all attribute types Attribute types must be added to the database first before an entity and its attributes can be added One can query an attribute type be its name or guid You can also ask for a list of all of the attribute types currently in the database Entities By attribute type string and guid By range of attribute value of double type You can query for a list of entities that have attributes of the same type The type can be given as a string or a guid You can also search for entities that have attribute values that fall within a specific range For example Behavior By name Behaviors can be queried simply by their names John I know this isn t a clear division between speaking parts but do you have any other ideas as to how we should do it Rules Two other search parameters Querying rules is a little different While entities are just a collection of data rules are defined in code Also the querying parameters are independent of the rule itself For example you can query rules by their area of influence However a rule that alters a behavior while traversing mud may be affect more than one entity Therefore we decoupled the search parameters from the rules Querying Rules Behavior name Rule name Area of influence Point Two other search parameters Once a rule has been mapped to its parameters you can query for rules by the name of the rule the name of the behavior associated by the rule the rule s general area of influence and the two other search parameters You can also search rules by points in case you want to know which rules affect an entity at a particular location GentleNet and how we use it Object relational mapping Object oriented database to relational database mapping Object relational mapping is a way of mapping an object oriented database abstraction to a relational database backend implementation ObjectSpaces Persistent objects net framework But not out yet Ideally we would have used Microsoft s object relational mapping framework ObjectSpaces It allows for persistent objects and is compatible with the NET framework However since it is not out yet we had to look for alternatives GentleNet But this is pic of Gentle logo Does everything we need ObjectSpaces to do Free No licensing required Database backend flexibility The alternative we chose was GentleNET It does everything that we would have needed ObjectSpaces to do for us This open source code is free and no licensing is required Furthermore GentleNET has one feature that ObjectSpaces probably won t have ObjectSpaces will probably be tied down to Microsoft databases such as SQL and Access However GentleNET can be used with other types of databases such as MySQL Oracle and Firebird MyGeneration pic of MyGen logo Design database tables in SQL Server Management Studio vse snls sool so oenersse censleues ooue In oruer so or usssnsse olssses ue flrst uesloneu sne ssnles s no use ln ussslno ElmE urlslno ls ourselves e now we nsye s usssnsse adapter so snss sne usssnsse son he sulsoneu ln snu ous ulsnous affecting everysnlno else To lnlslsllze sne DacahaseAdcher reuulres s ssrlno so she nssn or she so he onsnoeu only sn usssnsse sorlns m be anged oeosuse sne Interia e so she usssnsse s ser remalns sne same verysnlno wlll work ss before Here ore sll o snese wlll hE ph sone seleoslon sne pusslhle orsnnlos you son use I don t know now Vslcallv srrsnoeu in she sexs nus ss lesss you know Xa enig 20 SnAttribule Smngva ue SnEnl B Enotmed PaventGmd SnAttribule Smngva ue 5139 De w AmhmeTvpeGmd mmme Va ueTWe SnEn B Ermthmd Parem md MM 9 AmhuteTVpeGmd mth Va ueTVDe SnEnlily SnAttribule 9 5mm 5mm pmma v Ammssm SnA uleType Ammerypecma g AmxhutsTVEGmd Va ueTVDE AmxhutEName mummy mm Daub 5m SnRule 9 Manama BEhavmrNamE Assemb vGuid Sn Location w h n 9 n a 3 m E n LowerRIghtV Arg 1 ArgZ SnBeha BEhavmrNamE AssemblyGwd SnAssembly r Assemblysum AssemblyName Assem mu mh VNENE SnLocauon R g L m mm mm W WWW W erR EhW my eNamE cananGmd Rx m2


Buy Material

Are you sure you want to buy this material for

25 Karma

Buy Material

BOOM! Enjoy Your Free Notes!

We've added these Notes to your profile, click here to view them now.


You're already Subscribed!

Looks like you've already subscribed to StudySoup, you won't need to purchase another subscription to get this material. To access this material simply click 'View Full Document'

Why people love StudySoup

Bentley McCaw University of Florida

"I was shooting for a perfect 4.0 GPA this semester. Having StudySoup as a study aid was critical to helping me achieve my goal...and I nailed it!"

Anthony Lee UC Santa Barbara

"I bought an awesome study guide, which helped me get an A in my Math 34B class this quarter!"

Steve Martinelli UC Los Angeles

"There's no way I would have passed my Organic Chemistry class this semester without the notes and study guides I got from StudySoup."

Parker Thompson 500 Startups

"It's a great way for students to improve their educational experience and it seemed like a product that everybody wants, so all the people participating are winning."

Become an Elite Notetaker and start selling your notes online!

Refund Policy


All subscriptions to StudySoup are paid in full at the time of subscribing. To change your credit card information or to cancel your subscription, go to "Edit Settings". All credit card information will be available there. If you should decide to cancel your subscription, it will continue to be valid until the next payment period, as all payments for the current period were made in advance. For special circumstances, please email


StudySoup has more than 1 million course-specific study resources to help students study smarter. If you’re having trouble finding what you’re looking for, our customer support team can help you find what you need! Feel free to contact them here:

Recurring Subscriptions: If you have canceled your recurring subscription on the day of renewal and have not downloaded any documents, you may request a refund by submitting an email to

Satisfaction Guarantee: If you’re not satisfied with your subscription, you can contact us for further help. Contact must be made within 3 business days of your subscription purchase and your refund request will be subject for review.

Please Note: Refunds can never be provided more than 30 days after the initial purchase date regardless of your activity on the site.