300 likes | 411 Views
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)
E N D
Gaudí - (kokeellinen) ohjelmistotehdas jaohjelmointilaboratorio 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) • 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)
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ä
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 rakennetaanyleensä vain prototyyppejä
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 tutkitaantehtaassa sovellettavia tuotantoprosesseja
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
Gaudi - tehdas Tutkimustulokset, julkaisut, jne CREST Gaudí Tutkimus- yksiköt (ES,DS,SC,MR) toimeksiannot resurssit ohjelmistot Ohjelmistotuotteet, kokemukset, raportit, käyttöohjeet jne
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
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
Gaudi –laboratorio CREST Gaudí Tutkimus- yksiköt (ES,DS,SC,MR) toimeksiannot resurssit tulokset kokeet tulokset Software Construction yksikkö
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
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 tuote C0.2 B0.1 B0.4 B0.6 B1.0 A0.1 A0.2 A0.3 aika
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
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)
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
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 tutkimallahankalat kysymykset heti alussa(spike solutions) • ei ylityötä • automaattinen testaaminen
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.
Kokeiltavia XP menetelmiä • Asiakasmalli (on site customer) • Release planning • Projektinopeuden arviointi • CRC korttien (tai vastaavan) käyttö • Testien kirjoittaminen ennen kooodaamista
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.
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ää Keskeiset Gaudi tuotteet
Gaudi 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
Kesän 2003 Gaudi tuoteprojektit • 3-D UML kaavioiden animointi • MathEditor • Financial planner • Mobile ad-hoc network • Digital TV middleware
Gaudí työtilat • 280m2 tilat • Huoneet kalustettu XP tyyliin • Suuri yhteinen alue • Tekninen tuki Datacity B, 4th floor
XP työhuoneen organisointi Common Area Private Area
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
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ä
Gaudi laajennussuunnitelmat • Gaudia on tarkoitus laajentaaakateemisesta ympäristöstämyöskin yritysprojekteihin Academic Gaudi Experimental Gaudi Industrial Gaudi
Antoni 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.