-
George Adrian Stoica authoredGeorge Adrian Stoica authored
Software Development
Overview
-
Administrative issues
-
About software development
-
Software development methods
-
Software quality.
-
Practices used in modern agile development
Example code on gitlab (3)
Are there any issues encountered ?
-
A) no issues
-
B) could not clone the project
-
C) could not build the project
-
D) could not run the project
-
E) other issue
Reference Group
-
Tommy Chan
-
Vivi Cecilie Galschiødt Svendsen
-
Johan Ludvig Holst
-
Aksel Kirknes
-
Aksel Saugestad
-
Lars-Olav Vågene
Deliverable 1
-
each student group has assigned a group (folder) in gitlab gr19xx
-
in the folder there is a repository with name gr19xx which will be used for delivering the code
-
deadline September 9th, 2019
-
group contract has deadline on September 3rd, 2019
What is Software Development
“Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components.”
What is Software Development (2)
“Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.”
IBM Research
Engineering perspective
Engineering refers to the practice of organizing the design and construction of any artifice which transforms the physical world around us to meet some recognized need.
Rogers, G.F.C. (1983)
Exercise
Engineering refers to the practice of organizing the design and construction of any artifice which transforms the physical world around us to meet some recognized need. Rogers, G.F.C. (1983)
-
Discuss with a colleague sitting next to you. Look at Rogers’ definition of engineering. How would you relate elements of that definition to your understanding of software development?
Adapted from An introduction to software development (Open University)
Software development method
-
A set of activities, work-flows and artifacts that aim at organizing the process of designing, constructing and testing software and deploying it and maintaining it within its context of use.
-
waterfall
-
agile (SCRUM)
-
Activities
-
Analysis - understanding the problem
-
Design - describing, conceptually the software solution
-
Implementation - creating such a solution in software.
-
Testing - check that the software solution has certain desired properties
-
Deployment - deliver the solution in its context of operation and use
Activities (2)
-
Maintenance - ensure that the software solution keeps working
-
The world and the context of any software solution is dynamic
Activities (3)
-
Software needs to be updated to keep up with
-
operating system updates,
-
updates of software on which the solution requires
-
security vulnerabilities
-
changing technology
-
changing requirements
-
What is software quality ?
Software quality is the degree to which a software solution meets the design requirements and the user needs and expectations.
Exercise
-
Discuss with the colleague next to you about what properties influence software quality.
-
Type 3-5 keywords that you consider to be most important.
Quality attributes
-
Reliability
-
Efficiency
-
Security
-
Maintainability
-
adaptability,
-
portability and
-
transferability (from one development team to another).
-
Practices used in modern agile development
-
source code management (SCM)
-
issue tracking
-
continuous integration (CI)
SCM Tools
-
CVS (Concurrent Versioning System, released 1990)
-
SVN (Apache Subversion, released 2000)
-
Git (created by Linus Torvalds , released 2005)
-
Mercurial
git
-
sporing og deling av kodeendringer i såkalte repo (repository)
-
både sentrale og lokale repo har all endringshistorikk
-
initiell kopi hentes ved å kloning (clone)
-
endringer (i filer) registreres i commits
-
commits deles med andre ved å dytte (push) til en server
-
andre kan da dra (pull) endringene inn i lokalt repo
Typisk sekvens
-
git pull
(ellerclone
første gang) - henter ned endringer fra serveren -
gjør egne endringer
-
git status
- viser hva som er endret -
git add <fil eller mappe>
- legger endringer til fremtidig commit -
git commit -m <melding, m/oppgavenummer>
- registrerer all endringene (lagt til medadd
) -
git pull
- henter andres endringer, i tilfelle konflikt -
git push
- deler endringer med andre via serveren
Exercise
-
Go to your group repository
-
add any members that might not have access
-
modify the readme and add your name in a list
Sekvens m/forgreining
-
git pull
- henter ned endringer fra serveren -
git checkout -b <navn på (ny) grein>
- lager ny grein, med utgangspunkt i den du jobber med -
gjør egne endringer
-
git add …
oggit commit …
- registrerer all endringene -
git checkout master
- bytter til hovedgrein -
git merge <navn på grein>
- slår annen grein (den nye) sammen med denne (hovedgreina) -
…
Endringsforespørsler
-
en
pull
/merge
-forespørsel (request) brukes for mer formell godkjenning av endringer-
Pull Request er github-termen, mens Merge Request brukes i gitlab
-
-
brukes ofte for å inkludere endringer utenfra, f.eks.
-
utviklere utenfor kjerne-teamet
-
brukere av åpen kildekode som har fikset feil
-
-
forenkler administrasjon av åpne prosjekter
PR/MR-prosedyre
-
(utenforstående oppretter kopi på egen server)
-
lager en grein for endringene og utfører dem lokalt
-
i stedet for å slå sammen med egen hovedgrein
-
push
grein til egen server -
lag en
pull
/merge
-forespørsel (PR/MR), som (potensielt) kan inkluderes i hovedgreina -
UI for dette finnes på github/i gitlab
-
forespørselen får en egen dialog/diskusjonstråd
-
en utvikler med rettigheter kan så godkjenne evt. avslå forespørsel
-
Oppgavesporing (issue tracking)
En oppgave (issue) er arbeid som skal følges opp
-
ny funksjon, forbedring, feilretting, konfigurasjon …
-
hver oppgave har en dialog/diskusjonstråd
-
halvautomatisk knytning til endringer (commits)
Oppgavesporing forts.
Oppgavesporing er viktig for transparens
-
kunder trenger innsyn i prosess
-
teamet trenger å dele kunnskap
-
løse og distribuerte prosjekter (f.eks. åpen kildekode) har ekstra behov
-
støtter vurdering…
Oppgavesporing forts.
-
oppgaver opprettes ifm. planlegging av iterasjon, f.eks. fra brukerhistorier, funksjonsønsker eller feilrapporter
-
oppgaver knyttes til
-
milepæl for iterasjon
-
utviklinger som jobber med den
-
-
merkelapper (labels) kan angi fasen en oppgave er i
-
f.eks. planlagt, utvikling, testing, godkjent
-
oppgavetavler (issue boards) visualiserer fremdrift
-
Oppgavesporing forts.
-
dialog/diskusjonstråd dokumenterer prosessen
-
designidéer, avgjørelser, avhengigheter, …
-
knyttes til endringer (commits) gjennom oppgavenummer (#)
-
oppsummerer hva som ble gjort
-
Viktig for transparens!
Kontinuerlig integrasjon (CI)
Automatisering av alt som fremmer kvalitet, men som tar tid, f.eks.
-
kompilering og bygging av jar-filer (generelt avledete artifakter)
-
kjøring av enhets- og integrasjonstester
-
analyser av ulike typer kvalitet (formatering, kodingsstandarder, vanlige feil, …)
-
bygging av kjørbart system og kjøring av systemtester
Smidig utfordring
-
Hvordan iterere raskt?
-
skrive korrekt kode raskt
-
være trygg på kvaliteten
-
levere ofte, for å få tilbakemelding fra brukere
-
-
Mange nivåer av testing
-
egen kode - enhetstesting
-
koden innen teamet - integrasjonstesting
-
hele systemet - systemtesting (og evt. deployment)
-