30
Gaudí - (kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio Ralph Back Ivan Porres CREST: Center for Reliable Software Technology Åbo Akademi

Gaudí - ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Embed Size (px)

DESCRIPTION

Gaudí - ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio. Ralph Back Ivan Porres. CREST: Center for Reliable Software Technology Åbo Akademi. CREST. Center for Reliable Software Technology Åbo Akademi/tietojenkäsittelyopin laitos Osa TUCSia (Turku Centre for Computer Science) - PowerPoint PPT Presentation

Citation preview

Page 1: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudí - (kokeellinen) ohjelmistotehdas jaohjelmointilaboratorio

Ralph BackIvan Porres

CREST: Center forReliable Software TechnologyÅbo Akademi

Page 2: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

CREST Center for Reliable Software Technology Åbo Akademi/tietojenkäsittelyopin laitos Osa TUCSia (Turku Centre for Computer Science) Suomen Akatemian tutkimuksen huippuyksikkö (Formaalit

menetelmä ohjelmoinnissa) Keskittynyt ohjelmistotekniikan tutkimukseen Yksiköt:

Embedded systems (ES) Distributed Systems (DS) Software Construction (SC) Mechanized Reasoning (MR)

Noin 50 henkilöä (professorit, tutkijat,jatko-opiskelijat, lopputyön tekijät)

Page 3: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

CRESTin tutkimusfokus Luotettavien, oikein toimivien ohjelmistojen

rakentaminen Sovellutusalue laaja:

oliopohjaiset ohjelmat, ohjelmakomponentit UML, ohjelmistojen määrittely hajautetut ohjelmistot sulautetut järjestelmät VLSI piirit, hardware

Formaalien (matemaattisten) menetelmien soveltaminen ohjelmointityössä

Page 4: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Ongelma

Miten rakennetaan luotettavia ohjelmistoja tutkimusympäristössä? Ohjelmisto osa tutkimusprojektia Projektilla rajoitettu aika, tavoitteet ja resurssit Ohjelmoijina useimmiten gradu/diplomityön tekijä Vaihtuvuus suuri, ohjelmoija häipyy kun lopputyö on tehty Vaikea rakentaa ja varsinkin ylläpitää suuria ohjelmistoja Ohjelmat rakennetaan miten

sattuu, ei kunnon prosessia Tutkimuksessa rakennetaan

yleensä vain prototyyppejä

Page 5: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Ratkaisuyritys: Gaudi Perustetaan CRESTin uusi yksikkö, Gaudi, joka

toimii sekä ohjelmistoa tuottavana tehtaana, että ohjelmistotuotantoa tutkivana kokeellisena

laboratoriona Tehdas tuottaa ohjelmistoja tutkimusyksiköiden

tarpeisiin Laboratoriossa tutkitaan

tehtaassa sovellettavia tuotantoprosesseja

Page 6: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudí – ohjelmistoa tuottava tehdas Paikka jossa rakennetaan ohjelmistotuotteita tutkimuksen

tarpeisiin Nykyinen Gaudi on lähinnä pilootti Rahoitus: CREST tutkimusprojektit

näiden rahoitus: Suomen Akatemia, TEKES, Åbo Akademi, yritykset, TUCS, jne

CREST/Software Construction yksikkö vastaa Gaudin toiminnasta

Tuotannossa sovelletaan hyväksi havaittua ohjelmisto-prosessia

Tehdas pyörii pääosin opiskelijatyövoimalla

Page 7: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi - tehdas

Tutkimus-yksiköt

(ES,DS,SC,MR)Gaudí

Tutkimustulokset,julkaisut, jne

Ohjelmistotuotteet, kokemukset, raportit, käyttöohjeet jne

CREST

toimeksiannotresurssit

ohjelmistot

Page 8: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Tehtaan tavoitteet ja toiminta Päätavoite on ohjelmistojen tuottaminen Ohjelmiston tuottamisessa sovellettaan määrättyä

ohjelmointiprosessia Perustuu extreme programming menetelmään, sovituksineen Ohjelmistoprosessia kehitetään jatkuvasti

Ohjelmistotuotteen rakentamiseen osallistuvat: Ohjelmoijat (yleensä Åbo Akademin ja Turun yliopiston tk-

opiskelijoita) Ohjaaja (coach), valvoo ohjelmoijia ja prosessin soveltamista

(yleensä jatko-opiskelija) Asiakas (yleensä tutkimusjohtaja ) Tekninen tuki (laboratorioteknikot)

Tuoteprojektit yleensä lyhyitä Suurempi projekti jaetaan

osaprojekteihin

Page 9: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi - ohjelmistotuotantoa kehittävä laboratorio Ohjelmistotehdas tuottaa jatkuvasti tietoa

käytettävän ohjelmistoprosessin hyvistä ja huonoista puolista

Laboratoriossa analysoidaan tieto ja kehitetään tämän perusteella prosessia

Laboratoriossa kokeillaan uusia ohjelmistotuotannon menetelmiä

Tarjoaa kokeellisen ympäristönohjelmistotuotannon menetelmäkehitykselle

Page 10: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi –laboratorio

Tutkimus-yksiköt

(ES,DS,SC,MR)Gaudí

CREST

toimeksiannotresurssit

tulokset

Software Construction

yksikkö

kokeet tulokset

Page 11: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Laboratorion tavoitteet Uusien menetelmien kehittäminen Olemassa olevien menetelmien arviointi kokeellisesti Ohjelmistoprosessin tavoitteet

Joustava tuotantoprosessi Helppo oppia, kevyt käyttää Johtaa luotettaviin ohjelmiin Hyvä ylläpidettävyys

Koejärjestelyt Huomioidaan ihmisen osuus

ohjelmointityössä Kontrolloidut koejärjestelyt Monitoroidut kokeet Tulosten laadullinen ja

määrällinen arviointi

Page 12: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Koejärjestelyt

Yksittäisen tuotteen rakentaminen jaetaan ajallisesti osaprojektiin

Jokainen osaprojekti on koe, jota valvotaan ja jonka tuloksia analysoidaan

Eri kokeissa voidaan kokeilla erilaisia menetelmiä (prosesseja)

D0.1 D0.2 D.0.2.1

C0.2

B0.1 B0.4 B0.6 B1.0

A0.1 A0.3A0.2

tuote

aika

Page 13: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Yksittäinen koe

Tehtävänä ohjelmistotuotteen rakentaminen ei tutkimusta, ainoastaan tuotteen rakentamista ei koulutuksellisia tavoitteita projektissa opiskelijoille maksetaan palkkaa työstä, ei

opintoviikkoja tk-opiskelijat toimivat ohjelmoijina hyvistä ohjelmoijista pyritään pitämään kiinni,

joten ohjelmoijien kokemus kasvaa Kokeella on rajoitettu koko

4-6 ohjelmoijaa 3-6 kuukauden kesto koko/osapäivätoimi kokonaisvolymi 1-2 miestyövuotta

Page 14: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi- tuotantoprosessi Extreme programming (XP) perusmenetelmänä XP menetelmään kuuluu useita eri menetelmiä

osa näistä ovat pakollisia Gaudissa toisia kokeillaan ja sovitetaan Gaudin ympäristöön

Prosessia täydennetään muilla menetelmillä: Stepwise feature introduction

(ohjelmistoarkitehtuuri) Design by contract (komponenttin määrittely ja

testausmenetelmä) UML suunnittelukielenä Joustava ohjelmointikieli

(Python)

Page 15: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Ohjelmoijien koulutus Noin 20 tuntia koulutusta ennen projektityön alkamista Aiheet (”best software practices”):

Extreme programming menetelmät Stepwise feature introduction UML kuvausten käyttö ohelmoinnissa Uudet ohjelmointikielet (Python, Eiffel,C++) Versionhallintajärjestelmä (CVS) Yksikkötestaus (PyUnit) Graafinen käyttöliittymä (Qt) Source forge käyttö ym.

Erikoisaiheet ohjelmistotuotteentarpeen mukaisesti

Page 16: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Pakollisia XP menetelmiä pariohjelmointi (pair programming) yksikkötestaus keskeisessä asemassa (unit testing) lyhyet iterointisyklit usein toistuvat ohjelmiston rakenteen korjaukset

(refactoring) kevyt dokumentointi usein toistuva eri osien integrointi ohjaajalla (coach) keskeinen

asema työn ohjaamisessa riskien vähentäminen tutkimalla

hankalat kysymykset heti alussa(spike solutions)

ei ylityötä automaattinen testaaminen

Page 17: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Planning User stories are written. Release planning creates the schedule. Make frequent small releases. The Project Velocity is measured. The project is divided into iterations. Iteration planning starts each iteration. Move people around. A stand-up meeting starts each day. Fix XP when it breaks.

Designing Simplicity. No functionality is added early. Choose a system metaphor. Use CRC cards for design sessions. Create spike solutions to reduce risk. Refactor whenever and wherever

possible.

Coding The customer is always available. All production code is pair programmed. Code must be written to agreed

standards. Code the unit test first. Only one pair integrates code at a time. Integrate often. Use collective code ownership. Leave optimization till last. No overtime.

Testing All code must have unit tests. All code must pass all unit tests before it

can be released. When a bug is found tests are created. Acceptance tests are run often and the

score is published.

Page 18: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Kokeiltavia XP menetelmiä Asiakasmalli (on site customer) Release planning Projektinopeuden arviointi CRC korttien (tai vastaavan) käyttö Testien kirjoittaminen ennen kooodaamista

Page 19: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Stepwise Feature Introduction

Ohjelmisto rakennetaan ohuina päällekkäisinä tasoina

Jokainen taso lisää yhden uuden piirteen, häiritsemättä alempien tasojen tuomia piirteitä

Jokainen taso muodostaa (alempien tasojen kanssa) tomivan ohjelmistotuotteen jota voidaan testata

ylemmistä tasoista riippumatta

Tavoitteena on ohjelmiston luotettavuuden, muunneltavuuden ja ylläpidettävyyden lisääminen.

Page 20: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Keskeiset Gaudi tuotteet

Math Editor (4 osaprojektia) Outline tyyppien tekstieditori

matemaattisten todistusten kirjoittamiseen ja tarkistamiseen.

Software Construction Workbench (3 osaprojektia) UML-kaavojen ym editori,

ohjelmoitava ja laajennettave Software Modeling Workbench

(3 osaprojektia) Ohjelmointiympäristö joka

tukee Stepwise feature introduction menetelmää

Page 21: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Math Editor

Page 22: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Software modelling workbench

Page 23: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi historiikki Kesä 2001: piloottivaihe

3 kuukautta 6 opiskelijaa, 3 ohjaajaa Yksi tuote

Kesä 2002 4 kuukautta 12 opiskelijaa, 3 ohjaajaa Kolme tuotetta

Syksy 2002 3 kuukautta 12 opiskelijaa, 3 ohjaajaa Kolme tuotetta

Kevät 2003 3 kuukautta 12 opiskelijaa 3 ylläpitoprojektia

Kesä 2003: 3 kuukautta 20 opiskelijaa, 6 ohjaajaa 2 laboratorioteknikkoa 5 tuotetta

Page 24: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Kesän 2003 Gaudi tuoteprojektit 3-D UML kaavioiden animointi MathEditor Financial planner Mobile ad-hoc network Digital TV middleware

Page 25: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudí työtilat

280m2 tilat Huoneet kalustettu XP

tyyliin Suuri yhteinen alue

Tekninen tuki

Datacity B, 4th floor

Page 26: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

XP työhuoneen organisointi

Private AreaCommon Area

Page 27: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Kokemuksia-1 Gaudi lähestymismenetelmä toimii hyvin

käytännössä Gaudi ohjelmistotehdas tuottaa ylläpidettäviä,

riittävän luotettavia ohjelmatuotteita Gaudi ohjelmointilaboratorio antaa hyvän

ympäristön erilaisten ohjelmointitekniikoiden kokeilemiseen

Kokeiden tuloksia käytetään Gaudin ohjelmistoprosessin parantamiseen

Page 28: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Kokemuksia-2 XP menetelmästä pääosin myönteisiä kokemuksia

toimii hyvin yliopistoympäristössä opiskelijat tyytyväisiä ohjelmointiympäristöön ja

prosessiin asiakasmallin kokeilut myönteisiä, pitäisi lisätä

tämä standardiprosessiin XP vaatii kuitenkin täydennystä

tarvitaan kokonaisnäkemys ohjelmiston arkitehtuurista (esim SFI)

dokumentointia kehitettävä

Page 29: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Gaudi laajennussuunnitelmat

ExperimentalGaudi

AcademicGaudi

IndustrialGaudi

Gaudia on tarkoitus laajentaaakateemisesta ympäristöstämyöskin yritysprojekteihin

Page 30: Gaudí -  ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

Spanish architect, one of the most creative architects in modern times. His style is often described as a blend of neo-Gothic and Art Nouveau, but it also has elements of Surrealism and Cubism.

Gaudí attended the School of Architecture in Barcelona (1874-1878), where he spent his life. Under the patronage of industrialist Eusebio Güell, he completed many important commissions, including the Palacio Güell (1885-1889) and the Park Güell (1900-1914). In 1883 Gaudí was appointed official architect of the Church of the Sagrada Familia, which, although still unfinished at his death, is acknowledged as his masterpiece. Its lofty semi-Cubist towers, with mosaic-covered finials, dominate the skyline of Barcelona.

Antoni Gaudí i Cornet 1852-1926