Note to the Customer: Many Compontent of the Gas Pump and the Gas Pump interface have been contracted out to a hardware company as micro-controllers are out of the scope of our company. We realize that to demonstrate how the main computer is going to work and its features that there will have to be some kind of pump transactions, this will be done through 'stubs' that will simulate gas transactions from the pump. Any processes that will be contracted out will be labeled and any process that only a 'stub' will be written will also be labeled. Sorry about the inconvienience.
This is exactly what we expected.
Data flow diagrams below represent the system requirements.
The Context diagram represents the entire system as a single process. The Automated Pump System as a top level process communicates with the Customer. All the data flows between the Automated Pump System and the customer in each direction. The Customers provides the pump with the following information: Credit/Debit Card information, Desired type of gas and desired amount of gas. The Automated pump process will provide the customer with all the information needed to complete the transaction as shown on the diagram.
Webmaster's note: For some reason these first two diagrams and three others near the end of this document show up as solid black under Netscape Gold 16 v3.01 for PCs. Please try re-encoding them with a different program next time.
The Automated Pump Process is further refined in a lower level data flow diagram - Level 0 data flow diagram. The top level process expands to Configure Pump process and Customer Transaction Process. The level 0 Data Flow Diagram also shows the Data Stores which represent different databases that will be implemented to support the system. Four basic databases are required: System Configuration database, Rejected Cards database, Transaction database and the Bank Database.
The System Configuration database is used by the Configure Pump process to configure pumps. The process checks the database in regular intervals to get an update. Depending on the data read from the database the pump is able to determine:
The database is updated by the main computer for price changes and fuel talk levels. This information is crucial for pump operation. The Configure Pump Process will also update this database each time fuel was pumped so that the current pump levels can determined.
The Rejected Card Database is updated by the Customer Transaction process each time a credit card was rejected by the system when the user used a stolen card. The database will also inform the process what action is to be taken. The card might be returned to the customer or kept inside the pump if a stolen VISA card was used.
The Transaction database is used by the Customer Transactions process to store the transactions. For each transaction an entry will be made by the process to the database. All the information to identify each customer's transaction will be written to the database. The contents of this database will be used by the main office.
The Bank Database is a database that is provided by the bank. The database contains the bank information necessary to get the credit information and to check the if there are funds available if a debit card is used. The information flow is shown on the Level 0 DFD.
The Level 0 DFD also shows all the communication of the processes with the outside world, specifically the customer.
The Level 1 DFD refines the Configure Pump and the Customer Transaction processes that was shown on the Level 0 DFD. The Configure Pump process is broken down to Set Pump and Check Tank processes.
(a stub will be written so the changes made by the main computer can be seen)
The Set Pump process is executed in regular intervals. If the pump is idle the Set Pump process is executed every 5 minutes. If the pump is in use the Set Pump process gets executed at the end of each transaction. This is done so that the pump prices can be updated rapidly by the system whenever necessary. This also gives enough flexibility so the pump can be shut down in case of an emergency. As shown on the DFD the information is obtained by the process from the System Configuration database.
(a stub will be written so the changes made by the main computer can be seen)
The Check Pump Process is a process that is responsible for checking the tank levels. This is a simple process but extremely important for the pump operation. If the tank levels are too low the Configuration Database data will inform the pump about this situation. The pump will remove the type of gas in question from the list of available gas types. The customer will not be given the option to use this type of gas.
The Customer Transaction Process is refined further as well into the following processes: Process Card, Choose type of gas, Enter amount of gas, Pump Gas, Record Transaction, and Update Bank process.
This process is responsible for credit and debit card operations. The process takes as an input data given by the customer when the card is inserted to the pump. The process extracts the following information from the card provided: Cardholder's full name, Credit or Debit card number, Expiry date. Also in case of Debit Card the Personal Identification Number (PIN) is needed and the customer will be prompted to provide that.
The information obtained will be used to check for credit necessary to complete the transaction. Also if stolen Credit card is encountered the Rejected Card database will be updated and the appropriate action will be executed.
(a stub will be written here, it will allow for different transaction with different gas types to be entered)
The customer will be prompted by the system to select type of gas desired. The options available to the customer will depend on the tank level figures provided by the Configuration Database. The Choose type of gas process will use the information provided by the user and the database.
The user will be given a choice as to what amount of gas is desired.
The options will be pre-selected amounts (i.e. $5, $10 etc.) or manual. The Enter amount of gas process will give these options to the user and register user's input.
(this will be a simple stub)
This process is responsible for updating the screen for the current amount of gas and current transaction total values. The user will release and press the handle ojn the pump as desired and the gas will flow will reflect that . Also on the screen the current number of liters and the current dollar amount for transaction will be updated accordingly.
(information to the user will be a simple stub , but the transaction database will be updated, no ack will be implemented {the hardware company will look after this} )
This process is responsible for updating the Transaction database and also for giving the transaction information to the user. This process is also responsible for production of the receipt.
(this will be a stub that will just show messages to the screen as to what would be occuring if a communication line was set up with a bank)
The Update Bank process updates the bank with the transaction information. The funds will be debited or credited from/to the appropriate account. If the user uses a debit card and a smaller amount of gas was pumped than originally selected the difference will be credited back to the customer's account.
This is perfect.
(this will be done using a stub where we
will use our own algorithms to figure out what type of card is being used,
we are unable to obtain the actual algorithms from the approriate card
companies) The Identify Card precces will use an algorithm
provided by each of the apprpriate Card companies to decide what type of
card has been entered. This will allow the pump to calll the appropriate
number to get verification on the card. The type of card that has been
entered will be return and a messaged will thank the user for entering
their card. (i.e. "Thank for entering you VISA card") (this will be a stub where we check the a flag
from a pre-made list that will be used for simulation) This process checks to make sure that the card that
has been entered is vaild. The reqiured card information is entered and then
the bank is called. If the card is okay then an okay status is return to the
user. If the card is not okay then the appropriate information is entered in
to the Rejected Card data base. (this will be stub where the information will
probably be copies to a file or outputed to the screen) The Generate Recipt process is used to print a
recipt to the customer with all the valid information on it from the
transaction. (the ACK will not be implemented as this will
be done in hard ware so we will write a stub and assume the main comuter is
okay, if time permits a stub may be written to simulate the main computer
failing but this can not be assured) This process is used to update the main coputer so that it knows what has
recently happen. This is also used to keep track of sales that have occued
during the day.
An acknowledgement is returnto make sure that the main computer is still up
and running, if the Ack is not received then the pump will keep trying to
send its data and will not work unless it receives the acknowledgement from
the main computer (transaction database). The Update tank level process let the main computer
know how much gas has been used up in the last transaction, this is
neccessary to make sure that the tank are not run empty.
This is great because we definitely don't want a tank running empty.
2.1.1 Identify Card
2.1.2 Check Credit
2.5.1 Generate Receipt
2.5.2 Update main Computer
2.5.3 Update tank level