Links to all files referenced in the lab and prelab can be found in the
Files section at the end of this document.
These are the overall project requirements. These requirements will be
fulfilled as parts of the pre-lab and lab below.
Each part of this pre-lab will draw upon some design aspect of the course
lectures (or labs). We realize that many of these parts will be
relatively short and simple for a two-week project.
The point of the pre-lab questions is
to get your project design down on paper
before you start
hacking coding.
"
Part 1 - Overall project description
Write a
short
overall description of your project.
- Your description shall not exceed 200 words.
- You may include a graphic or two to help illustrate your idea.
- Include a list of at least three items from requirement 1 above.
- Include a list of at least one interrupt the ISRs will service in your
project
Part 2 - Requirements
In this section, you will define the high level inputs, outputs, and state
variables needed for requirements and state-chart design. Your
requirements shall use these inputs and state variables to define changes in
other state variables and outputs. You will use your requirements to
develop the state-chart for your project.
The number of inputs, outputs, and internal states will depend on the
complexity of your system. Define each as follows:
- Define system inputs. Each input shall have a simple descriptive name
such as "Off_Button", a single sentence description of its purpose,
and the possible values (or ranges). These include any buttons, switches,
potentiometers, serial interface inputs, or other user inputs to your
system. You may define a set of inputs as an array if that is more
convenient.
Example: Off_Button -
Indicates user preference to turn the wipers off. Values are PRESSED or
UNPRESSED.
- Define system outputs. Each output shall have a simple name, a single
sentence describing the output behavior, and the possible values (or
ranges). These may include any externally visible behaviors of LEDs (or
LED arrays), LCD display, serial outputs, or other outputs.
Example: Motor_Speed - Output sets the
speed of the motor. Values are OFF, SLOW, and FAST.
- Define internal state variables that are needed to track the current system
state. Each internal state variable shall have a simple descriptive name,
a single sentence description of its purpose, and possible values (or
ranges).
Example: Current_Floor - Current floor
the elevator is stopped at. Value range from 1 (MIN_FLOOR) to 8
(MAX_FLOOR)
- Define your high level requirements. Your requirements shall describe
the overall behaviors of the system. We expect you will have less than 10
requirements for a project of this complexity. Refer to the
Lab 3 wiper controller requirements for a
good example.
- Each requirement shall have a distinct number (we leave the numbering
method to you).
- Each requirement shall use the term "shall" or
"should".
- Each requirement shall be a single sentence in length.
- Each requirement shall be in terms of defined inputs, outputs, and state
variables (So, "It shall work" is not an acceptable requirement).
Part 3 - State-Chart Design
Develop one or more state-charts based upon your high level requirements.
Follow the procedure set forth in
Pre-lab 3 -
Part B.
Your state-chart(s) must include:
- State numbers for each state.
- State names for each state.
- A "Do:" section with any outputs or internal state values
that get set in that state.
- Outputs shall only occur within states, not on transitions.
- Transitions which are numbered and arrowed to clearly indicate the flow
from one state to another.
- We do not expect you to include your ISRs into your state-chart(s).
- Your state-chart shall include
at least two
states.
Part 4 - Requirements / State-Chart
Traceability Table
Create a traceability table which shows which states and transitions correspond
to which requirements. Place an X in each row for the states and
transitions which implement a behavior described by the requirement.
Every requirement should correspond to a state or transition (forward
traceability). Every state and transition should trace to at least
one requirement (backward traceability).
You must have 100% traceability to your requirements. If you find
detailed requirements that were left out of the state-chart, you may want to
consolidate them into higher level requirements.
Example traceability matrix:
State /
Transition -->
|
S1:
STATE_OFF
|
S2:
STATE_PARK
|
....
|
T1
|
T2
|
...
|
Requirement
|
R1.
|
X
|
|
|
|
|
|
R1.A. |
|
|
|
|
|
|
.... |
|
|
|
|
|
|
Table 1 - Example Requirements to
State-Chart Traceability Table
Part 5 - Scheduling
Define your plan for scheduling tasks in your system. You may use any
scheduling method discussed in lecture.
Your schedule design shall:
- Include a scheduling method.
- List each task along with any priorities and periods / deadlines; state how
you determined each one.
Note: Your times and periods should be estimates at this point in the
design.
Part 6 - Watchdog / COP
Define how your project will use the watchdog timer.
- Describe this in a paragraph (no more than 50 words) with respect to the
tasks in your schedule.
- Define the time-out period and how you arrived at it based on the tasks in
your schedule.
- Describe what actions your program shall take in the event that the
watchdog resets your program.
Part 7 - Develop a Test Plan
In this section, you will develop a series of tests to ensure your design
follows your state-chart and meets your requirements. Your test plan
should include white box and black box testing methods. This part only
includes test plans and traceability tables, you do not have to include any
test results.
Part 7.1 - White Box Testing
Your white box tests should test the transitions of your state-chart.
Create a sufficient number of white box tests to ensure 100% coverage of your
state-chart transitions.
- Each white box test shall include a test number, initial state, and a
series of inputs and the expected states after inputs (Table 2).
- Your test plan shall include a traceability table showing which state
transitions are exercised by each white box test (Table 3).
- Your test plan shall have 100% coverage of all state-chart transitions.
|
Pass/Fail
|
Initial State
|
Input 1 (State after
input) |
Step 2 (State after input)
|
Step 3 (State after input)
|
Test 2.1
|
PASS
|
1
|
N (2)
|
N (3)
|
N (4) |
Table 2 - Example White Box Tests
|
T1
|
T2
|
T3
|
T4
|
T5
|
T6
|
T7
|
....
|
Test 2.1
|
X
|
|
|
X
|
|
|
X
|
|
Table 3 - Example White Box Test
Traceability Table
Part 7.2 - Black Box Testing
Your black box tests should test that the behavior of your system conforms to
your requirements. Create a sufficient number of black box tests to
ensure 100% coverage of your requirements.
- Each black box test shall include a test number, and test description
(Table 4).
- Your test plan shall include a traceability table showing which
requirements are exercised by each black box test (Table 5).
- Your test plan shall have 100% coverage of all requirements.
|
Pass/Fail
|
Test Description
|
Result |
Test 3.1
|
PASS
|
Verify the timing of FAST
MODE using a stopwatch to measure average cycle time over 10 cycles.
|
--
|
Table 4 - Example Black Box Tests
|
R1
|
R2
|
R3
|
R4
|
R5
|
R6
|
R7
|
Test 3.1
|
|
|
|
|
|
X
|
|
Table 5 -Example Black Box Test
Traceability Table
Refer to
Pre-lab 6 and Lab 6 - Part B for a
refresher. Also refer to Lecture 11 - Debug and Test.
Part 8 - Hardware
Create a list of the components that your project will incorporate. If
you need hardware other than what is provided in the lab, you must receive
approval from the course staff.
Draw a simple block diagram of the hardware components of your system.
You do not need to indicate specific ports and pin numbers.
Part 9 - Acceptance Test Plan
State the procedure that the TA can execute to determine if your project is
functioning and has met the requirements of this project.
You should include enough detail that a TA can perform the acceptance test
without either of the partners present.
Make sure these are the
simplest criteria to
prove that you met the requirements above. If your project includes
complex hardware or PC side program, make sure that you have a simplified
version of your project to demo to the TAs that does not rely on those complex
components.
For example: If your project includes a complicated PC-side program that
communicates with the module over serial, be able to demonstrate that the
module can send and receive data over the serial port by manually typing
queries and getting responses using HyperTerminal on the PC.
All non-code submissions shall be in a single PDF document.
In the pre-lab, you did a majority of the design work needed for the
project. In the lab portion, you will implement your design.
After implementation, you will carry out your tests, record bugs, and fix your
code.
Once you have completed the implementation and test, update your documentation
to accurately reflect what you did in the implementation.