Project 1
Software Engineering, CS 561
10 Points, Due Sept. 23, 2013
You must work in teams of two on this project.

Assume a client has asked to you to develop software to handle the sensor input and display for the instrument panel of a car.  The client wants the handling to be software-based and wants the software developed using an object-oriented tool.  You may assume that the client is open to different types of displays, but wants to have the ability to handle at least ten different sensors in the instrument panel.

Watch a video on an automotive instrument cluster, read about one, or review your own from your vehicle or a friend's.  Two videos displaying instrument panels are provided below.

LFA Customizable Instrument Panel
RSIM E36 SimCockpit

You may need to watch a video several times, review the components of an instrument cluster multiple times, and read about sensors to complete this assignment.  Your primary goals for this assignment are to learn about domain analysis, requirements gathering, and design of a program.  The secondary goals, in order of importance, are to test and program your design.  Keep in mind you will be performing domain analysis, assessing requirements, creating a specification, designing and prototyping for an automotive instrument panel.  This assignment is open-ended, so you may choose the type of instrument panel you wish to investigate (e.g. analog display, digital display, GUI display, etc.).

I. Domain Analysis and Requirements Assessment

Analyze the instrument panel of an automobile and the sensors connected to it.  Since this assignment is open-ended, you must, in your own words, write a paragraph describing the goals of your project.  Be sure to include a description of the project itself, possible customers and users, the environment in which the system will be used, and a brief (two to three sentence) description of at least one piece of similar software.

Next, using a word processing tool like MS Word or Open Office Writer, list and describe the components you are planning to implement as part of your design.  Your instrument panel must include at least ten different connected sensors and related indicator components to display the results of these sensors within the instrument cluster.  Therefore, you should have a description of the instrument panel itself, its components, and each sensor you plan to have attached to it.  You may include images of the panel and sensors.  Be sure to include, at minimum, a web link and, at most, a full reference for each of your descriptions.  These descriptions should be short -- two or three sentences, at most.  Some examples of instrument panel indicators include:

Speedometer
Tachometer
Odometer
Check Engine Notification
Temperature Indicator
Tire Pressure Indicator

Examples of sensors include the following:

Speed Sensor
Coolant Temperature Sensor
Tire Pressure Sensor
Exhaust Gas Oxygen (O2 or Lambda) Sensor

You will need to investigate other sensor components and think about how object might allow these sensors to connect to the instrument panel.  It is recommended that this work be divided between team members.  Each team member could investigate five sensors and the display component for each.  Note that some display components such as the Malfunction Indicator Lamp (Check Engine Light) might take input from multiple sensors.  This section should describe what each component does, not necessarily how it will function in a software system.

II. Requirements Specification

Write a short requirements document, explaining in complete sentences how your instrument panel and sensors will interact with each other.  This document must explain how each part of the system should work, what data must be sent from sensors to the instrument panel, and how the components of the panel will react.  Note that a requirements document explains the required operations of a software system, but does not typically include code.  It is recommended that this document be divided into two parts.  The first part could explain, using bullet points, how each component of the instrument cluster reacts to data received.  The second part could explain, again using bullet points, how each sensor acts, what data it might produce, and any possible error codes that might be produced.  An example of part of a specification is included in the next section and is italicized.

III. Partial Design, Implementation, and Testing

Provide simple UML diagrams for the sensors, instrument panel, instrument panel components, and any pertinent communication components. Note that there is likely an inheritance relationship many of the sensors. There is also a composition relationship between the instrument panel components and the instrument panel itself.  You might want to define a base Sensor class and define the other specialized Sensor classes as generalizations of the the Sensor class. Note that many Sensors have similar properties including the ability to transmit a value, transmit an error code, and perform a self-test. These sensors also often have minimum and maximum valid values and have a current value.  Specific sensors might transmit data using different methods.  For example, the tire pressure monitoring system often uses a sensor contained within a tire.  This sensor transmits that data to a receiver, which then notifies the instrument panel of any tires with low pressure.  The vehicle speed sensor typically transmits speed data via wire to other systems such as the anti-lock braking system, the engine control unit, speedometer, etc.  Thus, an class representing the tire pressure monitoring sensor might include one tire pressure attribute and functionality to transmit this data to a receiver.  It might also include a warning transmission function and a sensor failure function.  There might be a class representing the entire tire pressure monitoring system as part of the console that has the ability to receive and store data from four sensors (one for each tire of a car) and might include a function allowing for display of all four tire pressures.  Notice that from the description, many sensors should have behaviors and attributes that will be displayed within class diagrams.

After creating your class diagrams, create stub methods and a driver program, to test your classes and their methods.  Note that stub methods are not fully functional methods, instead, they test your code using simple, valid, data values.

It is recommended that you use a tool such as ObjectAid (an Eclipse plugin) to create class diagrams directly from your code. It is important that you be creative in your design, especially in describing functionality.

IV. Submission

Only one team member is required to submit the assignment; however, both team member's names must be on the assignment.  Submit your project as a zip file to the eCompanion dropbox for Project 1. You are expected to submit several items as part of this assignment:

1. A document, perhaps 2-3 pages, containing the Domain Analysis of the project (i.e. project description and sensor, instrument component, and instrument panel descriptions).
2. A specification document - several pages describing in plain English how your software system will function.
3. A partial design for the software system using UML diagrams.
4. Source code for the driver program, classes, and stub methods.