Skip to content
Snippets Groups Projects
Commit 1ed65524 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files
parents 8547d5e0 d796142a
No related branches found
No related tags found
No related merge requests found
Pipeline #46660 passed
......@@ -13,21 +13,165 @@ IT1901 Fall 2019 - 2nd Lecture
[color = "#fff6d5"]
== Overview
- Administrative issues
- About software development
- Software development methods
- Software quality.
- Practices used in modern agile development
[background-color = "#124990"]
[color = "#fff6d5"]
== Administrative issues
== Feedback
[.left]
Go to: +
app.one2act.no +
Session: +
RIBOO +
[.right]
image::../images/lecture02/qr-app-one2act-no.svg[width=400]
== Example code on gitlab
Have you managed to build and run the example?
- A) Yes
- B) No
== Example code on gitlab (2)
What IDE are you using ?
- A) Eclipse
- B) IntelliJ
== 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
== !
image::../images/lecture02/groups-padding.png[canvas, size=contain]
== 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
[background-color = "#124990"]
[color = "#fff6d5"]
== About Software Development
== What is Software Development
[.center-paragraph]
“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.”
[.smaller-60]
https://en.wikipedia.org/wiki/Software_development
== What is Software Development (2)
[.center-paragraph]
“Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.”
[.smaller-60]
IBM Research
== Engineering perspective
[.center-paragraph]
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.
[.smaller-60]
Rogers, G.F.C. (1983)
== Exercise
[.smaller-60]
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?
[.smaller-40]
Adapted from _An introduction to software development (Open University)_
[background-color = "#124990"]
[color = "#fff6d5"]
== Software development methods
== 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)
== Waterfall model
[.center-paragraph]
image::../images/lecture02/Waterfall model.svg[width=650]
[.smaller-40]
https://en.wikipedia.org/wiki/Waterfall_model
== SCRUM model
[.center-paragraph]
image::../images/lecture02/scrum-sprint.png[width=700]
[.smaller-40]
https://www.visual-paradigm.com/scrum/what-is-sprint-in-scrum/
== Activities
[.smaller-80]
- *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
[background-color = "#124990"]
[color = "#fff6d5"]
......@@ -35,6 +179,40 @@ IT1901 Fall 2019 - 2nd Lecture
== What is software quality ?
Software quality is the degree to which a software solution meets the design requirements and the user needs and expectations.
== Feedback
[.left]
Go to: +
app.one2act.no +
Session: +
RIBOO +
[.right]
image::../images/lecture02/qr-app-one2act-no.svg[width=400]
== 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).
== Quality attributes (2)
- Usability
** Effectiveness
** Efficiency
** Satisfaction
[background-color = "#124990"]
[color = "#fff6d5"]
......@@ -54,11 +232,210 @@ IT1901 Fall 2019 - 2nd Lecture
- Mercurial
== Kildekodehåndtering
* lagring av kode
* sporing av endringer
* versionering
* distribusjon
[.grid-left-right-50-50]
== `git`
[.smaller-60]
[.area-left]
* 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
[.area-right]
image::../images/git-local-remote-repo.png[]
[.grid-left-right-50-50]
== 4 repo-"kopier"
[.smaller-60]
[.area-left]
* originalen (_origin_), hentet fra server (`pull`)
* arbeidsområdet (_working directory_), lokale filer som kan være endret
* indeksen (_staging area_ eller _index_), endringer du har lagt til med (`add`)
* lokalt repo, endringene du har commitet (`commit`)
[.area-right]
image::../images/git-repo-copies.png[]
== repo-kommandoer
image::../images/git-repo-copies.png[width="400px"]
image::../images/git-repo-commands.png[width="500px"]
== Typisk sekvens
[.smaller-80]
* `git pull` (eller `clone` 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 med `add`)
* `git pull` - henter andres endringer, i tilfelle konflikt
* `git push` - deler endringer med andre via serveren
== Exercise
- Go to your group repository
- https://gitlab.stud.idi.ntnu.no/it1901/gr19xx
- add any members that might not have access
- modify the readme and add your name in a list
== Forgreining (branching)
[.smaller-60]
[.left-70]
* greiner (branches)
** sporer egne utviklingstråder
** gjør jobbing i parallell ryddigere
* sammenslåing (merging)
** en (hoved)grein slås gjerne sammen med en annen, når den andre er ferdig (nok)
** etter sammenslåing, så deles gjerne resultatet med andre
** andre henter så ned for å være oppdatert
[.right]
image::../images/git-branching.png[width="200px"]
== Sekvens m/forgreining
[.smaller-80]
* `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 ...` og `git 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)
* ...
== Eclipse-støtte for git
[.smaller-60]
* Egne Eclipse-tillegg - JGit (git-impl) og EGit (UI)
* Git Repositories-panel - oversikt over repo
** klone repo fra server eller registrere lokalt repo
** utføre `pull` og `push`
** utføre `checkout` inkl. lage ny grein
** ...
image::../images/git-repositories-view.png[height="200px"]
== Eclipse-støtte forts.
[.smaller-60]
* Git Staging - statusoversikt
** filer i arbeidsområdet som er endret
** filene i indeksen
** legge til (`add`) eller fjerne (`remove`) fra indeksen
image::../images/git-staging-view.png[width="800px"]
== Endringsforespørsler
[.smaller-60]
* 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
[.smaller-60]
* (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
== Issue Tracking
== 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.
[.smaller-80]
* 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
== Oppgavetavle (issue board)
image::https://about.gitlab.com/images/blogimages/workflow.png[size=80%]
== Oppgavesporing forts.
* dialog/diskusjonstråd dokumenterer prosessen
** designidéer, avgjørelser, avhengigheter, ...
** knyttes til endringer (commits) gjennom oppgavenummer (#)
** oppsummerer hva som ble gjort
[.center-paragraph]
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
[.smaller-60]
* Hvordan iterere raskt?
** skrive korrekt kode raskt
** være trygg på kvaliteten
** levere ofte, for å få tilbakemelding fra brukere
[.smaller-60]
* Mange nivåer av testing
** egen kode - enhetstesting
** koden innen teamet - integrasjonstesting
** hele systemet - systemtesting (og evt. deployment)
== Continuous Integration (CI)
== Smidig løsning
[.smaller-80]
* Kontinuerlig - bygg, sett sammen og test
* Innimellom - lever (release) og sett i drift/prod. (deploy)
* Alt for mye arbeid uten støtte
** _byggeverktøy_ automatiserer prosessen
** _byggetjenere_ sikrer reproduserbar prosess
== !
......
......@@ -2,6 +2,10 @@
:customcss: slides.css
:icons: font
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
== Smidig praksis og verktøy
* fokuserer på bygging av produkt som kan prøves ut
......@@ -125,3 +129,41 @@ link:scm.html[Source code management (SCM)]
[.center-paragraph]
link:ci.html[Continuous Integration (CI)]
++++
<div id="footer" class="footer">
<div style="display:table-row;">
<span class="element" style="width:150px;">
<a href="https://www.ntnu.no" target="_blank">
<img id="footer-logo" class="footer-logo"
src="images/template/logo_ntnu.png"
alt="ntnu logo" height="28"/>
</a>
</span>
<span class="element" style="width:300px;">| IT1901 - 2nd lecture </span>
<span class="element">| Agile tools </span>
<span class="element">&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
<div id="vertical-ntnu-name" class="vertical-ntnu-name">
<span class="helper"></span>
<img src="images/template/vertical-ntnu-name.png" alt="Norwegian University of Science and Technology" />
</div>
<script type="text/javascript">
window.addEventListener("load", function() {
revealDiv = document.querySelector("body div.reveal")
footer = document.getElementById("footer");
revealDiv.appendChild(footer);
titleSlideDiv = document.querySelector("div.slides section.title")
mainLogo = document.getElementById("main-logo");
titleSlideDiv.prepend(mainLogo);
vertName = document.getElementById("vertical-ntnu-name");
revealDiv.appendChild(vertName);
} );
</script>
++++
\ No newline at end of file
......@@ -2,6 +2,10 @@
:customcss: slides.css
:icons: font
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
== Kontinuerlig integrasjon (CI)
Automatisering av alt som fremmer kvalitet, men som tar tid, f.eks.
......@@ -208,3 +212,41 @@ image::../images/gradle-views.png[width=300]
* *.gitlab-ci.yml* inneholder byggeinstruksjoner
* hele repoet sjekkes først ut
* så utføres byggeinstruksjoner iht. innstillinger
++++
<div id="footer" class="footer">
<div style="display:table-row;">
<span class="element" style="width:150px;">
<a href="https://www.ntnu.no" target="_blank">
<img id="footer-logo" class="footer-logo"
src="images/template/logo_ntnu.png"
alt="ntnu logo" height="28"/>
</a>
</span>
<span class="element" style="width:300px;">| IT1901 - 2nd lecture </span>
<span class="element">| Continuous Integration </span>
<span class="element">&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
<div id="vertical-ntnu-name" class="vertical-ntnu-name">
<span class="helper"></span>
<img src="images/template/vertical-ntnu-name.png" alt="Norwegian University of Science and Technology" />
</div>
<script type="text/javascript">
window.addEventListener("load", function() {
revealDiv = document.querySelector("body div.reveal")
footer = document.getElementById("footer");
revealDiv.appendChild(footer);
titleSlideDiv = document.querySelector("div.slides section.title")
mainLogo = document.getElementById("main-logo");
titleSlideDiv.prepend(mainLogo);
vertName = document.getElementById("vertical-ntnu-name");
revealDiv.appendChild(vertName);
} );
</script>
++++
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:docname="Waterfall_model-en.svg" version="1.0" inkscape:version="0.48.4 r9939" sodipodi:version="0.32" id="svg2383" height="600" width="800">
<title id="title3146">Waterfall model</title>
<defs id="defs2385">
<marker inkscape:stockid="Arrow2Mend" orient="auto" refY="0" refX="0" id="Arrow2Mend" style="overflow:visible">
<path id="path3875" style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="scale(-0.6,-0.6)" inkscape:connector-curvature="0"/>
</marker>
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 372.04724 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="1052.3622 : 372.04724 : 1" inkscape:persp3d-origin="526.18109 : 248.03149 : 1" id="perspective2444"/>
<marker inkscape:stockid="Arrow2Lend" orient="auto" refY="0" refX="0" id="Arrow2Lend" style="overflow:visible">
<path id="path3279" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(-1.1,0,0,-1.1,-1.1,0)" inkscape:connector-curvature="0"/>
</marker>
<filter inkscape:collect="always" id="filter4378" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="3.2" id="feGaussianBlur4380"/>
</filter>
</defs>
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" gridtolerance="10000" guidetolerance="10" objecttolerance="10" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.40477" inkscape:cx="-117.83742" inkscape:cy="41.809837" inkscape:document-units="px" inkscape:current-layer="layer3" showgrid="false" inkscape:window-width="1920" inkscape:window-height="1021" inkscape:window-x="0" inkscape:window-y="27" showguides="true" inkscape:guide-bbox="true" inkscape:snap-bbox="true" inkscape:snap-grids="false" inkscape:snap-midpoints="true" inkscape:object-paths="true" inkscape:snap-bbox-midpoints="true" inkscape:snap-bbox-edge-midpoints="true" inkscape:bbox-nodes="true" inkscape:bbox-paths="false" inkscape:snap-intersection-paths="true" inkscape:object-nodes="true" inkscape:snap-smooth-nodes="true" inkscape:snap-nodes="true" inkscape:window-maximized="1" inkscape:snap-object-midpoints="false" inkscape:snap-center="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:snap-page="true" inkscape:snap-to-guides="false">
<inkscape:grid type="xygrid" id="grid2586" visible="true" enabled="true" empspacing="5" snapvisiblegridlinesonly="true" originx="-5.3200362px" originy="0.67707641px"/>
</sodipodi:namedview>
<metadata id="metadata2388">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Waterfall model</dc:title>
<cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/"/>
<dc:creator>
<cc:Agent>
<dc:title>Shmuel Csaba Otto Traian Xerxes</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>Shmuel Csaba Otto Traian Xerxes</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>2013-10-21</dc:date>
<dc:language>en-US</dc:language>
<dc:contributor>
<cc:Agent>
<dc:title>https://commons.wikimedia.org/wiki/File:Waterfall_model.png by PaulHoadley</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
<cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/>
</cc:License>
</rdf:RDF>
</metadata>
<g inkscape:label="boxes" inkscape:groupmode="layer" id="layer1" transform="translate(-104.25092,-63.490303)">
<path transform="translate(98.930884,62.813241)" inkscape:connector-curvature="0" id="path4401" d="m 400.70855,145.7961 23.78379,28.5 -23.78379,28.5 0,-15 -16.21621,0 0,-27 16.21621,0 0,-15 z" style="fill:#80C1FF;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.47000003000000001;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"/>
<path transform="translate(98.930884,62.813241)" style="fill:#B1FF80;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.47000003000000001;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" d="m 536.86556,270.77783 23.78379,28.5 -23.78379,28.5 0,-15 -16.21621,0 0,-27 16.21621,0 0,-15 z" id="path4403" inkscape:connector-curvature="0"/>
<use x="0" y="0" xlink:href="#rect2495" id="use2578" transform="translate(136.22128,125.01738)" width="1052.3622" height="744.09448"/>
<use x="0" y="0" xlink:href="#rect2495" id="use2582" transform="matrix(0.9997312,0,0,0.9996198,272.47058,250.06068)" width="1052.3622" height="744.09448"/>
<use x="0" y="0" xlink:href="#rect2495" id="use2580" transform="matrix(0.9996543,0,0,1,408.63125,375.01591)" width="1052.3622" height="744.09448"/>
<use x="0" y="0" xlink:href="#rect2495" id="use2584" transform="matrix(0.9996543,0,0,0.9996198,544.76424,500.05922)" width="1052.3622" height="744.09448"/>
<rect transform="translate(98.930884,62.813241)" y="509.99994" x="554.37097" height="78.556305" width="238.54321" id="rect2454" style="fill:#FFCE80;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.46561955999999993;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/>
<path style="fill:#FF8080;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.47000003000000001;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" d="m 363.6853,83.593841 23.78379,28.499989 -23.78379,28.5 0,-15 -16.21621,0 0,-26.999989 16.21621,0 0,-15 z" id="path4523" inkscape:connector-curvature="0"/>
<rect style="fill:#1f1f1f;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter4378)" id="rect2495" width="240" height="80" x="111.93092" y="75.813248"/>
<rect style="fill:#FF8080;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.47386800999999990;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" id="rect2417" width="238.53818" height="78.561226" x="108.9309" y="72.813225"/>
<rect transform="translate(98.930884,62.813241)" style="fill:#fff45a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.46811425999999967;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" id="rect2440" width="238.54572" height="78.553864" x="418.23676" y="385.01593"/>
<rect transform="translate(98.930884,62.813241)" y="260.00143" x="282.1026" height="78.552803" width="238.54678" id="rect2426" style="fill:#B1FF80;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.47262156000000011;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"/>
<rect transform="translate(98.930884,62.813241)" style="fill:#80C1FF;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.46919394000000003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" id="rect2394" width="238.54208" height="78.557419" x="145.95026" y="135.0174"/>
</g>
<g inkscape:groupmode="layer" id="layer3" inkscape:label="text" transform="translate(-5.3200362,-0.67706186)">
<g id="g3287" transform="translate(-103.20815,0)">
<text transform="scale(0.84063911,1.1895711)" sodipodi:linespacing="125%" id="text3196" y="49.723888" x="784.19165" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;font-family:Sans;-inkscape-font-specification:Sans Bold" y="49.723888" x="784.19165" id="tspan3198" sodipodi:role="line">Product requirements document</tspan></text>
<text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff8080;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="783.00208" y="48.883251" id="text4413" sodipodi:linespacing="125%" transform="scale(0.84063911,1.1895711)"><tspan sodipodi:role="line" id="tspan4415" x="783.00208" y="48.883251" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ff8080;font-family:Sans;-inkscape-font-specification:Sans Bold">Product requirements document</tspan></text>
</g>
<g id="g3293" transform="translate(-7.2734985,0)">
<text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="730.40259" y="154.81682" id="text3192" sodipodi:linespacing="125%" transform="scale(0.84063911,1.1895711)"><tspan sodipodi:role="line" id="tspan3194" x="730.40259" y="154.81682" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;font-family:Sans;-inkscape-font-specification:Sans Bold">Software architecture</tspan></text>
<text transform="scale(0.84063911,1.1895711)" sodipodi:linespacing="125%" id="text4409" y="153.97618" x="729.21301" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#80c1ff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#80c1ff;font-family:Sans;-inkscape-font-specification:Sans Bold" y="153.97618" x="729.21301" id="tspan4411" sodipodi:role="line">Software architecture</tspan></text>
</g>
<text id="text2428" y="248.18291" x="501.65826" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve" sodipodi:linespacing="125%" transform="scale(0.79977452,1.2503524)"><tspan y="248.18291" x="501.65826" id="tspan2430" sodipodi:role="line">Implementation</tspan></text>
<text transform="scale(0.86396955,1.1574482)" sodipodi:linespacing="125%" id="text4344" y="162.51622" x="305.37836" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan y="162.51622" x="305.37836" id="tspan4346" sodipodi:role="line">Design</tspan></text>
<text transform="scale(0.84063911,1.1895711)" sodipodi:linespacing="125%" id="text4348" y="50.130333" x="154.9623" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold" y="50.130333" x="154.9623" id="tspan4350" sodipodi:role="line">Requirements</tspan></text>
<text transform="scale(0.84063911,1.1895711)" sodipodi:linespacing="125%" xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="802.22864" y="469.95563" id="text4352"><tspan sodipodi:role="line" id="tspan4354" x="802.22864" y="469.95563">Maintenance</tspan></text>
<text transform="scale(0.86765909,1.1525264)" sodipodi:linespacing="125%" id="text4356" y="379.52435" x="619.38464" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan y="379.52435" x="619.38464" id="tspan4358" sodipodi:role="line">Verification</tspan></text>
<g id="g3299">
<text xml:space="preserve" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="794.56274" y="259.88135" id="text3188" sodipodi:linespacing="125%" transform="scale(0.84063911,1.1895711)"><tspan sodipodi:role="line" id="tspan3190" x="794.56274" y="259.88135" style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;font-family:Sans;-inkscape-font-specification:Sans Bold">Software</tspan></text>
<text transform="scale(0.84063911,1.1895711)" sodipodi:linespacing="125%" id="text4405" y="259.04071" x="793.37317" style="font-size:32px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#B1FF80;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" xml:space="preserve"><tspan style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Sans;-inkscape-font-specification:Sans Bold;fill:#B1FF80" y="259.04071" x="793.37317" id="tspan4407" sodipodi:role="line">Software</tspan></text>
</g>
<path style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" d="m 123.94907,87.884148 c 0,30.413672 97.54493,8.048921 135.95219,46.456182" id="path4736" inkscape:connector-curvature="0" transform="translate(5.3200362,0.67706186)" inkscape:tile-cx="193.05966" inkscape:tile-cy="111.23304" inkscape:tile-w="135.95219" inkscape:tile-h="46.456182" inkscape:tile-x0="123.94907" inkscape:tile-y0="87.884148" sodipodi:nodetypes="cc"/>
<use x="0" y="0" inkscape:tiled-clone-of="#path4736" xlink:href="#path4736" id="use4930" transform="translate(135.95219,125.0136)" width="800" height="600"/>
<use x="0" y="0" inkscape:tiled-clone-of="#path4736" xlink:href="#path4736" transform="translate(272.10687,249.99302)" id="use4932" width="800" height="600"/>
<use x="0" y="0" inkscape:tiled-clone-of="#path4736" xlink:href="#path4736" transform="translate(408.2405,375.00854)" id="use4934" width="800" height="600"/>
</g>
</svg>
\ No newline at end of file
lectures/revealjs/images/lecture02/groups-padding.png

294 KiB

lectures/revealjs/images/lecture02/groups.png

269 KiB

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" baseProfile="full" width="296" height="296" viewBox="0 0 296 296"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
<desc></desc>
<rect width="296" height="296" fill="#ffffff" cx="0" cy="0" />
<defs>
<rect id="p" width="8" height="8" />
</defs>
<g fill="#000000">
<use x="32" y="32" xlink:href="#p" />
<use x="32" y="40" xlink:href="#p" />
<use x="32" y="48" xlink:href="#p" />
<use x="32" y="56" xlink:href="#p" />
<use x="32" y="64" xlink:href="#p" />
<use x="32" y="72" xlink:href="#p" />
<use x="32" y="80" xlink:href="#p" />
<use x="32" y="104" xlink:href="#p" />
<use x="32" y="120" xlink:href="#p" />
<use x="32" y="128" xlink:href="#p" />
<use x="32" y="152" xlink:href="#p" />
<use x="32" y="160" xlink:href="#p" />
<use x="32" y="176" xlink:href="#p" />
<use x="32" y="184" xlink:href="#p" />
<use x="32" y="208" xlink:href="#p" />
<use x="32" y="216" xlink:href="#p" />
<use x="32" y="224" xlink:href="#p" />
<use x="32" y="232" xlink:href="#p" />
<use x="32" y="240" xlink:href="#p" />
<use x="32" y="248" xlink:href="#p" />
<use x="32" y="256" xlink:href="#p" />
<use x="40" y="32" xlink:href="#p" />
<use x="40" y="80" xlink:href="#p" />
<use x="40" y="136" xlink:href="#p" />
<use x="40" y="144" xlink:href="#p" />
<use x="40" y="160" xlink:href="#p" />
<use x="40" y="168" xlink:href="#p" />
<use x="40" y="176" xlink:href="#p" />
<use x="40" y="184" xlink:href="#p" />
<use x="40" y="208" xlink:href="#p" />
<use x="40" y="256" xlink:href="#p" />
<use x="48" y="32" xlink:href="#p" />
<use x="48" y="48" xlink:href="#p" />
<use x="48" y="56" xlink:href="#p" />
<use x="48" y="64" xlink:href="#p" />
<use x="48" y="80" xlink:href="#p" />
<use x="48" y="128" xlink:href="#p" />
<use x="48" y="152" xlink:href="#p" />
<use x="48" y="160" xlink:href="#p" />
<use x="48" y="168" xlink:href="#p" />
<use x="48" y="176" xlink:href="#p" />
<use x="48" y="184" xlink:href="#p" />
<use x="48" y="192" xlink:href="#p" />
<use x="48" y="208" xlink:href="#p" />
<use x="48" y="224" xlink:href="#p" />
<use x="48" y="232" xlink:href="#p" />
<use x="48" y="240" xlink:href="#p" />
<use x="48" y="256" xlink:href="#p" />
<use x="56" y="32" xlink:href="#p" />
<use x="56" y="48" xlink:href="#p" />
<use x="56" y="56" xlink:href="#p" />
<use x="56" y="64" xlink:href="#p" />
<use x="56" y="80" xlink:href="#p" />
<use x="56" y="104" xlink:href="#p" />
<use x="56" y="112" xlink:href="#p" />
<use x="56" y="128" xlink:href="#p" />
<use x="56" y="152" xlink:href="#p" />
<use x="56" y="160" xlink:href="#p" />
<use x="56" y="168" xlink:href="#p" />
<use x="56" y="184" xlink:href="#p" />
<use x="56" y="208" xlink:href="#p" />
<use x="56" y="224" xlink:href="#p" />
<use x="56" y="232" xlink:href="#p" />
<use x="56" y="240" xlink:href="#p" />
<use x="56" y="256" xlink:href="#p" />
<use x="64" y="32" xlink:href="#p" />
<use x="64" y="48" xlink:href="#p" />
<use x="64" y="56" xlink:href="#p" />
<use x="64" y="64" xlink:href="#p" />
<use x="64" y="80" xlink:href="#p" />
<use x="64" y="96" xlink:href="#p" />
<use x="64" y="120" xlink:href="#p" />
<use x="64" y="136" xlink:href="#p" />
<use x="64" y="144" xlink:href="#p" />
<use x="64" y="176" xlink:href="#p" />
<use x="64" y="184" xlink:href="#p" />
<use x="64" y="208" xlink:href="#p" />
<use x="64" y="224" xlink:href="#p" />
<use x="64" y="232" xlink:href="#p" />
<use x="64" y="240" xlink:href="#p" />
<use x="64" y="256" xlink:href="#p" />
<use x="72" y="32" xlink:href="#p" />
<use x="72" y="80" xlink:href="#p" />
<use x="72" y="96" xlink:href="#p" />
<use x="72" y="120" xlink:href="#p" />
<use x="72" y="184" xlink:href="#p" />
<use x="72" y="208" xlink:href="#p" />
<use x="72" y="256" xlink:href="#p" />
<use x="80" y="32" xlink:href="#p" />
<use x="80" y="40" xlink:href="#p" />
<use x="80" y="48" xlink:href="#p" />
<use x="80" y="56" xlink:href="#p" />
<use x="80" y="64" xlink:href="#p" />
<use x="80" y="72" xlink:href="#p" />
<use x="80" y="80" xlink:href="#p" />
<use x="80" y="96" xlink:href="#p" />
<use x="80" y="112" xlink:href="#p" />
<use x="80" y="128" xlink:href="#p" />
<use x="80" y="144" xlink:href="#p" />
<use x="80" y="160" xlink:href="#p" />
<use x="80" y="176" xlink:href="#p" />
<use x="80" y="192" xlink:href="#p" />
<use x="80" y="208" xlink:href="#p" />
<use x="80" y="216" xlink:href="#p" />
<use x="80" y="224" xlink:href="#p" />
<use x="80" y="232" xlink:href="#p" />
<use x="80" y="240" xlink:href="#p" />
<use x="80" y="248" xlink:href="#p" />
<use x="80" y="256" xlink:href="#p" />
<use x="88" y="96" xlink:href="#p" />
<use x="88" y="104" xlink:href="#p" />
<use x="88" y="112" xlink:href="#p" />
<use x="88" y="120" xlink:href="#p" />
<use x="88" y="136" xlink:href="#p" />
<use x="88" y="160" xlink:href="#p" />
<use x="88" y="168" xlink:href="#p" />
<use x="88" y="176" xlink:href="#p" />
<use x="88" y="184" xlink:href="#p" />
<use x="88" y="192" xlink:href="#p" />
<use x="96" y="40" xlink:href="#p" />
<use x="96" y="72" xlink:href="#p" />
<use x="96" y="80" xlink:href="#p" />
<use x="96" y="88" xlink:href="#p" />
<use x="96" y="104" xlink:href="#p" />
<use x="96" y="120" xlink:href="#p" />
<use x="96" y="128" xlink:href="#p" />
<use x="96" y="144" xlink:href="#p" />
<use x="96" y="160" xlink:href="#p" />
<use x="96" y="192" xlink:href="#p" />
<use x="96" y="200" xlink:href="#p" />
<use x="96" y="208" xlink:href="#p" />
<use x="96" y="216" xlink:href="#p" />
<use x="96" y="224" xlink:href="#p" />
<use x="104" y="32" xlink:href="#p" />
<use x="104" y="40" xlink:href="#p" />
<use x="104" y="48" xlink:href="#p" />
<use x="104" y="56" xlink:href="#p" />
<use x="104" y="64" xlink:href="#p" />
<use x="104" y="72" xlink:href="#p" />
<use x="104" y="88" xlink:href="#p" />
<use x="104" y="112" xlink:href="#p" />
<use x="104" y="128" xlink:href="#p" />
<use x="104" y="152" xlink:href="#p" />
<use x="104" y="160" xlink:href="#p" />
<use x="104" y="232" xlink:href="#p" />
<use x="104" y="256" xlink:href="#p" />
<use x="112" y="40" xlink:href="#p" />
<use x="112" y="72" xlink:href="#p" />
<use x="112" y="80" xlink:href="#p" />
<use x="112" y="96" xlink:href="#p" />
<use x="112" y="112" xlink:href="#p" />
<use x="112" y="120" xlink:href="#p" />
<use x="112" y="144" xlink:href="#p" />
<use x="112" y="176" xlink:href="#p" />
<use x="112" y="184" xlink:href="#p" />
<use x="112" y="192" xlink:href="#p" />
<use x="112" y="200" xlink:href="#p" />
<use x="112" y="224" xlink:href="#p" />
<use x="112" y="256" xlink:href="#p" />
<use x="120" y="64" xlink:href="#p" />
<use x="120" y="88" xlink:href="#p" />
<use x="120" y="104" xlink:href="#p" />
<use x="120" y="128" xlink:href="#p" />
<use x="120" y="144" xlink:href="#p" />
<use x="120" y="152" xlink:href="#p" />
<use x="120" y="176" xlink:href="#p" />
<use x="120" y="184" xlink:href="#p" />
<use x="120" y="192" xlink:href="#p" />
<use x="120" y="216" xlink:href="#p" />
<use x="120" y="224" xlink:href="#p" />
<use x="120" y="232" xlink:href="#p" />
<use x="120" y="248" xlink:href="#p" />
<use x="120" y="256" xlink:href="#p" />
<use x="128" y="32" xlink:href="#p" />
<use x="128" y="40" xlink:href="#p" />
<use x="128" y="72" xlink:href="#p" />
<use x="128" y="80" xlink:href="#p" />
<use x="128" y="88" xlink:href="#p" />
<use x="128" y="104" xlink:href="#p" />
<use x="128" y="128" xlink:href="#p" />
<use x="128" y="152" xlink:href="#p" />
<use x="128" y="168" xlink:href="#p" />
<use x="128" y="184" xlink:href="#p" />
<use x="128" y="216" xlink:href="#p" />
<use x="128" y="224" xlink:href="#p" />
<use x="128" y="232" xlink:href="#p" />
<use x="128" y="248" xlink:href="#p" />
<use x="136" y="64" xlink:href="#p" />
<use x="136" y="88" xlink:href="#p" />
<use x="136" y="120" xlink:href="#p" />
<use x="136" y="128" xlink:href="#p" />
<use x="136" y="144" xlink:href="#p" />
<use x="136" y="152" xlink:href="#p" />
<use x="136" y="184" xlink:href="#p" />
<use x="136" y="192" xlink:href="#p" />
<use x="136" y="216" xlink:href="#p" />
<use x="136" y="224" xlink:href="#p" />
<use x="136" y="232" xlink:href="#p" />
<use x="136" y="248" xlink:href="#p" />
<use x="144" y="32" xlink:href="#p" />
<use x="144" y="48" xlink:href="#p" />
<use x="144" y="56" xlink:href="#p" />
<use x="144" y="64" xlink:href="#p" />
<use x="144" y="80" xlink:href="#p" />
<use x="144" y="96" xlink:href="#p" />
<use x="144" y="104" xlink:href="#p" />
<use x="144" y="120" xlink:href="#p" />
<use x="144" y="136" xlink:href="#p" />
<use x="144" y="144" xlink:href="#p" />
<use x="144" y="152" xlink:href="#p" />
<use x="144" y="176" xlink:href="#p" />
<use x="144" y="192" xlink:href="#p" />
<use x="144" y="200" xlink:href="#p" />
<use x="144" y="208" xlink:href="#p" />
<use x="144" y="224" xlink:href="#p" />
<use x="144" y="232" xlink:href="#p" />
<use x="144" y="240" xlink:href="#p" />
<use x="144" y="248" xlink:href="#p" />
<use x="144" y="256" xlink:href="#p" />
<use x="152" y="40" xlink:href="#p" />
<use x="152" y="88" xlink:href="#p" />
<use x="152" y="104" xlink:href="#p" />
<use x="152" y="128" xlink:href="#p" />
<use x="152" y="160" xlink:href="#p" />
<use x="152" y="168" xlink:href="#p" />
<use x="152" y="176" xlink:href="#p" />
<use x="152" y="184" xlink:href="#p" />
<use x="152" y="208" xlink:href="#p" />
<use x="152" y="240" xlink:href="#p" />
<use x="152" y="248" xlink:href="#p" />
<use x="152" y="256" xlink:href="#p" />
<use x="160" y="32" xlink:href="#p" />
<use x="160" y="48" xlink:href="#p" />
<use x="160" y="64" xlink:href="#p" />
<use x="160" y="80" xlink:href="#p" />
<use x="160" y="96" xlink:href="#p" />
<use x="160" y="128" xlink:href="#p" />
<use x="160" y="144" xlink:href="#p" />
<use x="160" y="152" xlink:href="#p" />
<use x="160" y="200" xlink:href="#p" />
<use x="160" y="216" xlink:href="#p" />
<use x="160" y="224" xlink:href="#p" />
<use x="160" y="240" xlink:href="#p" />
<use x="160" y="248" xlink:href="#p" />
<use x="168" y="48" xlink:href="#p" />
<use x="168" y="88" xlink:href="#p" />
<use x="168" y="104" xlink:href="#p" />
<use x="168" y="128" xlink:href="#p" />
<use x="168" y="152" xlink:href="#p" />
<use x="168" y="160" xlink:href="#p" />
<use x="168" y="176" xlink:href="#p" />
<use x="168" y="208" xlink:href="#p" />
<use x="168" y="216" xlink:href="#p" />
<use x="168" y="224" xlink:href="#p" />
<use x="168" y="240" xlink:href="#p" />
<use x="176" y="32" xlink:href="#p" />
<use x="176" y="40" xlink:href="#p" />
<use x="176" y="64" xlink:href="#p" />
<use x="176" y="72" xlink:href="#p" />
<use x="176" y="80" xlink:href="#p" />
<use x="176" y="88" xlink:href="#p" />
<use x="176" y="96" xlink:href="#p" />
<use x="176" y="128" xlink:href="#p" />
<use x="176" y="144" xlink:href="#p" />
<use x="176" y="184" xlink:href="#p" />
<use x="176" y="208" xlink:href="#p" />
<use x="176" y="240" xlink:href="#p" />
<use x="176" y="248" xlink:href="#p" />
<use x="184" y="32" xlink:href="#p" />
<use x="184" y="48" xlink:href="#p" />
<use x="184" y="56" xlink:href="#p" />
<use x="184" y="72" xlink:href="#p" />
<use x="184" y="96" xlink:href="#p" />
<use x="184" y="104" xlink:href="#p" />
<use x="184" y="120" xlink:href="#p" />
<use x="184" y="160" xlink:href="#p" />
<use x="184" y="184" xlink:href="#p" />
<use x="184" y="200" xlink:href="#p" />
<use x="184" y="208" xlink:href="#p" />
<use x="184" y="216" xlink:href="#p" />
<use x="184" y="224" xlink:href="#p" />
<use x="184" y="240" xlink:href="#p" />
<use x="192" y="40" xlink:href="#p" />
<use x="192" y="48" xlink:href="#p" />
<use x="192" y="56" xlink:href="#p" />
<use x="192" y="72" xlink:href="#p" />
<use x="192" y="80" xlink:href="#p" />
<use x="192" y="96" xlink:href="#p" />
<use x="192" y="104" xlink:href="#p" />
<use x="192" y="112" xlink:href="#p" />
<use x="192" y="120" xlink:href="#p" />
<use x="192" y="144" xlink:href="#p" />
<use x="192" y="160" xlink:href="#p" />
<use x="192" y="184" xlink:href="#p" />
<use x="192" y="192" xlink:href="#p" />
<use x="192" y="200" xlink:href="#p" />
<use x="192" y="208" xlink:href="#p" />
<use x="192" y="216" xlink:href="#p" />
<use x="192" y="224" xlink:href="#p" />
<use x="192" y="240" xlink:href="#p" />
<use x="192" y="248" xlink:href="#p" />
<use x="192" y="256" xlink:href="#p" />
<use x="200" y="104" xlink:href="#p" />
<use x="200" y="112" xlink:href="#p" />
<use x="200" y="120" xlink:href="#p" />
<use x="200" y="152" xlink:href="#p" />
<use x="200" y="192" xlink:href="#p" />
<use x="200" y="224" xlink:href="#p" />
<use x="200" y="240" xlink:href="#p" />
<use x="208" y="32" xlink:href="#p" />
<use x="208" y="40" xlink:href="#p" />
<use x="208" y="48" xlink:href="#p" />
<use x="208" y="56" xlink:href="#p" />
<use x="208" y="64" xlink:href="#p" />
<use x="208" y="72" xlink:href="#p" />
<use x="208" y="80" xlink:href="#p" />
<use x="208" y="96" xlink:href="#p" />
<use x="208" y="104" xlink:href="#p" />
<use x="208" y="136" xlink:href="#p" />
<use x="208" y="144" xlink:href="#p" />
<use x="208" y="152" xlink:href="#p" />
<use x="208" y="168" xlink:href="#p" />
<use x="208" y="192" xlink:href="#p" />
<use x="208" y="208" xlink:href="#p" />
<use x="208" y="224" xlink:href="#p" />
<use x="208" y="256" xlink:href="#p" />
<use x="216" y="32" xlink:href="#p" />
<use x="216" y="80" xlink:href="#p" />
<use x="216" y="96" xlink:href="#p" />
<use x="216" y="104" xlink:href="#p" />
<use x="216" y="120" xlink:href="#p" />
<use x="216" y="128" xlink:href="#p" />
<use x="216" y="152" xlink:href="#p" />
<use x="216" y="168" xlink:href="#p" />
<use x="216" y="184" xlink:href="#p" />
<use x="216" y="192" xlink:href="#p" />
<use x="216" y="224" xlink:href="#p" />
<use x="216" y="232" xlink:href="#p" />
<use x="216" y="248" xlink:href="#p" />
<use x="224" y="32" xlink:href="#p" />
<use x="224" y="48" xlink:href="#p" />
<use x="224" y="56" xlink:href="#p" />
<use x="224" y="64" xlink:href="#p" />
<use x="224" y="80" xlink:href="#p" />
<use x="224" y="104" xlink:href="#p" />
<use x="224" y="112" xlink:href="#p" />
<use x="224" y="136" xlink:href="#p" />
<use x="224" y="144" xlink:href="#p" />
<use x="224" y="168" xlink:href="#p" />
<use x="224" y="192" xlink:href="#p" />
<use x="224" y="200" xlink:href="#p" />
<use x="224" y="208" xlink:href="#p" />
<use x="224" y="216" xlink:href="#p" />
<use x="224" y="224" xlink:href="#p" />
<use x="224" y="256" xlink:href="#p" />
<use x="232" y="32" xlink:href="#p" />
<use x="232" y="48" xlink:href="#p" />
<use x="232" y="56" xlink:href="#p" />
<use x="232" y="64" xlink:href="#p" />
<use x="232" y="80" xlink:href="#p" />
<use x="232" y="120" xlink:href="#p" />
<use x="232" y="128" xlink:href="#p" />
<use x="232" y="152" xlink:href="#p" />
<use x="232" y="176" xlink:href="#p" />
<use x="232" y="216" xlink:href="#p" />
<use x="232" y="232" xlink:href="#p" />
<use x="232" y="248" xlink:href="#p" />
<use x="232" y="256" xlink:href="#p" />
<use x="240" y="32" xlink:href="#p" />
<use x="240" y="48" xlink:href="#p" />
<use x="240" y="56" xlink:href="#p" />
<use x="240" y="64" xlink:href="#p" />
<use x="240" y="80" xlink:href="#p" />
<use x="240" y="112" xlink:href="#p" />
<use x="240" y="136" xlink:href="#p" />
<use x="240" y="168" xlink:href="#p" />
<use x="240" y="200" xlink:href="#p" />
<use x="240" y="232" xlink:href="#p" />
<use x="240" y="240" xlink:href="#p" />
<use x="248" y="32" xlink:href="#p" />
<use x="248" y="80" xlink:href="#p" />
<use x="248" y="96" xlink:href="#p" />
<use x="248" y="104" xlink:href="#p" />
<use x="248" y="120" xlink:href="#p" />
<use x="248" y="160" xlink:href="#p" />
<use x="248" y="184" xlink:href="#p" />
<use x="248" y="192" xlink:href="#p" />
<use x="248" y="216" xlink:href="#p" />
<use x="248" y="224" xlink:href="#p" />
<use x="248" y="232" xlink:href="#p" />
<use x="248" y="240" xlink:href="#p" />
<use x="248" y="248" xlink:href="#p" />
<use x="248" y="256" xlink:href="#p" />
<use x="256" y="32" xlink:href="#p" />
<use x="256" y="40" xlink:href="#p" />
<use x="256" y="48" xlink:href="#p" />
<use x="256" y="56" xlink:href="#p" />
<use x="256" y="64" xlink:href="#p" />
<use x="256" y="72" xlink:href="#p" />
<use x="256" y="80" xlink:href="#p" />
<use x="256" y="104" xlink:href="#p" />
<use x="256" y="112" xlink:href="#p" />
<use x="256" y="120" xlink:href="#p" />
<use x="256" y="128" xlink:href="#p" />
<use x="256" y="136" xlink:href="#p" />
<use x="256" y="144" xlink:href="#p" />
<use x="256" y="160" xlink:href="#p" />
<use x="256" y="168" xlink:href="#p" />
<use x="256" y="176" xlink:href="#p" />
<use x="256" y="200" xlink:href="#p" />
<use x="256" y="208" xlink:href="#p" />
<use x="256" y="224" xlink:href="#p" />
<use x="256" y="240" xlink:href="#p" />
<use x="256" y="248" xlink:href="#p" />
</g>
</svg>
\ No newline at end of file
lectures/revealjs/images/lecture02/scrum-sprint.png

48.6 KiB

Gruppenummer,Gruppemedlem 1,Gruppemedlem 2,Gruppemedlem 3,Gruppemedlem 4,Studass
1,Susanne Rynning Seip,Aksel Kirknes,Thomas Øiseth,Viggo Skarby,Sebastian
2,Anne Margrethe Vestgøte Bosch,Emil Røberg,Ådne Karstad,,Ingrid
3,Maiken Astri Canlas Hatten,Thea Ueland,Johan Ludvig Holst,Aksel Saugestad,Sebastian
4,Vidar Michaelsen,Ingrid Marie Johansen,Sondre Schirmer-Mikalsen,Maria Storødegård,Ingrid
5,Morten André Stenhaug Mikalsen,Åse Håtveit,Erlend Svendsbøe Høyland,Jane Wiik Larsen,Pål
6,Sepehr Nasiribehrouz,Arnstein Thorstensen Øyhus,Jon-Inge Heggstad,Vegard Rognstad Smines,Bendik
7,Emil Hjelle,Lars-Olav Vågene,Jonathan Hermansen,Benjamin Aune Brekken,Erik
8,Oda Omholt,Karen Dahl Aarhus,Mathias Fossum,Pål Andreas Morholmen,Nina
9,Marcus Schrøder,Hildegunn Olaussen Nedregård,Anne Mosvold Ørke,Philip Hall Andersen,Sebastian
10,Sigrun Asheim Nummedal,Patrick Moen Allport,Thomas Everleigh Rankin,Emil Ommundsen,Erik
11,Sunniva Røshol,Lotfi Amin Lazreg,Nicolai André Dalaaker,Fredrik Wilhelm Butler Wang,Anders
12,Ragnhild Øie Langåker,Emilie Lia-Rognli,Henrik Hørlück Berg,Mathias Strømmen,Bendik
13,Vivi Cecilie Galschiødt Svendsen,Erik Mjaaland Skår,Thomas Haugan,Andreas Amundsen,Anders
14,Johanna Sofie Slinde,Siw Døvle,Andreas Winther Moen,Petter Charles Redfern,Pål
15,Benedicte Helen Myrvoll,Thomas Dørum Haugrud,Julie Holte Motland,Karl Petter Aubert,Erik
16,Carl Smestad,Tobias Slettemoen Kongsvik,Mikal Bongo Norvoll,Sarunas Juskenas,Anders
17,Sondre Haugen Elgaaen,Hallvard Andersen,Hjalti Percy Casimis Hjaltason,Hauk Aleksander Olaussen,Ingrid
18,Robin Rognerud,Øyvind Jalland Schjerven,Hauk Aleksander Olaussen,Sondre Molnes Kanstad,Bendik
19,Kaspar Paus Græsdal,Ole Jacob Brunstad,Vemund Eggemoen,Ingvild Løver Thon,Nina
20,Borgar Føll Flytør,Runar Sæther,Øyvind Johnsen Tessem,Johanne Tronstad,Pål
21,Malin Holte,Stefan Magnus Xara Brazil Fongen,William Huy Le,Sivert Hognes,Anders
22,Aleksander Westergaard Karlsen,Erlend Marius Ommundsen,Brage Schanche-Pedersen,Lukas Nicholas Tveiten,Sebastian
23,Jan Arid Brobak,Per Solibakke,Jonathan Brooks,Christoffer Stensrud,Ingrid
24,Emilie Kalleberg,Nina Bjærum,Markus Johannes Pedersen,Gunvor Huso,Nina
25,Millie Burhol Austad,Jin Tony Nymann,Anhkha Nguyen Vo,Oscar Marenius Bråten Bergan,Anders
26,Jørgen Nummedal Sveberg,Henrik Hodnefjeld,Oscar Bognæs,Eivind Bendiktsen,Erik
27,Magnus Lauritzen Holtet,Kristoffer Nyvoll,Liv Elise Herstad,Snorre Skjellestad Kristiansen,Bendik
28,Johan August Østbye,Erik Mohn,Fredrik August Madsen-Malmo,Noran Baskaran,Ingrid
29,Phajsi Halvorsen,edvard dønvold sjøborg,Amund Lunke Røhne,Maja Sung Hee Jenssen,Pål
30,Karen Villmones,Tommy Chan,Fredrik Pettersen Moren,Martin Lange,Sebastian
31,Bente J. Bendiksen,Joakim Fremstad,Simen Frium Opedal,,Nina
......@@ -2,6 +2,10 @@
:customcss: slides.css
:icons: font
++++
<img id="main-logo" class="main-logo" src="images/template/main_logo_eng_no_text.png" width="300" alt="ntnu logo"/>
++++
== Kildekodehåndtering
* lagring av kode
......@@ -122,3 +126,42 @@ image::../images/git-staging-view.png[width="800px"]
** 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
++++
<div id="footer" class="footer">
<div style="display:table-row;">
<span class="element" style="width:150px;">
<a href="https://www.ntnu.no" target="_blank">
<img id="footer-logo" class="footer-logo"
src="images/template/logo_ntnu.png"
alt="ntnu logo" height="28"/>
</a>
</span>
<span class="element" style="width:300px;">| IT1901 - 2nd lecture </span>
<span class="element">| Source Code Management </span>
<span class="element">&nbsp;&nbsp;&nbsp;&nbsp;</span>
</div>
</div>
<div id="vertical-ntnu-name" class="vertical-ntnu-name">
<span class="helper"></span>
<img src="images/template/vertical-ntnu-name.png" alt="Norwegian University of Science and Technology" />
</div>
<script type="text/javascript">
window.addEventListener("load", function() {
revealDiv = document.querySelector("body div.reveal")
footer = document.getElementById("footer");
revealDiv.appendChild(footer);
titleSlideDiv = document.querySelector("div.slides section.title")
mainLogo = document.getElementById("main-logo");
titleSlideDiv.prepend(mainLogo);
vertName = document.getElementById("vertical-ntnu-name");
revealDiv.appendChild(vertName);
} );
</script>
++++
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment