CSCI A348/548
Lecture Notes Twenty

Spring 2001 (Second semester 2000-2001)


New material in lab notes. Here we only look at what a project should be. More to come soon.

Use this as a set of guidelines to come up with a project proposal. (You don't have to, but just in case you want to develop your own project, here's what you need to take into account when making the proposal.) I will also follow the same guidelines when posting the game projects. The notes below describe the design process that should go in the project proposal and the early development stage of a project. We will take a top-down, user-oriented approach.

Implementation aspects should be be discussed, but not details - only the general framework.

1. Identify a problem to be solved.

Do it for the purpose of communicating the problem to me. Don't identify problem with necessity. By problem we mean a certain kind of service that we provide. Some services are more important and/or more necessary/vital than others. Your project idea will have an identity of its own. Describe it.
2. Identify your users
Users are those that work with your system. Those could be end-users or administrators like you. Distinguish further if you can between your end-users (instructors/students, readers/writers, consumers/producers).

2.1 Are your users going to have an identity of their own?

Are you going to be able to distinguish between your users, individually? If so describe the method that you will use to achieve that. In most situations this is done via a username/password authentication method. If you will use such a method think of where you keep the passwords.

A related question is: do you let the users create their own identity (such as when you register for New York Times) or do you require that they apply for an account (such as when an IUB network ID is created).

2.2 Are there any issues of privacy/security?
Describe what kind of data users can input to your site and any levels of access that your application will require. For example if you are building hotmail.com or mailexcite.com you probably want users to read only the mail addressed to them and nothing more. A grade and feedback posting system also has to provide a certain specific level of security and privacy.
3. Describe your solution.
Assume you're trying to sell your system to a potential client, company, or service provider.

3.1 Describe all user interfaces.

This, I believe, is the most important part of your proposal.

Explain to your client what each of the category of users assumed by your system can do. Be fairly detailed as if you'd be running that person through a sequence of demo screens.

Note that if your system is part of another bigger system (which may take care of the user interface) then this requirement translates into: describe its input/outputs, and any internal states it may have.

3.2 Contrast your solution to the way that service is currently provided (if not a new service).

For example when we post grades with a feedback system we are trying to provide a better or faster service. This is not a new service but features of the service are new (the privacy issue comes to mind).

If your service is a new service (loosely speaking) explain what's the novelty of it, as you're trying to sell it.

4. Address issues of implementation.
Try to describe each of the actions that the user interface can generate in terms of smaller, simpler steps, that would be closer to how your system will work. Your framework is a client/server approach, with a network link between the server and the client.

On the server side the programming is mostly done through CGI although you can write your own perl and/or java server (except that this way you're diminishing the role of Apache).

On the client side you can do no programming at all (HTML with forms), or some programming (Javascript with HTML with forms) or a lot of programming (if you write Java applets, or if you decide to write your own client application).

5. Address issues of capacity planning.
How many users are you going to have. What will be their work habits. Is your server going to be overloaded at any time. Is your service mission critical? What if it becomes unavailable at a certain time -- how would this affect your users? Are some times more important than others?
6. Address issues of cost of maintenance and distribution.
6.1 Maintenance
How many hours per month does it take to keep your service running. If someone will buy your system they will need to know what's going to take to keep it running. (User)

Is there an initial cost for populating the database on the server with the initial data for a certain client? (Service Provider)

6.2. Distribution
What does your service require for the user workstation to be functional. If you're implementing using CGI with HTML forms then you assume that the user has a web browser installed.If you're using some browser specific functions mention them.

If you're writing a Java (or some other type of) application and expect the users to download and install it be aware of what they need and try to be precise about what they need to do.

If you're using applets or CGI with HTML forms you can almost assume that the user has a browser installed, and so the effort of distributing your client software will be close to zero.

However you need to keep in mind the trade-offs: custom-client software may be more powerful but it may require more work for the client (installation) and for service provider (development).

My own perspective is this:

  1. We investigate Marty Hall (servlets, JSP) and Brett McLaughlin (XML) books
  2. Out of the McLaughlin book (Java and XML) will come the default class project (DCP)
  3. DCP will have three stages, will be treated in class, will be almost like homework
  4. DCP topics will show up in the final exam. It will be a business to business or an e-commerce type of project that will clearly illustrate three key components:
  5. Grad students will have to also implement a Networked Game (NG)
  6. There will be 8 choices for an NG, all of them from a 1996 book called The Black Art of Java Game Programming (The BAJGP) which uses Java 1.0
  7. Our task is to bring the code into the present and set up the games in the A348 framework (client software distribution through the web, server side is Apache or Tomcat programming).
  8. Undergrads can implement a game instead of the DCP as long as they're aware that the DCP needs to be understood for the final exam. Grad students do them both, also preparing and installing the three stages for the DCP.
  9. All the code and instructions for the NGs are available in the BAJGP.

Last updated on Mar 22, 2001, by Adrian German for A348/A548