Programmering og systemudvikling

Slides:



Advertisements
Lignende præsentationer
Fokusgruppe Hvad er en fokusgruppe?
Advertisements

Gode råd og eksempler på faldgruber
Notation Oversigt Kapitel 18.
Arkitektur - data.
Teknisk implementering
06.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Brug Oversigt, principper og teknikker Kapitel 6.
Systemvalg Oversigt og teknikker Kapitel 2.
Formularer (Access, del 3)
Krav og usecases Larman kap. 5 og 6 (del1) Larman kap del1
Informationsteknologi B-A, HHX, 2005,
Tietgen Skolen Kvalitet og kvalitetssikring Review Test.
Analyse af anvendelsesområde
Programklasser for bladhus Den efterfølgende beskrivelse er ikke komplet. Der er ikke taget afsæt i use cases, sekvensdiagrammer og operationsbeskrivelser.
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer Del 2 af 2: Proces- og funktionsdiagrammering Aalborg Universitet, d. 9. oktober 2006.
04.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Struktur Oversigt, principper og teknikker Kapitel 4.
03.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Klasser Oversigt, principper og teknikker Kapitel 3.
10.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Komponenter Oversigt, principper og teknikker Kapitel 10.
Team En gruppe er en samling mennesker, der Har fælles mål
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
07.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Funktioner Oversigt, principper og teknikker Kapitel 7.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
Kvalitet i almindelighed og i relation til softwareudvikling.
12.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Modelkomponent Oversigt, principper og teknikker Kapitel 12.
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
Opfølgning på obligatorisk opgave 1 ONK1. Ingeniørhøjskolen i Århus Slide 2 Overordnet Flere gode opgaver De samme fejl går igen.. Alle der har afleveret.
Oversigt, principper og teknikker
13.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Funktionskomponent Oversigt, principper og teknikker Kapitel 13.
Dagens gang Sidste uges opgaver Design af grænseflader
OOA&D Et Crash-kursus.
05.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Adfærd Oversigt, principper og teknikker Kapitel 5.
1 Dagens gang Sidste uges opgaver –Klasse opgaver –Adfærdsmønstre (Låner, Reservation, Materiale, Eksemplar) Brugsmønstre og funktioner Nye opgaver.
09.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Kriterier Oversigt, principper og teknikker Kapitel 9.
Udregning af UseCasePoints UCP = UUCP*TCF*EF UseCasePoint = Ujusteret Use Case Point * Tekniske Komplexitets Faktor * Miljø Mæssige Faktor.
1 Dagens gang Sidste uges opgaver OA+D: Adfærd Nye opgaver.
Spørgetime. Kunde / konto eksemplet Konto åbnet( ) Beløb indsat( , 100) Konto åbnet( ) Beløb hævet ( , ) Beløb indsat( ,
Strategi i Vindervirksomheder Kapitel 2
08.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Grænseflader Oversigt, principper og teknikker Kapitel 8.
Interaktionsformer En begrebsmæssig model kan understøttes med forskellige interaktionsformer Interaktionsformen fastlægger centrale egenskaber: Hvordan.
Use Case Modellering. En form for requirements engeneering – dvs. fastlæggelse af systemkrav.
Briding the Gaps Between Developers and Users v. Grudin Indledning Faktorer som kan påvirke bruger involvering Kontrakt udvikling Produkt udvikling Intern.
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Mobilitet og usability John Paulin Hansen. Situationer FlyBusMetroGaden.
Generelt om abstraktion og modellering Tietgen Skolen.
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design interaktionselementer Analysedokumentet.
GP 4, 27/ Grundlæggende programmering Forår 2002 Forelæsning 4 onsdag 27/ kl. 9:15 – 12:00.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Jens Bennedsen 2002Objektorienteret systemudvikling To syn på verden Aristotelisk vs. prototypisk syn.
Beskrivelsesteknikker Udviklingsmodeller og metoder
 Jens Bennedsen 2002Objektorienteret systemudvikling Interaktionsdiagrammer Hvordan beskrives objektinteraktion? Sekvensdiagrammer Collaborationsdiagrammer.
Situationsbestemt metodevalg
Datalogi - 1. modul - systemudvikling - LCK 1 Håndtering af systemudvikling! Efterår 2000 Datalogi LCK.
Dagens gang Komponenter Projektetablering Opgave i komponenter til næste gang.
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Systemudviklingsstrategier
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Astrid Lumbye 2002Objektorienteret systemudvikling Begreber i systemudviklingsprocessen Udviklingsmodel Metode Beskrivelsesteknik Værktøj.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
Hvad er en inkrementel og iterativ process?
Formularer (Access, del 3). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller Vi.
01.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Objektorienteret Analyse & Design (OOA&D) Grundbegreber, principper og metode Kapitel 1.
Abstraktioner.
Dokumentation.
Del 2 - Synliggørelse af hvordan vi hver især bidrager til løsningen af kerneopgaven. Til proceslederen: Inden du gennemfører processen med medarbejderne,
Lektion 7 Formål med denne lektion er at arbejde videre med klassekulturen, følge op på surveyen og at afrunde lektionsforløbet i Netwerk. Alle rettigheder.
Præsentationens transcript:

Programmering og systemudvikling Lektion 3 Funktionalitetssyn Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Målsætning Anvendelsesområdet Brugsmønstre hvad er det? hvad er formålet med brugsmønstre? skabelon for et brugsmønster hvad er et godt brugsmønster? hvordan anvendes brugsmønstre igennem et OOSU forløb? Hvorfor er det ”hot” at snakke om brugsmønstre. Funktioner – hvad er det, hvad bruges de til. Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Målsætning (2) Supermarkedsprincippet objekt- og listebilleder. Specialbehovsbilleder. Anvendelse af klassemodellen som basis for en prototype og sammenhængen mellem klassemodel og - grænseflade. Ó Bennedsen 2001 Programmering og systemudvikling

Aktiviteter i analyse af anvendelsesområdet brug System- definition og problem- område grænseflade Funktioner krav Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Brug Vi skal skabe et edb-system der er tilpasset anvendelsesområdet ingen urimelige tilpasninger af arbejdet til edb-systemet ingen dyre modifikationer af andre edb-systemer og apparater Et edb-systems anvendelsesområde fastlægges ved brugsmønstre Ó Bennedsen 2001 Programmering og systemudvikling

Hvad er et brugsmønster? Beskriver interaktionsmønstrene med systemet En sekvens af transaktioner fra/til en eller flere aktører En beskrivelse af mulige scenarier hvad aktøren oplever systemet skal gøre kun mulige funktioner for aktøren Aktør Brugsmønster Ó Bennedsen 2001 Programmering og systemudvikling

Brugsmønster principper Et edb-systems anvendelsesområde fastlægges ved brugsmønstrene Brugsmønstre vurderes i prototyper i samarbejde med brugerne Vurder edb-systemets indvirken på anvendelsesområdet Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Aktører Eksterne ting der interagerer med systemet (og stiler derfor krav!) Eksempler personer andre systemer ydre enheder,... Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Aktører (2) aktør 2 Stillingsbetegnelser er brugbare, men tænk hellere i roller Hvordan kommer informationer til systemet? Hvem/hvad skal have information fra systemet? Aktive/passive aktører nogle use cases igangsættes ikke af en aktør (tiden, batchafvikleren, ..) Ó Bennedsen 2001 Programmering og systemudvikling

Brugsmønstre set som klasser Et brugsmønster beskriver alle sæt af transaktions scenarier (for den givne funktionalitet) Et brugsmønster er som en klasse Kan instantieres En forekomst af en brugsmønster har de samme karakteristika som et objekt tilstand (hvor langt den er nået, systemets tilstand) operationer (start use case,…) Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Scenarie  En specifik samling af hændelser/events mellem systemet og aktøren/aktørerne Kan generaliseres til et brugsmønster (objekt  klasse) Beskriv dem grundigt  gode testcases Ó Bennedsen 2001 Programmering og systemudvikling

Hvad er et brugsmønster IKKE? Detaljer om hvad systemet gør internt En formaliseret beskrivelses teknik Ó Bennedsen 2001 Programmering og systemudvikling

Systemafgrænsning med brugsmønstre Definer systemets aktører og de brugs-mønstre som de forventes at skulle løse System = brugsmønstre Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Målgrupper Brugsmønstrenes primære målgruppe er aktørerne skal kunne læses af ikke edb-folk (hvis det er ikke edb-aktører :-) skal kunne forstås af edb-folk brug terminologi fra genstandsområdet Ó Bennedsen 2001 Programmering og systemudvikling

Strukturering af brugsmønstre ”Factor out common functionality” nødvendigt med mekanisme til opsplitning <<includes>> use case3 bliver et abstrakt brugsmønster svarer til et procedure kald <<includes>> UseCase 1 UseCase 3 use case3 use case1 Ó Bennedsen 2001 Programmering og systemudvikling

Strukturering af brugsmønstre (2) ”factor out common problems” muliggør udvidelser af brugsmønstre <<extends>> use case3 og use case1 er begge konkrete svarer til et patch/interrupt bruges til at modellere udvidelse af andre (komplete) use cases Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Brug af extends Eksempler hvor extends kan bruges for at beskrive optionelle dele af et brugsmønster for at beskrive komplekse (og alternative) flow som sjældent forekommer (eksempel: ”Flaske sætter sig fast ved returnering af flasker i en automat) husk også [undtagelse] for at beskrive hvor flere use cases kan ”indsættes” i en anden ex: login/logout use case Indsættelsespunktet beskrives så præcist som muligt Ó Bennedsen 2001 Programmering og systemudvikling

Opdeling af store brugsmønstermodeller To mulige måder at opdele systemer på basis/sub cases (konkrete vs. abstrakte) opsplitning i flere pakker hver især dækkende et funktionsområde Brug klassemodellen (og dens eventuelle opdelinger) som inspiration Kan bruges til release/leverance plan specielt ved funktionsområde opdeling Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling brugsmønster- UML Aktør Beskrivelse Bla bla bla Use case <<…>> Stereotype - extends - includes Interaktion Ó Bennedsen 2001 Programmering og systemudvikling

brugsmønsterbeskrivelse Efter identifikationen af aktører og første bud på en brugsmønstermodel skal de enkelte brugsmønstre beskrives generaliser over mulige senarier overvej hvad der igangsætter brugsmønsteret fastlæg eventuelle startbetingelser overvej mulige (forretningsmæssige) undtagelser eller fejlsituationer undlad trivielle fejl brug en skabelon Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling CD afspiller Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Et eksempel Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Skabelon Ó Bennedsen 2001 Programmering og systemudvikling

brugsmønsterovervejelser Små eller store use cases er lidt en smagssag men et brugsmønster skal være et samlet hele for aktøren et brugsmønster skal have et afsluttet forløb Brug abstraktionsmekanismerne <<includes>> <<extends>> Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Syntaks En brugsmønster beskrivelse har ingen fast syntaks En brugsmønster beskrivelse er ikke pseudokode, men bør have en fast, ensartet stilart sekvens 1) punkt 1 gerne nummereret valgfrie dele (…) undtagelse [undtagelsesnavn] valg hvis .. så … ellers ... gentagelse for hver … gør … (indtil …) <<uses>> subcase udfør … Ó Bennedsen 2001 Programmering og systemudvikling

Standard brugsmønstre Et system har typisk en række standard brugsmønstre Create Read Update Delete List Disse bør ikke beskrives bliver understøttet direkte af supermarkeds-grænsefladen Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Niveau Det sværeste ved at bruge brugsmønster teknikken ”det er al for abstrakt for mig” ”jeg drukner i detaljer” Husk målgruppe Overvej om der må refereres til for eksempel supermarkedsgrænseflade Iterér ”Som at skrive en god dansk stil” Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Et eksempel (1) Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Et eksempel (2) Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Start med det normale husk et brugsmønster dækker over flere mulige, ensartede scenarier man kan som hjælp skitsere sådanne undervejs først normaltilfældet så valg/alternativer, kombinationer og frihedsgrader sørg for at alle tænkelige scenarier er dækket af brugsmønsteret strukturer brugsmønstrene <<uses>> og <<extends>> Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Ikke vandfald men et af synene for at forstå systemet udvikles ofte hånd i hånd med klassemodellen Ó Bennedsen 2001 Programmering og systemudvikling

Fordele ved brugsmønstre Systemet ses fra brugerens side ikke teknik inddraget forståeligt for brugerne Gode til brainstorm Kan hjælpe ved håndtering af store systemkomplekser (Styring af) krav Kan bruges direkte til test Moderne :-) Ó Bennedsen 2001 Programmering og systemudvikling

Ulemper ved brugsmøsntre brugsmønsterfilosofien er ikke i sig selv objektorienteret kan friste til traditionel funktionel nedbrydning ignorerér indkapsling giver passive objekter der skal påvirkes i stedet for aktive objekter der selv ”finder ud af det” Kan fastfryse en arbejdsgang skal beskrive et afsluttet interaktion med systemet ikke en række sammensætbare delprocesser Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Ulemper (2) Svært at stoppe/finde et niveau størrelsen af brugsmønstre opdeling af brugsmønstre detaljeringsniveau ”formatitetsgrad” Ó Bennedsen 2001 Programmering og systemudvikling

Brugsmønstre og processen definerer funktionaliteten af systemet afgrænser egenskaber i klassemodellen definerer grænsefladen mellem omverdenen og systemet definerer test-cases kan definere delleverancer de er meget bestemmende !! Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Kvalitetskriterier Mål med brugsmønstre Brugsmønstrene skal være enkle, udgøre en afrundet helhed og være specificeret i relevant detalje Beskrivelsen af aktører og brugsmønstre skal fremme forståelse og overblik Beskrivelsen af de enkelte aktører og brugsmønstre skal være konsistent med deres indbyrdes struktur Strukturen skal leve op til de kriterier , som gælder for struktur mellem klasser Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Funktioner Brugsmønstrene kan/skal nedbrydes til atomare enheder - funktioner de håndtag der stilles til brugerens rådighed Ikast penge hold (model af) problem- området Udbetal gevinst spil Ó Bennedsen 2001 Programmering og systemudvikling

Funktioner En ressource, som stilles til rådighed for aktørerne og nyttiggør modelkomponenten i udførelsen af arbejdsopgaver Funktionaliteten skal være komplet og fastlægges i sammenhæng med brugsmønstrene Opstår ud fra brugsmønstre, klassemodellen og hændelser  funktioner   brugsmønstre Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Typer af funktioner Opdatering: En hændelse i problemområdet  tilstandsskrift i modellen gevinst ( højere kredit) Aflæsning: Fremvisning af (en del af) tilstanden af modellen Hvad viser de tre hjul Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Typer af funktioner (2) Signalering: En ændret tilstand i modellen  reaktion til omgivelserne ikke flere penge til gevinstudbetaling ( blinkende lamper, uvirksom maskine) Beregning: Der fremvises resultatet af en beregning (ofte baseret på tilstanden af modellen) hvordan har overskuddet været fra en given dato Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Find funktioner Ændringer og aflæsninger af klassemodel-len (CRUD funktioner) aflæsnings- og opdateringsfunktioner specificeres normalt ikke Hvilke hændelser i problemområdet skal registreres og hvordan Mønt indkastet arm trukket ... Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Find funktioner (2) Understøttelse af arbejdsopgaver signalerings- og beregningsfunktioner (samt ovenstående) hvilke beregninger er der behov for hvilke kritiske tilstande er der for modellen de komplekse specificeres Ó Bennedsen 2001 Programmering og systemudvikling

Overordnet arkitektur Grænsflade- komponent Brugergrænse- flade System- græsneflade Funktions- komponent Model- komponent Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Grænseflader Grænsefladekomponenten Kobler edb-systemet med dets omgivelser. For det første muliggør den for brugerne at anvende systemet. For det andet skaber den forbindelse til andre systemer Brugergrænseflade Den del af et edb-system, som realiserer interaktionen med brugerne System grænseflade Den del af et edb-system, der realiserer interaktionen med andre edb-systemer og apparater Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Brugsmiljøet Brugergrænsefladen afhænger af brugsmiljøet Ó Bennedsen 2001 Programmering og systemudvikling

Systematisk br.gr.flade design Jo mere ”administrativt” jo nemmere Standard supermarked Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Overordnet filosofi Funktions - objekt princippet Først vælges hvad der ønskes gjort herefter på hvad Indsættelse i en bank Objekt - funktions princippet Først vælges hvad der ønskes arbejdet på herefter hvad der skal gøres højre-klik Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling GUI og OO Med GUI går vi væk fra de transaktions-orienterede BGF til mange arbejds-opgaver Objekt-funktions princippet indføres i stedet for funktion-objekt princippet Begge principper kan understøttes af klassemodellen: Ó Bennedsen 2001 Programmering og systemudvikling

Hvorfor objekt-funktions princip Naturligt for brugerne at arbejde med !? Objekter - fokus på understøttelse af arbejdet/forretningsgangen Lettere ændring i arbejdsgange Al funktionalitet hørende til et objekt er samlet - i modsætning til funktions objekt princippet Stabil grundstruktur fra objekterne frem for strukturering efter funktioner Ó Bennedsen 2001 Programmering og systemudvikling

Systematisk br. gr.flade design For slutbrugere der med tiden vil have hundredvis af vinduer? For at mindske designernes ivrighed og kæpheste? Fordele let at lære at bruge billigere uddannelse alle systemet fungerer ens(-artet) jobmobilitet Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling To fremgangsmåder Supermarkedet (Objektdrevet) Specielle behov (transaktionsdrevet) En applikation består typisk af en blanding Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Analogi (1) Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Analogi (2) Ó Bennedsen 2001 Programmering og systemudvikling

1-1 sammenhæng: Objekt-vindue Et vindue præsenterer ideelt set en klasse Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Objektbillede (Alle) attributter fra klassen præsenteres Udvalgte associationer vises og oversættes til noget sigende (roller) Obligatoriske bør medtages For større objekter: bladring undervinduer forskellige views Ó Bennedsen 2001 Programmering og systemudvikling

Objektmenuens indhold Funktioner til behandling af objektet placeres under klassenavnet std. Punkter pkt. fra funktionslisten Gråtoning jf. tilstandsdiagram og andre regler Muliggør hop til associerede objekter via referencer-pkt. Ó Bennedsen 2001 Programmering og systemudvikling

Præsentation af aggregeringer Aggregerede objekter kan vises i objektbilledet eller opfattes som associ-erede objekter bounding box Ó Bennedsen 2001 Programmering og systemudvikling

Programmering og systemudvikling Listebillede De udvalgte objekter præsenteres evt ved ikon beskrivende egenskaber medtages Klik på element åbner objektbilledet Administrator klasse eller klasseoperation til at fremfinde evt direkte i DB Ó Bennedsen 2001 Programmering og systemudvikling

Præsentation i listebillede Antal forekomster der vises kan begrænses ved angivelse af søge-kriterier Generering af dynamisk SQL Bør kunne sorteres Ó Bennedsen 2001 Programmering og systemudvikling

Præsentation af hierarkier Overvej antallet af vinduer mht. plads til attributter og associationer funktioner Vær opmærksom på overlapping/disjoint hierarki abstrakte klasser Antallet af vinduer Ó Bennedsen 2001 Programmering og systemudvikling

Specialbehovsbilleder Ó Bennedsen 2001 Programmering og systemudvikling