Software Dokumentation

Relaterede dokumenter
SOFTWARE DOKUMENTATION

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Online billede filtrering

Undervisningsbeskrivelse

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

HTX, RTG. Rumlige Figurer. Matematik og programmering

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Visualiseringsprogram

KOMPONENT BESKRIVELSE

Overvågningskamera. ~Af Svend, Valdemar og Frederik~

Vurdering af kvalitet en note af Tove Zöga Larsen

Vejledning til opgraderet version af Danmarks Arealinformation

Svendeprøve Projekt Tyveri alarm

Udarbejdet af CFU Absalon

UML til kravspecificering

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Microcontroller, Arduino

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse Styring af layout.. 5. Zoom funktioner..

Tillykke med din nye Cobra søkort plotter. Her er en kort gennemgang i brugen af din nye kortplotter, og de ting du skal være opmærksom på.

1. Generelt om denne brugervejledning

Idriftsætningsmanual for Salto Clay

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

IT og Programmering eksamens projekt

Secure O matic. Gruppe 5 2. SEMESTERPROJEKT. Udgave. Accepttest-specifikation

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Programmering C RTG

Guide - Sådan opretter du en backup

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

SVINGNING. 2 x 5,3 kw AC

Arduino Programmering

Hvad skal du vide for at bygge din egen computer?

Brugermanual Beskrivelse af betjeningspanel med kontrolpanel

Mircobit Kursus Lektion 1

Microcontroller, Arduino

Dansk bruger manual Udarbejdet af Datalogisk A/S 1/27

Første del af rapporten består af et diagram, der viser, hvor mange point eleverne på landsplan fik i de enkelte opgaver.

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

Udskrivning og sletning af tilbageholdte job. Kontrol af udskriftsjob

Table of Contents Page 2

Velkommen til dit nye ihealth produkt

Sdr. Ringvej Vejen - Tlf Fax

Brugermanual Beskrivelse af betjeningspanel med kontrolpanel

Mircobit Kursus Lektion 5 (Du skal her vælge Lets Code og nederst Microsoft Block Editor.)

Brugermanual til CLINT Chiller/Varmepumpe enheder

Lektion 3. Grundlæggende programmering i VR

Hurtig Start Guide 1

Kom godt i gang med Fable-robotten

Klasse 1.4 Michael Jokil

Workshop om digitale fortællinger og multimodal formidling

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Kodning i Scratch. Kodning og programmering for 3. klasserne på Frederiksberg

Indholdsoversigt. Emne. Side

Brug af Discoverer. 1. Start Discoverer ved at klikke på knappen Discoverer på

Michael Jokil

Vi vil gerne starte med at danne os et overblik over hvem I er:

Kom godt i gang. med uddannelsesbogen en guide for undervisere

Hvad er Objekter - Programmering

Automatisk Vandingssystem

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre

App til museeum Af Alan Mohedeen 3.5

Sammenlign og byt. Et eksempel på dokumentering af et program

ELCANIC A/S. ENERGY METER Type ENG110. Version Inkl. PC program: ENG110. Version Betjeningsvejledning

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Vejledning Flex-Control:

VELKOMMEN 3. KOM GODT I GANG 4 Log ind 5 Kontrolpanel 6 Tilpas profil 7 Tilknyt hold 8 Tilknyt fag 9

Fable Kom godt i gang

Status vejledning. Vejledning i håndtering af status scanner, tømning og indlæsning til EasyPOS

Selektro CCM App. Brugermanual. Selektro CCM App Brugermanual DK. Selektro A/S, Erhvervsvej 29-35, DK-9632 Møldrup. Copyright Selektro A/S 2017

Fjernstyring m. Alarm funktion INSTALLATIONS & BRUGERVEJLEDNING

Udskrivning og sletning af tilbageholdte job Genkendelse af formateringsfejl Kontrol af udskriftsjob Reservation af udskriftsjob

TargetScale 2 Body Analysis Scale Quick Start Guide. ~ Side 1 ~

Tegninger ved skriftlig prøve i fysik A, htx

LASTSPIL 37 kw AC KRØLL CRANES A/S. INF. REF dk SIDE 1/9

Brugermanual. - For intern entreprenør

Fable Kom godt i gang

Indhold. Tablet Guides

Trafikmodellering* Claus Michelsen & Jan Alexis Nielsen. Syddansk Universitet

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

LabQuest Manual Til indsættelse af hukommelseskort (SD-kort) til at forøge dataloggerens hukomelse

EKSEMPEL PÅ ELEVOPGAVE TIL ARBEJDET MED PROGRAMMERING AF ARDUIONO MED LED BÅND

Kom godt i gang med din ipad

Guide til PlaNet v1.12. Original skrevet af:

Viditronic NDVR Quick Guide. Ver. 2.0

Vejledning til Vision Comfort-fjernbetjening

Vinterman app til chaufførerne. 22. November 2013

HUK (Hukommelsestest)

LCD Character display Intro

Kravspecifikation For. Gruppen

Brugermanual til MOBI:DO Make på Android

Dobbelt sender detektor med 4 kanals frekvenser. 1. Funktioner. 2. Produkt gennemgang

9. Tyverialarm med buzzer

Kvik guide: GT-Command Mobile

Kunne bruge tænde/slukke funktionen på maskinen

InterWalk brugermanual. Specifikt til iphone og ipod touch

Undervisningsbeskrivelse

Ruko Security Master Central Database

Diagnostic og Toolbox Instruktion. Lindgaard Pedersen A/S. Rev. 1.0 Side 1 / 14

Elektronikken bag medicinsk måleudstyr

Transkript:

Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX

Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software bliver en større og større del af teknologien. Det kan være som dele af teknologien, men også som selvstændige digitale teknologier. Det gør at der et øget behov, for at indfører det i ungdomsuddannelserne og i undervisningen. Det har gjort at software er kommet ind i faget teknologi på HTX. Det betyder, der er skabt et behov for at kunne dokumenter software produkter, og kvalitetssikre softwaren. Overblik Der findes forskellige ting til at danne overblik, men man skal først tænke i krav og test. Kravspecifikation Specifikke krav til softwaren der kan måles/testes. Det kan også være nødvendigt at åbne lidt op for softwaren for at teste de krav man har til softwaren. Så for hvert eneste krav skal man kunne teste om kravet er opfyldt. Det bør allerede ske i begyndelsen. Et eksempel kunne være at man ønskede at udvikle en app, hvor man kan få en alarm X minutter før en bus kører. Ideen er at når man stiger af bussen scanner man en QR kode og App en finder ud af hvornår den sidste bus kører og giver en alarm 10 min før den kører. Et krav kunne være: Krav Det skal være muligt at angive den tid der går fra alarmen til den sidste bus kører. Test #1 Indtast 10 min. Se at der kommer en alarm 10 min før sidste bus. #2 Indtast -5 og se at der kommer en fejlbesked: Ugyldig tid den skal være mellem 1 min til 20 min #3 Indtast 30 min og se der kommer en fejlbesked: Ugyldig tid den skal være mellem 1 min til 20 min #4 Vælg en bus, hvor den sidste kører efter middag og gentag test #1. Osv Så lidt mere ned i deltaljerne omkring krav til softwaren. Blokdiagram Overordnede blokdiagram til at beskrive de enkelte blokke og grænseflader. Da det skal skabe overblik er det vigtigt at der ikke er for mange blokke. Så max omkring 5 til 6 blokke, hvis man har behov for flere så heller lave 2 eller flere blokdiagrammer. Nedenfor er der angivet et blokdiagram over en temperatur regulering. Der er pile mellem de forskellige kasser og lidt omkring hvad der sker i kasserne og hvilke data der flyder fra den ene blok til den anden. Her ville man også kunne stille krav og test til de enkelte blokke, så man har veldefinerede grænseflader.

Use Case diagram Det sidste værktøj til at give et overordnede blik på softwaren ville være use case diagram. Det er noget der bruges til at fortælle hvordan man tænker at de forskellige bruger skal benytte softwaren. I UML er der en fin standard, som man kan udvide mere end i eksemplet nedenfor. Eksemplet er et software system til udlån af bøger på biblioteket. Der er kun medtaget låneren, for at holde det simplet. Det ses at der er nogle processer låneren er i berøring med og så er der nogle der kommunikerer internt. Dette kan være med til at beskrive hvordan systemet og brugeren kommunikerer sammen.

Pseudokode Pseudokoden er en måde at beskrive det man ønsker at programmer i almindelige ord. Hvis vi igen tager udgangspunkt i eksemplet med varmeleget oppe fra blokdiagrammet. 1. Metode 2. Metode (mere detaljeret) Uendeligt loop ( Uendeligt loop ( Mål temperatur Mål temperatur Tænd/sluk varmelegemet Er temperaturen under set temperaturen? Vis temperatur ) Tænd varmelegemet Ellers Sluk varmelegemet Vis temperatur ) Pseudokode kan både benyttes som dokumentation, men også et værktøj under udviklingen. Dette er nogle metoder til at beskrive et overblik over den software man udvikler. Dt vil være naturligt at lade det indgå i udviklingsprocessen. Dokumentation af koden Flowdiagram Flowdiagram eller flowchart er en gammel metode til at dokumenter et program eller en del af et program. Det virker rigtig godt til at se forgreninger, input, output og start/stop. Så det beskriver flowet i programmet. Flowchart kan omsættes direkte til kode, og er derfor meget anvendeligt. Der er en række symboler, som er beskrevet nedenfor:

Tegneregler: Streger tegnes som rette linjer med pil. Kun en indgang til hvert symbol Kun beslutningssymbolet- diamanten har flere udgange. Nedenfor angivet et simpelt eksempel, hvor man lægger 1 til indtil man når til et givet tal N: Her starter programmet. Her indlæses et tal N, eksempelvis fra et tastatur. Variablene initialiseres, så vi ved hvad værdier de har i begyndelsen. m (som er 1 første gang) lægges til variablen sum og gemmes i sum. Beslutning hvis m er noget op på det indtastede tal N gå ned til næste trin. Hvis den ikke er kommet op på N, læg 1 til m og gem den i m og gentag. Udskriv sum til et display. Her slutter programmet. Det ses at dette kunne blive nogle meget lange flowcharts, hvis programmet er meget langt. Så man kan evt begrænse det til de passager i koden man gerne vil fremvise eller som har en kompleks struktur. Tilstandsdiagram Tilstands diagrammer er gode til at beskrive forskellige tilstande et program kan være i (venter det eksempel på input). Det gode ved tilstandsdiagrammer er at de giver en mulighed for at se tilstande i programmet som kan være lovlige. Man kan sige at det er en tabel over alle tilstande og hvad programmet skal gøre for at flytte fra en tilstand til en ny tilstand.

Design af tilstandsdiagrammer Blokkene kaldes tilstande (state) Forbindelserne kaldes overgange (transitions). Der skal altid angives hvilket signal, der får enheden til at skifte tilstand. Tilstandene svarer til udgangskombination Overgangene svarer til indgangskombinationer I eksemplet nedenfor er det samme som oppe under flowdiagrammet ovenfor, med at lægge nogle tal sammen. Der er i alt 3 forskellige tilstande (indlæsning af tal, beregning, udskrivning af tal) Ligesom med flowchart giver det mest mening, at vælge noget ud fra ens kode og beskrive disse elementer med tilstandsmaskiner. Det er bedst at tage de steder, der er lidt mere komplekse. Klassediagram Det kan være ret svært at beskrive eksempelvis noget der er lavet i app-inventor, altså med objekter i et flowdiagram. Men der imod giver det god mening at beskrive en metode i et objekt med et flowdiagram. I mange software udviklingsværktøjer er der en grafisk overflade, de er ofte objekt orienteret (det kendes fra app-inventor). Her vil klassediagrammer være meget anvendelige, så man kan beskrive de enkelte metoder og attributter. En klasse består af en metode der udfører en handling (det kan eksempelvis den handling

der sker når man trykker på en knap). En attribut kan eksempelvis være teksten på knappen eller farven på knappen. Jeg har valgt at tage udgangspunkt i en UML beskrivelse af klasser. Så en klasse består af attributter og metoder, attributter er normalt private, hvilket vil sige at de kun ændres gennem en metode. Dvs at ændringen af navnet på knappen skal ændres gennem en metode. Nedenfor er der vist et eksempel med dyr, hvor de øverste ting er attributterne, som navnet på dyret. Det neden under stregen i midten er metoder. Der er altid en metode til at skabe dyret i dette tilfælde metoden Dyr(). Herefter kan man benytte metoden setnavn() til at give dyret et navn eksempelvis en ko setnavn( Ko ). Det betyder i dette tilfælde at attributten navn bliver sat til ko. Ideen er at lave en tegning som nedenfor og beskrive hvad de forskellige metoder gør. Eksempelvis vil man kunne beskrive metoden setnavn() ved: setnavn(nynavn : String) Beskrivelse Input nynavn Output Sideeffekt Sætter navnet på et dyr eller ændre navnet. Tekststring med navnet på dyret na na Output er hvis der kommer noget tilbage/retur fra metoden, som eksempelvis i metoden getnavn() : String, som giver navnet på dyret tilbage. Sideffekt kan være at den sender en besked via bluetooth eller åbner et nyt window. Nogle klasser er koblet til hinanden det kunne være elev og lærer, men det er ikke de samme ting man vil gemme. Det kalder man associated (tilknyttede) klasser, de fælles ting kunne man have i en overordnet klasse skole, som både indeholder elever og lærer. Se nedenfor.

Der en sammenhæng mellem laerer og elev, fordi en lærer har altid elever ellers var han/hun ikke lærer på skolen. Dvs man ville normalt have en klasse der knytter dem sammen. Ud over at de er på samme skole. Det er dog sjældent man laver denne forbindelse. Arv er en måde til at en klasse kan arve ting fra en anden klasse: Så både bil og bus har en registreringsnr., så pilene indikerer at Bil og Bus arver fra Koeretoej.

Det efterfølgende er lidt mere avanceret og er måske i nødvendigvis et krav til dokumentation. Det er udelukkende taget med p.gr.a helheden. To andre forbindelse som består af en åben diamant (aggregering) og en lukker (komposit). Komposit er lidt stærkere end aggregering, da et bord kun er et bord hvis det har ben. Computeren kan godt leve uden CD ROM drev. Kommentar i koden Det er vigtigt at skrive kommentar i koden da det hjælper til at forstå hvorledes den er opbygget. Alle procedure, funktioner, metoder og objekter bør have en kommentar i toppen som beskriver hvad den laver, input, output og sideeffekter. Så i kommentarerne kunne se således ud: Generelt Beskrivelse: Hvad gør funktionen m.m. Input Variabler: Beskrivelse af alle input variablerne Output Variabler: Beskrivelse af alle output variablene Sideeffekter: Ændringer af globale variable, sender beskeder til andre enheder m.m Eksempel med cirkel // Beskrivelse: // Beregner areallet af en cirkel. // Input: // float r -Radius på cirklen. // Output: // float A Areal af cirklen. // Sideeffekter: // Ingen I selve koden er det også vigtigt at skrive kommentarer neden for er angivet to eksempler af en funktion der beregner areallet af cirklen: Overfladisk Detaljeret

// Beskrivelse: // Beregner areallet af en cirkel. // Input: // float r -Radius på cirklen. // Output: // returner float Areal af cirklen. // Sideeffekter: // Ingen // Beskrivelse: // Beregner areallet af en cirkel. // Input: // float r -Radius på cirklen. // Output: // returner float Areal af cirklen. // Sideeffekter: // Ingen float BeregnCirkelAreal(float radius) { float pi=3.14; float areal; areal = pi*radius*radius; return areal; float BeregnCirkelAreal(float radius) { float pi=3.14; // definer pi float areal; areal = pi*radius*radius; // beregner areallet return areal; // returner areallet af cirklen Det er ikke således at det ene er bedre end det andet, det kan give god mening kun at skrive lidt kommentarer, hvis funktionen er forholdsvis simpel. Eksempelvis i det overfladiske giver det god menig her da der ikke sker så meget i funktionen. Test Der skal laves en testplan, som tester for alle kravene oppe i specifikationen samt evt afhængigheder, og skriv ned om testen er succesfuld. Hvis der er test cases som ikke lykkes skriver man en kommentar om hvad man har iagttaget. Dette gælder også ved begrænset succes. Afhængigheder kunne være hvis koden er i en bestemt tilstand, kunne man prøve at teste for ugyldige tilstande. Softwaren skal tests af folk der ikke har været med til at udvikle softwaren, så funktionaliteten, layout og robustheden bliver kvalitetssikret. Vigtige ting Start med at dokumenter det overordnede, så læseren får et overblik Dokumenter så meget som det er muligt inden du går i gang med koden Brug nogle af de værktøjer der er gennemgået her til skabe overblik Lav kommentarer til koden så den kan forstås af en nybegynder Lav den tilhørende dokumentation så den kan forstås af en nybegynder Lav kommentar i koden imens du skriver koden Husk at opdater dokumentationen undervejs og når man er færdig med koden Overvej hvilken struktur koden har og vælg den dokumentationsform der passer til Som hovedregel har man altid lavet for lidt dokumentation.

Digitale værktøjer Der er specielt et gratis værktøj som er nemt at gå til, samtidig køre det i browseren. Her kan man tegne de fleste diagrammer: https://www.draw.io/ Konklusion Dokumentation af programkomponenter såsom programbiblioteker, kodesegmenter, procedurer og eksterne biblioteker kan hjælpe eleven til at udvikle korrekte programmer, der løser et problem. Ved eksempelvis at benytte modeller, pseudokode, flowdiagrammer og/eller problemtræer i udviklingsprocessen kan eleven blive bevidst om, at et programs funktionalitet bedst beskrives i et højniveau sprog (f.eks. ved at beskrive hvoledes brugeren interagerer med programmet) og ikke i et lavere niveau, der er karakteriseret ved at forklare, hvordan de enkelte instruktioner i programmet fungerer. Klasser beskrivelse med metoder og attributter eksempelvis hvis man har en knap, som sender en besked (metode), knappen er grøn (attribut). Dog vil man ikke nødvendigvis beskrive alle metoder og attributter i dette eksempel er det måske ikke nødvendigt at beskrive attributten med farven. Kommunikation og tilknytninger mellem de forskellige klasser er også vigtig. Tidslinje diagrammer (er for kommunikation mellem sender og modtager eller i realtidssystemer) Softwaren dokumenteres med flow chart og ledsagende beskrivelser. Desuden vedlægges en kommenteret kildekode som bilag. Det er vigtigt, at eleven i detaljer begrunder de valg, der ligger bag de softwaremæssige udformning.