Examples of RAD from JAMES
1.0 General Goals - Bonus Subsystem
The bonus system is a way for a
Mercedes owner that also owns a Smart Card to receive benefits for using
Mercedes dealers for their service needs. Whenever maintenance is performed on
the owner's Mercedes, they will earn a certain number of bonus points based on
the type of service. These bonus points can be redeemed for other services or
products.
2.0 Current System - Vehicle Subsystem
The current simulators from
Daimler-Benz consist of a Windows SA/RT simulator written in C, that simulates
only the vehicle seat. There is also the AIM/CANalyzer simulator software
written in a Canalyzer language similar to C, from Daimler-Benz that can
simulate multiple vehicle functions running on a laptop computer.
3.0 Proposed System - VIP Subsystem
3.1 Overview
The VIP subsystem will be designed to provide
personalization functionality of the JAMES system. Essentially, the VIP system
is intended to maintain a record of the user's personalized preferences and data
which may be applied or accessed in any JAMES enhanced vehicle. The settings
that the users can manipulate fit into two categories. First, the user can
adjust settings on physical devices within the car such as seat position, mirror
position, radio channel presets, dashboard light intensity, fuel economy, and
climate control. The second group of settings are those which do not have a
real-world component. This group will include the database portions of the
currently implemented phone book, address book, and related applications as well
as extensions to other configurable objects. The VIP system behavior will be
almost entirely automatic, leaving its activity transparent to the user. This
will lend a continuity to the feel of user's driving experience across all JAMES
enhanced vehicles.
3.2 Functional Requirements
The functional requirements of the VIP
Subsystem system are to store and retrieve data in an efficient, and flexible
manner. In order to accomplish this, the VIP system, upon insertion of the
JavaCard, will query the vehicle to get a list of objects installed on the
system. Once this list of objects, everything from radio presets to seat
position, is returned, the VIP system will attempt to find the best match
between what settings are currently saved, and what settings the car requires.
After the user has restored his old settings, and makes any new adjustments, the
saving of settings will be done without any knowledge by the user. If the user
wants to manually save and restore his settings, he will be able.
3.3 Non-Functional Requirements
3.3.1 User Interface and Human Factors - Maintenance Subsystem
This
system will be used by two main groups of people: First it can be used by an
authorized representative of the owner of the car which could be the driver,
friend of the driver, fleet manager or someone else. Second, it can be used by
the mechanic or some other representative of the garage, such as a manager. The
complete user definitions are described in section 3.5.2.1 User Model.
For simplicity, in the rest of this document driver will refer to the driver
or any authorized representative of the driver, while mechanic will refer to any
authorized representative of the garage.
The central database, as used in this document is physically several
databases, including several legacy servers. These servers will be distributed
across separate sites on the Inter/IntraNet. It will be used for long term
storage of the maintenance history and possibly other information. See the
System Design Document for additional information on databases.
The assistant will exist on several different locations. There will be a home
assistant for the owner to use at home, an assistant on the vehicle for the
driver to use, as well as an assistant in the dealer's garage for him to use.
For the owner/driver, the assistant should be simple and easy-to-learn. This is
especially important for the home assistant, as users will have only occasional
interaction with them. The mechanic will have more frequent interaction with the
assistant, so the interface in the dealer garage should enable mechanics to
enter transactions quickly and easily. In both cases, users should be protected
from making significant errors, as these records are maintained for the life of
the car.
In terms of hardware, the driver will need a computer and a card reader in
his home to download the maintenance applet and view the maintenance history.
Software will be needed to interface with the card reader. The mechanic will
also need a similar computer and card reader in the garage. In the vehicle, the
maintenance system expects access to a touch-sensitive screen that can display
our assistant and receive input from the driver.
A final design goal for the user interface is to achieve the same elegant
simplicity of interaction for which Mercedes-Benz vehicles are known. The
interface should not appear complicated, nor require extensive explanation.
3.3.2 Documentation - Travel Subsystem
Documentation should be included
which covers all use cases of the travel application. Within it, there shall be
sections covering the user interface and how it is to be utilized in conjunction
with the rest of the travel application in order to provide all the
functionality covered in the problem statement. Documentation will be available
on how to plan a route, update the SmartCard, edit a route and view the route.
Documentation will account for different environment settings where the system
is used, such as planning the trip on the user's home pc, or viewing a route on
the road. The target audience of the documentation are the users of a Mercedes
vehicle. The documentation will take into consideration that both drivers and
passengers could be using the system while on or off the road.
3.3.3 Hardware Consideration - Logbook Subsystem
The LogBook application
will have pieces running on three different hardware platforms: the car's
computer, the SmartCard, and the user's computer. The logging of trips will be
done on the car's on-board computer, and the tax forms will be printed on the
user's computer or prepared by a service center. The only thing left for the
SmartCard to do is transfer trips between the user's computer and the car.
The car's computer is comparable to a desktop personal computer, probably
with a real-time operating system, and should be capable of running full Java.
Also, the storage capacity should be much greater than what the SmartCard has,
however space will still be a consideration in this application.
The SmartCard itself runs a watered down version of java with no threads, no
garbage collection, no exceptions, or much of anything that makes Java useful.
The card has a total of 2.8KB of space available for our program and any data we
need to store. The other risk with the card is that the Java operand stack only
has 32 bytes. So, you can't have a deep call tree, use class hierarchy, or have
lots of local variables. The code that goes on the card has to be without
excess. Making a good, reusable, application to run on the card will not be
easy.
The user's computer, which handles the tax forms and final storage of trips,
should present many design challenges. Talking to the card maybe somewhat
difficult, as it is necessary to go through an old DLL, but any ugliness there
can be encapsulated. Once the communication is taken care of the tax form
generator shouldn't in any way stress the resources of a modern desktop
computer.
3.3.4 Performance Characteristics - Bonus Subsystem
The web interface
used by the driver should be relatively fast over a 14.4 Kbps modem connection.
A page should take no longer than 10 seconds to load at this speed. The web page
therefore can not hold more than 30 KB of information. This includes the
information transferred to the user as well as information obtained from
databases through queries. The system should be able to sustain this rate with a
moderate load of users.
The dealer terminal should have a user interface with no noticeable delays.
Any delay in the system should be accompanied by a status message or at least an
indicator that the slowdown is a result of information retrieval and not poor
programming. The dealer should be able to download any needed information and
present it to the customer within 10 seconds, barring hardware or network
problems.
The Smart Card can only hold 2.8 KB of data. Anything placed on the card must
be smaller than that. Information traveling over the network should be as small
as possible to eliminate delays. The servers holding the information should have
large enough storage to accommodate the data with at least 15% breathing room
and redundancy, if cost effective. The servers holding the information should be
expandable so in storage need increases, more space can be added.
3.3.5 Error Handling and Extreme Conditions - Logbook
Subsystem
3.3.5.1 Error Handling
There are three components to
the LogBook Assistant software: the on-board computer code, the personal
computer code, and SmartCard transfer code. These are subject to various types
of input errors, to be discussed separately. The onboard computer code
communicates with the user (during driving) via three buttons: "Start Trip,"
"Pause Trip" and "End Trip." In each state (in a trip, or not in a trip) the
behavior of these is well-defined: pressing "Start Trip" when a trip is in
progress shall start a new trip, pressing "Pause Trip" when a trip is in
progress shall suspend or resume the trip (as appropriate), and do nothing if no
trip is in progress, and pressing "End Trip" when no trip is in progress shall
be ignored. The onboard computer code communicates with the administrator (or
the server, when retrieving trip information) via the onboard touch screen. The
data retrieval mode (copying information onto the card) will be designed to
eliminate, as much as possible, any opportunities to make invalid input: trips
or legs which may be retrieved or deleted are displayed in a list box, and no
buttons may be pressed for invalid operations (e.g., if the user does not have
permission to delete a trip's information, the 'delete' button shall be either
disabled or hidden). The personal computer component of the system has the most
complicated user interface, since t must allow the user to select trips for
which to print tax deduction forms and possibly to edit trip data (join or split
trips). Until the functionality of this component is determined, input errors
and their handling cannot be fully analyzed.
3.3.5.2 Exceptional Conditions
'Exceptional conditions' in the
context of the LogBook assistant are assumed to be limited to starting or
stopping a trip very shortly after starting the car or very shortly before
stopping the car (i.e., turning the motor on or off). In these cases, the trip's
data is 'rounded off' to reflect he car's location when the engine starts or
stops, rather than when the 'Start Trip,' 'Pause Trip' or 'End Trip' buttons are
pressed. The conditions for performing such round-off are not yet defined, but a
suggested possibility is that the odometer has not changed by more than 0.1
miles. It has also been suggested that this be possible to change after
manufacture -- perhaps by taking the car into a service center to change the
onboard computer settings.
3.3.6 System Interfacing - Maintenance Subsystem
This system is
primarily standalone. It interfaces with the authentication subsystem to
authenticate the driver and dealer. There is a Bonus Points system to reward the
driver for maintenance requests. This will be implemented in the future. See the
System Design Document for further information. There will be an Event
Notification System and a Name Service that will allow the Maintenance Assistant
to communicate with its user interface. It will also allow it to communicate
with any other Assistant or system that uses the Event Notification and Name
Service. They will communicate using standard Java and CORBA. CORBA was decided
over RMI because it allows the system to talk to other systems there are not
necessarily written in Java.
3.3.7 Quality Issues - Travel Subsystem
The system must be reliable, in
the sense that it must provide the correct route information to the user. This
means that the route and sites of interest are displayed correctly. The system
response time for a user request, such as View Trip, should take a maximum of 5
seconds. The user must be notified if the current GPS location does not lie
along the planned trip. The system must also be compatible with the Schlumberger
standards so that it does not damage the SmartCard in any way.
The system must recognize when certain components that it relies on are down.
For example, if the GPS is not responding, the system must deal with the problem
appropriately.
The system must be aware of how much space there is left on the card. It
should notify the user when there no more trips could be stored on the card.
Although, right now, the card may only allow one assistant at a time, it is
expected to increase in memory and become a Multi Functional Card ( MFC ). This
means that the card will allow to have different assistants running at the same
time, as well as allow dynamic downloading of assistants. The Travel Subsystem
should recognize that there are other applications running on the card. It
should never interfere with the other applications.
The component of the system which plans the route must be able to run on any
hardware/operating system environment which has a Java Virtual Machine. It is
important not to restrict the user's choice on where they can plan their trip.
The component of the system which contains the specific trip information must be
compatible with the Cyberflex SmartCard architecture. The cardlet should never
perform actions which will damage the Java Virtual Machine on the
SmartCard.
3.3.8 System Modifications - Vehicle Subsystem
Initially the only
component that will be simulated will be the seat. It will be simulated first
through a Java stub and then through the AIM/Canalyzer or SA/rt. If time permits
this would be expanded to other vehicle components. The implementation side of
the vehicle bridge is likely to get changed as new seat, mirror, entertainment,
etc. units are introduced. This may involve simply new CAN bus ID's, or entirely
new transactions on the bus. New units may also require modifications to the
server side, for example if there are new parameters that must be set or read
from the unit. These are not as likely as modifications to the implementation
side.
3.3.9 Physical Environment - VIP Subsystem
At this time, the target
equipment is the Cyberflex JavaCard. However, the design of this system should
be generic enough to take on new features of cars, as well as new types of
cards. For example, if there is more room on a new JavaCard, then there should
be more data stored.
3.3.10 Security Issues - Bonus Subsystem
Access to data must be
controlled. No driver may alter any bonus point data. Mercedes policy makers
shall dictate bonus points earned for service and bonus points cost for service
or product. This information will then be given to the system administrator of
the web server, who will change the information. The only information dealers
may change are the bonus points on a Smart Card, and only after the driver has a
service done or purchases a service or product using their bonus points.
Physical security is also an issue. Any employee at a dealership should not
be able to view all the information about a customer. Access to the web server
must be restricted to the system administrator only.
3.3.11 Resource Issues - Logbook Subsystem
The resources in the LogBook
use the card as a data transfer medium and will be backed up on the external
system whenever the card is inserted to the card reader attached thereof. The
LogBook system will be installed along with the rest of the JAMES system, most
likely at the factory with the rest of the car. The administrator will be free
to administrate the logs as they see fit. Data on the external system will be
considered to be the master data; if an administrator modifies data on the
external system and the resulting data conflicts with newly arrived data from
the vehicle or car, the external system data will be used.
3.4 Constraints - Maintenance Subsystem
The system will be developed
with Java (JDK 1.1.4) with CORBA using VisiBroker. Object and case models will
be constructed using the CASE tool Rational Rose 4.0. Source control will be
handled using Perforce. See Section 9. Issues of the System Design Document for
further discussion. There will be an interface to the legacy system, depending
on the access granted to us by Mercedes.
3.5.1 Scenarios - Travel Subsystem
A driver wants to plan a business
trip. He calls up the travel application on his pc at home, and calls upon it to
create a route. The travel application calls upon the map service, which
displays a map, including the sites of interest which are along the way of his
route to be planned. He selects a route, then saves this route on the card.
A driver who has saved a route on the card is driving along the route planned
and wants to see how far he is along on the trip. He goes to the travel
application and selects view trip, which calls the navigation system to find the
car's current location, then the map service to get the map of the location,
correlating that with the route that was planned, showing the current location
of the car on the map.
A driver decides that he doesn't have time to stop at all of the sites of
interest along the way between the beginning of his trip to the final
destination. He calls upon the update trip part of the travel application, which
calls the navigation system to determine the current location of the car, and
correlates the map service map with the route planned on the card to show on the
screen the current location of the car on the map. Then, he deletes the location
at which he is unable to stop at. If he wishes to add it again, or add another
location, he calls upon update trip to show his current location, then selects a
location from the map provided by the map service to add a location to his
route.
3.5.2.2 Use Case - Vehicle Subsystem
NAVIGATIONAL
TEXT FOR THE USE CASE BELOW -- The top level use case illustrates the
relationship between the various subsystems and the vehicle. The vehicle
subsystem provides the other subsystems with interface services to the vehicle.
In terms of the services it provides to other subsystems, the vehicle subsystem
is divided into four areas. They are services to Logbook for getting odometer,
clock, date, and location readings. Maintenance for diagnostic testing. Travel
for getting GPS information, and VIP subsystems for controlling and getting
information about components of the vehicle.
TOP-LEVEL DESIGN USE CASE
3.5.3 Object Model - VIP Subsystem
3.5.3.1 Data Dictionary
Driver Info:
This will consist of a
driver name and a password and is used for the purpose of authentication and
driver identification.
Car Description:
This is the description
of the Car that will include the model of the car and a list of installed
components in the car.
Component Settings Data:
This data is what
will be returned to the VIP system from the car and will describe the settings
of a component.
Other Assistant HCI settings:
This data will be
returned from HCI and will describe the current settings and layout for the user
interface settings of another Assistant program.
Default Data:
This data will be some default setting for the both component settings and
for the other Assistants HCI settings.
Messages:
These are simple
event notification that tells one process that something has occurred that is of
importance to it.
VIP Settings:
This is simply the data stores
the current settings of the VIP User interface.
3.5.3.2 Class Diagrams
The most basic object that VIP can manipulate is
the CarComponent module. A CarComponent is any piece of the car that can have a
setting. It can be hardware, such as a seat or a mirror, or it can be software,
such as an "interface setting" for HCI.
In order to store and retrieve these CarComponents, a list object must be
maintained. The list object is simply a container for the CarComponents. It
allows one to add or remove CarComponents, as well as query for a certain type
of component.
Figure 3.5.3.2.1 Car Component Object
Three different list of object must be maintained. The CardList is the list
of CarComponents which the JavaCard currently knows about. The HardwareList is a
list of CarComponents that the Vehicle currently has installed. The SoftwareList
is a list of settings for components that are do not map to any physical object.
Figure 3.5.3.2.2 Car Component List
3.5.4 Dynamic Models - Logbook Subsystem
3.5.4.1 Sequence Diagrams
Start Vehicle
Figure 3.6 The user is starting the vehicle.
3.5.5.1 Navigational Path for the Web Application - Bonus Subsystem
The
customer at home will be access the bonus points system using a PC through the
internet. The customer will be able to view his or her points and looks through
the Mercedes Benz catalog finding out if his or her points will be sufficient to
buy goods listed on the catalog.
Web Application Navigational Path
3.5.5.2 Screen Mockup - Maintenance Subsystem
Below is the application
that a mechanic would interact with. The interface provides a way to view and
edit the maintenance history of the vehicle and view recommendation. The driver
would use a similar interface at home, except the option to generate a new
maintenance entry would not be available.
Screen mockup of mechanic application