Project 1: Analyze and Present an OO Framework

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 such that the users of the application gain access to the services provided by the framework.

You should work on this assignment as part of a team of two to four 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, post a message to the student discussion group located on the class moodle and 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.

Project Details

The assignment consists of two parts: a document that details what you have learned about your framework (125 points) and a 15 minute presentation (25 points) that you will give to the rest of the class.

Document

The document should consist of the minimum set of information:

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 you 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 the 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.

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 one or two 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? In addition, document how your team worked on this project. What roles did people play and how did each member contribute to the final products of the project. 

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 a tutorial on how it is used. Your presentation should show an application that was developed by the team making use of the framework in some way. The presentation should be no longer than 15 minutes long.

Time Frame

This project is due by the end of the ninth week of class. This means that the document being created by the team must be submitted by 11:55 PM on Friday, October 26th and your class presentations must be done no later than the lecture on October 25th. I will reserve the lectures on October 23rd and October 25th for class presentations. We can fit five presentations in a single class session. If there are more than 10 teams, I will ask some teams to present the week before.

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.

  • Swing
  • Ruby on Rails
  • Django
  • wxPython
  • Prototype
  • Scriptaculous (script.aculo.us)
  • (Proper subsets of the) .Net Framework
  • (Proper subsets of the) Java Framework
  • Enterprise Java Beans

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.

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.

Finally, be sure to assemble a team by the end of week 5 (this week) and get started on this project as soon as possible.

Kenneth M. Anderson, 2007.