LUP - H3 - Datatekniker Programmering - 10.4
Mål for undervisningen
Undervisningen er struktureret omkring temaet fuldstack udvikling, hvor eleverne i et caseforløb arbejder med hele udviklingsprocessen fra database til backend, clientside og app-udvikling. Forløbet tager udgangspunkt i den gennemgående case, hvor eleverne udvikler en samlet softwareløsning, der inkluderer både web- og mobilapplikation samt en sikker og performant serverarkitektur.
Læringsmål:
- Udvikle og dokumentere en kravspecifikation baseret på en kundes behov, herunder brug af UML og prototyping.
- Implementere avanceret databaseprogrammering og begrunde valget mellem en ER-database, dokumentdatabase og brug af ORM ud fra et performance- og sikkerhedsperspektiv. Herunder udnytte views, stored procedures og triggers.
- Designe og udvikle en webapplikation med fokus på sikkerhed og performance, herunder håndtering af SQL injection og XSS.
- Implementere en brugerdataløsning (login og adgangskontrol) på tværs af hjemmeside, mobilapplikation og server, herunder sikker autentificering, sessionshåndtering og kryptering.
- Arbejde med softwaretest og sikkerhed, herunder en struktureret testplan og brug af relevante sikkerhedsværktøjer.
- Udvikle en mobilapplikation til en given case, inkl. design, funktionalitet og brugeroplevelse.
- Dokumentere og præsentere udviklingsforløbet i et professionelt format, herunder systemdokumentation og præsentation af løsningen for en teknisk målgruppe.
Målpinde for fagene på H3 - Datatekniker programmering
Ingen resultater
Målpinde
- Lærlingen kan, ud fra en case-opgave, selvstændigt beskrive, udvikle, teste og dokumentere en enkel app-løsning til en mobil enhed, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen kan udvikle en simpel app til mobile enheder.
- Lærlingen kan redegøre for filstrukturen i et native app-projekt i udviklingsværktøjet.
- Lærlingen kan redegøre for en apps Life Cycle, dvs. hvilke metoder der udføres når en app startes, skjules, vises og afsluttes.
- Lærlingen kan programmere en simpel brugerflade, eksempelvis en knap og et tekstfelt.
- Lærlingen kan med et grafisk værktøj designe en brugerflade med de mest almindelige elementer.
- Lærlingen kan redegøre for og anvende relevante eventhandlers for brugerfladen.
- Lærlingen kan via programkode starte andre programmer/processer på enheden f.eks. en browser.
- Lærlingen kan benytte dialogbokse til beskeder og svar fra brugeren.
- Lærlingen kan oprette forskellige brugerflader i samme app, hvor der kan overføres data imellem disse.
- Lærlingen kan beskrive de væsentligste forskelle på udviklingsmiljøer til forskellige mobil-platforme.
- Lærlingen kan dokumentere og kommentere sin kode.
- Lærlingen kan gennem en brugertest dokumentere funktionaliteten og brugeroplevelsen i en udviklet app.
- Lærlingen kan udvikle en appløsning, der kan afvikles på forskellige mobile platformsteknologier.
- Lærlingen kan installere, konfigurere og anvende et cross-platformsudviklingsmiljø.
- Lærlingen kan programmere en appløsning med menuer.
- Lærlingen kan programmere en appløsning, der kan vise dynamisk oprettede lister på skærmen og reagere på brugerens valg.
- Lærlingen kan programmere en appløsning, der kan gemme persistent data lokalt på enheden.
- Lærlingen kan programmere en appløsning, der kan anvende enhedens sensorer f.eks. gyroskop, accelerometer, temperatur osv.
- Lærlingen kan tilpasse en responsiv brugerflade, der kan orientere sig efter landskab eller portræt.
- Lærlingen kan programmere en appløsning, der kan anvende touch-input fra enhedens skærm, og ved berøring flytte et grafisk objekt rundt på skærmen.
- Lærlingen kan programmatisk få et grafisk element til at bevæge sig kontinuerligt på skærmen.
- Lærlingen kan udvikle et program, hvor sensorer, touch-skærmen og objekter, der bevæger sig, fungerer sammen på en enkel måde.
- Lærlingen kan benytte f.eks. Repository Pattern og Dependency Injection til minimering af afhængigheder mellem moduler.
- Lærlingen kan benytte Inversion of Control Pattern (f.eks. Dependency Injection).
- Lærlingen kan programmere en brugergrænseflade med asynkrone kald.
- Lærlingen kan programmere asynkrone server services i forbindelse med web API.
- Lærlingen kan gennem en brugertest dokumentere funktionaliteten og brugeroplevelsen i en udviklet appløsning.
- Lærlingen kan redegøre for mulige sikkerhedsproblemer, der skal tages højde for i forbindelse med udvikling af appløsninger.
- Lærlingen kan, ud fra en case-opgave, selvstændigt designe, udvikle, teste og dokumentere en clientside baseret webløsning, der lever op til stillede krav i opgaven, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen kan foretage grundlæggende web-programmering med HTML, CSS og Bootstrap framework, samt programmering af webapplikationer med JavaScript og jQuery, hvor målet er kommunikation med et backend Web API.
- Lærlingen kan forklare Client-Server modellen, herunder HTTP-protokollen.
- Lærlingen kan anvende grundlæggende HTML struktur og semantik.
- Lærlingen kan anvende lister, links, billeder samt tabeller.
- Lærlingen kan anvende HTML formularer.
- Lærlingen kan anvende CSS selectors.
- Lærlingen kan anvende CSS styling til tekst, links, list og tables m.m.
- Lærlingen kan anvende Box modellen.
- Lærlingen kan udvikle responsive websider, evt. ved hjælp af et CSS/JavaScript framework.
- Lærlingen kan anvende grundlæggende JavaScript kommandoer og strukturer.
- Lærlingen kan anvende funktioner og parameteroverførsel.
- Lærlingen kan arbejde med JavaScript-objekter.
- Lærlingen kan redegøre for væsentlige forskelle mellem JavaScript og et OOP sprog.
- Lærlingen kan anvende JavaScript til at give funktionalitet til en webpage.
- Lærlingen kan benytte jQuery og forskellige selectors til navigation og manipulation af websidens DOM.
- Lærlingen kan benytte jQuery og AJAX til at kommunikere med en backend web Service.
- Lærlingen kan beskrive best practise muligheder ved anvendelsen af JavaScript i forhold til både sikkerhed og performance.
- Lærlingen har en generel viden om forskellige sikkerhedsproblemer, der kan opstå under afvikling af clientside webapplikationer, som f.eks. cross-site scripting, og kan anvende denne i sit programdesign.
- Lærlingen kan gennem test dokumentere funktionaliteten i en udviklet webapplikation.
- Lærlingen kan udarbejde et avanceret databasedesign, og anvende SQL syntaxen og ORM (Object Relational Mapping) til at opbygge databaser, suppleret af en tilhørende dokumentation.
- Lærlingen kan anvende SELECT til at foretage forespørgsler op imod en tabel, herunder sortering, gruppering, filtrering, aggregering, funktioner.
- Lærlingen kan anvende INSERT, UPDATE, DELETE til at foretage manipulationer af en tabel.
- Lærlingen kan oprette, redigere og slette tabeller samt dokumentere vha. E/R-diagram.
- Lærlingen kan anvende relationstyperne 1:mange, mange:mange og 1:1 med tilhørende nøgler.
- Lærlingen kan implementere konsistenskrav, referenceintegritet, relationer og forskellige constraints.
- Lærlingen kan anvende JOIN og SUBQUERIES til at foretage forespørgsler fra flere tabeller.
- Lærlingen kan oprette og slette en database.
- Lærlingen kan oprette Views og begrunde sikkerhedsaspektet.
- Lærlingen kan anvende avancerede SQL-kommandoer som parametre, kontrolstrukturer, rettighedsstyring o.l.
- Lærlingen kan redegøre for baggrunden for konsistenskrav, referenceintegritet, relationer og forskellige constraints.
- Lærlingen kan oprette, redigere og slette Stored Procedures med et administrations- og databehandlingsformål.
- Lærlingen kan oprette og administrere Triggers med henblik på at holde databasen konsistent.
- Lærlingen kan træffe korrekte forholdsregler til at imødegå SQL Injection.
- Lærlingen kan oprette og administrere indexes så der opnås optimal performance.
- Lærlingen kan udføre performance-måling på en stor database.
- Lærlingen kan normalisere en database.
- Lærlingen har basal viden om ORM (Object Relational Mapping).
- Lærlingen kan oprette en domain-model og lade ORM generere databasen og forespørgsler.
- Lærlingen kan anvende en færdig database og lade ORM generere domain-modellen.
- Lærlingen har et grundlæggende viden om DocumentDatabaser.
- Lærlingen kan ud fra et givent performancebehov beskrive fordele og ulemper i forhold til valg mellem relationel database, ORM eller DocumentDatabase.
- Lærlingen har en generel viden om mulige sikkerhedsproblematikker omkring databaser, og kan tage højde for dem i forbindelse med opbyggelsen af en database, her f.eks. krypteringen af data og password-beskyttelse af adgangen til databasen.
- Lærlingen har en grundlæggende viden om metoder til at teste en nyudviklet database.
- Lærlingen kan, ud fra en case-opgave, selvstændigt omsætte en kundes krav til et produkt- og designkrav, samt herudfra udarbejde og dokumentere en kvalificeret kravsspecifikation, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen har kendskab til de principper og metoder, der knytter sig til at omsætte virksomhedens, brugernes og kundens krav til produkt- og designkrav, herunder f.eks. brainstorming, interviews, Prototyping og Use Case teknikken.
- Lærlingen kan, med udgangspunkt i et produkt- og designkrav, udarbejde en kravspecifikation til et it-system, som skal anvendes i forbindelse med afgivelse/indhentning af tilbud.
- Lærlingen kan analysere en kravspecifikation i forbindelse med afgivelse/indhentning af tilbud.
- Lærlingen har kendskab til accepttest.
- Lærlingen kan, i forbindelse med kravspecifikationen til en softwareopgave, udarbejde dokumentation i f.eks. UML notation.
- Lærlingen kan udvikle serverside webapplikationer, der kan levere HTML-kode til browseren, samt Web API eller webservices, som kan udveksle data med en client-application, f.eks. en browser eller en mobil App.
- Lærlingen kan redegøre for forskellige arkitekturer for web Applikationer og web API (web Services), med fordele og ulemper.
- Lærlingen kan opbygge og konfigurere en web Application og web API (web service) vha. et framework.
- Lærlingen kan benytte validering af brugerinput i en web Applikation.
- Lærlingen kan implementere passende ViewModels eller DTO klasser.
- Lærlingen kan anvende Unit Test og mocking af objekter.
- Lærlingen kan konfigurere routing i en applikation.
- Lærlingen kan udvide en applikation med en database, evt. med et ORM-framework.
- Lærlingen kan programmere services til brug for en applikation, f.eks. data- og logging-services.
- Lærlingen kan benytte en hensigtsmæssig strategi for Exception handling.
- Lærlingen kan implementere sikkerhed og brugeradministration i en applikation.
- Lærlingen kan udrulle (deploy) en applikation, både On-Premises og Cloud baseret.
- Lærlingen kan udføre Parallel Programming.
- Lærlingen kan redegøre for fordele/ulemper ved forskellige teknikker inden for Cryptography.
- Lærlingen kan anvende Hashing, Symmetric og Asymmetric Encryption.
- Lærlingen kan, ud fra en case-opgave, omhandlende krav til en nyudviklet applikation, selvstændigt planlægge, gennemføre og dokumentere en softwaretest med fokus på funktionalitet, performance og sikkerhed, og kan herigennem demonstrere viden, færdigheder og kompetencer ud over de i faget beskrevne mål og målniveauer.
- Lærlingen har en generel viden om metoder og løsninger til at fejl- og funktionsteste en udviklet softwareløsning, samt om løsninger, der kan forbedre sikkerheden på en web-enabled applikation.
- Lærlingen kan tilrettelægge en testplan, som indeholder test til funktionelle krav.
- Lærlingen kan anvende forskellige relevante testmetodikker.
- Lærlingen kan vurdere, hvornår en software-release er tilstrækkeligt testet.
- Lærlingen kan gennemføre en scriptet test på en app- eller webplatform.
- Lærlingen kan integrere automatiserede tests i software udviklingscyklussen.
- Lærlingen kan gennemføre en tryktest, hvor performance og krav til hardware medtages.
- Lærlingen kan aflæse performancetabeller og identificere flaskehalse i et kompliceret system.
- Lærlingen kan redegøre for UX-tests (User Experience), som evaluerer kundeoplevelsen.
- Lærlingen har en generel viden om data-kryptering, og kan anvende krypteringsformer som f.eks. SSL i forbindelse med udvikling af webbaserede applikationer.
- Lærlingen kan indhente viden omkring softwaresikkerhedsstandarder og kendte sikkerhedshuller i eksisterende software.
- Lærlingen har en generel viden om authentication og kan udvikle programmer, der anvender authentication.
- Lærlingen har en generel viden om Hashing-kodning, og kan anvende kodningsformer som f.eks. MD5 i forbindelse med udvikling af webbaserede applikationer.
- Lærlingen har en generel viden om forskellige former for hacking angreb, som f.eks. SQL injection og XSS (Cross-Site Scripting), og kan anvende denne viden til at sikre egne udviklede webbaserede applikationer.
- Lærlingen kan anvende forskellige website security tools til at teste sikkerheden på udviklet software.
Indhold i undervisningen
Undervisningen på H3 er centreret omkring en gennemgående case, hvor eleverne arbejder med udviklingen af en fuldstack-løsning, der dækker database, backend, clientside og app-udvikling. Forløbet kombineres med teknologistudier, hvor eleverne fordyber sig i specifikke teknologier og metoder inden for softwareudvikling.
Indhold:
Eleverne vil arbejde med følgende fagområder:
- Databaseudvikling: Valg og implementering af en ER-database eller en dokumentdatabase, brug af ORM samt optimering af forespørgsler med views, stored procedures og triggers.
- Backend-udvikling: Design og udvikling af et API, autentificering, sessionshåndtering og sikkerhedsmekanismer.
- Clientside-udvikling: Implementering af en webapplikation med moderne frontend-teknologier og integration med backend-services.
- App-udvikling: Udvikling af en mobilapplikation, der kommunikerer med backend og database via API'er.
- Sikkerhed og test: Implementering af sikkerhedsprincipper som SQL injection-beskyttelse, adgangskontrol og kryptering samt teststrategier for softwarekvalitet.
Hvordan skal eleverne lære det faglige indhold?
Undervisningen veksler mellem teoretiske oplæg, praktiske øvelser og projektarbejde. Eleverne arbejder i grupper med casen, hvor de gennemfører analyser, udvikler softwarekomponenter og afprøver teknologier i en realistisk kontekst. Teknologistudierne giver eleverne mulighed for at dykke ned i specifikke emner og reflektere over deres valg af teknologi.
Differentiering
Forløbet er designet, så elever med forskellige kompetenceniveauer kan udfordres på passende vis:
- Grundlæggende vejledning tilbydes for at sikre, at alle elever har forståelse for kerneelementerne i casen.
- Støtte tilbydes til de elever der er udfordrede i forhold til hovedforløbets opgaver, efter en individuel vurdering, i form af simplificering, hjælp til tilrettelæggelse og fokusering.
- Mulighed for fordybelse for de elever, der ønsker at eksperimentere med avancerede funktioner som performanceoptimering, sikkerhedsanalyser eller integration af nye teknologier.
Tværfaglighed og helhedsorientering
Programmering H3 er tilrettelagt med fokus på en helhedsorienteret forståelse af softwareudvikling, hvor eleverne arbejder med sammenhængen mellem programstruktur, datahåndtering og funktionalitet.
Undervisningen understøtter tværfaglighed ved, at eleverne anvender og kombinerer kompetencer fra tidligere forløb, herunder grundlæggende programmering, systemforståelse og dokumentation, i arbejdet med sammenhængende opgaver og mindre projekter.
Gennem forløbet opbygges elevernes evne til at se programmering som en del af et samlet system og til at reflektere over, hvordan tekniske valg påvirker programmets funktion, kvalitet og anvendelighed. Dette danner grundlag for progression mod de mere komplekse og projektorienterede hovedforløb på H4.
Praksisrelateret undervisning
Eleverne arbejder med en praksisnær case, der spejler virkelige udfordringer i software- og systemudvikling. Der anvendes metoder og teknologier, der afspejler praksis i IT-branchen, så eleverne får erfaring med løsninger, der kan implementeres i erhvervslivet. Afslutningsvis præsenterer eleverne deres projekt og afleverer en professionel systemdokumentation.
Evaluering og bedømmelse
Evalueringen af undervisningsforløbet sker løbende gennem formative evalueringer og afsluttes med en summativ vurdering baseret på elevernes afleverede projekter og deres fremlæggelser. Evalueringen sikrer, at eleverne opnår de faglige mål inden for hovedforløbet.
Løbende evaluering og feedback (formativ evaluering)
Den formative evaluering foregår løbende og har til formål at understøtte elevernes læringsproces. Den tilpasses den enkelte elevs projekt, niveau og udviklingstrin. Evalueringen sker gennem:
- Delafleveringer af specifikke dele af projektet, såsom databasedesign, backend-implementering og sikkerhedsanalyser.
- Løbende teknologistudier, hvor eleverne fordyber sig i udvalgte teknologier og anvender dem i praksis, der vurderes ved gennemgang af kode.
- Kodegennemgang og tekniske reviews, hvor eleverne får mundtlig feedback på deres implementering på f. eks arkitektur, struktur og coding-conventions.
- Gruppediskussioner og faglige refleksioner, hvor eleverne forklarer deres valg og overvejelser.
- Fremlæggelser af delresultater, hvor underviseren giver feedback på elevernes løsninger og arbejdsproces.
Formålet med den formative evaluering er at give eleverne mulighed for at forbedre deres løsninger,udvikle deres tekniske og metodiske forståelse undervejs i forløbet.
Afsluttende bedømmelse (summativ evaluering)
Den summative evaluering foretages ved forløbets afslutning og består af:
- En samlet systemdokumentation, der beskriver projektets udvikling, tekniske løsninger og begrundelser.
- En mundtlig præsentation, hvor eleverne fremlægger deres løsning, reflekterer over deres teknologivalg og besvarer spørgsmål.
- En praktisk demonstration, hvor eleverne viser, hvordan deres software fungerer i praksis.
Bedømmelsen tager højde for både individuelle præstationer og gruppens samlede arbejde.
Bedømmelseskriterier
Bedømmelseskriterierne tager udgangspunkt i de fastlagte læringsmål for hovedforløbet, herunder elevens evne til at:
-
Udvikle fungerende programmer, hvor funktionalitet og korrekthed svarer til den stillede problemstilling.
-
Strukturere kode hensigtsmæssigt ved anvendelse af relevante programmeringsprincipper, så løsningen fremstår overskuelig, læsbar og vedligeholdbar.
-
Anvende grundlæggende objektorienterede principper og programmatiske strukturer på en måde, der understøtter programmets funktion og videreudvikling.
-
Analysere en problemstilling og omsætte krav og idéer til en implementerbar løsning gennem velbegrundede tekniske valg.
-
Dokumentere og forklare programmets opbygning og funktion, herunder redegøre for centrale dele af koden og deres samspil.
-
Reflektere over egne løsninger og identificere styrker, begrænsninger og mulige forbedringer i forhold til læringsmålene.
Disse bedømmelseskriterier anvendes både i den formative og den summative evaluering.
Bedømmelsesgrundlag
Bedømmelsesgrundlaget udgøres af følgende faglige indikatorer, som tilsammen belyser i hvilken grad eleven har opnået læringsmålene for programmeringsdelen:
- Funktionalitet og korrekthed
Vurderer i hvilken grad løsningen opfylder de stillede krav, og om programmets adfærd er korrekt og hensigtsmæssig i forhold til problemstillingen. - Kodekvalitet og struktur
Vurderer elevens anvendelse af programmeringsprincipper, herunder struktur, modularisering, læsbarhed og vedligeholdbarhed. - Problemløsning og abstraktion
Vurderer elevens evne til at analysere problemstillinger, foretage hensigtsmæssige faglige valg og omsætte komplekse krav til implementerbare løsninger. - Faglige valg og refleksion
Vurderer elevens evne til at begrunde valg af løsninger, overveje alternativer og reflektere over løsningens styrker, begrænsninger og udviklingsmuligheder. - Dokumentation og formidling
Vurderer i hvilken grad eleven kan dokumentere og forklare løsningens opbygning, funktion og anvendelse i relation til læringsmålene. - Arbejdsproces og selvstændighed
Vurderer elevens planlægning, gennemførelse og justering af eget arbejde samt evnen til at anvende feedback konstruktivt.
De faglige indikatorer anvendes ikke som enkeltstående tjekpunkter, men indgår samlet i vurderingen af elevens kompetenceniveau.
Programmering er et kreativt og problemløsende fag, hvor opgaver på dette hovedforløb kan løses på flere fagligt valide måder, derfor foretages bedømmelsen som en professionel helhedsvurdering, hvor underviseren inddrager elevens samlede kompetencer, faglige valg og evne til refleksion i forhold til læringsmålene for hovedforløbet.