Innføring i systemutvikling

Software Engineering

Software Engineering

Ikke «programmerings-gud» – men:

  • fungere bra sammen med andre,
  • bruke det du kan
  • kunne lære mer

Samarbeid

Håndverk

Praktisk informasjon

  • Meld dere på grupper selv på Mitt UiB
  • Gruppene er faste
  • Undervisningsassistent: Wim van den Broeck
  • Gruppeledere

Lærebok

Forelesningsnotater og kode

https://git.app.uib.no/inf112/23v/lectures

(ikke aktiv ennå)

Tema

  • Kommunikasjon og samarbeid
  • Prosjektorganisering
  • Krav og design
  • Abstraksjon og modellering
  • Utviklingspraksis, testing og debugging
  • Bygg og deploy av prosjekt
  • Refaktorering og vedlikehold
  • Designmønstre
  • Lovverk

Mål

Både praktisk, sosialt og teknisk!

  • Konsepter og terminologi
  • Mental modell
  • Problemløsing – finn ut av ting på eget initiativ!
  • Bruke og få hjelp til verktøy
  • Reflektere over ferdigheter og begrensninger
  • Sosialisering som utvikler, ikke pugging

Vær aktiv

Kommunikasjon

Men vi skal jo bare kode?

Mye vanligere enn du tror

Hva er vellykket kommunikasjon?

Kommunikasjonskanaler

  • Epost
  • Chat
  • Issue tracking
  • Ansikt til ansikt
  • Møter
  • Telefon/video
  • Tekst og figur
  • Dokumentasjon og kode

Respekt

  • tid, opppmerksomhet
  • mengde informasjon – unyttig informasjon
  • forståelse, mangel på forståelse

Kontekst

Sett kontekst:

  • Bakgrunn? Hva vil du oppnå?
  • Har du gitt nok informasjon?
    • Lenke til kode, f.eks.
    • Hvordan spurte du om hjelp i INF10x?

Ansikt til ansikt

Hvem har rett?

  • "Den skal være stor"
  • "Den skal være liten"

Alle gjør antagelser

  • «Har jeg forstått det riktig at ...»

Møter

Kroppsspråk

Telefon og video

Trygg kommunikasjon

  • Trygg for å være effektiv
  • Les kroppspråk og stemning?
  • Kreativt yrke – du må være avslappet og komfortabel!

Epost

  • To, CC, BCC – aldri flere enn nødvendig
  • God tittel
  • Mer formelt
  • Viktig, men ikke hast

Online chat

(Discord, Mattermost, Slack, Teams, etc)
  • Flyktig, uformell, rask, stille – lav terskel
  • men: samle viktig informasjon i Wiki e.l.
  • Bruk evt. tråding hvis det er mye som foregår

Discord

https://discord.gg/uDpNebWCP6

Issue tracking og prosjekttavle

(GitHub/GitLab, Trello, Trac, Bugzilla)
  • Online – eller fysisk tavle med lapper
  • Inneholder:
    • hva, hvem, hvorfor, hvordan...
    • prioriteringer, historie, avgjørelser

Tekst

Figurer

Arbeidsflyt

Arkitektur

Kode-arkitektur, brukergrensesnitt

Mega-modell: data-representasjoner og prosesser

Kode

  • Forretningsregler
  • Beskriver realiteten
  • Lever lenge
  • For både menneske og maskin
  • Kommunisere om kode!

Hvordan diskutere sammen – dårlig eksempel

https://bit.ly/2smxwW0

Hvordan diskutere sammen – godt (bedre?) eksempel

https://bit.ly/2RFTbqh

Kommunikasjon rundt kode

Hvordan jobbe sammen i par

Lønner deg seg å jobbe sammen?

Hva oppnår vi med god kommunikasjon?

Kommunikasjon er essensielt

Testing

Beware of bugs in the above code; I have only proved it correct, not tried it.

– Donald Knuth

Former for testing

Unit, Integration, Regression, Functional, Acceptance, Accesibility, Performance, Security, …

Automatisk? Interaktiv? Med utvikler? QA team? Brukere?

Hvor trygg kan du være?