Framework Project

Introduction

This project asks you to analyze an existing, “real world” object-oriented framework such that you can discuss its principle classes, their relationships, and the services they provide. In addition, you will be able to show how the framework can be used by a client application and be able to present details on the responsibilities of the client and the responsibilities of the framework and how the two work together to deliver the framework's services to the users of the client application.

You should work on this assignment as part of a team of three to five students. As soon as you have formed a team, please send mail to Professor Anderson identifying the team and its members. If you have problems finding a team to join, use the WetPaint wiki to advertise your availability. If that doesn't work, send mail to Prof. Anderson and he will help you find a team to join. A “team” consisting of only one person will not be allowed. Please form your team by the end of the 4th week of the semester (i.e. this week).

Project Details

The assignment consists of two deliverables: a document that details what you have learned about your framework and a presentation that your team will prepare for the rest of the class. Due to the class size, not all teams will be allowed to present during lecture but all of the presentations will be made available on the class website. In addition, a portion of your grade will be based on evaluations written by your teammates on how well you contributed to the team.

Furthermore, each team needs to clearly split up the work of the project such that each part of the project has a clear owner. The grade associated with the “document” portion of the project is an individual grade. That is, if you do an excellent job on your part of the project, you may receive an “A” for your effort. That grade would NOT be shared by the rest of the team: another member who does a poor job on their part of the project might receive a “C” for their efforts.

The grade associated with the presentation is, however, a grade assigned to the group. I will evaluate your presentation and assign a grade that each member of the team will receive for that portion of the assignment.

Finally, as mentioned above, the evaluation portion of the project results in an individual grade. Your teammates will be asked to assign your efforts a letter grade and your final evaluation grade will be the average of those individual evaluations.

So, even though each portion of the project will have a clear owner, it behooves the group to work as a team to make sure that all portions of the project are created with high quality. Such teams will ensure that all members of the team receive a good grade on the project. On the other hand, if you find yourself on a team with three “good” team members and one “bad” member, the bad apple won't pull the rest of the team down.

Document

The document should consist of the following minimum set of information:

Work Assignments: How was the work of the project divided across the team? This is the place in which you claim ownership for a particular portion of the project. The team needs to work together to ensure that the workload is balanced fairly over the set of team members. Members who do too little (when compared with the rest of the team) will be noticed and will receive a penalty on their individual points.

Introduction: The purpose and history of the framework. From a high-level perspective discuss what the framework does and how it is supposed to be used. What is the history of the framework? How many versions does it have and how did its functionality evolve over the various versions. If possible, discuss the target audience of this framework. Is it used widely? Commercially? Only in open source project? Finally, discuss why your group selected this framework. Did one or more of the team members have personal experience with the framework? If so, be sure to discuss this experience.

Main Concepts: Via class diagrams and text, describe the main concepts (classes) of the framework and the relationships that exist between them. Be sure to describe your sources for this information. For instance, did you get this information from tutorials on the web, by asking questions in discussion forums, or by looking at the source code?

Main Services: Via sequence diagrams (and/or use cases and/or flow charts, etc.) and text, describe the main services provided by this framework to its client applications.

Tutorial: Via UML, code, and/or text, describe how to use the framework. What responsibilities does the framework impose on its client applications? How does a client access the framework's services and are there common conventions that the developer has to follow in order to gain access to these services? The team should develop a small application that makes use of the framework in some fashion. Note: your tutorial should be original work, not copied from an existing tutorial already on the web. If you can find it on the web, we can find it on the web! :-)

Requirements and Use Cases: After learning the details of the framework and how its used, imagine that you are one of the developers of the framework. Create a list of requirements that would lead to the core functionality of the framework and create a set of use cases that show those requirements being covered. Now think of a new service that you would like to add to the framework. Show how you would change the requirements and use cases to begin the process of designing and implementing this new functionality. Where would this new feature “live” in the framework? Would it be assigned to a set of classes already present in the framework or would it require new classes? If so, why?

Conclusions: In the conclusions, evaluate the framework. Does it do its job well? Was it easy to learn and use? What problems does the framework have?

Your document does not have to be in this exact order but all of these issues should be addressed. Most teams will produce a document that is 10 to 15 pages long (when you factor in text, diagrams, example code, use cases, etc.).

Presentation

Your class presentation should attempt to describe the purpose of the framework, its main concepts and services, and provide an example of it in use. Your presentation should show a running application that was developed by the team making use of the framework in some way. There are a variety of free and commercial tools that allow the creation of “screencasts” (see Screen Toaster for an example.); You can use this type of software to capture your demo for inclusion in your presentation, either embedded within the presentation or accompanying the presentation as a standalone file. You should design the presentation to be 15 minutes long but, remember, not all teams will actually present in class. Indeed, only the top eight teams as judged by the quality of their submitted materials will be allowed to present.

Time Frame

This project is due on Tuesday, October 20th (the ninth week of class) at 11:55 PM. Submit your project by sending Prof. Anderson a link to an archive containing your document, your presentation and your screencast. Prof. Anderson and the grader will then grade all of the submissions and select eight teams to present during the tenth week of class. More details on this aspect of the project will be posted later in the semester.

Formats

Your document should be submitted in PDF format. Your presentation should be in PDF format as well (or, if you use something like Google Docs, you can simply send a link to the presentation). Your screencast can be in a number of formats: QuickTime, Windows Media, Flash, etc. After you have settled on a program for creating screencasts, create a test screencast and send a link to it to Prof. Anderson. He will test it out to ensure he can view it.

Example Object-Oriented Frameworks

Teams are encouraged to locate an OO framework that interests them. To get you started, here are a few examples of frameworks that are large enough to be acceptable for this assignment.

As you can see, these choices all refer to large, popular object frameworks and I do not expect you to be able to comprehensively discuss the entire framework. It would be impossible to document all of Ruby on Rails, for instance. But if you focus on the main functionality of such a framework (receive request from web browser, route it, handle it, generate response) you could very easily find enough classes and services to fill a 10-15 page paper.

In reference to the text proper subsets of that appears for two of the choices above, this again is an acknowledgment that some of these frameworks are very large. As a result, you can decide to focus on a subset of the framework: the security aspects of the Java framework or the web services aspects of the .Net framework, for example.

Your team does NOT have to be limited to the choices listed above.

Once your team has settled on a choice, send a message to Prof. Anderson letting him know what framework you selected. Note: I will allow up to two teams to work on the same framework.

Wrapping Up

If you have any questions or concerns, send a message to Prof. Anderson

This page may be updated with new information in response to clarification questions made by the teams. Each update will be announced on the “What's New” page of the website.

© Kenneth M. Anderson, 2009.