View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Andrew Orlando, an ASP.NET / MySQL based site I coded

Hobbies: music, movies, (netflix), good food (indian food!), cooking, PC games, video games, a little photography with my Canon A620, reading if I have time, programming, game development, software, Internet, computer hardware, pressing buttons, riding 4-wheelers!

CoWeb Assignment 3:

Extreme Programming

In Extreme Programming there is a brief stand up meeting each day where developers discuss what they are currently doing and hope to accomplish that day. Then they get into pairs to code, all production code is written in pairs. In pairs they take turns coding and watching the other person code, looking for mistakes and other ways of doing things. Unit tests are written first in Extreme Programming. With the merciless refactoring in Extreme Programming this extensive unit testing is very valuable. All unit tests must pass for an individual small release (it is an iterative process). Design values simplicity most and doesn't add features that aren't immediately needed. Developers only work 40 hours a week in XP. Pair programming is shown to increase the quality of the software without really increasing the time it takes to create the software. Also, if a developer leaves the team there is always at least one other person who understand code he/she worked on.

Garbage Collection

When cycles occur in references Garbage Collection with references can never fully clean up unused objects. You could have two objects that are both pointing to eachother never being deleted. Also, it is a bit slow to update the number of references constantly. On the plus side garbage collection makes it easier to code and adds security/safety. Cons include a performance hit however.


The Gulf of Execution is the difference between the actions the user wants to take and the actions the system will allow them to take. An example is a user wanting to use Copy (ctrl+c) in an application but finding him/herself unable to do so. Then there is the Gulf of Evaluation. This is about how difficult it is for the user to see the state of the system and how well intended actions are being carried out. One example might be requesting that iTunes convert a video to iPod's format and the user then being unable to find the status of the conversion anywhere.

CoWeb Assignment 2:

User Interfaces

"In the Model-View-Controller paradigm, there is a clear separation between application semantics (the Model) and the input-output behavior (View and Controller). Why is this separation desirable? Describe the mechanics of MVC that allows for minimal dependence between a Model and its View."

Using Model-View separation allows one to easily have multiple views on the same model. For example, say you have a character in a game. The user may see several views on this character. One may be the "main" third person view of the character walking around, fighting, doing what the user instructs. Another view may be an "equipment screen" view detailing every peice of equipment that character is wearing, which shows a different part of the model than the previous view. A third view could just show a portrait along with a health bar, maybe other users can see this in their UI. All of these views are based on the same model, and all three can show up at once.


Refactoring is cleaning up the design/extensibility/readability of currently existing code. It is not about adding new features. The end result is code that may do the exact same thing as what you started with, but is more easily maintained, extended, and understood by other developers.
One major sign indicating a need for refactoring (towards polymorphism) is a large class with lots of switch or if statements relating to some sort of "mode". For example, I refactored a row-reaping system that had a lot of boolean if statements relating to MS SQL Server versus MySQL. You would make a superclass and subclasses, everywhere there are these if statements/switches make sure there is an abstract method in the superclass that the subclasses implement appropriately.
Another sign is having to copy/paste chunks of code for use in many places. This makes that code very hard to maintain, a need to change this code means you have to change it in many places (if you can even remember/find where they all are). This code could be put into a method somewhere for reuse, then all the places that had the code block before can now have a simple method call.

Useful Cases:

Links to this Page