Teaching
6515 S '13
 
Projects
Presentations
SVN
 
Acquire
Acquire, Revised
Acquire Plan
Project 1
Project 2
Project 3
Project 4
Project 5
Project 6
Project 7
Project 8
Project 9
Project 10
Project 11
Project 12

Project 12

Due date: 4/15, 23:59

Objective 1: to implement the interaction protocol as a remote interaction

Objective 2: to evaluate your progress (memo)


Task 1: Your company has decided to take the final step. After a careful evaluation of the various proposals, your manager has chosen XML as the data exchange language for the remote calls. The table below specifies the exact message format for each exchange of data.


 administrator 
  +
  |           player 
  |             +
  |   signUp    |     
  |<------------| <signup name=String />
  |============>| <signup name=String />
  |             |
sign up

 administrator   player 
  |             |
  |    setup    |     
  |------------>| State
  |<=========== | <void />
  |             |     
start

 administrator   player1 ... playeri ... playern, it is playeri's turn
  |             |             |             |
  |         take turn         |             | 
  |-------------------------->|             | Turn 
  |<==========================|             | Placement/O
  |             |             |             |  
  see end of turn 
turn without merger

 administrator   player1 ... playeri ... playern, it is playeri's turn
  |             |             |             |
  |         take turn         |             | Turn 
  |-------------------------->|             | 
  |             |             |             | 
  |             |             |             | 
  |      place(tile, hotel)   |             |  
  |<--------------------------|             | Placement 
  |             |             |             | 
  |             |             |             | 
  |          keep()           |             | 
  |------------>|             |             | Keeps
  |<============|             |             | Booleans
  ...........................................   for = 1 ... n 
  |             |           keep()          |
  |---------------------------------------->|  
  |<========================================|
  |             |             |             |
  |          place()          |             |  
  |==========================>|             | Players
  |             |             |             |  [[ all remaining players ]]
  |        take turn(.)       |             |
  |<==========================|             | Order
  |             |             |             |  
  see end of turn 
turn with merger

 condition: if the administrator has tiles left

 administrator   player1 ... playeri ... playern, it is playeri's turn
  |             |             |             |
  |  newTile    |             |             |
  |-------------------------->|             |  Tile
  |<==========================|             |  <void />
  |             |             |             |  
  |             |             |             |
  |  inform     |             |             |
  |------------>|             |             |  State 
  |<==========================|             |  <void /> 
  ...........................................    for i = 1 ... n 
  |                 inform                  |
  |---------------------------------------->| 
  |<========================================|
  |             |             |             |
end of turn

 condition: the administrator has discovered that the game is over 

 administrator   player1 ... playeri ... playern 
  |             |             |             |
  | end of game |             |             |
  |------------>|             |             |  Score/State
  |<============|             |             |  <void /> 
  ...........................................     for i = 1 ... n 
  |                 end of game             |
  |---------------------------------------->| 
  |<========================================|
  |             |             |             |
end of game

Here is the precise specification of the message formats:

  
  State  = <state> Board Player ... </state>
  Board  = <board> Tile ... Hotel ... </board>
  Hotel  = <hotel name=Label>Tile Tile Tile ...</hotel> 
  Tile   = <tile column=Column row=Row />
  Player = <player name=String cash=Cash> Share ... Tile ... </player>
  Share  = <share name=Label count=Nat />

  Turn = <turn> Board Player ... </turn>

  Placement/O = <pbuy> Placement Order </pbuy>
  Placement   = <placement> Tile XHotel </placement>
              | <placement> Tile </placement>
  Order       = <order />
	      | <order> Xotel </order>
	      | <order> Xotel Xotel </order>
	      | <order> Xotel Xotel Xotel </order>
  Xotel       = <hotel label=Label /> 

  Players  = <players> Player ... </player> 

  Keeps    = <keep> XHotel </keep>
           | <keep> XHotel XHotel </keep>
           | <keep> XHotel XHotel XHotel </keep>

  Booleans = <keep> Boolean </keep> 
           | <keep> Boolean Boolean </keep>
           | <keep> Boolean Boolean Boolean </keep>

  Score/State = <score> Score Score ... State </score>
  Score       = <result name=String score=Nat />

  Label   = "American" | ... | "Worldwide"
  Row     = "A" | ... | "I"
  Column  = "1" | ... | "12"
  Boolean = <true /> | <false />
  Cash    = String, interpretable as a natural number (non-negative integer) 
  Nat     = String, interpretable as a natural number (non-negative integer) 

Remote players have 3 seconds to respond with returns or callbacks to a call. If a player violates any of the Acquire rules or the communication protocol, the server must eliminate the player. The server may shut down an Acquire game if all players have been eliminated.


Task 2: Create a README.pdf file that explains which obstacles you encountered in implementing the remote proxy pattern.

In principle, implementing the remote proxy pattern requires no changes to the existing components. Assuming the protocol is implemented as required, the insertion of remote proxies means the creation of additional components that implement the interfaces of the communicating pieces, i.e., the administrator and the player(s) in our case. The only other change concerns the "linking" code, that is, the piece of code that wires together the administrator and the players.

Your README file should describe which components you had to modify because the existing code base fails to live up to the specified protocol. The memo is not to exceed a single page (letter format, 11pt font, 16pt base line, 1.5in margin all around), including the memo header. Your grade will depend on the memo format, its English correctness (style, grammar, organization), and the content.


Task 3 (OPTIONAL): Your manager has been asked to evaluate the team members. Each team member must get a chance to evaluate himself or herself.

Write a memo that describes your learning process over the course of this semester. The memo should consist of two enumerations. The first one should describe up to three important insights about software development that you think you internalized. Assign yourself a score on a scale of 1 (perfect understanding) to 4 (partial understanding but will work on this issue because it is important). The second enumeration should describe up to three ideas about software development that you wish you understood in more depth after this semester.

Physical specs: The memo is not to exceed a single page (letter format, 11pt font, 16pt base line, 1.5in margin all around), including the memo header. Your grade will depend on the memo format, its English correctness (style, grammar, organization), and the content.

Send the memo to matthias@ccs.neu.edu.

As usual, the grade for the memo will consist of a score for your writing and a score for "content" (e.g., is it possible to learn a certain skill in this course or is some idea about software development teachable/should it be taught in a university-level course). You may ask your partner for help in editing, but the memo is up to the individual.

If you write this memo, I will assign you another writing grade and factor it into the overall writing score.


last updated on Wed Apr 10 20:51:12 EDT 2013generated with Racket