Testivetoisen kehityksen hyödyntäminen sulautetun tiedonkeruuohjelmiston toteuttamisessa
Yli-Rohdainen, Kimmo (2012)
Yli-Rohdainen, Kimmo
2012
Automaatiotekniikan koulutusohjelma
Automaatio-, kone- ja materiaalitekniikan tiedekunta - Faculty of Automation, Mechanical and Materials Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2012-10-03
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201210041303
https://urn.fi/URN:NBN:fi:tty-201210041303
Tiivistelmä
Testivetoinen kehitys on ohjelmistokehityksessä käytettävä menetelmä, jossa ohjelmoija kirjoittaa aina automaattisen yksikkötestin ennen varsinaisen toiminnallisuuden toteuttamista. Yksikkötestejä luodaan järjestelmän vaatimusten perusteella ja nämä testit ohjaavat ohjelmiston kehitystä. Vaikka testivetoinen kehitys on saavuttanut suosiota työpöytä- ja web-sovellusten kehityksessä, ei sitä ole kuitenkaan sovellettu laajasti sulautettujen järjestelmien kehityksessä. Tämän tutkimuksen tavoitteena on tutkia, miten testivetoista kehitystä voidaan hyödyntää sulautettuja järjestelmiä kehitettäessä.
Tutkimus jakaantuu kahteen vaiheeseen: Ensimmäisessä vaiheessa tutustutaan testivetoiseen kehitykseen kirjallisuustutkimuksen avulla esittelemällä aiheeseen liittyvät käsitteet, teoriat ja menetelmät sekä tutkimalla aiempia kokemuksia ja tutkimuksia menetelmän käytöstä. Toisessa vaiheessa tutkitaan menetelmän käyttöä käytännössä tapaustutkimuksen avulla ja verrataan kokemuksia ensimmäisen osan tuloksiin. Tapaustutkimuksessa tutkitaan menetelmän käyttöä ohjelmistokehitysprojektissa, jossa Bitwise toteuttaa asiakkaalleen Kempille hitsauslaitteeseen liitettävän sulautetun tiedonkeruulaitteen ohjelmiston.
Tutkimuksen tulokset osoittavat, että testivetoisen kehityksen hyödyntäminen sulautettujen ohjelmistojen kehityksessä on sekä mahdollista että hyödyllistä. Menetelmän käytöllä saavutettavat hyödyt liittyvät esimerkiksi koodin ulkoiseen laatuun, koodin sisäiseen laatuun, testaukseen, tuottavuuteen, dokumentointiin sekä psykologisiin ja sosiaalisiin vaikutuksiin. Sulautettuja ohjelmistoja kehitettäessä etuja ovat myös esimerkiksi laitteistoon liittyvien riskien ja kulujen vähentyminen ja koodin parempi siirrettävyys. Menetelmän käyttäminen ei ole silti ongelmatonta, sillä erityisesti sulautettujen ohjelmistojen erityispiirteet tuovat mukanaan omat haasteensa. Suurimpana ongelmana on kuitenkin menetelmän vaativuus, sillä menetelmän hyödyntäminen tehokkaasti vaatii kehittäjältä paljon harjoittelua. Test-driven development is a software development methodology in which a programmer always writes an automatic unit test before implementing the actual functionality. Unit tests are being created based on the system requirements and these tests guide the development of the software. Even though test-driven development has gained popularity among the desktop and web software developers, it has not been widely applied to embedded system development. The goal of this study is to investigate how test-driven development can be utilized in the development of embedded systems.
The study is divided into two phases: In the first phase literature research is used to introduce terminology, theories and methodologies related to test-driven development and to examine previous experiences and studies concerning the use of the methodology. In the second phase the utilization of test-driven development in practice is investigated by means of a case study whose experiences are compared with the results of the first phase. The case study observes the use of the methodology in a software development project in which Bitwise implements the software for an embedded welding data acquisition device for Kemppi.
The results of this study indicate that the utilization of test-driven development in the development of embedded systems is viable and beneficial. The benefits that can be obtained are related to, for example, external code quality, internal code quality, testing, productivity, documentation, and psychological and social effects. When developing embedded software the benefits also include, for instance, reduced hardware related risks and expenses, and better software portability. However, the use of test-driven development is not without problems, as particularly the characteristics of embedded software bring their own challenges. The biggest problem with the methodology is the level of difficulty, as much practice is needed to be effective with it.
Tutkimus jakaantuu kahteen vaiheeseen: Ensimmäisessä vaiheessa tutustutaan testivetoiseen kehitykseen kirjallisuustutkimuksen avulla esittelemällä aiheeseen liittyvät käsitteet, teoriat ja menetelmät sekä tutkimalla aiempia kokemuksia ja tutkimuksia menetelmän käytöstä. Toisessa vaiheessa tutkitaan menetelmän käyttöä käytännössä tapaustutkimuksen avulla ja verrataan kokemuksia ensimmäisen osan tuloksiin. Tapaustutkimuksessa tutkitaan menetelmän käyttöä ohjelmistokehitysprojektissa, jossa Bitwise toteuttaa asiakkaalleen Kempille hitsauslaitteeseen liitettävän sulautetun tiedonkeruulaitteen ohjelmiston.
Tutkimuksen tulokset osoittavat, että testivetoisen kehityksen hyödyntäminen sulautettujen ohjelmistojen kehityksessä on sekä mahdollista että hyödyllistä. Menetelmän käytöllä saavutettavat hyödyt liittyvät esimerkiksi koodin ulkoiseen laatuun, koodin sisäiseen laatuun, testaukseen, tuottavuuteen, dokumentointiin sekä psykologisiin ja sosiaalisiin vaikutuksiin. Sulautettuja ohjelmistoja kehitettäessä etuja ovat myös esimerkiksi laitteistoon liittyvien riskien ja kulujen vähentyminen ja koodin parempi siirrettävyys. Menetelmän käyttäminen ei ole silti ongelmatonta, sillä erityisesti sulautettujen ohjelmistojen erityispiirteet tuovat mukanaan omat haasteensa. Suurimpana ongelmana on kuitenkin menetelmän vaativuus, sillä menetelmän hyödyntäminen tehokkaasti vaatii kehittäjältä paljon harjoittelua.
The study is divided into two phases: In the first phase literature research is used to introduce terminology, theories and methodologies related to test-driven development and to examine previous experiences and studies concerning the use of the methodology. In the second phase the utilization of test-driven development in practice is investigated by means of a case study whose experiences are compared with the results of the first phase. The case study observes the use of the methodology in a software development project in which Bitwise implements the software for an embedded welding data acquisition device for Kemppi.
The results of this study indicate that the utilization of test-driven development in the development of embedded systems is viable and beneficial. The benefits that can be obtained are related to, for example, external code quality, internal code quality, testing, productivity, documentation, and psychological and social effects. When developing embedded software the benefits also include, for instance, reduced hardware related risks and expenses, and better software portability. However, the use of test-driven development is not without problems, as particularly the characteristics of embedded software bring their own challenges. The biggest problem with the methodology is the level of difficulty, as much practice is needed to be effective with it.