50 IEEE SOFTWARE Published by the IEEE Computer Society 0740-7459/09/$25.00 © 2009 IEEE
focus 1
those who followed agile’s standard “KIS— ■
Keep it Simple” approach and initialized the
timer’s hardware registers in the order the
parameters were passed into the subroutine
(TCOUNT, then TPERIOD; see Figure 1, lines 11, 12);
and
those who set the registers in a contrary order ■
(TPERIOD, then TCOUNT; lines 16, 17).
The irst group’s tests failed (lines 29, 30); the sec-
ond group’s tests passed (lines 23, 24). Before the
students informed us of this incongruence, they
discussed the issue among themselves and iden-
tiied a previously unrecognized silicon anomaly:
the TPERIOD register was overwriting the TCOUNT
register.
Why did inexperienced students successfully
identify an undocumented feature that industrial
irms, with product lines involving many tens of
thousands of units of this processor, did not? We
believe that the Embedded-Unit TDD environ-
ment enabled the students to easily apply basic
agile concepts. In particular, the framework pro-
vided a stable, easy-to-learn environment through
which the students could solve problems gener-
ated at both the hardware and software levels.
Also, TDD reminds many students of other as-
pects of their training: strong parallels exist be-
tween the scientiic method and TDD, with the
establishment of a hypothesis (test) followed by
its experimental realization (solution code).
Given this initial success, we asked ourselves a
question related to our own research: Would gen-
eralizing other agile concepts into a full embedded
system approach assist during medical embedded
instrument development? Christian Denger and his
colleagues indicate that people in this area often
have no formal testing training, leading to many
health and safety concerns.
2
Bill Greene has sug-
gested that agile’s barely suficient processes should
be acceptable to embedded system engineers who
recognize the need for reliable products but aren’t
S
ince 2004, we’ve successfully used a prototype test-driven development (TDD)
embedded system test framework, called Embedded-Unit, in our undergradu-
ate classes and research work.
1
During the original course offering, we gave
students a brief introduction to TDD concepts for embedded development. We
then asked them to write tests that expressed the design ideas surrounding the initialization
of the Analog Devices ADSP-BF5XX (Blackin) processor’s core timer. When developing
the code to satisfy the tests, the students split into two groups:
The authors discuss
their successes
and the remaining
challenges in
helping customers
and developers
apply an Extreme
Programming-
inspired life cycle
and testing
frameworks to
embedded system
development.
Michael Smith, University of Calgary
James Miller, University of Alberta
Lily Huang, NovATel
Albert Tran, DirectVoxx
A More Agile
Approach to Embedded
System Development
embedded software