Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen



Samankaltaiset tiedostot
Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

ELM GROUP 04. Teemu Laakso Henrik Talarmo

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

V a a liv o itto. H a a s ta tte lu Suomen S o sia lid e m o k ra a tissa 18/

METSÄN KYLVÖ JA ISTUTUS

11/20: Konepelti auki

Sopimus Asiakas- ja potilastietojärjestelmästä. Liite N: Kielivaatimukset

58160 Ohjelmoinnin harjoitustyö

4. Luokan testaus ja käyttö olion kautta 4.1

Automaattinen yksikkötestaus

1. Olio-ohjelmointi 1.1

Dynaaminen analyysi I

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Ohjelmiston testaus ja laatu. Testaustasot

13/20: Kierrätys kannattaa koodaamisessakin


5. HelloWorld-ohjelma 5.1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Väestö- ja asuntolaskenta Folk- och bostadsräkningen Population and Housing Census

J u s s i N ie m i-p y n ttä ri, y lilä ä k ä ri, M a lm in p s y k ia tria n p o lik lin ik k a T o rs ta i

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure

Harjoitustyön testaus. Juha Taina

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ohjelmistotestaus -09

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

5. HelloWorld-ohjelma 5.1

D-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

812341A Olio-ohjelmointi, I Johdanto

Ammattiluokitus Classification of occupations

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

ITKA203 Käyttöjärjestelmät, kesä Kesäkurssi Opettaja: Paavo Nieminen

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistotuotantoprojekti

Common Lisp Object System

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

TAMPEREEN TEKNILLINEN YLIOPISTO

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmointi 1 / syksy /20: IDE

Objective-C. Ryhmä 35: Ilpo Kärki Aleksi Pälä

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

T Ohjelmistoprojektien hallinta Tehtävän 3 ratkaisu. Maija Kangas, Kimmo Stålnacke ja Outi Syysjoki

Javan perusteita. Janne Käki

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä, kevät

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

Hyvät p u o lu e to v e r it

19/20: Ikkuna olio-ohjelmoinnin maailmaan

TIE Ohjelmistojen suunnittelu

Ohjelmoinnin peruskurssien laaja oppimäärä

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmistotuotanto, s

Makrojen mystinen maailma lyhyt oppimäärä

TAMPEREEN TEKNILLINEN YLIOPISTO

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Näkymät suhdanteissa ja rahoitusmarkkinoilla Lauri Uotila Pääekonomisti, Sampo Pankki

Resurssivaliokunta Kunnanhallitus Valtuusto

Kirjainkiemurat - mallisivu (c)

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Onnistunut Vaatimuspohjainen Testaus

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille Meeri Nieminen

Test-Driven Development

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Projektinhallintaa paikkatiedon avulla

7/20: Paketti kasassa ensimmäistä kertaa

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

KAUHAVAN KAUPUNKI PÖYTÄKIRJA 1/ Otsikko Sivu 1 Kosolan kouluprojektin aloituspalaverin muistion

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Rajapinta (interface)

MAKSUKYKY, MAKSUKYVYTTÖMYYS Ilpo Kähkönen YTM,KTT

JUnit ja EasyMock (TilaustenKäsittely)

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Hellä ensikosketus. Tomi Kiviniemi

C-ohjelmointikielen perusteet, osa 1

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Turvakriittisen projektin menetelmät ja työkalut

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Työkalujen merkitys mittaamisessa

Testausautomaation mahdollisuudet käyttöliittymän testauksessa. Anssi Pekkarinen

TIE Ohjelmistojen suunnittelu

Hakemistojen sisällöt säilötään linkitetyille listalle.

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

IDEASTA TUOTTEEKSI: Suunnittelu, toteutus, testaus, tuotanto

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

.NET ajoympäristö. Juha Järvensivu 2007

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Transkriptio:

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj

Ongelma Ideologia Lifebelt Ratkaisuehdotukset Johtopäätökset ja jatko Sisällysluettelo

Ongelma Rakenteinen- vs. oliokieli Erot kielten välillä Ohjelmointikielet C++ struktuuritestaus Onko struktuuritestauksesta oliokielessä hyötyä Testataanko luokkia vai pelkkiä metodeita? C++ kielen erityispiirteet tiedon piilotus perintä funktion ylikuormitus Kuinka luokan monet ilmentymät, instanssit hoidetaan? Rakenteiset kielet Imperatiiviset kielet Olio kielet

C-kielen testausohjelma Ideologia Testataan pieniä paloja, joista koostuu suurempi kokonaisuus Tilaton ohjelman suoritus Ohjelmalla ei ole tiloja, vaan muuttujat ovat pelkästään muuttujia eli ohjelman suoritus ei periaatteessa muutu, vaikka muuttujat erilaisia eri ajokerroilla. Testattavaa ohjelmaa vain ajetaan eteenpäin

Paloittainen testaus E p ä d e te rm is tin e n m ä ä ritte ly - ä ä re tö n m ä ä rä s u o ritu s v a ih to e h to ja T e s ta ttu e p ä d e te rm is tin e n m ä ä ritte ly P a lo itte lu p ie n e iin d e te rm is tis iin o s iin In te g ro in ti ja e p ä d e te rm is tis yyd e n va p a u tu s A n tti A u e r, 1 9 9 7, S ta te te s tin g o f e m b e d d e d s o ftw a re, O u lu n Y lio p is to

Lifebelt Testausohjelma Tulkki, joka tarkastaa c-kielen syntaksin Suorittaa struktuuritestausta mikä on perinteisesti tehty koodikatselmuksissa Koko ohjelman kääntäminen ei tarpeellista, kunhan kaikki määrittelyt ovat kunnossa Voidaan testata yhtä funktiota kerrallaan Voidaan automatisoida testitapauksia Käyttäjän ohjattava järjestelmäkutsut, esimerkiksi scanf()-funktio ei toimi Hyvä käyttöliittymä

Lifebeltin käyttöliittymä

Ratkaisuehdotukset Tehdään kokonaan uusi kääntäjä tukemaan c++ kieltä Muutetaan c++ kieli c-kieleksi ennen testausta Debuggerin käyttö Lifebelt-ohjelman alla C++ tuen hylkäys kokonaan

Kokonaan uusi kääntäjä Tehdään uusi tulkki, joka osaa tulkata c++ koodia ja muodostaa käännöspuun. Edut Samanlainen kuin c-versio Varma toiminta Haitat Työläs tehdä Vastaako tekemiseen kulutettu työmäärä ohjelmasta saatavia hyötyjä?, ) ( ( % / 7 /

C++ kieli c-kieleksi ennen testausta Täydellinen muutos c-kieleen Osittainen muutos c-kieleen Olemassa ohjelmia, joilla osittainen muutos saadaan tehtyä Edut Voidaan käyttää Lifebeltin nykyistä implementaatiota Haitat Onko osittaiselle muutetulle koodille tehtävä testaus hyödyllistä ts. vastaako se todellisuutta? Onko täydellinen muutos mahdollista, saadaanko täydellinen vastaavuus? Suuri työmäärä

Debuggerin käyttö Lifebelt-ohjelman alla Käytetään normaalia debuggeria Lifebeltin alla Tehdään valmiita makroja, joilla saadaan debuggeri toimimaan halutulla tavalla. Edut Vähäinen työmäärä Debuggereiden lähdekoodeja helposti saatavilla, joista saadaan apua koodausvaiheessa. Haitat Koodi pitää olla valmista testaushetkellä Testattaessa ohjelmaa se täytyy aloittaa aina alusta asti

Debuggeri ja Lifebelt - Automatisointi - Debuggerin ohjaus - Testitapaukset yms. Käyttöliittymä - Normaalit debuggerin käskyt - Toiminnallisuus - "dummy" laitteistokutsut Debuggeri Laitteistokutsut - Ympäristöriippumattomuus Ympäristö

C++ tuen hylkäys kokonaan Ei tehdä tukea c++ kielelle Edut ei työtä Haitat Ei c++ struktuuritestausta

Johtopäätökset ja jatko Debuggaukseen pohjautuva järjestelmä parhain, mutta.. Ei tarpeeksi tietoa tällaisen testausohjelman tarpeesta Olisi tutkittava tällaisen työkalun tarve, ennen kuin varma päätös voitaisiin tehdä.