DTEK0065 / DTEK8971 Ohjelmoinnin laboratoriotyökurssi
Ohjelmistokehityksen työkaluja
Jari-Matti Mäkelä 8.3.2021 Tänään aiheina
Ohjelmistokehityksen työkaluja
Git
2 Ohjelmistokehityksen työkaluja Aloitetaanpa
2 Kaiken takana: iteratiivinen ohjelmistonkehitysprosessi
PROJEKTIN ALOITUS
MÄÄRITTELY
VALMISTELU SUUNNITTELU
ITERATIIVINEN OHJELMISTONITERATIIVINEN KEHITYS
ARVIOINTI TOTEUTUS
VERIFIOINTI
KÄYTTÖÖNOTTO 3 Työkalutarjontaa
Kuva 1: http://www.jamesbowman.me/post/continuous-delivery-tool-landscape/ 4 Työkalutarjontaa #2
Kuva 2: https://harness.io/2018/01/devops-tools-lifecycle-mesh-2018/ 5 Työkalutarjontaa #3
Kuva 3: agilegnostic.wordpress.com/2015/11/12/four-facets-of-agile-part-3-tools-and-technologies
6 Työkalutarjontaa #4
• Wikibooks - Introduction to Software Engineering
• Programming tool - Wikipedia
• https://hacker-tools.github.io/
• https://www.reddit.com/r/programmingtools/
• https://www.reddit.com/r/learnprogramming/wiki/tools
• Online-kurssit: esim. https://mooc.fi/ - DevOps with Docker
• yms.
• Yleisemmin: Outline of software engineering
7 • Kommunikointivälineet • oleellista “ammatillisten artefaktien” (esim. koodi, assetit) välittäminen käyttökelpoisessa muodossa
Yleiskatsaus työkaluihin
• Integroitu kehitysympäristö (IDE) • koodin kirjoitus • koodin kääntäminen ja kokoaminen (ks. konfiguraationhallinta) • syntaksin ja semantiikan tarkistus (“lintteri”) • virheenjäljitys (“debuggaus”) • yksikkötestaus (ks. testaus) • ..ja muita rajapintoja • esimerkkejä: Eclipse, IntelliJ IDEA
8 Yleiskatsaus työkaluihin
• Integroitu kehitysympäristö (IDE) • koodin kirjoitus • koodin kääntäminen ja kokoaminen (ks. konfiguraationhallinta) • syntaksin ja semantiikan tarkistus (“lintteri”) • virheenjäljitys (“debuggaus”) • yksikkötestaus (ks. testaus) • ..ja muita rajapintoja • esimerkkejä: Eclipse, IntelliJ IDEA
• Kommunikointivälineet • oleellista “ammatillisten artefaktien” (esim. koodi, assetit) välittäminen käyttökelpoisessa muodossa
8 • Versionhallinta • hajautettu, samanaikainen kehitystyö • ominaisuuksien itsenäinen kehitys • ominaisuuksien integrointi • konfliktien hallinta • esimerkkejä: Git
Yleiskatsaus työkaluihin #2
• DevOps-elinkaarityökalu • lähdekoodin varastointi (ks. versionhallinta) • bugiraportointi • CI/CD (ks. testaus & konfiguraationhallinta) • (alkeellinen) projektinhallinta • wiki ja dokumentaatio • ..ja muita rajapintoja • esimerkkejä: Gitlab, Github
9 Yleiskatsaus työkaluihin #2
• DevOps-elinkaarityökalu • lähdekoodin varastointi (ks. versionhallinta) • bugiraportointi • CI/CD (ks. testaus & konfiguraationhallinta) • (alkeellinen) projektinhallinta • wiki ja dokumentaatio • ..ja muita rajapintoja • esimerkkejä: Gitlab, Github
• Versionhallinta • hajautettu, samanaikainen kehitystyö • ominaisuuksien itsenäinen kehitys • ominaisuuksien integrointi • konfliktien hallinta • esimerkkejä: Git 9 • Alustan virtualisointi • käyttöympäristön konfigurointi • komponenttien eristäminen ja uudelleenkäyttö • klusterointi ja skaalaus • esimerkkejä: Docker, Podman, LXD
Yleiskatsaus työkaluihin #3
• Konfiguraationhallinta • projektin ja komponenttien määritys • kokoaminen • konfiguraatio • (ohj.komponenttien) versiointi • esimerkkejä: Maven, Gradle
10 Yleiskatsaus työkaluihin #3
• Konfiguraationhallinta • projektin ja komponenttien määritys • kokoaminen • konfiguraatio • (ohj.komponenttien) versiointi • esimerkkejä: Maven, Gradle
• Alustan virtualisointi • käyttöympäristön konfigurointi • komponenttien eristäminen ja uudelleenkäyttö • klusterointi ja skaalaus • esimerkkejä: Docker, Podman, LXD
10 • Virheenjäljitys • komponenttien toiminta määrittelyn mukaista • tehokkuusaspektit • esimerkkejä: IDE:n integroitu debuggeri, VisualVM
• Dokumentaation generointi • esimerkkejä: javadoc, doxygen
Yleiskatsaus työkaluihin #4
• (Yksikkö)testaus • komponenttien toiminta määrittelyn mukaista • epäkelvon syötteen käsittely • tehokkuusaspektit • esimerkkejä: JUnit, JQwik
11 • Dokumentaation generointi • esimerkkejä: javadoc, doxygen
Yleiskatsaus työkaluihin #4
• (Yksikkö)testaus • komponenttien toiminta määrittelyn mukaista • epäkelvon syötteen käsittely • tehokkuusaspektit • esimerkkejä: JUnit, JQwik
• Virheenjäljitys • komponenttien toiminta määrittelyn mukaista • tehokkuusaspektit • esimerkkejä: IDE:n integroitu debuggeri, VisualVM
11 Yleiskatsaus työkaluihin #4
• (Yksikkö)testaus • komponenttien toiminta määrittelyn mukaista • epäkelvon syötteen käsittely • tehokkuusaspektit • esimerkkejä: JUnit, JQwik
• Virheenjäljitys • komponenttien toiminta määrittelyn mukaista • tehokkuusaspektit • esimerkkejä: IDE:n integroitu debuggeri, VisualVM
• Dokumentaation generointi • esimerkkejä: javadoc, doxygen
11 Kommunikointitekniikoista
Nykyään monia tekniikoita, mistä valita…
aim, allo, android messages, bbm, blackberry messenger, briar, chaton, confluence, diaspora, discord, duo, ebuddy, ekiga, email, facetime, fb, fb messenger, flowdock, gadu-gadu, gchat, gitter, hangouts, hike, hipchat, icq, imessage, imo, instagram, irc, jabber, jodel, kakaotalk, kik, line, linkedin, live messenger, lync, mailing lists, matrix, mattermost, myspaceim, periscope, qq, signal, skype, slack, sms ja mms., snapchat, socializer messenger, supesonic fun voice messenger, tamtam messenger, tango, teamspeak, telegram, threema, tinder, tiktok, tox, twitter, usenet news, ventrilo, viber, vk, voice, wechat, whatsapp, wickr me, wire, wispi, xfire, xmpp, yahoo messenger, yammer, zangi messenger, zoom, zulip, …
12 Esimerkki: IRC
Yliopiston kommunikaatiopalveluita: linux.utu.fi (ssh), irc.utu.fi (irc)
13 Esimerkki: Mattermost
https://mattermost.utu.fi/, https://mail.utu.fi/, yms
14 Esimerkki: Trello
Projektin työtehtävien seurantaan palveluita: https://trello.com/
15 • Ns. “pastebin-palvelut” • kannattaa tarkistaa sisällön lisensointipolitiikka, varsinkin NDA:n alaista työkoodia jakaessa !! • lähtökohtaisesti myös julkisia ja hakkereiden kiinnostuksen kohteita • osassa kommentointimahdollisuus, jopa koodin rivitasolla
• Ohjelmankehitysalustat • edellyttää ensin projektin luomista (http://gitlab.utu.fi/) • esim. github gist, gitlab snippets, bitbucket snippets, jne.
• Kysymysten kysymisestä • http://www.catb.org/~esr/faqs/smart-questions.html • https://jvns.ca/blog/good-questions/
Ohjelmakoodeista keskustelu
• Edellä mainituissa keskustelualustoissa vaihteleva tuki
16 • Ohjelmankehitysalustat • edellyttää ensin projektin luomista (http://gitlab.utu.fi/) • esim. github gist, gitlab snippets, bitbucket snippets, jne.
• Kysymysten kysymisestä • http://www.catb.org/~esr/faqs/smart-questions.html • https://jvns.ca/blog/good-questions/
Ohjelmakoodeista keskustelu
• Edellä mainituissa keskustelualustoissa vaihteleva tuki
• Ns. “pastebin-palvelut” • kannattaa tarkistaa sisällön lisensointipolitiikka, varsinkin NDA:n alaista työkoodia jakaessa !! • lähtökohtaisesti myös julkisia ja hakkereiden kiinnostuksen kohteita • osassa kommentointimahdollisuus, jopa koodin rivitasolla
16 • Kysymysten kysymisestä • http://www.catb.org/~esr/faqs/smart-questions.html • https://jvns.ca/blog/good-questions/
Ohjelmakoodeista keskustelu
• Edellä mainituissa keskustelualustoissa vaihteleva tuki
• Ns. “pastebin-palvelut” • kannattaa tarkistaa sisällön lisensointipolitiikka, varsinkin NDA:n alaista työkoodia jakaessa !! • lähtökohtaisesti myös julkisia ja hakkereiden kiinnostuksen kohteita • osassa kommentointimahdollisuus, jopa koodin rivitasolla
• Ohjelmankehitysalustat • edellyttää ensin projektin luomista (http://gitlab.utu.fi/) • esim. github gist, gitlab snippets, bitbucket snippets, jne.
16 Ohjelmakoodeista keskustelu
• Edellä mainituissa keskustelualustoissa vaihteleva tuki
• Ns. “pastebin-palvelut” • kannattaa tarkistaa sisällön lisensointipolitiikka, varsinkin NDA:n alaista työkoodia jakaessa !! • lähtökohtaisesti myös julkisia ja hakkereiden kiinnostuksen kohteita • osassa kommentointimahdollisuus, jopa koodin rivitasolla
• Ohjelmankehitysalustat • edellyttää ensin projektin luomista (http://gitlab.utu.fi/) • esim. github gist, gitlab snippets, bitbucket snippets, jne.
• Kysymysten kysymisestä • http://www.catb.org/~esr/faqs/smart-questions.html • https://jvns.ca/blog/good-questions/
16 Esimerkki: Ideone
17
Kuva 4: https://ideone.com/ Esimerkki: Gitlab snippet
18
Kuva 5: https://gitlab.utu.fi/ Esimerkki: Gitlab snippet #2
19 Esimerkki: Gitlab snippet #3
20 Avun kysyminen
• Netissä lukuisia suosittuja ohjelmistoalan keskustelualustoja 1) interaktiiviset chat-huoneet 2) uutisten kommenttipalstat 3) kysymys/vastaus-tyyliset palstat • Suositeltavaa seurata jo yleisestä kiinnostuksesta alaa kohtaan • Lähes kaikille alalla tutuksi tulevia sivustoja ohjelmointiongelmien yms. tiimoilta: • Stackoverflow (3) • Quora (3) • Hacker News (2) • Reddit (/r/programming) (2) • Medium • Wikipedia
21 Esimerkki: stackoverflow.com
22
# Versionhallinta • Aiemmin: rcs, cvs, svn, … • Nykyään suosituimmat: git, hg, bzr, darcs, … • Ehkä tulossa: Pijul yms. tutkimusprojekteja
• Versionhallinta seuraa tiedostojen historiaa • tiedoston sisältä: lisätyt/poistetyt/siirretyt/muutetut rivit • tiedostotasolla (nimi ja muu metadata) • muutoskokonaisuuksia (tiedostojoukot) • Tietokantamainen (lukitus ja atomisuus) • Eheys taattu kryptografisesti (esim. SHA-1) • Seurattavat & seurannan ulkopuoliset tiedostot
Versionhallinta - pääperiaatteet
• Automatisoi versionhallinnan työtehtäviä
23 • Versionhallinta seuraa tiedostojen historiaa • tiedoston sisältä: lisätyt/poistetyt/siirretyt/muutetut rivit • tiedostotasolla (nimi ja muu metadata) • muutoskokonaisuuksia (tiedostojoukot) • Tietokantamainen (lukitus ja atomisuus) • Eheys taattu kryptografisesti (esim. SHA-1) • Seurattavat & seurannan ulkopuoliset tiedostot
Versionhallinta - pääperiaatteet
• Automatisoi versionhallinnan työtehtäviä
• Aiemmin: rcs, cvs, svn, … • Nykyään suosituimmat: git, hg, bzr, darcs, … • Ehkä tulossa: Pijul yms. tutkimusprojekteja
23 Versionhallinta - pääperiaatteet
• Automatisoi versionhallinnan työtehtäviä
• Aiemmin: rcs, cvs, svn, … • Nykyään suosituimmat: git, hg, bzr, darcs, … • Ehkä tulossa: Pijul yms. tutkimusprojekteja
• Versionhallinta seuraa tiedostojen historiaa • tiedoston sisältä: lisätyt/poistetyt/siirretyt/muutetut rivit • tiedostotasolla (nimi ja muu metadata) • muutoskokonaisuuksia (tiedostojoukot) • Tietokantamainen (lukitus ja atomisuus) • Eheys taattu kryptografisesti (esim. SHA-1) • Seurattavat & seurannan ulkopuoliset tiedostot
23 • Lataussivu: https://git-scm.com/downloads • Linux-käyttäjät voivat asentaa paketinhallinnan kautta • Valmiina laitoksen virtuaalikoneessa
• Tuettu myös IDE-ympäristöissä • Eclipse, IntelliJ IDEA, … • Aputyökaluja • SourceTree, GitHub Desktop, TortoiseGit, Git Extensions, GitKraken, SmartGit, Tower, GitEye, gitg, ungit, git-cola, Cycligent, Aurees, Fork, CodeReview, gmaster, GitAhead, GitBlade, Guitar, RepoZ, GitAtomic, Sublime Merge, gitk, git-gui
Git
• Linus Torvalds (2005) • Hajautettu, tehokas, avoin lähdekoodi • Käytännössä nykyään hyvin laajalti • Seuraa muutosseteissä tiedostoja
24 • Tuettu myös IDE-ympäristöissä • Eclipse, IntelliJ IDEA, … • Aputyökaluja • SourceTree, GitHub Desktop, TortoiseGit, Git Extensions, GitKraken, SmartGit, Tower, GitEye, gitg, ungit, git-cola, Cycligent, Aurees, Fork, CodeReview, gmaster, GitAhead, GitBlade, Guitar, RepoZ, GitAtomic, Sublime Merge, gitk, git-gui
Git
• Linus Torvalds (2005) • Hajautettu, tehokas, avoin lähdekoodi • Käytännössä nykyään hyvin laajalti • Seuraa muutosseteissä tiedostoja
• Lataussivu: https://git-scm.com/downloads • Linux-käyttäjät voivat asentaa paketinhallinnan kautta • Valmiina laitoksen virtuaalikoneessa
24 Git
• Linus Torvalds (2005) • Hajautettu, tehokas, avoin lähdekoodi • Käytännössä nykyään hyvin laajalti • Seuraa muutosseteissä tiedostoja
• Lataussivu: https://git-scm.com/downloads • Linux-käyttäjät voivat asentaa paketinhallinnan kautta • Valmiina laitoksen virtuaalikoneessa
• Tuettu myös IDE-ympäristöissä • Eclipse, IntelliJ IDEA, … • Aputyökaluja • SourceTree, GitHub Desktop, TortoiseGit, Git Extensions, GitKraken, SmartGit, Tower, GitEye, gitg, ungit, git-cola, Cycligent, Aurees, Fork, CodeReview, gmaster, GitAhead, GitBlade, Guitar, RepoZ, GitAtomic, Sublime Merge, gitk, git-gui 24 • Mahdollista pystyttää omia palvelimia • https://gitlab.com/ - “hieman raskas” • https://gitea.io/ • https://gogs.io/ • Gitbucket, GitPrep, Kallithea, TuleapL, Phabricator • …
Git #2
• Etävarastopalveluita • Turun yliopiston http://gitlab.utu.fi/ • https://github.com/ • https://gitlab.com/ • https://bitbucket.org/ • https://savannah.nongnu.org/ • …
25 Git #2
• Etävarastopalveluita • Turun yliopiston http://gitlab.utu.fi/ • https://github.com/ • https://gitlab.com/ • https://bitbucket.org/ • https://savannah.nongnu.org/ • …
• Mahdollista pystyttää omia palvelimia • https://gitlab.com/ - “hieman raskas” • https://gitea.io/ • https://gogs.io/ • Gitbucket, GitPrep, Kallithea, TuleapL, Phabricator • …
25 Gitin käyttöön palataan ensi kerralla.
25