ISE440 Project (Spring 2001)
Information System Design:
Object-Oriented Modeling, Analysis, and Design

Scott Stoller

The primary goals of the project are to give you experience specifying, designing, and implementing software systems. You are expected to propose reasonable (realistic) requirements and design. This might require some background reading. Give references for all resources you consult.

You must give either code or pseudo-code for every part of your design. Thus, you are not required to implement all of the functionality described in your requirements and design (you can give pseudo-code for the parts you don't implement). This gives teams some flexibility to choose between more ambitious requirements and design with less implementation, or less ambitious requirements and design with more implementation. Teams on the former end of the spectrum will need to more time to work on the requirements and design and less time to work on the implementation, so for those teams, no penalty will be imposed if some parts of the requirements and design are completed after the deadlines below for submitting the requirements and design (of course, these teams will still be graded based on what they submit at all three of the deadlines, and everything must be finished by the project completion deadline).

The requirements and design must be written in the UML using a UML-based CASE tool. The easiest option is to use Argo/UML, which is free, open source, and written entirely in Java. There are also several commercial CASE tools that support UML, the best known being Rational Rose; you can request a free evaluation copy of Rational Rose from their web site and give it a try. Of course, if you have the funds, you are welcome to purchase and use any commercial UML-based tool.

Your goal is both to develop good requirements and design and to convince us that you did so! Thus, your submission should discuss significant design decisions, alternative designs, and trade-offs. You may express the alternative designs in the UML or in English, whichever seems clearer.

One limitation of the current version of Argo/UML (version 0.8.1a) is that it does not support sequence diagrams, so (unless a new version comes out in the next few weeks) you will need to draw sequence diagrams with a general-purpose drawing program. (If you have trouble finding one, let me know).

If Argo/UML's running time or memory use is unacceptable on your machine, then turn off Critiques (by clicking on "Toggle Auto-Critique" in the "Critique" menu).

Each student will be given an account in the Transaction Lab. I plan to make Argo/UML available in the Transaction Lab in an ISE440 course account. If you have your own computer with a Java run-time environment and about 3MB of free disk space, you might want to download Argo/UML onto it. Installation of Argo/UML is trivial.

In the implementation phase of your project, you may use any object-oriented programming language available in the Transaction Lab.

Your final submission must include descriptions of the contributions of each team member. This information will be considered when assigning each student a score for the project. I encourage each student to keep track of his or her contributions carefully throughout the semester, to avoid controversy at the end of the semester.

A major goal of modeling languages, such as the UML, is to facilitate communication of requirements and designs. Accordingly, I plan to have homework assignments in which you read and critique requirements and designs written by other teams.

Schedule

DeadlineActivity
2 FebTeam and topics
14 FebGoals
4 MarRequirements
26 MarDesign
30 Apr, 5pmCompleted Project
1,3 MayPresentations and Demos

Team and topics. Projects are done in teams. Each team must have 3 or 4 members. When a team is formed, one member should send a message to stoller AT cs DOT sunysb DOT edu containing: (1) the names and email addresses of the team members; and (2) a list of topics (i.e., kinds of system) on which the team is interested in working. For item 2, you have two options: (2a) give a ranking (in order of decreasing preference) of all the topics listed below, or (2b) give a ranking (in order of decreasing preference) of at least 5 topics, including at least one topic not on the list below.

We will try to assign to each team a topic from its list, subject to the constraint that different teams work on different topics. Students who do not form teams by the deadline will be assigned teams.

Some possible topics appear below. You are welcome to suggest other topics, subject to approval. Be creative! If you suggest a topic not in the list below, describe it in a few sentences. Systems that involve people in several different roles interacting with the software in various prescribed workflows will tend to be more interesting for this project. Systems that mainly perform batch processing of databases (e.g., payroll systems) are less appropriate.

Goals. Submit an English description of what you will accomplish, including (1) the functionality that will be specified by the requirements and that will be supported by the design, and (2) the functionality that will be implemented. We will provide feedback on whether the size and difficulty of the project are appropriate. Expected length of this description is 500-1000 words. Writing more is OK. Writing less is riskier for you, because you will probably get less useful feedback.

Requirements. Express the requirements for your system in the UML. The UML allows diagrams to be annotated with informal notes in English, but as much as possible, use formal structures, such as pre and post conditions (written in OCL or English) and state machines.

Design. Express the design of your system in the UML. As much as possible, use formal structures, as described in the previous paragraph, and use design patterns. When submitting the design, you might also want to submit a revised set of implementation goals, to reflect your improved understanding of the design. If you do this, we will provide feedback on whether the revised goals are appropriate.

Completed project. Submit the completed project, including

  1. Printouts of the requirements and the design, if you made any changes to them since the previous submission (changes/improvements are encouraged!). If you do not submit new printouts, I will interpret this to mean that you made no changes since the previous submission.
  2. A zip file containing all code (Java, HTML, JavaScript, Sybase files, etc.) for your implementation and files used in your testcases. Email the zip file to stoller AT cs DOT sunysb DOT edu. Do not submit printouts of your source code.
  3. Printouts of implementation-related documentation, which must include the following sections:
  4. A work breakdown, which describes the contributions of each team member to all aspects of the project. Email this to stoller AT cs DOT sunysb DOT edu.
Presentations and Demos. Each team will give a brief (approximately 20 minutes) in-class presentation about their project. The presentation should describe the requirements, design, and implementation. Your presentation should definitely include some UML diagrams, which are as effective in presentations as in written documents. Each team will meet with the T.A. to demonstrate their implementation. The demo proceeds as follows: (1) delete files produced by compilation and linking (e.g., *.class, *.o, *.exe); (2) compile the system; (3) run the system on some testcases prepared by the team; (4) run the system on testcases suggested by the T.A.

Some Possible Topics

Some of these topics are based on projects used in Object-oriented Systems 1 at Swinburne University of Technology. The length of the description is not necessarily indicative of the difficulty of the project

  1. purchasing (and accounts payable) system, supporting purchase requisitions (submitted by an employee and including sample vendor, part number, deadline for acquisition, etc.), purchase orders (created by a purchasing agent, based on the purchase requisition, contracts between the company and vendors, current promotional deals from vendors, etc.), tracking status (purchase requisition approved by department manager, purchase order issued, correct shipment received, incorrect or partial shipment received, etc.), sending messages and reminders requesting approval of purchases, tracking invoices from vendors, tracking whether full or partial payment has been issued, etc.
  2. software for building security, supporting doors with card-reader locks, flexible policies about who is allowed in which areas of the building at what times, closing doors at appropriate times (doors are held open by controllable latches such that, if the door is open, the computer can release the latch, causing the door to be closed by an ordinary pneumatic door-closing mechanism), monitoring progress of patrols by security guards (who are expected to pass through certain doors at certain times), monitoring of fire and smoke detectors, monitoring of and reaction to "burglar" alarms on internal and external door and windows, automatic notification of appropriate personnel when unusual conditions are detected, etc.
  3. software for the Immigration and Naturalization Service (INS) of an imaginary country, supporting multiple offices throughout the country, applications for documents (passports, green cards, visas, etc.), keeping track of the status of each application (supporting documents, scheduling interviews (different rules apply for people living in regions supported by different offices), sending messages to people responsible for performing or approving the next step in the application process, etc.), providing information to officials who check passports and visas at border checkpoints (e.g., in airports), etc.
  4. software for a car rental company, supporting multiple branches, multiple models of vehicles with various attributes (2-door or 4-door, manual or automatic transmission, etc.), reservations, calculating and printing invoices, corporate discounts, various pricing policies (daily and weekly rates, unlimited mileage or charge per mile above some threshold, etc.), possibly vehicle maintenance (oil changes, etc.), insurance claims, etc.
  5. software for a dental office with multiple dental assistants and multiple dentists, supporting patient information, dental records, appointment scheduling, calculating and printing invoices for insurance companies and patients (including cancellation fees for appointments canceled with too little advance notice), etc.
  6. software for a vehicle (automobile, boat, etc.) insurance company, supporting policy records, calculation of premiums, billing, insurance claims, scheduling of inspections of accident sites and damaged vehicles, scheduling of court appearances if necessary, etc.
  7. software for a bank with branch offices, ATM machines, various kinds of accounts (saving, checking, CDs, loans), etc.
  8. software for an (express) delivery company, like FedEx or United Parcel Service (UPS).
  9. software for the Department of Motor Vehicles (DMV) of an imaginary state.
  10. on-line auction system, like eBay.