Specify Requirements

Bread Crumbs: Home - SW_Dev_Proc - Req Engr - Spec Req

Requirements are first stated in prose. They are then elaborated using requirement specification templates.

Requirements are the raw material from which design documents, implementation code, and test designs / implementations are derived and so it is critical that requirements are correct. System and acceptance test case descriptions can begin in parallel with the requirements specification process.
At the end of this web page, the V-Model is again referenced with respect to how it applies to interface design.

A requirement should first be specified in the language of the customer so that concurrence with the customer is assured. That form of the requirement is the prose or free-form version of the requirement and may be referred to as the user requirement definition. Several user requirements follow for the microwave oven example:

Req ID

Requirement Text

 

Non-Functional Requirements

N1

Usability: A typical user shall be able to start the cooking process within 10 seconds of arrival upon their fourth use of the microwave oven.

N2

Usability: A maximum of 15 keystrokes shall be required for a microwave oven cooking operation.

N3

Reliability: The microwave oven shall provide 99.999% availability.

N4

Reliability: The microwave oven shall provide a Mean Time Between Failure (MTBF) of 4,000 hours.

N5

Reliability: The microwave oven shall provide a Mean Time To Repair (MTTR) of 21 business days.

N6

Reliability: The microwave oven shall function properly with an input voltage of 120 VAC +/- 10 VAC.

N8

Reliability: The time-of-day clock shall drift no more than 1 second over a period of continuous operation of 30 days.

N7

Performance: The timer shall alarm within .05 seconds of the exact time period specified up to the maximum timer duration allowed.

N8

Performance: The microwave oven shall begin the cooking process within .1 seconds of final key depression.

N9

Performance: The microwave oven shall provide power at the specified power level within a tolerance of +/- 1 Watt.

 

Functional Requirements

F1

Each time a keypad button is pressed a tone shall sound.

F2

A tone shall sound each time the door is opened or closed.

F3

When the microwave oven is powered on it shall default to the clock function.

F4

The microwave software shall support the following functions as described in more detail in the requirements that follow:
a) F4.1: Clock
b) F4.2: Timer
c) F4.3: Auto Cook Presets
d) F4.4: Auto Defrost
e) F4.5: Timed Cooking

F5

The active microwave function shall be identified on the microwave LCD screen.

F4.1.1

The clock function of the microwave oven shall be activated when the Clock keypad button is pressed.

F4.1.2

The default clock value at power up shall be 12:00.

F4.1.3

The clock shall be operator settable, in one-minute increments, from 12:00 to 11:59.

F4.1.4

When the clock function is active, the current time shall be displayed on the microwave oven LCD screen.

F4.1.5

The initial clock value shall be settable by using the keys 0 through 9 on the microwave touch pad.

F4.1.6

When the clock function is active, and the start button is pressed, the clock shall begin incrementing the current time value at a rate of a minute per depression of the start button.

F4.1.7

A colon symbol (“:”) shall be displayed between the hours and minutes numerals on the display.

F4.1.8

When the clock is running, the colon symbol between the hours and minutes numerals on the display shall be alternately turned on and off each second.

F4.1.9

When the clock is not running, the colon symbol shall not be turned on and off, but shall remain on.

F4.2.1

The Timer function of the microwave shall be activated when the Timer keypad button is pressed.

F4.2.2

The default timer value at power up should be 00:00.

F4.2.3

The initial timer value shall be settable by using the keys 0 through 9 on the microwave touch pad.

F4.2.4

If the timer value is between 99:99 and 00:01 inclusive and the Start button is pressed, the timer value shall be decremented by one second each second until either the Stop/Clear keypad is pressed or the timer reaches 00:00.

F4.2.5

Within 200 milliseconds after the timer decrements from the value of 00:01 to the value 00:00 a buzzer shall sound.

F4.2.6

While the timer function is active, the current timer value shall be displayed on the microwave’s LCD display.

F4.2.7

If the stop/clear button on the microwave oven keypad is pressed while the timer value is decrementing, the timer value shall stop decrementing and the timer value at the time the Stop/Clear button was pushed shall be displayed.

F4.2.8

If the timer was stopped during countdown and the start keypad is pressed the timer value shall once again begin decrementing from the time at which the timer was stopped.

F4.2.9

If the timer was stopped during countdown and the stop/clear button is pushed a second time the timer value should immediately be set to 00:00 and the buzzer shall sound to indicate that the time countdown has been canceled.

F4.2.10

The timer countdown shall not stop if the microwave door is opened during the countdown.

F4.3.1

The microwave shall provide a series of presets for heating common food items.  A preset will be included for each of the following: microwave popcorn, baked potatoes, pizza, frozen entrees, fresh vegetables, and liquid beverages.

F4.3.2

Each preset button shall have the capability of having a unique cooking time and power setting associated with it.

F4.3.3

When an operator presses the start button following after pressing an auto cook preset button:
a) the oven shall be turned on at the correct predefined power setting
b) the correct predefined cooking time shall be displayed in the LCD screen
c) the cooking time shall begin decrementing

F4.4.1

The microwave oven shall provide an auto defrost function that will automatically set the defrost time and power level for frozen meat items depending on the weight of the item entered by the user.

F4.4.2

The auto defrost function shall include three settings: Beef, Poultry, and Fish with the capability of providing a unique power level setting for each of these types of meat.

F4.4.3

A menu shall be displayed on the LCD screen to provide the operator with the choice of selecting Beef, Poultry, or Fish.

F4.4.4

The auto defrost function shall require the user to enter the approximate weight of the meat item being defrosted.

F4.4.5

The user shall be prompted by a message displayed on the LCD to enter the approximate weight of the meat item using the numeric keypad.

F4.4.6

The auto defrost function shall require that the start key be pressed when the user is ready to begin the defrosting operation.

F4.5.1

Prior to starting the timed cooking, the operator shall have the capability to choose a power level from 1 to 9 by first pressing the power level button followed by one of the numeric keys, 1 through 9.

F4.5.2

The default power setting shall be level 9.

F4.5.3

The initial cooking time value shall be settable using the buttons 0 through 9 on the microwave oven keypad (AKA touch pad).

F4.5.4

The default cooking time value at power up shall be 00:00.

F4.5.5

While the timed cooking function is active, the current cooking time value shall be displayed on the LCD screen.

F4.5.6

If the cooking time value is greater than zero and the start keypad button is pressed:
a) the oven shall be turned on and
b) the cooking time value shall be decremented by one second each second until either the stop/clear button is pressed or until the cooking time value reaches 0:00.

F4.5.7

If the stop/clear button on the microwave keypad is pressed while the oven is on:
a) the oven shall be shut off,
b) the cooking time value shall stop decrementing, and
c) the cooking time value at the time the stop/clear button was pushed shall be displayed on the LCD display.

F4.5.8

If the microwave door is opened during cooking:
a) Within 500 milliseconds the oven shall shut off
b) a buzzer shall sound
c) the cooking time value shall stop decrementing
d) the cooking time value when the door was opened shall be displayed on the LCD display.

F4.5.9

If cooking was stopped before the time reached 00:00, either from the door being opened or from the stop/clear key being pressed, and then (assuming the door is now closed) the start keypad is pressed:
a) the oven shall be turned back on and
b) the remaining time to cook value shall once again begin decrementing.

F4.5.10

If cooking was stopped before the time reached 00:00, and the stop/clear button is pushed a second time:
a) the cooking time value shall immediately be set to 00:00 and
b) the buzzer shall sound to signify that the cooking has stopped.

F4.5.11

Within 200 milliseconds after the timer decrements from the value of 00:01 to the value 00:00,
a) the oven shall be shut off and
b) the buzzer shall sound.

F4.5.12

When the oven is on, the operator shall not be allowed to change the power level.

F6

Error codes shall be displayed for hardware failures.



The prose form of the requirement must now be analyzed and broken down into more specific requirements that lend themselves to detailed modeling and implementation.
These requirements can be referred to as system requirements. Several system requirements follow for the microwave oven example:

Function:

F1: Sound tone when button pushed

Description:

A tone should sound each time the operator pushes a button on the keypad.

Inputs:

Signal from the keypad that a button was pressed

Outputs:

A tone to the sound output device

Destination:

Sound output device

Pre-condition:

A keypad button must be pressed

Post-condition:

A tone will be heard

Side effects:

None


Function:

F2: Sound tone when door is opened or closed

Description:

A tone shall sound whenever the microwave door is opened or closed.

Inputs:

Signal from door sensor

Outputs:

A tone signal to sound output device

Destination:

Sound output device

Pre-condition:

The microwave door must be opened or closed

Post-condition:

A tone will be heard

Side effects:

None


Function:

F3: Default to clock Function

Description:

When the microwave is powered up it should default to the clock function.

Inputs:

None

Outputs:

The default time should be sent to the LCD screen

Destination:

LCD screen

Pre-condition:

The microwave is just powered on

Post-condition:

The default clock time should appear on the LCD screen

Side effects:

None


Function:

F4: Microwave functions supported

Description:

The microwave shall provide a timer, a clock, six auto cook presets, an auto defrost mode, and a timed cooking mode.

Inputs:

Buttons on keypad

Outputs:

The desired function is selected depending on which buttons the operator presses

Destination:

Mode control portion of microwave software

Pre-condition:

A button on keypad is pressed to choose function (e.g., the clock button selects the clock function).

Post-condition:

The desired microwave function is selected and displayed on the LCD screen (see requirement 5.3.1.5).

Side effects:

None


Function:

F5:Display active microwave function

Description:

The current microwave function should be displayed on the LCD screen.

Inputs:

The active function indicator

Outputs:

The active function indicator

Destination:

LCD screen.

Pre-condition:

One of the microwave functions, or the default function, is active

Post-condition:

The active function is identified on the LSC screen

Side effects:

None


Function:

F4.1.1: Activate Clock

Description:

The user pressed the clock button on keypad

Inputs:

The user inputs the current time from the keypad.

Outputs:

The desired time

Destination:

LCD screen

Pre-condition:

Microwave oven must be powered and clock button has to be pressed.

Post-condition:

The clock function should be active as indicated on the LCD screen.

Side effects:

None


Function:

F4.1.2: Default clock value

Description:

The clock time’s default is at twelve (12:00).

Inputs:

None

Outputs:

The desired time.

Destination:

LCD screen.

Pre-condition:

The microwave was just powered on

Post-condition:

The clock is set to the default value and this value is displayed on the LCD screen.

Side effects:

None


Function:

F4.1.3: Clock settable in one-minute increments

Description:

The clock should be settable to any minute of the day.

Inputs:

The user inputs the current time from the keypad.

Outputs:

The desired time

Destination:

LCD screen

Pre-condition:

None

Post-condition:

The desired time is displayed on the LCD screen.

Side effects:

None


Function:

F4.1.4: Displaying the current time

Description:

The current time is displayed on the LCD screen.

Inputs:

None

Outputs:

The current time

Destination:

LCD screen

Pre-condition:

The clock function is active.

Post-condition:

The current time is displayed on LCD screen.

Side effects:

None


Function:

F4.1.5: Setting the clock

Description:

Buttons 0 through 9 are used to set the clock.

Inputs:

The user inputs the current time from the keypad.

Outputs:

The current time

Destination:

LCD screen

Pre-condition:

The clock function is active.

Post-condition:

The LCD clock value displays the time that was set by the user.

Side effects:

None


Function:

F4.1.6: Starting the clock

Description:

Once the clock has been started, the current time value should increment each minute.

Inputs:

The start button is pressed

Outputs:

The current time

Destination:

LCD screen

Pre-condition:

The desired time has been entered.

Post-condition:

Time is incrementing on the LCD screen.

Side effects:

None


Function:

F4.1.7: The colon symbol

Description:

The colon symbol separates minutes from hours.

Inputs:

None

Outputs:

The colon symbol

Destination:

LCD screen

Pre-condition:

The clock function is active.

Post-condition:

The colon separates the hours from the minutes on the LCD screen.

Side effects:

None


Function:

F4.1.8: The flashing colon symbol

Description:

The colon is flashed when the clock is running.

Inputs:

None

Outputs:

Signal to turn the colon symbol on and off

Destination:

LCD screen

Pre-condition:

The clock function is active.

Post-condition:

The flashing colon indicates that the clock is running.

Side effects:

None


Function:

F4.1.9: The non-flashing colon symbol

Description:

The colon is not flashed while time is being set.

Inputs:

None

Outputs:

Signal to keep colon on.

Destination:

LCD screen.

Pre-condition:

The clock function is active

Post-condition:

The colon remaining on indicating that the clock is not running.

Side effects:

None


Function:

F4.2.1: Enter Timer function

Description:

Enter Timer function in microwave software

Inputs:

Timer button on the keypad

Outputs:

Signal to turn on Timer function light

Destination:

LCD screen

Pre-condition:

Any function could be active

Post-condition:

Timer function selected as indicated on display

Side effects:

None


Function:

F4.2.2: Default timer value

Description:

Set timer value to default value (00:00)

Inputs:

Initial power applied to microwave

Outputs:

Timer value initialized to zero

Destination:

Timer function

Pre-condition:

Timer value not initialized

Post-condition:

Timer value initialized to zero

Side effects:

None


Function:

F4.2.3: Set timer value.

Description:

The operator sets the desired timer value

Inputs:

Buttons 0 through 9 on keypad

Outputs:

Timer value to be used by timer function

Destination:

Timer function

Pre-condition:

Timer value unknown

Post-condition:

Timer value set to value entered by user.

Side effects:

None


Function:

F4.2.4: Decrement timer value

Description:

Decrement the timer value once per second.

Inputs:

Original Timer value

Outputs:

New Timer value

Destination:

Timer function

Pre-condition:

Timer value

Post-condition:

Timer value minus one

Side effects:

None


Function:

F4.2.5: Sound buzzer at time zero

Description:

When the timer value decrements to zero sound the buzzer.

Inputs:

Timer value equal to zero

Outputs:

Signal to sound buzzer

Destination:

Microwave buzzer

Pre-condition:

Timer value decrements to zero

Post-condition:

Buzzer sounds

Side effects:

None


Function:

F4.2.6: Display Current Timer value 

Description:

Display the current timer value on the LCD display.

Inputs:

Timer value

Outputs:

Timer value

Destination:

LCD display

Pre-condition:

N/A

Post-condition:

Current timer value shown on LCD display

Side effects:

None


Function:

F4.2.7: Stop Timer

Description:

Stop Timer when the Stop/Clear key is pressed once.

Inputs:

Stop/Clear key on keypad

Outputs:

Stop signal set

Destination:

Timer function.

Pre-condition:

Timer active and counting down time.

Post-condition:

Timer stopped.

Side effects:

None


Function:

F4.2.8: Restart Timer

Description:

Restart stopped timer when the start key is pressed.

Inputs:

Start key on keypad

Outputs:

Start input set

Destination:

Timer function

Pre-condition:

Timer stopped because stop/clear key was pressed

Post-condition:

Timer begins decrementing again

Side effects:

None


Function:

F4.2.9: Cancel Timer

Description:

Cancel timer if the stop/clear key is pressed a second time.

Inputs:

Stop/clear key on keypad

Outputs:

Cancel input set

Destination:

Timer function

Pre-condition:

Timer stopped because stop/clear key was pressed.

Post-condition:

Timer stopped and timer value reset to zero.

Side effects:

None


Function:

F4.2.10: Continue timer countdown if door opens.

Description:

Do not stop the timer countdown if the microwave door is opened during timer operation.

Inputs:

Sensor on microwave door

Outputs:

Stop input is not set

Destination:

Timer function

Pre-condition:

Timer value is being decremented each second

Post-condition:

Timer continues counting down

Side effects:

None


Function:

F4.3.1: Automatically heat common food items

Description:

Six preset functions: Popcorn, Potato, Beverage, Pizza, Frozen Entrée, and Fresh Vegetables

Inputs:

The user presses one of the preset keys

Outputs:

Time and power level are set by control software

Destination:

Time and power level are displayed on LCD screen

Pre-condition:

Preset has been selected

Post-condition:

Food item has been heated at the proper power level for the correct amount of time.

Side effects:

None


Function:

F4.3.2: Unique cooking times and power level for each auto cook preset button

Description:

The capability should be provided for each auto cook preset to have its own predefined cooking time and power level settings.

Inputs:

Auto cook preset buttons on keypad

Outputs:

Predefined cooking time and power level

Destination:

Control section of microwave software

Pre-condition:

An auto cook preset button is pressed to activate auto cook preset function

Post-condition:

The predefined cooking time and power level associated with the auto cook preset are selected.

Side effects:

None


Function:

F4.3.3: Begin auto cook

Description:

If auto-cook preset button has been pressed (cooking time is greater than zero), begin timed cooking when start button is pressed.

Inputs:

Start button on keypad

Outputs:

Auto cook preset mode selection and cooking time

Destination:

LCD screen

Pre-condition:

An auto cook preset key is pressed followed by the start button being pushed

Post-condition:

The auto cook preset function is active as shown on the LCD screen with the correct time to cook value decrementing on the screen.

Side effects:

None


Function:

F4.4.1: Automatically sets defrost time and power level for frozen meat items depending on the weight of the item entered by the user.

Description:

One function labeled Auto Defrost located on bottom row of numerical keypad

Inputs:

Type of meat, weight of meat.

Outputs:

Prompts for type of meat and weight of meat

Destination:

Prompts appear on LCD screen

Pre-condition:

Auto defrost has been selected

Post-condition:

Meat item has been defrosted for the correct amount of time at the correct power level

Side effects:

None


Function:

F4.4.2: Type of meat to be defrosted

Description:

Offers a choice of Beef, Poultry, or Fish

Inputs:

User presses a number indicated which type of meat to defrost.

Outputs:

Control software sets time and power level

Destination:

Time and power level displayed on LCD

Pre-condition:

Auto defrost has been selected

Post-condition:

The time and power level are automatically set

Side effects:

None


Function:

F4.4.3: Menu for meat selection

Description:

Displays a menu listing the choices of Beef, Poultry, and Fish

Inputs:

User will press a numeric key on the keypad to select a choice from the menu

Outputs:

Choice and power level are set and displayed

Destination:

Message containing choice and power level are sent to LCD screen

Pre-condition:

Auto defrost has been selected

Post-condition:

Time and power levels are automatically set.  Message indicating selection and power level are displayed.

Side effects:

None


Function:

F4.4.4: Set the weight of the meat item

Description:

The user must enter the approximate weight of the meat item.

Inputs:

Numerical values entered on the numeric keypad.

Outputs:

Weight will be displayed in pounds and ounces.

Destination:

Weight will be displayed on the LCD

Pre-condition:

Type of meat has been selected

Post-condition:

Defrosting time is set in accordance with the weight of the meat item.

Side effects:

None


Function:

F4.4.5: Prompt for weight of meat item

Description:

Control software will prompt user for approximate weight of meat.

Inputs:

Weight will be entered in pounds and ounces on numeric keypad.

Outputs:

Weight will be set by control software and displayed in LCD screen.

Destination:

Control software and LCD screen

Pre-condition:

Type of meat has been selected

Post-condition:

Weight of meat will be set.  Defrosting time will be set accordingly.

Side effects:

None


Function:

F4.4.6: Start key will begin defrosting process

Description:

User must press the Start key to begin defrosting after all information has been entered.

Inputs:

User presses the Start key

Outputs:

Control software begins defrosting process

Destination:

Countdown of defrosting time appears on LCD screen

Pre-condition:

Type of meat has been selected and weight has been entered

Post-condition:

Meat is defrosted at the proper power level and for the correct amount of time.

Side effects:

None


Function:

F4.5.1: Enter power level.

Description:

Operator enters the desired power level to be used for timed cooking.

Inputs:

Power level button followed by a button 1 through 9 on keypad

Outputs:

Desired power level.

Destination:

Timed cooking function

Pre-condition:

None

Post-condition:

Power level set to desired value

Side effects:

None


Function:

F4.5.2: Default power level

Description:

The default power level should be Level 9.

Inputs:

None

Outputs:

Default power level set equal to 9

Destination:

Timed cooking function.

Pre-condition:

None

Post-condition:

Default power level set to 9

Side effects:

None


Function:

F4.5.3: Enter cooking time

Description:

Operator enters the desired cooking time.

Inputs:

Buttons 0 through 9 on keypad

Outputs:

Desired cooking time

Destination:

Timed cooking function

Pre-condition:

None

Post-condition:

Cooking time set to desired value

Side effects:

None


Function:

F4.5.4: Default cooking time value

Description:

The default cooking time should be 00:00.

Inputs:

None

Outputs:

Default cooking time of 00:00

Destination:

Timed cooking function

Pre-condition:

None

Post-condition:

Cooking time set to default value

Side effects:

None


Function:

F4.5.5: Display cooking time

Description:

Current cooking time is displayed on the LCD screen

Inputs:

Current cooking time

Outputs:

Current cooking time

Destination:

LCD screen

Pre-condition:

None

Post-condition:

Current cooking time is displayed on the LCD screen

Side effects:

None


Function:

F4.5.6: Begin timed cooking

Description:

If cooking time is greater than zero begin timed cooking when start button is pressed.

Inputs:

Start button

Outputs:

Current cooking time value

Destination:

Timed cooking function

Pre-condition:

A cooking time value greater than zero

Post-condition:

Oven is turned on and cooking time value is decrementing

Side effects:

None


Function:

F4.5.7: Stop timed cooking

Description:

If stop/clear button is pressed while oven is on the cooking should stop and the current cooking time value should be displayed.

Inputs:

Stop/clear button

Outputs:

Stop signal

Destination:

Timed cooking function

Pre-condition:

Oven on

Post-condition:

Oven shut off and cooking time stops decrementing (with current cooking time value displayed on LCD screen)

Side effects:

None


Function:

F4.5.8: Door opened during cooking.

Description:

If door is opened during cooking shut oven off, sound buzzer, and stop decrementing the cooking time value.

Inputs:

Signal from door sensor indicating the door has been opened

Outputs:

Stop signal set

Destination:

Timed cooking function.

Pre-condition:

None

Post-condition:

Oven shut off, buzzer sounds, cooking time stops decrementing (with current cooking time value displayed on LCD screen)

Side effects:

None


Function:

F4.5.9: Restart cooking.

Description:

Operator presses start button to restart timed cooking that has been halted.

Inputs:

Start button

Outputs:

Start signal

Destination:

Timed cooking function.

Pre-condition:

None

Post-condition:

Oven is turned on and cooking time begins decrementing

Side effects:

None


Function:

F4.5.10: Cancel timed cooking

Description:

Operator presses stop/clear button after cooking has begun to cancel timed cooking.

Inputs:

Stop/clear button

Outputs:

Cancel signal set

Destination:

Timed cooking function

Pre-condition:

Timed cooking halted

Post-condition:

Power level set to default value

Side effects:

None


Function:

F4.5.11: Sound buzzer at time zero

Description:

When the cooking time value decrements to zero sound the buzzer.

Inputs:

Cooking time value equal to zero

Outputs:

Signal to sound buzzer

Destination:

Microwave buzzer

Pre-condition:

Cooking time value decrements to zero

Post-condition:

Buzzer sounds

Side effects:

None


Function:

F4.5.12: Changing power level while cooking

Description:

For safety reasons the operator should not be allowed to change the power level while the oven is turned on.

Inputs:

Power level key followed by a keypad entry of 1 through 9

Outputs:

Unchanged power level

Destination:

Timed cooking function

Pre-condition:

Cooking process has started

Post-condition:

No change in the power level

Side effects:

None


Function:

F6: Display error codes

Description:

When the following hardware components fail, they will send an error code to the microwave oven system: transformer, cavity magnetron, controller circuit, keypad.

Inputs:

Error signal from hardware component

Outputs:

Error code displayed to user

Destination:

LCD

Pre-condition:

Hardware component failure

Post-condition:

Error code processed and displayed

Side effects:

None



A requirement specification template is provided at the following link: requirementSpecificationTemplate.mht

V-Model Diagram

The V-Model of development describes a relationship between the various phases of software development and the test plan artifacts produced at each of those phases.  A diagram of the V-Model is shown below:

V-Model Diagram - Specify Requirements PNG The system testing procedure tests for errors resulting from unexpected interactions among sub-systems and system components. Acceptance testing is the final exam of a software development project. The title of this type of testing has a very positive meaning; however, there is no guarantee of acceptance. An acceptance test suite is intended to exercise the system in its target environment under standard loads with standard user interaction patterns. The system testing procedure tests for errors resulting from unexpected interactions among sub-systems and system components. Acceptance testing is the final exam of a software development project. The title of this type of testing has a very positive meaning; however, there is no guarantee of acceptance. An acceptance test suite is intended to exercise the system in its target environment under standard loads with standard user interaction patterns.

As illustrated in the above V-Model diagram, at this point in the software development process, creation of system test plans and acceptance test plans should begin. System test plans and acceptance test plans should be created simultaneously with the specifying of the system requirements that will drive the development of those tests.

No part of this work should be produced or used without the permission of the authors: Michael Turner and Dr. Sharon A White.