Study Guide for Quiz - Software Engineering | COMP 410, Quizzes of Software Engineering

Material Type: Quiz; Class: SOFTWARE ENGINEERING METHODOLOGY; Subject: Computer Science; University: Rice University; Term: Fall 2008;

Typology: Quizzes

Pre 2010

Uploaded on 08/16/2009

koofers-user-vn8
koofers-user-vn8 🇺🇸

9 documents

1 / 3

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Paul Kwiatkowski
Back-End/Front-End Liaison
Quest Design and Development Document
Wednesday, November 26, 2008: 7:00 pm
Eric and I ran around in circles for 3 hours about quest design and came up with a
very distinct set of tasks to accomplish in order to implement them. Quests will be, for
our purposes, treated not as an explicit entity, but as an installer for a set of permissions
and interactions that facilitate a cohesive chain of events.
The design we put forth is, admittedly, a bit shy of ideal. It is instead the most
cleanly encapsulated design we could achieve without having to significantly alter other
structural systems (notably storage).
Quests provide three distinct functionalities:
1. The set of definitions upon which the quest is dependent, aka the delegates for
both permissions and interactions that must exist within the game world for the
quest to be implemented. These should be made available for use by the installer
in two separate methods:
·One for retrieving permissions paired with a named permission identifier (we
presently lack a PermissionIdentifier class, but this is essentially what we
need). It has been decided that the IPermission interface be expanded slightly
to allow convenience methods returning a permission identifier (for both
convenience in use as well as storage). The resulting code change resulting
from this is slight and a similar implementation was already created (but not
implemented) in the PermissionDelegateConstants class.
·The other should provide pairings of the interactions required along with their
interaction identifiers.
2. Be able to present a structured request (a design detail I left up to Eric) for more
information to the installer (aka respond to a “what do you need?” method call
with “I need an item ID for a vendor and key master.”).
3. An install(…) method that installs the quest interactions on the proper items and
the permissions on the proper interactions, be they general or gameitem specific.
Please see the design note about this method in the “Design Decisions” section.
A Quest Installer will also be created to facilitate the addition of these elements to
the game world.
Two important classes need to be created:
1. Quest Interface (with concrete implementation).
2. QuestInstaller class.
The following tasks have been assigned:
·Paul:
pf3

Partial preview of the text

Download Study Guide for Quiz - Software Engineering | COMP 410 and more Quizzes Software Engineering in PDF only on Docsity!

Paul Kwiatkowski Back-End/Front-End Liaison Quest Design and Development Document Wednesday, November 26, 2008: 7:00 pm Eric and I ran around in circles for 3 hours about quest design and came up with a very distinct set of tasks to accomplish in order to implement them. Quests will be, for our purposes, treated not as an explicit entity, but as an installer for a set of permissions and interactions that facilitate a cohesive chain of events. The design we put forth is, admittedly, a bit shy of ideal. It is instead the most cleanly encapsulated design we could achieve without having to significantly alter other structural systems (notably storage). Quests provide three distinct functionalities:

  1. The set of definitions upon which the quest is dependent, aka the delegates for both permissions and interactions that must exist within the game world for the quest to be implemented. These should be made available for use by the installer in two separate methods: · One for retrieving permissions paired with a named permission identifier (we presently lack a PermissionIdentifier class, but this is essentially what we need). It has been decided that the IPermission interface be expanded slightly to allow convenience methods returning a permission identifier (for both convenience in use as well as storage). The resulting code change resulting from this is slight and a similar implementation was already created (but not implemented) in the PermissionDelegateConstants class. · The other should provide pairings of the interactions required along with their interaction identifiers.
  2. Be able to present a structured request (a design detail I left up to Eric) for more information to the installer (aka respond to a “what do you need?” method call with “I need an item ID for a vendor and key master.”).
  3. An install(…) method that installs the quest interactions on the proper items and the permissions on the proper interactions, be they general or gameitem specific. Please see the design note about this method in the “Design Decisions” section. A Quest Installer will also be created to facilitate the addition of these elements to the game world. Two important classes need to be created:
  4. Quest Interface (with concrete implementation).
  5. QuestInstaller class. The following tasks have been assigned: · Paul:
  1. Update IPermission with expanded functionality described above under Quests in section 1, bullet 1.
  2. Create and Implement the QuestInstaller class.
  3. Additionally, I am tasked with cleaning up and (finally) switching us to to the XML Game World. · Eric:
  4. Create an AddAsRootPermOfType() method to both FullGeneralInteraction and FullGameItemInteraction for use in permission installation.
  5. Create the Quest Interface.
  6. Implement a concrete Quest. Focus is on the Quest’s framework, not the specific Interactions and Permissions needed.
  7. Create any necessary new Permissions and Interactions for the concrete quest. Design Decision: Install() Method and an underpowered Installer The main decision was one against my initial idea of having a Quest be essentially a data structure which contains the permissions and interactions to be installed, along with possibly any new game items to be created. This would be ideal, because the Installer could actually live up to its name and install the quest, which would just be data giving rise to a scenario. The trouble, however, came in defining how particular relations would be maintained between data that would be unspecified until run-time, such as a permission located on an interaction of a game item. That is simple to install in a linear fashion. In fact, creating all new game items, then adding all interaction/permission pairs, would work nicely, if there were any standard way of specifying symbolic names for these interactions inside the code, yet without specifics prior to runtime. This primarily arose to handle permissions attached to one item (x) having a permission-attribute (p-subx) which references another item (y)’s item id. Regardless of the order to parse it, it is hard to keep around data about item (y)’s item id if you: a. Don’t know if you will need it at all. b. Can’t identify the situation in which you actually need it when it occurs. If that sounds complicated, then you’re perhaps getting a sense of how our brains felt when we tried to make a dependence model of any possible combination of items, interactions and permissions. Before we simply decided to take the less-elegant path, we were considering a complicated 3-dimensional data structure with some relational data included… at which point my cerebrum blew a fuse and I yielded to Eric’s install() method, which we both agree is not elegant, nor ideal, but solves a problem which is otherwise insurmountable. If anyone has a great idea of how to aggregate permissions, game items and interactions in a way such that they can be passed along and added to the world with any set of dependencies preserved, feel free to let Eric or I know, because that would be wondrous. The best I can think of is emulating what is done by a linker at compile time with symbol tables and whatnot, but that sounds like, pardon my French, a bitch-and-a- half to implement when alternative solution is readily available. Design Decision: Not changing how Permissions are stored