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