Hands-on workshop om GitHub Copilot, GitHub Projects, issues, branches, pull requests, review, GitHub Actions og agent-workflows.
AI-genereret kode er først færdig, når den er forstået, testet, reviewet og koblet til et issue.
Efter workshoppen kan I gennemføre og forklare en sammenhængende udviklingsproces, hvor AI bruges til forståelse, planlægning og afgrænset implementering:
flowchart LR
A[Krav] --> B[Issue]
B --> C[Plan]
C --> D[Branch]
D --> E[Kode]
E --> F[Test]
F --> G[Pull request]
G --> H[Review]
H --> I[GitHub Actions]
I --> J[Merge]
J --> K[Dokumentation]
Fokus er ikke kun, om koden virker. I skal også kunne:
- spore koden tilbage til et krav
- forklare de vigtigste kodevalg uden Copilot
- dokumentere test og review
- vurdere og fravælge forslag fra AI
I arbejder med en lille task-app med fire funktioner:
| # | Funktion |
|---|---|
| 1 | Oprette en task |
| 2 | Se alle tasks |
| 3 | Markere en task som færdig |
| 4 | Se antal åbne tasks |
Casen er lille, fordi fokus er arbejdsformen – ikke appens kompleksitet.
Tabellen er et første forslag til, hvordan workshopens emner kan fordeles mellem fagene ud fra læringsmålene. Fordelingen er ikke endelig, men skal drøftes og aftales i fællesskab.
| Fagligt blik | Ser især på |
|---|---|
| Systemudvikling | Issues, user stories, acceptkriterier, board og sporbarhed |
| Programmering | Kode, struktur, test, debugging og forklaring |
| Teknologi | Git, build, GitHub Actions, runtime, sikkerhed og drift |
| IT- og forretning | Værdi, prioritering, scope og projektstyring |
I skal have:
- en GitHub-konto
- Git installeret
- IntelliJ med Java 21
- GitHub Copilot aktiveret i IDE'en
.NET-sporet kan gennemføres i Rider eller Visual Studio med en installeret .NET SDK.
| Tid | Aktivitet |
|---|---|
| 00:00–00:15 | Intro, case og grupper |
| 00:15–00:40 | Del 1–2: Lokalt projekt og første commit |
| 00:40–00:55 | Del 3–4: GitHub-repo og workshoprepo |
| 00:55–01:10 | Del 5–6: Board, labels og issue #1 |
| 01:10–01:25 | Del 7: Copilot Plan uden kode |
| 01:25–02:00 | Del 8–9: Branch og implementering |
| 02:00–02:20 | Del 10–11: Test, commit og pull request |
| 02:20–02:40 | Del 12–13: Review og GitHub Actions |
| 02:40–02:55 | Del 14–15: Sammenlign arbejdsformer |
| 02:55–03:00 | Del 16: Fælles opsamling |
Hvis tiden er kort, gennemføres del 14–15 som demonstration eller hjemmeopgave.
| Arbejdsform | Bruges til | Menneskets ansvar |
|---|---|---|
| Ask | Forklare kode, fejl, Git og test | Kontrollere og kunne gengive forklaringen |
| Plan | Foreslå en implementeringsplan uden kode | Vurdere scope, rækkefølge og acceptkriterier |
| Agent | Løse en tydelig og afgrænset opgave | Gennemgå, teste og godkende alle ændringer |
Important
Brug Ask til at forstå. Brug Plan før implementering. Brug først Agent, når opgaven er tydelig og afgrænset.
Efter de centrale dele skal gruppen kunne svare på:
- Resultat: Hvad har vi lavet?
- Sporbarhed: Hvor kan det ses i issue, branch, commit eller pull request?
- Forklar uden Copilot: Hvad gør løsningen, og hvorfor er den lavet sådan?
Dette er ikke startkoden. Det er den Java-struktur, som bygges trin for trin.
classDiagram
class Main {
+main()
+menu()
}
class TaskService {
-Task[] tasks
-int taskCount
-int nextId
+createTask(title) Task
+getAllTasks() Task[]
+markTaskAsCompleted(id) Task
+countOpenTasks() int
}
class Task {
+int id
+String title
+boolean completed
+markAsCompleted() void
+toString() String
}
Main "1" --> "1" TaskService : bruger
TaskService "1" *-- "0..10" Task : gemmer
I .NET-sporet bruges navnet TaskItem i stedet for Task.
Formål: I opretter det samme enkle startprojekt, kan køre det lokalt og kan forklare, hvor programmet starter – før GitHub og Copilot inddrages.
- Åbn IntelliJ → New Project → vælg Java og en installeret JDK 21.
- Navngiv projektet
copilot-workshop-java-taskapp. - Opret
src/Main.javamed denne startkode:
public class Main {
public static void main(String[] args) {
System.out.println("Task app starter");
System.out.println("Start herfra og implementer issue #1: Opret task");
}
}- Kør
Main. Programmet skal skrive de to startlinjer.
.NET i Rider, Visual Studio eller terminal
mkdir copilot-workshop-dotnet-taskapp
cd copilot-workshop-dotnet-taskapp
dotnet new console -n TaskAppErstat indholdet i TaskApp/Program.cs med:
Console.WriteLine("Task app starter");
Console.WriteLine("Start herfra og implementer issue #1: Opret task");Kør programmet:
dotnet run --project TaskApp/TaskApp.csprojForklar startkoden kort og linje for linje.
Hvor starter programmet, og hvordan kører jeg det lokalt?
Foreslå ikke ændringer, og skriv ikke ny kode.
Svar på dansk og på begynderniveau.
- Projektet kan køres lokalt
- Programmet skriver de to startlinjer
- Gruppen kan forklare, hvor programmet starter
Formål: I opretter en lokal Git-historik og gemmer projektets starttilstand i det første commit.
git init
git add .
git commit -m "Initial Java task app"| Kommando | Hvad gør den? |
|---|---|
git init |
Opretter et lokalt Git-repository i projektmappen |
git add . |
Gør de aktuelle filer og ændringer klar til commit |
git commit -m "..." |
Gemmer et dokumenteret øjebliksbillede i den lokale Git-historik |
Et commit sender ikke noget til GitHub. Alt er stadig kun gemt lokalt.
- Vælg VCS → Enable Version Control Integration → Git.
- Åbn Commit.
- Markér filerne, skriv
Initial Java task app, og vælg Commit.
Vælg enten terminalen eller IDE'en, så den samme handling ikke udføres to gange.
- Git er initialiseret
- Første commit er lavet
- Gruppen kan forklare forskellen på
addogcommit
Formål: I forbinder det lokale Git-repository med GitHub og sender historikken op, så arbejdet kan deles og kobles til issues, branches og pull requests.
- Gå til GitHub → New repository → brug fx
copilot-workshop-java-taskapp. - Opret repositoryet uden README, fordi projektet allerede findes lokalt.
- Kopiér repositoryets URL, og kør:
git branch -M main
git remote add origin https://github.com/BRUGERNAVN/REPO-NAVN.git
git push -u origin main| Kommando | Hvad gør den? |
|---|---|
git branch -M main |
Omdøber den aktuelle branch til main |
git remote add origin URL |
Forbinder det lokale projekt med repositoryet på GitHub |
git push -u origin main |
Sender main til GitHub og husker forbindelsen til den eksterne branch |
Vælg Git → GitHub → Share Project on GitHub. IntelliJ kan både oprette repositoryet og pushe projektet.
Brug enten IDE-fremgangsmåden eller terminalkommandoerne.
- Projektet er pushet til GitHub
- Repositoryet viser
src/Main.java - Gruppen kan forklare forskellen på det lokale repository og repositoryet på GitHub
Formål: I finder de fælles kravbeskrivelser og automatiseringer, som skal kopieres fra MIKCs workshoprepo til jeres eget repository.
Åbn MIKCs workshoprepo, og find:
docs/issues ← beskrivelser af de opgaver, der oprettes som GitHub issues
.github/workflows ← automatiske kontroller, der køres med GitHub Actions
Et issue er en sporbar arbejdsopgave på GitHub. Det kan blandt andet indeholde en user story, acceptkriterier, afgrænsning og definition of done.
Et workflow er en automatiseret proces beskrevet i en YAML-fil. Den angiver, hvornår en kontrol kører, hvilket miljø den kører i, og hvilke trin der udføres.
Filerne findes i MIKCs repository, men alle issues, branches, commits og pull requests oprettes i gruppens eget repository.
- I kan finde
docs/issues - I kan finde
.github/workflows - I kan forklare forskellen på en issuebeskrivelse og en workflow-fil
Formål: I gør arbejdets status og faglige tilknytning synlig med et Project board og labels.
GitHub Projects oprettes på jeres brugerprofil eller i en organisation:
- Åbn profilen eller organisationen på GitHub → Projects → New project.
- Vælg en Board-visning.
- Navngiv projektet, fx
Task app - gruppe 1. - Tilpas statusfeltet til:
Backlog · Ready · In progress · Review · Done
Boardet viser, hvor langt arbejdet er:
| Status | Betydning |
|---|---|
| Backlog | Opgaven er registreret, men endnu ikke klar |
| Ready | Opgaven er afklaret og klar til at blive startet |
| In progress | Der arbejdes på opgaven |
| Review | Løsningen venter på faglig gennemgang |
| Done | Opgaven er godkendt og afsluttet |
Labels er kategorier, der sættes på issues og pull requests. De viser, hvad arbejdet handler om, og gør det muligt at sortere og filtrere.
Boardets status viser, hvor langt arbejdet er. Labels viser, hvad arbejdet handler om.
Opret kun de labels, der bruges i workshoppen:
systemudvikling programmering teknologi it-forretning
feature test
| Label | Bruges til |
|---|---|
| systemudvikling | User stories, acceptkriterier, proces og review |
| programmering | Kode, metoder, klasser, fejlretning og test |
| teknologi | Git, GitHub, branches, build og GitHub Actions |
| it-forretning | Værdi, prioritering, scope og brugerbehov |
| feature | Ny funktionalitet |
| test | Test eller kvalitetssikring |
- Boardet har de fem statusser
- De seks labels er oprettet
- Gruppen kan forklare forskellen på status og label
Formål: I omsætter et behov til en sporbar arbejdsopgave med testbare acceptkriterier og en tydelig definition of done.
Et issue er ikke det samme som en use case:
- Et issue er en konkret arbejdsopgave, som kan følges fra krav til færdig kode.
- En use case beskriver normalt et samlet handlingsforløb mellem en aktør og et system.
I workshoppen indeholder issuet en user story, men det er ikke en fuld use case.
Issue-teksten hentes fra workshoprepoet: docs/issues/01-opret-task.md.
- Åbn gruppens eget repository på GitHub → Issues → New issue.
- Sæt titlen til
Opret task. - Kopiér hele indholdet fra
docs/issues/01-opret-task.md. - Tilføj labels:
systemudvikling,programmering,featureogtest. - Opret issuet.
- Tilføj issuet til boardet via Projects, og sæt status til
Ready.
Issuet oprettes på GitHub i denne workshop. Nogle IDE-værktøjer kan også oprette issues, men GitHub gør sammenhængen mellem issue, board, branch og pull request tydeligst.
- Issuet har user story, acceptkriterier, afgrænsning og definition of done
- Issuet har relevante labels
- Issuet er på boardet med status
Ready - Gruppen kan forklare forskellen på et issue og en use case
Formål: I bruger Copilot Plan til at få et forslag til, hvordan issue #1 kan løses. Gruppen vurderer og retter planen, før der skrives eller ændres kode.
Important
En AI-genereret plan er et forslag – ikke en beslutning.
- Åbn issue #1 på GitHub, og kopiér issue-teksten.
- Åbn Copilot Chat i IDE'en, og vælg Plan.
- Brug prompten:
Her er GitHub issue #1:
[indsæt issue-teksten]
Lav en kort implementeringsplan, men skriv ikke kode.
Planen skal:
1. foreslå de nødvendige filer eller klasser
2. beskrive relevante manuelle eller automatiske test
3. koble hvert trin til et eller flere acceptkriterier
4. pege på spørgsmål, der bør afklares før implementering
Følg issuets afgrænsning, og hold løsningen enkel.
Gruppen skal undersøge:
- Dækker planen alle acceptkriterier?
- Foreslår den noget, der ligger uden for issuet?
- Er rækkefølgen hensigtsmæssig?
- Kan gruppen forklare og begrunde planen?
Ret planen, hvis det er nødvendigt. Indsæt derefter den godkendte plan som en kort kommentar i issue #1. Det gør det synligt, hvad gruppen besluttede før implementeringen.
Tryk ikke på Implement Plan, før planen er gennemgået og godkendt.
- Planen indeholder ikke kode
- Planen dækker acceptkriterierne uden at udvide opgaven
- Den godkendte plan er dokumenteret i issuet
- Gruppen kan forklare, hvad den ændrede eller afviste
Formål: I opretter en branch til issue #1, så ændringerne holdes adskilt fra
mainog senere kan spores fra issue til kode og pull request.
Flyt først issue #1 til In progress på boardet.
- Åbn issue #1 på GitHub.
- Find Development i højre side, og vælg Create a branch.
- Navngiv branchen
feature/opret-task, og opret den framain. - Hent og skift til branchen lokalt:
git fetch origin
git switch --track origin/feature/opret-taskNår branchen oprettes fra issuets Development-felt, registrerer GitHub forbindelsen mellem issue og branch.
git switch main
git pull
git switch -c feature/opret-task
git push -u origin feature/opret-taskHvis branchen oprettes lokalt, sikres forbindelsen senere med Closes #1 i pull requesten.
mainbevarer den godkendte version.- Ændringer til issue #1 samles ét sted.
- Pull requesten kan vise præcis, hvad branchen ændrer.
- Branch, commits og pull request kan spores tilbage til issuet.
- Branch hedder
feature/opret-task - Branch findes lokalt og på GitHub
- Issue #1 står som
In progress - Gruppen kan forklare, hvordan branchen knyttes til issuet
Formål: I bruger Agent til at implementere en tydeligt afgrænset opgave. Bagefter gennemgår, tester og forklarer I ændringerne, før de kan godkendes.
En agent er en AI-arbejdsform, der kan undersøge flere filer, ændre kode, foreslå eller køre kommandoer og arbejde videre ud fra resultaterne. Agenten kan udføre flere trin, men gruppen skal stadig kontrollere og godkende alle ændringer.
| Agent i IDE | Coding agent på GitHub |
|---|---|
| Arbejder i det lokale projekt | Arbejder i et særskilt miljø på GitHub |
| Gruppen følger ændringer og kommandoer undervejs | Arbejder asynkront ud fra fx et issue |
| Velegnet til undervisning, dialog og kodeforklaring | Opretter normalt en branch og en pull request |
| Koden testes lokalt af gruppen | Resultatet vurderes i pull request og Actions |
Det hedder en agent på GitHub, ikke en agent direkte i Git. I denne del bruges Agent i IDE'en, så gruppen kan følge arbejdet.
- Issue #1 står som
In progress - Den godkendte plan findes som kommentar i issuet
- Den aktive branch er
feature/opret-task - Projektet kan køre lokalt
Åbn Copilot Chat → Agent, og brug:
Implementer issue #1 i denne Java-konsolapplikation.
Her er issue #1:
[indsæt hele issue-teksten]
Følg den godkendte plan og klassediagrammets enkle struktur.
Gem højst 10 tasks i et array.
Ændr kun de nødvendige filer.
Brug ikke ArrayList, database, Spring Boot eller andre frameworks.
Efter implementeringen skal du:
1. opliste de ændrede filer
2. koble ændringerne til acceptkriterierne
3. foreslå manuelle test
.NET-prompt
Implementer issue #1 i denne C# .NET-konsolapplikation.
Her er issue #1:
[indsæt hele issue-teksten]
Følg den godkendte plan og den enkle struktur.
Brug klassenavnet TaskItem, og gem højst 10 tasks i et array.
Ændr kun de nødvendige filer.
Brug ikke List, database, ASP.NET eller andre frameworks.
Efter implementeringen skal du:
1. opliste de ændrede filer
2. koble ændringerne til acceptkriterierne
3. foreslå manuelle test
Forventede Java-filer efter implementering:
src/Main.java · src/Task.java · src/TaskService.java
Læs ændringerne, før de accepteres. Afvis kode, der ikke kan forklares, eller som ligger uden for issuet.
- En task kan oprettes
- En tom titel afvises
- Alle tasks kan vises
- Agenten har kun ændret nødvendige filer
- Gruppen kan forklare, hvor data gemmes
Formål: I dokumenterer, at løsningen er kørt, testet og forstået. AI-genereret kode godkendes ikke alene, fordi den ser rigtig ud.
Programmet kan køres enten i IDE'en eller fra terminalen. Vælg én af metoderne. De manuelle test og de forventede resultater er de samme.
Åbn Main.java, og vælg Run Main. Indtast testdata i konsollen.
javac -d out src/*.java
java -cp out Main.NET
Kør i Rider eller Visual Studio, eller brug:
dotnet run --project TaskApp/TaskApp.csproj| Test | Forventet resultat |
|---|---|
| Opret task med titel | Tasken oprettes og vises |
| Opret task med tom titel | Programmet viser en fejlbesked |
| Vis alle tasks | Alle oprettede tasks vises |
| Opret flere tasks | Alle tasks får forskellige id'er |
| Opret over maksimalt antal | Programmet håndterer det uden crash |
Sammenlign koden med acceptkriterierne fra issue #1.
Svar kort:
1. Hvilke acceptkriterier er opfyldt?
2. Hvad bør testes manuelt?
3. Hvilke dele af koden skal udvikleren kunne forklare?
Foreslå ikke ny funktionalitet.
Gruppen skal kunne forklare:
- hvor tasks gemmes
- hvordan et id tildeles
- hvor en tom titel afvises
- hvad der sker, når arrayet er fyldt
- Programmet er kørt
- Både gyldigt og ugyldigt input er testet
- Testresultaterne er noteret
- Gruppen kan forklare mindst én begrænsning i koden
Formål: En pull request samler kodeændringer, issue-reference og testresultater ét sted. Den er gruppens dokumenterede forslag om at flette branchens ændringer ind i
mainog danner grundlaget for review.
| Begreb | Betydning |
|---|---|
| Commit | Gemmer et dokumenteret øjebliksbillede i Git |
| Push | Sender commits til GitHub |
| Pull request | Foreslår at flette branchens ændringer ind i main |
| Review | Gennemgår og vurderer ændringerne før merge |
| Merge | Fletter de godkendte ændringer ind i main |
Kontrollér, at den aktive branch er feature/opret-task, og at koden virker lokalt:
git add .
git commit -m "Add task creation feature"
git push- Vælg Pull requests → New pull request.
- Vælg
base: main←compare: feature/opret-task. - Brug denne beskrivelse:
## Hvad er lavet?
Implementerer oprettelse af tasks i konsolappen.
## Acceptkriterier
- [ ] Brugeren kan indtaste en titel
- [ ] Brugeren kan gemme tasken
- [ ] Tasken vises på listen
- [ ] Tasken er som standard ikke færdig
- [ ] Tom titel afvises
## Test
Beskriv de udførte test og resultaterne.
## Brug af Copilot
- Copilot hjalp med:
- Vi ændrede eller afviste:
- Vi kontrollerede løsningen ved:
Closes #1Closes #1 forbinder pull requesten med issue #1 og lukker issuet automatisk, når pull requesten merges.
Flyt issue #1 til Review på boardet.
- Pull requesten går fra
feature/opret-tasktilmain - Beskrivelsen indeholder acceptkriterier og testresultater
- Brugen af Copilot er dokumenteret
-
Closes #1står i beskrivelsen
Formål: Review er den faglige kontrol før merge. En anden gennemgår ændringerne, sammenholder dem med issuets acceptkriterier og vurderer kode, test og forståelighed.
Lad en kollega eller en anden gruppe gennemføre reviewet:
- Åbn pull requesten, og vælg Files changed.
- Kontrollér, at ændringerne løser issue #1 og ikke indeholder uvedkommende kode.
- Sammenlign ændringerne med hvert acceptkriterium.
- Kontrollér de beskrevne test og resultater.
- Bed gruppen forklare en central del af koden uden Copilot.
- Skriv mindst én faglig review-kommentar.
- Vælg Approve, eller vælg Request changes, hvis der skal rettes noget.
- Vent med at merge, til GitHub Actions er gennemført i del 13.
Review ændringerne som underviser i programmering.
Fokusér på:
1. om koden opfylder acceptkriterierne
2. om koden er forståelig for begyndere
3. om der mangler test
4. om der er unødvendig kompleksitet
5. hvilke dele udvikleren selv bør kunne forklare
Skriv forslag, men godkend ikke pull requesten.
Copilot kan pege på mulige problemer, men revieweren skal selv kontrollere og begrunde sin vurdering.
-
Files changeder gennemgået - Acceptkriterier og test er vurderet
- Der er skrevet en review-kommentar
- Gruppen har forklaret en central del uden Copilot
- Pull requesten er ikke merget endnu
Formål: GitHub Actions kører den samme automatiske kontrol ved push og pull request. I workshoppen kontrollerer workflowet, at projektet kan hentes, kompileres og starte i et neutralt miljø. Det erstatter ikke manuel test eller review.
En workflow-fil er en YAML-fil, der beskriver:
- hvornår kontrollen kører, fx ved push eller pull request
- hvor den kører, fx på Ubuntu
- hvad der udføres som jobs og steps, fx installation af Java, kompilering og test
Det nuværende Java-workflow er en build- og smoke-check. Det er ikke en egentlig implementeringstest af acceptkriterierne. En implementeringstest kræver fx JUnit-tests og et workflow-step, der kører dem.
Workflow-filen hentes fra MIKCs workshoprepo:
.github/workflows/java-check.yml
- Kontrollér, at I stadig står på
feature/opret-task. - Opret
.github/workflowsi eget repository. - Kopiér
java-check.ymlfra workshoprepoet. - Commit og push workflow-filen til den samme branch.
- Åbn pull requesten eller fanen Actions, og se, om kontrollen er grøn eller rød.
- Åbn loggen, hvis kontrollen fejler.
Når programmet har en interaktiv menu, skal workflowets smoke test levere et afslutningsvalg. Det sidste step skal derfor svare til:
- name: Kør smoke test
run: printf '0\n' | java -cp out Main.NET
Der findes endnu ikke en .NET-workflow-fil i workshoprepoet. Hvis .NET-sporet skal gennemføres hele vejen, skal .github/workflows/dotnet-check.yml tilføjes før workshoppen.
Denne GitHub Actions-check fejler.
Her er fejlbeskeden:
[indsæt fejlbeskeden]
Forklar:
1. hvilket step der fejler
2. den sandsynlige årsag
3. hvad vi bør kontrollere først
Skriv ikke ny kode endnu.
Når reviewet er godkendt, og Actions er grøn:
- Merge pull requesten til
main. - Kontrollér, at issue #1 er lukket via
Closes #1. - Flyt issue #1 til
Donepå boardet. - Opdatér det lokale projekt:
git switch main
git pull- Workflow-filen ligger i repositoryet
- Gruppen kan forklare trigger, job og steps
- Gruppen kan forklare forskellen på manuel test og workflowets kontrol
- Actions er grøn før merge
- Issue #1 er lukket og står som
Done
Formål: I gennemfører workflowet mere selvstændigt og implementerer denne gang uden Agent. Ask og Plan må bruges som støtte til forståelse og planlægning.
Issue-tekst: docs/issues/02-marker-task-som-faerdig.md.
issue → plan → branch → kode → test → pull request → review → Actions → merge
- Opret issue
Marker task som færdigmed labels og statusReady. - Brug Plan uden kode, og dokumentér den godkendte plan i issuet.
- Opret branch
feature/marker-task-faerdigfra issuet. - Implementér selv. Brug Ask til forklaring og fejl – ikke Agent til implementering.
- Kør og test både gyldigt id, forkert id og ugyldigt input.
- Commit, push og opret en pull request med
Closes #2. - Gennemfør review og kontrollér Actions før merge.
- En task kan markeres som færdig
- Færdig status vises i listen
- Forkert id og ugyldigt input håndteres uden crash
- Pull requesten er reviewet, og Actions er grøn før merge
- Gruppen kan forklare implementeringen uden Copilot
Formål: I afprøver Agent på en lille og tydeligt afgrænset opgave. Bagefter vurderer I, om ændringerne følger issue #3, kun berører nødvendige filer, bevarer eksisterende funktionalitet og kan forklares, før de merges.
Issue-tekst: docs/issues/03-vis-antal-aabne-tasks.md.
- Opret issue
Vis antal åbne tasksmed labels og statusReady. - Opret branch
feature/vis-antal-aabne-tasksfra issuet. - Åbn Copilot Chat → Agent, og brug:
Her er issue #3:
[indsæt hele issue-teksten]
Implementer præcis den beskrevne løsning.
Brug issuet som kravgrundlag.
Ændr kun de nødvendige filer, og begrund eventuelle andre ændringer.
Efter implementeringen skal du forklare:
1. hvilke filer der er ændret
2. hvordan hvert acceptkriterium er opfyldt
3. hvordan løsningen og den eksisterende funktionalitet testes
- Gennemgå alle ændringer.
- Test den nye funktion og de eksisterende funktioner.
- Opret pull request med
Closes #3. - Gennemfør review og kontrollér Actions før merge.
Diskutér:
- Hvad gik hurtigere med Agent?
- Hvilke ændringer krævede stadig menneskelig vurdering?
- Var koden lettere eller sværere at forklare?
- Hvilke kontroller var de samme med og uden Agent?
- Antal åbne tasks vises korrekt
- Færdige tasks tælles ikke med
-
0vises, hvis der ikke er åbne tasks - Eksisterende funktionalitet virker stadig
- Agenten har kun ændret nødvendige filer
- Gruppen kan forklare løsningen uden Copilot
Formål: I kobler workshopens aktiviteter til faglige kompetencer og diskuterer, hvilken rolle AI bør have i en professionel udviklingsproces.
| Fagligt blik | Eksempler fra workshoppen |
|---|---|
| Systemudvikling | User stories, acceptkriterier, board, plan og review af krav |
| Programmering | Klasser, metoder, fejlinput, test og kodeforklaring |
| Teknologi | Git, branches, push, Actions, build og teknisk kvalitet |
| IT- og forretning | Værdi, prioritering, scope og ansvar |
Issue # → godkendt plan → branch → commits → pull request med Closes # → review → Actions → merge
Gruppen skal kunne følge kæden begge veje: fra krav til kode og fra en kodeændring tilbage til det issue, der begrunder den.
Tabellen er et forslag til en semesterprogression fra forklaringsstøtte og kodeforståelse på 1. semester til afgrænsede agent-workflows og professionel kvalitetssikring på 3. semester. Progressionen er ikke endeligt fastlagt, men skal drøftes og tilpasses læringsmålene på tværs af fagene.
| Semester | Foreslået fokus |
|---|---|
| 1. semester | Ask, Plan, simple issues, acceptkriterier og kodeforståelse |
| 2. semester | Branches, pull requests, test, review og små agentopgaver |
| 3. semester | Agent-workflows, CI/CD, deployment, sikkerhed og professionel kvalitet |
- Hvornår gav Copilot faglig værdi?
- Hvornår var menneskelig kontrol vigtigst?
- Hvilke krav til forklaring, test og dokumentation skal gælde for de studerende?
AI er en del af udviklingsprocessen, men den faglige vurdering og ansvaret ligger stadig hos mennesket.
AI kan foreslå, forklare, planlægge og implementere. Mennesker skal forstå, teste, reviewe og tage ansvar.











