tie-20200 ohjelmistojen suunnittelu - tiedekunnatohjsuun/luennot/2015/luento14_tyokalut.pdf ·...
TRANSCRIPT
TIE-20200 Samuel Lahtinen
TIE-20200 Ohjelmistojen suunnittelu
Luento 14: Työkaluja
Marko Leppänen, Samuel Lahtinen
1
TIE-20200 Samuel Lahtinen
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 vaan
• Arvostelukristeeristöä
TIE-20200 Samuel Lahtinen
Ohjelmassa tänään
•Lyhyesti CI- & CD-työkaluista ja suunnittelusta
•Pikakertaus kurssin aihealueesta
•Tentin rakennetta, kysymyksien tyyliä
•Sananen harjoitustyön arvioinnista jne.
TIE-20200 Samuel Lahtinen
Nykyinen näkemys prosessista
CI
Versionhallinta
Deploy
BacklogKehitystyö
Staging/QA
Palaute ja mittaukset
DEV
TIE-20200 Samuel Lahtinen
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 jatkuvasti
• A/B –testaus, käyttäjän seuraaminen?
TIE-20200 Samuel Lahtinen
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
TIE-20200 Samuel Lahtinen
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
TIE-20200 Samuel Lahtinen
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
TIE-20200 Samuel Lahtinen
Domain Requireme
nts
Elicitation
Version
Control
Artifact
Repository
Backlog
Management
Provisioning
&
Environments
Build Continuous
Integration
Unit
Testing
UI
Testing
Bug
Tracking
Quality &
Performance
Code
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
TIE-20200 Samuel Lahtinen
Kehitystyökalut
• Vaatimukset: Jira, Trello
• Versionhallinta: Git, SVN, Mercurial
• Kommunikaatio: IRC, Slack, Skype, Hipchat, Github, Flowdock
• Koodikatselmointi: Gerrit
TIE-20200 Samuel Lahtinen
Reaalimaailman dokumentointiputki
TIE-20200 Samuel Lahtinen
Staattinen analyysi ja dokumentointi
• Javadocs
• Schemaspy
• Swagger
• Checkmarx, Findbugs, SonarQube, Clang, Bullseye, Coverity
TIE-20200 Samuel Lahtinen
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 Cloudwatch
• Selenium, Capybara, Browserstack, Webdriver
TIE-20200 Samuel Lahtinen
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
TIE-20200 Samuel Lahtinen
Analytiikka
• SiteCatalyst
• Snoobi
• Clickview
• A/B testaus: Optimizely
• Splunk
TIE-20200 Samuel Lahtinen
Työkalujen vertailu
• Työkalu-/teknologiavalinnat voivat olla myös suunnittelu
• Teknologiavertailu• Toistetaan esim. vuoden välein
• Dokumentoi samalla päätöksen syyt
TIE-20200 Samuel Lahtinen
Vertailumatriisi
TIE-20200 Samuel Lahtinen
Työkalujen heikkouksia
• Jotkut työkalut vaativat tiettyjä muita osia työkaluketjusta
• Kieliriippuvuus
• Saattaa pakottaa tietyt ajatusmallit
• Vendor lock-in
• Osaamisen puute
TIE-20200 Samuel Lahtinen
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
TIE-20200 Samuel Lahtinen
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