TDD til indlejret softwareudvikling
Oversat titel
TDD for embedded software development
Forfattere
Sørensen, Jan ; Rahbek, Jens Nikolaj
Semester
4. semester
Udgivelsesår
2014
Afleveret
2014-09-07
Antal sider
60
Abstract
I denne afhandling undersøger vi, om test-drevet udvikling (TDD) kan fungere som designparadigme for små indlejrede systemer. TDD betyder, at man skriver automatiske tests først og lader dem styre design og kode. For at vise arbejdsformen udvikler vi styringssoftwaren (controlleren) til en fjernstyret quadrokopter. Løsningen er skrevet i C++ og kører på en AVR ATmega32 mikrokontroller; vi bruger udviklingsmiljøet Eclipse og testværktøjet Google Test. Med denne tilgang ender vi med en fuldt fungerende quadrokopter, udviklet udelukkende via TDD. Vi sammenligner erfaringer fra indlejret udvikling med traditionel pc-udvikling og demonstrerer, hvordan man kan starte softwarearbejdet, før der findes fysisk hardware. Vi berører også en simulator for den indlejrede kode og en automatiseret analyse af skedulerbarhed, dvs. om opgaver kan nå deres tidsfrister. Vores konklusion er, at TDD er lige så effektivt til indlejrede systemer som til traditionelle pc-programmer.
This thesis examines whether test-driven development (TDD) can serve as a design paradigm for small embedded systems. TDD means writing automated tests first and letting them guide design and code. To demonstrate the workflow, we develop the control software (controller) for a remote-controlled quadcopter. The solution is written in C++ and runs on an AVR ATmega32 microcontroller; we use the Eclipse IDE and the Google Test framework. Using this approach, we achieve a fully functional quadcopter developed entirely through TDD. We compare experiences from embedded development with traditional PC development and show how software work can start even before any hardware exists. We also briefly explore a simulator for the embedded code and an automated schedulability analysis, i.e., whether tasks can meet their deadlines. We conclude that TDD is as effective for embedded development as it is for traditional PC programs.
[Dette resumé er genereret ved hjælp af AI]
