1 / 30

Gaudí - ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

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)

Télécharger la présentation

Gaudí - ( kokeellinen) ohjelmistotehdas ja ohjelmointilaboratorio

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gaudí - (kokeellinen) ohjelmistotehdas jaohjelmointilaboratorio Ralph Back Ivan Porres CREST: Center for Reliable Software Technology Åbo Akademi

  2. 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)

  3. 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ä

  4. 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ä

  5. 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

  6. 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

  7. Gaudi - tehdas Tutkimustulokset, julkaisut, jne CREST Gaudí Tutkimus- yksiköt (ES,DS,SC,MR) toimeksiannot resurssit ohjelmistot Ohjelmistotuotteet, kokemukset, raportit, käyttöohjeet jne

  8. 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

  9. 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

  10. Gaudi –laboratorio CREST Gaudí Tutkimus- yksiköt (ES,DS,SC,MR) toimeksiannot resurssit tulokset kokeet tulokset Software Construction yksikkö

  11. 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

  12. 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

  13. 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

  14. 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)

  15. 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

  16. 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

  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.

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

  19. 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.

  20. 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

  21. Math Editor

  22. Software modelling workbench

  23. 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

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

  25. Gaudí työtilat • 280m2 tilat • Huoneet kalustettu XP tyyliin • Suuri yhteinen alue • Tekninen tuki Datacity B, 4th floor

  26. XP työhuoneen organisointi Common Area Private Area

  27. 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

  28. 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ä

  29. Gaudi laajennussuunnitelmat • Gaudia on tarkoitus laajentaaakateemisesta ympäristöstämyöskin yritysprojekteihin Academic Gaudi Experimental Gaudi Industrial Gaudi

  30. 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.

More Related