Java Standard Edition 6 Developer Certified Master Downloadable Project (Step 1 of 2) (CX-310-252A) Objectives

Objectives


Write an application program using Java technology. The application requires the following:
  • A graphical user interface demonstrating good principles of design
  • A network connection, using a specified protocol, to connect to an information server
  • A network server, which connects to a previously specified Java technology database
  • A database, created by extending the functionality of a previously written piece of code, for which only limited documentation is available





Description of the Developer Assignment

This is a description of the nature, scale, and scope of the problem you will be required to solve in the Developer assignment. These notes do not form any part of the actual assignment, and if you find a contradiction between these notes and the actual assignment instructions, you must adhere to the instructions in the assignment documents.

Nature of the assignment

The assignment requires that you write working code for a small but plausible business system. To keep the amount of work involved to a reasonable level, the programs you create will be much more restricted in capability, and much cruder in overall presentation, than anything you would actually create for a paying customer. However, the essence of the problem will be the same. You will be graded on correctly solving the technical requirements, not on the "polish" of the finished product. Note however, that some aspects of ease of use, for example how easily the program may be started or configured, will be part of the scoring criteria. Pay careful attention to any such requirements and be sure to adhere to them.

The problem is likely to be something along the lines of a simple booking system, allowing users to view available resources, then book them. The system will not require complex business rules, but will require access to persistent storage, typically in a flat-file format, for reading and modification. You will be expected to make effective use of many of the core Java APIs, but you will not be expected to use more advanced APIs. Below you will find a list of APIs that you will be expected to use, as well as a list of APIs that you may not use. Any APIs that do not appear in either list may be used at your discretion. In fact, using more advanced APIs is likely to be specifically prohibited, as these APIs are often the subject of other certifications. You should use a consistent set of programming style conventions for your entire project. Preferably, these should be the style conventions described at http://java.sun.com/docs/codeconv.

Scale of the assignment

Obviously, the amount of time taken by a candidate to create a working solution to the assignment varies greatly. Brooks, in "The Mythical Man Month," noted years ago that programmer productivity varies by at least ten-to-one. However, a fast programmer might create a solution in about twenty hours. A more typical expectation of a time requirement might be in the order of a working week. If you spend a lot more than two weeks on the project, you might well be creating something that is more detailed than is really required, and you might want to review the scoring criteria and problem statement provided in the assignment.

Perhaps a more consistent measure of the scale of the assignment might be derived from the average number of lines of code submitted in typical passing assignments. Again, this is subject to substantial variation, but as a guide, 3500 lines of code is a reasonable estimate of the mean size of passing assignments.

Scope of the assignment

The problem set by the assignment typically requires that you create a small client-server system. You must code both the client and the server, and you probably have to create a "standalone" mode that allows a client user interface to be started that connects directly to the persistent storage with a single system and no networking.

Therefore, you should expect to create a fairly simple user interface, a network protocol with associated client and server code, a multi-user server that accesses flat files on the local file system and provides for a locking mechanism to protect the integrity of the data in the face of concurrent access from multiple clients.

The user interface will generally have to provide only limited functionality. For example, viewing all records, viewing records matching a set of criteria, modifying a record, and perhaps deleting a record.

Scoring Criteria

Your project will be evaluated on a large number of objective criteria, which fall into 6 categories:

1) General Considerations: This category covers criteria that deal with how easy it is to use and maintain your code.

2) Documentation: This includes your user instructions, Javadoc tool, and comments.

3) Object-Oriented Design: This covers the quality of your object-oriented design, especially as demonstrated in the structure of your classes and your use of variables and methods.

4) GUI: In this category you are graded on how well your GUI conforms to specification, and how easy your GUI is to use.

5) Locking: This category covers your implementation of the locking scheme which is described in detail in your assignment documentation. This part of your assignment deals with multi-threaded coding.

The maximum number of possible points is 400. The minimum passing grade is 320. The maximum points per category are:

Categories - Maximum points
General Considerations - 80
Documentation - 50
Object-Oriented Design - 50
GUI - 70
Locking - 80
Language Fluency - 70

APIs relevant to the assignment

The assignment generally requires that you can write code using the Java programming language, using any and all constructions. You must also be able to make reasonable use of the following additional facilities and APIs:

  • Thread handling and synchronization
  • Swing (and AWT to the extent necessary to support Swing)
  • Standard file IO (java.io, not java.nio)
  • Either: Socket-based network programming and serialization _or_ Java RMI (Java Remote Method Invocation) (your choice of one or the other, not both).

The following APIs and facilities may not be used:

  • Enterprise JavaBeans
  • Servlets, JSP technology, or any other web-oriented APIs
  • NIO, the New IO facilities
  • Java DataBase Connectivity (JDBC) and SQL
  • Java IDL API and CORBA
  • Third party software libraries or tools (such as browsers)