TIE-20200 Ohjelmistojen suunnittelu Luento 14: Työkaluja Marko Leppänen, Samuel Lahtinen TIE-20200 Samuel Lahtinen 1
Ajankohtaista Harjoitustyön dedis 7.12. klo 06:00 Demoilusessiot samalla/seuraavalla viikolla Harjoitustyön neuvontapäivystystä TO15-16 TE116 (Samuel), muulloinkin sopii tulla jos oon va Arvostelukristeeristöä
Ohjelmassa tänään Lyhyesti CI- & CD-työkaluista ja suunnittelusta Pikakertaus kurssin aihealueesta Tentin rakennetta, kysymyksien tyyliä Sananen harjoitustyön arvioinnista jne.
Nykyinen näkemys prosessista Palaute ja mittaukset Backlog Kehitystyö CI Deploy DEV TIE-20200 Samuel Lahtinen Versionhallinta Staging/QA
CD-putkea TIE-20200 Samuel Lahtinen
Tavoite Continuous Deployment Nopea arvonlisä asiakkaalle JIT Nopea palaute Aina ehjä build Hyötyjä saatavissa vaikkei asennuksia tehdäkään jatk A/B testaus, käyttäjän seuraaminen?
Oikean maailman esimerkki TIE-20200 Samuel Lahtinen
Työkaluja eri vaiheisiin Vaatimusten kerääminen ja hallinta Versionhallinta Kehitystyökalut Backlogin hallinta Koodikatselmointi Bugiseuranta Buildaus Testaus Yksikkötestaus Käyttöliittymätestaus Hyväksymistestaus Laatutestaus Suorituskykytestaus CI Deployment Kommunikaatio Virtualisointi
Miksi työkaluja ja automaatiota? Automaatio nopeuttaa toistuvia tehtäviä Vähemmän mahdollisuuksia tehdä inhimillisiä virheitä Kunnon työkaluputken pystyttäminen ei ole triviaalia Yleisesti 2 vko setup aika Matala truck number Lean SW & DevOps
Miten valita työkalut? Tiettyjen toimittajien työkalupinot (esim. Atlassian) Integraatio sujuvaa Tuttuus aina plussaa Mitä muut ovat kokeneet hyväksi Blogit Yritysten väliset koulutustilaisuudet
Domain Requireme nts Elicitation Version Artifact Control Backlog Repository Management Provisioning Build & Environments Continuous Unit Integration Testing UI Testing Bug Tracking Quality & Code Performance Review Acceptance Testing Deployment Feedback Consulting / IT Products Consulting / IT Products Consulting / IT Services Telecom Products Telecom Products Telecom Products Web Platform Development Platform Mobile Games Mobile Games Mobile Games B2B Services B2B Services Industrial Automation Embedded Systems UI Framework
Kehitystyökalut Vaatimukset: Jira, Trello Versionhallinta: Git, SVN, Mercurial Kommunikaatio: IRC, Slack, Skype, Hipchat, Github, F Koodikatselmointi: Gerrit
Reaalimaailman dokumentointiputk TIE-20200 Samuel Lahtinen
Staattinen analyysi ja dokumentointi Javadocs Schemaspy Swagger Checkmarx, Findbugs, SonarQube, Clang, Bullseye, C
CI/testaus Jenkins, TeamCity, CircleCI, Bamboo, Buildbot Robot framework Chai, Expect.js, Mockito, Jasmine, Cucumber, Mocha Junit Load tests: Gatling, flood.io Monitorointi: New Relic, Zabbix, Pingdom, AWS Cloud Selenium, Capybara, Browserstack, Webdriver
Virtualisointi/asennus/IT infra Virtuaaliympäristöjä: Virtualbox, Vmware, Docker Pilviympäristö: AWS, Rackspace konfiguraationhallinta: Chef/Puppet Servereiden elinkaarenhallinta: Foreman Etäserveriautomaatio: Capistrano, Rake Mobiilialustat: Hockeyapp
Analytiikka SiteCatalyst Snoobi Clickview A/B testaus: Optimizely Splunk
Työkalujen vertailu Työkalu-/teknologiavalinnat voivat olla myös suunnitte Teknologiavertailu Toistetaan esim. vuoden välein Dokumentoi samalla päätöksen syyt
Vertailumatriisi TIE-20200 Samuel Lahtinen
Työkalujen heikkouksia Jotkut työkalut vaativat tiettyjä muita osia työkaluketjus Kieliriippuvuus Saattaa pakottaa tietyt ajatusmallit Vendor lock-in Osaamisen puute
Suunnittelu vs. CI/CD Ohjaa myös ohjelman rakennetta, pienempiä selkeitä osakokonaisuuksia Päivitykset rakenteeseen, refaktoroinnit Testattavuuden korostuminen, rajapinnat Tilattomuutta, sama toiminta samoilla parametreilla Mikropalvelutyyppiset arkkitehtuuriratkaisut
Loppusanat Työkalujen käyttö, konfigurointi, yhdistely tullut lähemmäksi ohjelmiston kehitystyötä Dev.ops. CI/CD-putken työkalut hallitseville tilausta työelämässä Dedis työlle 7.12. klo 06:00. Dokumenttipohja ja palautusohje löytyvät täältä: http://www.cs.tut.fi/~ohjsuun/harjoitustyo.sh tml