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
