The objective of this project is an application of object-oriented analysis and design to the development of an application system using design patterns. It covers various aspects of object-oriented analysis, design and programming. It also provides an opportunity for a hands-on experience with client-server Internet programming using Java, C++/C, GUI programming, backend info provider design, and design patterns application. Mastering the materials in class as well as the ability to learn new things quickly will be essential for success in this project.
This page is copyright and if you use any of the original ideas in the future in any commercial way. Please email email@example.com for approval.
This projects is a small publisher-subscriber system that serves different kinds of subscribers. The following is the list of components:
Publisher Server: This is the main server of the system. It is going to serve information to the subscribers. There are three types of required subscribers. They are described below. Control Information is stored with the Publisher Server. What the control information is depends on what information is served. The storage format of the Control Information could be any format the project group decided upon. (You could use serialized objects or databases).
Data: "Data" is a data store that stores the data serving to the subscribers.
Push Client Subscriber: In this scenario, Publisher Server just sends all the data to subscribers, subscribers do not have a choice on when to receive notification and the data.
Pull Client Subscriber: This type of client subscriber receives "data are here" messages from the Publisher Server, and subscribers will pull the data down when ready.
Server Subscriber: This is a special type of subscriber. The subscriber is a server in itself, and the Publisher Server has the ability to start the server remotely.
Other Subscriber: As a group, you have to design one new type of subscriber!
Admin Interface: The admin interface provides an interface for the administrator to monitor the Publisher Server. It provides the following functions:
Display current status and content of Push Client Subscriber, Pull Client Subscriber, Server Subscriber and "Other Subscriber".
Schedule data push or pull to subscribers.
Remote start or stop of Server Subscribers.
The system can run in either Linux or Windows. A project just need to pick one operating system.
The project group has to decide what information the subscriber system serves.
The project group has to decide what type of server subscriber is supported. At least two is needed. (You could write your own servers or existing servers, such as, web server, ftp server, etc.)
The group has to decide on various design and analysis issues, for example:
This system is supposed to be developed according to the software lifecycle and OOAD principle taught in class. Good software engineering principles must be followed. In particular, documentation must be good.
As the whole class will be working on similar projects, relative grading will be used. In other words, all the projects will be ranked within the class and points will be assigned accordingly. A lower point bound will also be used to ensure that some of the core features are implemented in the project. (For example, 200 points for base features, 100 points for extra features)
This is not an "easy" class and the project is an essential part of the overall grade. If you study the grade distribution of past semesters, you will find out there are 13 A and 8 F. People who did not deliver the project well enough could really hurt their grade as the project contains more than 40% of the overall grade.
On the bright side, most of the students in the A range did really well in the project. So, there is no upper bound for an A. (In other words, I do not limit the number of A in a class.)
Copyright 1996-2001 OpenLoop Computing. All rights reserved.