Title: Gaud
1Gaudí - (kokeellinen) ohjelmistotehdas
jaohjelmointilaboratorio
CREST Center for Reliable Software
Technology Åbo Akademi
2CREST
- 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-opi
skelijat, lopputyön tekijät)
3CRESTin 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ä
4Ongelma
- 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 rakennetaanyleensä vain
prototyyppejä
5Ratkaisuyritys Gaudi
- Perustetaan CRESTin uusi yksikkö, Gaudi, joka
toimii sekä - ohjelmistoa tuottavana tehtaana, että
- ohjelmistotuotantoa tutkivana kokeellisena
laboratoriona - Tehdas tuottaa ohjelmistoja tutkimusyksiköiden
tarpeisiin - Laboratoriossa tutkitaantehtaassa sovellettavia
tuotantoprosesseja
6Gaudí 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
7Gaudi - tehdas
Tutkimustulokset, julkaisut, jne
CREST
Tutkimus- yksiköt (ES,DS,SC,MR)
Gaudí
toimeksiannot resurssit
ohjelmistot
Ohjelmistotuotteet, kokemukset, raportit,
käyttöohjeet jne
8Tehtaan 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
9Gaudi - 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
10Gaudi laboratorio
CREST
Tutkimus- yksiköt (ES,DS,SC,MR)
Gaudí
toimeksiannot resurssit
tulokset
kokeet
tulokset
Software Construction yksikkö
11Laboratorion 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
12Koejärjestelyt
D0.1
D0.2
D.0.2.1
tuote
C0.2
B0.1
B0.4
B0.6
B1.0
A0.1
A0.3
A0.2
aika
- Yksittäisen tuotteen rakentaminen jaetaan
ajallisesti osaprojektiin - Jokainen osaprojekti on koe, jota valvotaan ja
jonka tuloksia analysoidaan - Eri kokeissa voidaan kokeilla erilaisia
menetelmiä (prosesseja)
13Yksittä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
14Gaudi- 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 (ohjelmistoarkitehtu
uri) - Design by contract (komponenttin määrittely ja
testausmenetelmä) - UML suunnittelukielenä
- Joustava ohjelmointikieli(Python)
15Ohjelmoijien 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
16Pakollisia 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 tutkimallahankalat
kysymykset heti alussa(spike solutions) - ei ylityötä
- automaattinen testaaminen
17- 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.
18Kokeiltavia XP menetelmiä
- Asiakasmalli (on site customer)
- Release planning
- Projektinopeuden arviointi
- CRC korttien (tai vastaavan) käyttö
- Testien kirjoittaminen ennen kooodaamista
19Stepwise 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.
20Keskeiset 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ää
21Math Editor
22Software modelling workbench
23Gaudi historiikki
- Kesä 2003
- 3 kuukautta
- 20 opiskelijaa, 6 ohjaajaa
- 2 laboratorioteknikkoa
- 5 tuotetta
- 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
24Kesän 2003 Gaudi tuoteprojektit
- 3-D UML kaavioiden animointi
- MathEditor
- Financial planner
- Mobile ad-hoc network
- Digital TV middleware
25Gaudí työtilat
- 280m2 tilat
- Huoneet kalustettu XP tyyliin
- Suuri yhteinen alue
- Tekninen tuki
Datacity B, 4th floor
26XP työhuoneen organisointi
Common Area
Private Area
27Kokemuksia-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
28Kokemuksia-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ä
29Gaudi laajennussuunnitelmat
- Gaudia on tarkoitus laajentaaakateemisesta
ympäristöstämyöskin yritysprojekteihin
Academic Gaudi
Experimental Gaudi
Industrial Gaudi
30Antoni Gaudí i Cornet 1852-1926
- 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.