Up Java Resources C++ Resources .NET Resources DevHood Search

Journal Entries, Week #5

 

Quick jump to: alio, beowulf,  jamesmcd, jkdot, jsegars, lipinski, localguy, othello,  rjmorgan, ryanaip, thewang, tjice, wrprice, swong.

 

----- ALIO -------------------------------------------------------------------------------------------

Journal for Milestone 5

Status:

·        100% completed

·        The first thing I did was to document the handshaking method exhibited by the Behavior class

o       This can be seen at exciton.cs.rice.edu/users/alio/Milestone2/Behavioral Flowchart
Is there a more permanent, or at least more easily accessible storage location for this?

o       This is the current flow of the model.

·        I went through the current model code for behaviors and restructured the Behavior class into a linked-list implementation.

·        In addition to implementing a linked list architecture, hooks were added so that a visitor class IBehaviorAlgo could be used for greater modularity.

o       A future use of this is for easily deciding on a decision mechanism for people.

o       The UML can be found in my folder on exciton.cs.rice.edu/users/alio/Milestone2/Milestone2ListBehavior.JPG

Obstacles encountered: 

·        I was sick during the middle of the week and couldn’t talk with Dr. Wong about a different implementation of visitors that may have been helpful to the Behavior class setup.

o       Lesson: Try and get meetings out of the way as soon as possible so plans are less likely to be disrupted.
Everyone take note!!

Solutions proposed:

 

Analysis of development process

·        There is a lot of good documentation that has been generated.  This is very helpful from the standpoint of implementation in that there is no single person that is required for specific parts of the project.
Are people starting to understand why all your courses have emphasized documentation?

·        A lot of new problems are going to be realized when we start to integrate the many parts of the project, and we should talk about what each group needs from another so we don’t have milestones assuming one group is doing something when in fact it isn’t.
A painful lesson we will hopefully not repeat.

What seems to be working

·        Once again there is excellent communication between groups and the inter group milestones seem to be well distributed, no one so far has complained about being completely overwhelmed.

·        Props to the AR team for finishing their milestones a week early.

What seems to not be working

·        While we have been re-organizing to improve communication and efficiency there has been a re-cropping of common problems.  We are still doing better on defining non-vague milestones but this is an area of improvement.

 

Proposals for change

·        If we are going to make the milestones over the weekend (which is an idea I agree with) we take a little time on Monday to make sure that milestones between groups are compatible.
I don’t think this happened this week (2/17/03)/

·        I think it is a good idea that we integrate code, that will show us what problems we have to overcome, but I think making a release be the next milestone is a bit premature.  There is no leeway if something goes terribly wrong and if we don’t have a functional simulation we may lose customer buy-in.
The prospect of something going terribly wrong is always there.   The only way you can deal with it is to recognize it early and to re-task as soon as possible.

 

Nice journal.

 

----- BEOWULF -----------------------------------------------------------------------------------

  • Status of Milestone
    • Gains Made:
      • Store creation wizard: The first version of it is working.  User testing on the wizard was performed (Jeff and Kijana got real users to test and give feedback).  The renderer was also plugged into the wizard.  Its still very rough around the edges but is starting to come together nicely and is a major leap forward.
      • Renderer: TJ has made some great progress on the renderer.  It is now incorporated with the main GUI and the basics of an interface to create stores (dragging around points of stores to adjust shape and size, selecting stores, etc) is taking form.
      • IRenderable has been defined for the model group.  There are actually two pieces, the IRenderableSpace and IRenderableEntity. 
        Are these two separate pieces or sub-classes of IRenderable?
        Documentation for these will be posted Friday.
      • This code is checked into CVS.
    • Obstacles: We can’t promise that the IRenderable interface won’t change in the future, but we did our best to anticipate future changes.  Having everyone work on exciton through remote desktop is becoming an increasing problem now that we are writing lots of code.  CVS checkin gets messy with this.
    • Proposed Solutions: Hopefully we will get VS.NET installed on the machines in Symonds II soon.  Also, working from home is now feasible.
      VS.NET will be installed “Real Soon Now”.    Yeah.
      Do we need individual logins onto Exciton?

 

  • Analysis of Development
    • Whats Working: Our group had some very productive sessions in Symonds these last two weeks.  Meeting with individual members through the weeks helps me keep up on the whole project.  Then we all met before the milestone to bring our work together.  Also, Bryan has been our main point of contact with the model group and we have made some important progress in getting hooks.  Jeff and Kijana’s work with user testing has been great too and created some interesting insight into how we can improve our UI.  Should we get a budget to buy these testers pizza? J 
      Actually, I may have money to do things like that.
      The video of the sessions are coming soon.
    • What’s Not Working: Working under the same user name on exciton.  It also seems that not everyone in the group is clear or has the same notion of how the client and manager design will be implemented exactly. 
    • Proposed Changes: Intra group communication is helping this.  Talks with Bryan have helped the model and ui groups make progress and figure out these client/manager issues.
      Are you deliberately not proposing individual logins into Exciton?

Nice journal.

 

----- JAMESMCD ---------------------------------------------------------------------------------

Status of milestone:

·        Gains made:  Using the remoting library provided by the AR group I implemented a connections that allow you to transfer people between rooms, either on a single computer or multiple computers.  This allowed for testing of the object transportation system and gave ideas as to what a version 2 of RemotingLib should look like.

·        Obstacles Encountered:  The current remoting library does not offer much in term of flexibility. It took a fair amount of pounding to get it to work, and it is not implemented in a way that even closely resembles a final version.
The AR group needs you to be very specific here!

·        Solutions Proposed:  Closer work between the AR and Model Group to design a system that has the functionality required.  Wrap the current RemotingLib in an easier to use, more “final” version 2.

 

Analysis of Development Process:

·        What’s working:  SOURCE SAVE!  The model group added all our code, as well as the remoting library to Source Save.  It’s really nice once you get it working.  Much more user-friendly than CVS. 

·        What’s not working:  Inter-group communication, in some cases.  In several instances there was very good communication between groups.  In other cases there was very poor communication between groups.  Also, intra-group work.  I know some groups don’t even see each other except in class.

·        Solutions:  Initiative.  Everyone has different knowledge and getting input on your work is all most always beneficial.  Meet with your group.  Know what they’re working on, even if they don’t need help.  Realize the magnitude of this project and understand how much it’s going to take to get everything working.
Here’s a whole area we really haven’t touched on:  How do you motivate your team members?   Why do you think that company dynamics of software houses is so different that normal “corporate culture”?    Writing software is a creative process and is easily stymied by repressive working conditions.

·        What to Change:  Do presentations every week on what has been accomplished in your group.  We have lots of class time on Fridays and making people get organized and ready to present will encourage communication between groups and group members sooner that the last 2 days before the milestone is due.
I agree, but here’s the counter-point:   Who’s got time to prepare presentations?

 

Nice journal.

 

----- JKDOT ----------------------------------------------------------------------------------------

Milestone: Research of usability cycle, user testing, documentation

 

Gains made:

 

            For this milestone, I was to look more into the details and structure of the steps we should be taking to make a good interface.  Based on my previous HCI classes and the books we’ve been reading in those classes, I was able to construct some guidelines and a “usability game-plan”.

  • Did some research on methods in HCI usability testing
  • Discussed the interface with Jeff and helped to make a couple changes based on the first run-through with DXN
  • Wrote a task list for the task analysis (for user testing) and the test user questionnaire
  • Conducted user testing with Jeff
  • Documented the results from the user test

 

Obstacles encountered:

 

  • Jeff’s computer crashed (with all of our work on it), but thankfully he was able to recover the prototypes. 
    What’s the lesson here, folks?
  • We had to make a decision as to what we would test in this round.  The decision was based on what we thought would give us the most useful results.  Therefore, we decided to only do user testing on the mall manager wizard and main interaction window interfaces.  The decision making process wasn’t as much an obstacle as it was a careful consideration of how this could affect future work.
  • Getting users to test the interface.  We wanted to test five users, but ultimately tested four.  However, I think most of the usability issues came up with these users.
  • Slight technical difficulties with the video camera (we taped our user tests).
    The sound was almost inaudible.

 

Development Process:

 

What seems to be working? :

 

  • I think that communication and collaboration within and between groups is improving.
  • The iterative design process (gradually changing the interface based on feedback and results from testing).
  • Working with VS .NET
  • Posting/reading stuff on DevHood
  • Meeting with the customer (DXN) and getting his feedback
  • Dispersing this to the rest of the team

 

What doesn’t seem to be working? :

 

There are still a few little issues with making specific information known to the rest of the team.  It’s still too easy to just internalize stuff and assume that “everyone will find out eventually.”  However, we might find out about something when it’s too late (and has reached crisis level).

Everyone remember this one!

 

Proposals for change:

 

  • Problem:  Vagueness in purpose, specific implementation details, and wants/needs (from other groups and main customer)
  • Solution:  I don’t really know how to fix this.  It has been an issue because the customer, for example, may have an idea what he wants but is unable to put it into specific terms.  It is then up to us (the UI group and then the team as a whole) to interpret this.  It becomes a hit-and-miss game, but some of the time “wasted” going down certain paths is valuable, I feel, because then we have a clearer idea of what to ask next time.  I guess a possible solution would be to ask more specific questions and guide the conversation to make the intent (request, etc.) clear.  Sounds good to me.

 

Nice journal.

 

----- JSEGARS -------------------------------------------------------------------------------------

Milestone: Dummy UI

(Mall and Store Creation Wizard, Store Management, Usability Testing)

 

Gains Made

After spending most of last week working on the wizard-driven interfaces for mall and store creation, I spent the initial part of this week creating the UI for store management.  As you can see in the screenshots on the documentation page, it’s very similar to what we created for mall management, with the addition of a competitor watch list.  Toward the end of the week, Kijana and I began testing users on the mall management interface from milestone 1 and the mall creation wizard that we had just developed.  For the most part our interface worked as the users expected it to and they had little trouble completing the tasks we gave them.

 

Obstacles

The main obstacles that came up this week were the errors we discovered in user testing.  Kijana goes into more details on these issues in our write up, but we basically discovered that some of our wording for tabs and controls was too vague to allow the user to know what the control would do when activated.

 

 

Development Process

 

What's Working

Communication within the UI group still seems to be going very well.  We were able to integrate TJ’s rendering code with the mall manager GUI without any problems, which was a relief.  Now we’ll see how things go integrating with the model next week…

 

What's Not Working / Change

As we learned today in class, communication between the groups is where all our problems lie.  We were obviously not on the same page with Brian and had no idea he was expecting to integrate the model and UI for this milestone.  There are several ways we can keep this problem from popping up again though.  Being more explicit about what we need from other groups and reading everyone’s milestones for potential would both be helpful.  It could also be very beneficial to roadmap where we want to development to be several milestones in advance.  If Brian had known we weren’t going to add functionality to the UI until milestone 3, the problem could have been averted.

Hear ye, hear ye!

 

Nice journal.

 

----- LIPINSKI -------------------------------------------------------------------------------------

Milestone:

 

·                    Work with the UI group to define the interface between the UI and the model. (Make the controller).   (100%)

·                    Use the interface to connect to a mock UI.   (100%)

·                    Work with Jim on creating factories.  (100%)

 

Gains Made: I created the abstract and concrete factories to be used in the creation of people, items, and stores.  I made the controller, and adapters to connect the UI to the model.  I hooked these up to the model groups demo UI.

 

Obstacles Encountered:

·        How to communicate between the model and view
What is it that the model wants to communicate to the view?
What is it that the view needs to get from the model?

·        How to set up factories
What does a factory need to know in order to run?
Where could the factory get those information/objects?

 

Solutions Proposed:

·        I decided that adapters would best be used in the communication.  Since C# does not allow anonymous inner-classes I had to create concrete adapters to pass between the UI and Model. 
Are delegates any use here?

·        We set up the factories, as very basic factories, which act more like adapters to the model then anything else.  This will change when the View actually will set fields within the factories.
Is the UI setting fields in the factories or providing the necessary objects (e.g. lists of behavior factories) to instantiate your factories?

 

Development Process

 

What’s Working: SourceSafe.  It’s nice to be able to access all the code, and have the flexibility of changing it with other’s without having to worry about erasing modifications.

 

What’s not Working: Lack of “group” interaction.

 

 To Change: What I mean by this is inter-group interaction.  I know that for the past 2-weeks I really haven’t known what anyone else in the model group was doing, aside from Jim.   It seems that at least the model group should all get together, because what everyone does in each group can effect the entire group.  I’ve already proposed a “pizza” night with the model group to get together and talk about everything, and strategize.  That will promote better inter-group communication, and help all around.   I guess I would have called this “intra-group” interaction.

I may have funds for “pizza meetings” – talk to me about it.

 

Nice journal.

 

----- LOCALGUY ---------------------------------------------------------------------------------

Milestone (Commenting RemotingLib 100% done and more):

  • Gains Made: Since I assumed that milestones were due weekly instead of bi-weekly I finished my milestone last week, but I continued to work on it this week.  I wrote a tutorial for using the RemotingLib and I also started testing the RemotingLib with my own application to make sure that my tutorial was accurate.  As I was working with my application it became evident that the RemotingLib needed to fire events when new connections were made and when objects were waiting to be received.  I researched how to use delegates and events and added support for them into the library.  The application that I used to test my code was a simple two-way chat program that can be found in my directory under RemotingLibDocsTest.  I have also been testing a chat server application that may work similarly to the future mall server.  The chat server has the ability to host several clients who can talk to each other.  Right now it is not fully functional and does not work properly.  I met briefly with Jim and Will and talked about what the model group needs from the AR group.
  • Obstacles Encountered:

§         I have had a lot of trouble working with events and remoting.  Events are not serializable so when you try to pass anything by value while referencing an event you get an exception.  Sometimes when I am trying to do something complicated with remoting it becomes hard to tell what I am passing by reference and what I am passing by value.  This can cause problems when you need a reference but get a value or vice-versa.  This must be paid attention to closely whenever you pass anything with the remoting library!
Should we set up a FAQ/Tips&Traps type page?

§         While testing the remoting library with my application I found that the HTTP_FACTORY does not work.  Theo and I talked about it a little but still could not figure out why it does not work.

  • Solutions Proposed:

§         It would be nice if we added something into the remoting library that catches exceptions for trying to pass objects that are not serializable.  Currently an exception is thrown if a user tries to use a port that is already in use.  We should probably catch this exception and run some kind of dynamic port allocation.
ALL INTER-PROCESS INTERACTIONS NEED TO BE TRAPPED FOR EXCEPTIONS .     You will need to implement a “layered” approach to exception trapping so that the exception handling doesn’t violate encapsulation boundaries.

Development Process:

  • What seems to be working?

I think all the groups are making a lot of progress and are beginning to have better communications with each other.

  • What seems to not be working?
    • I am still a little unclear on what our group needs to do for the next milestone.  I would like to hear a little more communication from our group leader on his results of talking to other groups.  Maybe this problem will be cleared up at the lab meeting tonight when we talk about tasking for the next milestone.
  • Proposals for change:
    • The AR group has not worked very much with pair-programming and I think that this is starting to hold us back a little bit.  For the next milestone I would like to have defined pairs for each task. ABSOLUTELY!!!
    • It would be nice to have everyone working out of VSS so that we all have current copies of completed work.
      I believe that the integration of all the work into a single project will help this too.

 

Nice journal.

 

----- OTHELLO -----------------------------------------------------------------------------------

 

·        Milestone Status:

 

Gains: RemotingLib has been refactored to include event listeners thanks to Justin’s efforts.  In addition, it’s been fully decoupled from the server/client hook objects in exchange for Singleton pattern Client/Server managers.
It’s not clear what you mean by “in exchange for” here.   Are the pros and cons of what was done?    Was that documented somewhere?

 

o       Obstacles: Shortly before writing this (within a couple of days), we discovered that HTTPChannels don’t function as the documentation suggests.  I’ve diverted the remainder of my attention for this week towards this obstacle, but haven’t found anything constructive yet.  I made sure that the HTTPChannels use the same constructor calls/formatter calls as the TCP Channel, but for some reason HTTP hasn’t yet functioned even though TCP has been rather tested by now.

 

o       Proposed solution: I’m going to suggest this as my next milestone: find a working example of Remoting via HTTP/SOAP, and get it working in my own environment and on exciton.  Then, I’ll try to adapt it to the RemotingLib interfaces, as it’s pretty abstract thus far.
This sounds like a good tack to me.   Is there an issue with interference from IIS while doing HTTP transfers?

 

·        Development Process:

 

o       What’s working:  Our group seems to be making useful contributions to the others, and the other groups (namely the model group) has been coming to us, seeking information.

 

o       What’s not working: I’m not completely aware of what the rest of the group is doing, or what I should be doing specifically at times.  I think there’s an insufficient amount of group interaction/communication at this point.  Friday labs are as inconvenient as always, but if CTS/OwlPC is going to install Visual Studio .NET in Symonds, then the payoff for using Symonds and running VS locally will be probably worth the inconvenient time.

 

o       Proposals for change: I think that the AR group should meet more frequently, to discuss tasking and maybe help equalize tasking distribution more often.
More and regularly is the ticket here.

Nice journal.

 

----- RJMORGAN --------------------------------------------------------------------------------

·        Status of the student's milestones

o       Gains made 

My demo application is working and is located in rjmorgan/demoapp folder on Exciton.  The application reflects the design of the remoting library in that any process may designate itself as a server for a port/service, and then any other process on the same or a different machine may connect to that port/service.  Each app instance creates a Room object that is remotely accessible via pass-by-reference, and each room is capable of holding pass-by-value Persons which can be transferred between rooms.

o       Obstacles encountered

Originally I was required to poll the library to receive new connections and objects.  Since Monday Justin has added event handling mechanisms for these events.  There were still a number of obstacles/missing features that would be very useful:

·        The ability for a server to know who the client is (hostname, port, service)

·        The ability to close a connection

·        The knowledge of what exceptions to catch and handle

·        The connection should be used as the source of events, not the associated queue.

The above list is exactly the type of specific  information that is needed to get over the obstacles encountered.

o       Solutions proposed

These are fairly minor changes to the library that will make a big difference to the stability of our application.  I suggest that Theo or someone else take care of these items as part of the next milestone.

·        Analysis of development process
 

o       What seems to be working

The AR group is doing well at getting our tasks completed.  We have fairly good communication when we are able to meet, and we all know what tasks we are responsible for completing.

o       What seems to not be working

On the flip side, we need to make sure that we work together with other groups as well as with each other to ensure that we are not duplicating work.  This milestone I was responsible for working on a demo app that was similar to how the model group would use the library.  Just this week however, I found out that Justin had also built a demo and that Jim was working on another demo target explicitly for the model group.  My demo, although cool and useful for seeing some of the features of the library, now seems unnecessary with all these other demos available.
We certainly do not have time to waste on duplicating code!

o       Proposals for change

I propose that we work more closely with Jim and other members of our group to work on projects that will directly benefit them while allowing them to concentrate on other areas of their projects.  If I had known what Jim needed, I could have easily built a system for him to tie into the rest of his code, freeing up his time for other model decisions.
Who is writing what code is definitely something that needs to be established during inter-group discussions.

Nice journal.

 

----- RYANAIP ------------------------------------------------------------------------------------

Development Status

Milestone Progress

My milestone involved implementing attributes, which are pieces of data associated with entities (for example, gender, ethnicity, location, user-interface icon, shopping basket, etc.).  The documentation is in SourceSafe, linked from the main project in the Model/Documentation/AttributesDocs directory (right-click Solution_Solution1.htm and select “View in Browser”).  For the API look there.

 

Attributes fall into two general groups:

  • Some attributes can be compared with each other, returning an AttributeResult which contains a number, [0,1], that represents how closely the two attributes relate (e.g., comparing two ethnicity attributes with the same ethnicity would return a large result).
  • Other attributes are used simply to store data, like a person’s name, or information needed for rendering the entity.  For these attributes, use a BoxAttribute to store an arbitrary object (and associate it with a particular string) – see the documentation for specifics.

 

Attributes in turn are placed in AttributeCollections, which serve as a hash table that holds attributes.  Each IEntity contains one of these AttributeCollections (called Attributes).  People interested in storing data in an entity should use it.  We will likely also at an AttributeCollection to ISpace in the near future.

 

I had one problem in making AttributeCollection serializable.  I discovered that this is because the Hashtable class (which it extends) uses custom deserialization – when a Hashtable is received by the server and needs to be deserialized, it’s done through a custom constructor.  The AttributeCollection class didn’t originally implement this constructor.

 

Solution: if you want to create a serializable class that extends a class which uses custom serialization, it should have a constructor of the form

 

protected AttributeCollection(SerializationInfo info, StreamingContext context) : base(info, context) {}

 

which passes reconstruction data to the super-class.

 

This info needs to be moved to a permanent location.

 

Process Analysis

I think that we were much more organized on this milestone.  It was clearer from the beginning what people needed to have done, although there’s still room to improve (particularly in inter-group communications).  Hopefully having time to meet on Monday will allow the three group leaders to get together and figure out exactly what the different groups need from each other for milestone three.

 

I that we need to do a better job of keeping track of the code that’s being written during the milestone.  That way we’ll be able to know which pieces of code are coming along more slowly and may be holding things up.  I plan on asking my group to give me updates whenever they work on their code.  Then I’ll be able to pass relevant updates on to Brian and Will so that the other groups will know as soon as code is available.
This is akin to Kijana’s suggestion a while ago about having the programmers update the team leader every day.    Easier said than done however.

 

Having SourceSafe working should also help people find the code they need.

 

Nice journal.

 

----- THEWANG ----------------------------------------------------------------------------------

Milestone status

 

·        We have discussed and have outlined how attributes are to be implemented and how they figure into behaviors and the decision-making process.
Where is the documentation for all of this?   It does no good to have thought it all out but not communicated to the rest of the group.

·        The general framework for attributes has been written.  The necessary adjustments to the various entity classes has also been made.
Document, document, document!!!

·        I have also started writing sample attributes and behaviors that use those attributes to make decisions.  I was going to complete them and test them this afternoon before lab, but I guess the exciton server is down.  I’ll complete that this weekend, or whenever the server comes back up.

 

Obstacles encountered

 

·        Not a lot of code has been put into SourceSafe as of last night (either that, or I’m just accessing it wrong).  It was hard at first coordinating with the other group members to make sure that I was editing the correct version (since current Entity and Behavior classes would need to be modified).  They are stored in different group member’s directories, each with their own directory and naming structure. 

·        It took me a while to familiarize myself with other people’s code.  It’s hard enough understanding your own code, but to understand four or twelve other people’s codes simply takes time.

·        I can easily see the amount of code exponentially increasing.  I’ve realized how necessary it is to keep track of changes and making changes available to read, instead of “BAM! Here’s the model, have fun.”

·        There are lots of attributes that don’t seem to fit neatly into a particular attribute mold, and behaviors that are very different, though all fundamentally behaviors.  So shouldn’t the code for these attributes and behaviors simply be written out with the necessary elements and then common elements extracted or repetitive parts removed later on?  Isn’t that what refactoring is in XP? 
Basically yes.   Refactoring is often expressed as a mechanical process used to generate the next iteration during the XP process.   Here, however, I want such refactorings to be driven by a refining of the abstract decomposition of the problem, not a mechanical, “replace repeated code” type process.

 

Solutions proposed

 

·        I guess we simply need to start putting code into SourceSafe.  From what I hear, it sounds like lots of people have stuff that works for at least some small cases, but are just stored somewhere in the depths of their folder on exciton.  This would also mean that we can continually understand other people’s code, instead of spending hours catching up.
Good point.

·        Maybe we could spend a few minutes together in class whenever a large chunk of code is checked into SourceSafe.  This would also give us a good overview of what we still need to do and of the changes in relation to the whole project. 
That means that someone has to tell me to allocate the class time.

·        I still don’t like Friday afternoons.  What if milestones and journals were due on Monday when we actually have Symonds and lab time would simply be designated times when each group would meet separately or together?  Actually, possibly Wednesday s would work, since we could discuss new milestones in class on Fridays.
An interesting notion.   It’s not obvious to me that it would work.   We should bring it up in class.

 

You’re missing still the “what’s working” section of your analysis of the development process (not the milestone status, which you have).

 

----- TJICE -----------------------------------------------------------------------------------------

·        Milestone Status:

 

Gains: I have made a Mall/Store Renderer.  I have made the interfaces for rendering entities and spaces.  This week was focused on finishing rebuilding the renderer and getting it to a point where the layout of a mall could actually be rendered.  Communication between the model group and the UI group has been achieved but much needs to be worked on.

 

o       Obstacles: The only true obstacle in this process is the communication between the groups.  For example, on Friday, the UI group became fully aware of Bryan’s milestone.  And in all fairness it just could not be done by Friday.  This also leads to another issue.  We believe that the interconnecting of the model and the UI is actually the job of the UI.