DTEK0065 / DTEK8971 Ohjelmoinnin Laboratoriotyökurssi
Total Page:16
File Type:pdf, Size:1020Kb
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