© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf. 70131440 Side 1 Simon Otto Nielsen Diplomingeniør i informations og kommunikationsteknologi.

Slides:



Advertisements
Lignende præsentationer
Et projekt til undersøgelse af udviklingsmetodologi.
Advertisements

Trehøje-Pigerne Side 1 Vejledning til brug af hjemmesiden Det er slet ikke så vanskeligt – så brug hjemmesiden flittigt… Det er.
Samspil med den offentlige sektor er afgørende
Første gang du logger på, skal du bestille ny adgangskode her
Klik på Aktivér redigering på meddelelseslinjen.
Log direkte fra GSAK Der er en kæmpe fordel at logge direkte fra GSAK, for det første er det let, da men ikke skal åbne alle cachesiderne for at kunne.
Videregående pc-vejledning Modul Sik: Sikkerhed Lidt om antivirusprogrammer mm. 60+Bornholm.
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Effektive procedurer med integrerede webservices Applikationer til Office - Smart Clients Case: Digitalt Forvaltningstjek hos Erhvervs- og Selskabsstyrelsen.
1 Test – bl.a. med fokus på sharepoint løsninger Automatisering af deploy og test ifm. VSTS •Kort om build jobs med Team Foundation Server •Support for.
Test First Development
Beskyt din computer og dine data!
Sikkerhed/Otto Knudsen 1 Diagnostics  Debug af web-applikationer.
Undervisning i Plone CMS marts 2014 Lær at lægge indhold på koncernens websteder.
Præsenteret af: Peter Bøhme Projektleder på Office XP
Velkommen.
Et projekt til undersøgelse af udviklingsmetodologi.
GetOrganized for SharePoint
NetBeans Installation og brug.
Hvordan påvirker NemKonto din hverdag…?. NemKonto, hvornår?
Sådan skaber vi et kampagnekorps Baggrund Foreningen skal bruge flere frivillige til centrale og lokale events For fortsat at sikre midler til foreningens.
Digital Post til foreninger Kommunikation mellem det offentlige og din forening.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
1 Kom i gang med it på IT-Universitetet Introkursus forår 2007.
Overgang fra BPOS til Office 365 for eksisterende BPOS-kunder
Introduktion til Microsoft CRM Christian Cletus Bjørn Eilertsen.
Arkitektur - Sikkerhed
Exceptions. 2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
IT – sikkerhed Fysisk sikkerhed Logisk sikkerhed
Adgangsstyring og brugeradm.
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
Mød Microsoft – for udviklere & arkitekter Visual Studio, Express og Team System Niels Hilmar Madsen Microsoft
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Søg på kundes navn. Klik evt. på inaktive eller filialer Vælg når søgeresultaterne fremkommer, et af resultaterne ved at sætte et kryds i boksen, og tryk.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
Arkitektur - software. RHS - Informationsteknologi 2 Software-arkitektur Formålet med software-arkitekturen er at definere en software-”platform”, som.
1 Erfaringer med produkter Hvilke problemstillinger er vi stødt på ved indførsel af LON- teknologi i vores produkter? Hvilke fejl har vi set i marken?
Uddannelse, marts 2007 Søren Vallø Business Development Manager.
Et projekt til undersøgelse af udviklingsmetodologi.
Brønden. Brøndopkoblingen Ved DBC Ding Ding - Hosting Den server som Ding løsningen kører på. ● Internt hos biblioteket ● Hos kommunen ? ● Tredje udbyder.
Nyt Fælles Bibliotekssystem
Office365 – Bliv klar (få evt
SMALL BUSINESS er BIG BUSINESS Windows Vista og Office 2007  -testere søges… Christian Ringheim og Anders Langvad-Nielsen
Videregående pc-vejledning 60+Bornholm Velkommen til.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Introduktion til Lync Windows Store-appen
Fremtidsplaner – herunder nyt fra Tabulex, KMD og den nye SMS-advisering V. Ole windeløv.
Lion CMS Introduktion Sådan bruger du systemet. Trin 1 Tryk på login knappen Skriv dit brugernavn Skriv dit password Tryk på OK (Login) knappen Du er.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
Procestræ under afvikling af cp init login shell cp cp src dest.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Indledende Programmering Uge 6 - Efterår 2006
UDVIDELSE Automatisk backup Introduktion Se, hvordan du opretter cron jobs til automatisk backup med Akeeba Backup. Rita Linde, 10people, Maj 2015.
Effektiv vækst - Workshop
Beskyt din virksomhed- Workshop
Problem med at følge de konstant voksende datamængder
Videnskabeligt projekt
Intern tidsmæssig omkostning
Inspirationsdag 2018 It-sikkerhed It-afdelingen i Sekretariatet
Software Construction
Præsentationens transcript:

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 1 Simon Otto Nielsen Diplomingeniør i informations og kommunikationsteknologi fra SDU Odense i januar 2011 Senior Developer hos Netcompany Primær kundes it systemer - 4 kodebaser af forskellig alder linjer kode - 3 forskellige teknologier Primære teknologier Microsoft Dynamics CRM 2011 EPiServer CMS

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 2 Typisk debug flow Udvikling af ny kode eller brug af eksisterende løsning Test og verificering af der er en fejl Fejlsøgning på fejlkilder Debugging af relevant kode Udbedring af kodefejl Test og verificering af rettelsen fungere Fejl rettet

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 3 Fejlsøgning IT Systemer bliver mere og mere komplekse Vi kan ikke skrive fejlfri software Test kommer ikke ud i alle hjørner af løsningen Der kommer flere og flere fejlkilder –Office Installeret supporteret OS Installeret office pakken –Office 365 Adgang til internettet Gyldigt login Ledig server kappacitet Browser der er supporteret Backup af brugerdata

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 4 Fejlsøgning Udelukkelse af bruger fejl –Browsermode, cache, manglende viden om systemet, osv. Afgrænsning af fejlkilde –Indsnævring af ramte systemer og funktionalitet Undersøgelse af miljø –Hvad andet sker der på serverne –Hvad andet sker der på netværket Undersøgelse af input data –Skyldes fejlen eksterne data som håndteres uhændsigtsmæssigt

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 5 Historie fra erhvervslivet Bruger foretager ændring sendes Data opdateres manuelt på baggrund af Data kopieres til en database Datakvalitet sikres og der tilføjes yderligere data Data kopieres til database Data importeres fra database Data udstilles via webservice Bruger får mulighed for at se sine data

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 6 Historie fra erhvervslivet medlemmer er afhængige af deres data står rigtigt for at kunne logge ind Data kommer fra ekstern leverandør via en kopiering til en staging database Fuld load af data tager ca. 3 dage, jobbet køre automatisk hver fredag lige før midnat Systemet verificere data kvalitet, ikke kvantitet Ekstern leverandør misser data leverancen så der ikke er nogen data Alle medlemmer fjernes fra systemet Fejlen opdages først tirsdag da alle medlemmer er fjernet Førte til tjek på data kvantiet Fejlfri kode der ikke tager højde for alt kan føre til uventet fejl

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 7 Test Er oftest sket manuelt Har ofte ikke haft stort fokus Er på vej ind efter lektioner lært af f.eks. Amanda og polsag

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 8 Unit tests Sikre at koden bliver testet på samme måde hver gang Gør test til et klik med musen i stedet for en langsommelig procedure Bliver brugt mere og mere Kernen i Test Driven Development

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 9 Debugging Koden bliver mere og mere kompleks Sikkerhed for at input data er som forventet Sikkerhed for at output data er som forventet Let at manipulere med data imens koden køre Fanger simple fejl hurtigt Giver tid til at grave i dybden med komplekse problemer

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 10 Simpel kode Let at overskue Indeholder sjældent fejl public static void main(String[] args) { System.out.println("Hello World!"); } public double CalculateTax(int amount, double tax){ return amount*tax; }

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 11 Kompleks kode med fejlhåndtering Fejler sjældent Får sjældent systemet til at gå ned De typiske fejl senarier er oftest gennemtænkt Let at fejlsøge på det præcise senarie public Data retriveData(UUID ID) { try{ return _DataManager.getData(ID); } catch (Exception ex){ _Logger.log("Error in retriveData" + ex.toString()); } return _DataManager.getDefault(); }

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 12 Kompleks kode uden fejlhåndtering Fejler oftere Svært at fejlsøge Den egentlige fejl kan være skjult længere nede i koden Typiske fejl er typisk ikke gennemtænkt Indeholder ofte skjulte null pointers public void setBookings(){ String[] instruments = BookingSystem.getInstance().requestListOfOwnBookings(); int length = instruments.length; for (int i=0; i<length; i++){ table.setValueAt(instruments[i], i, 0); } String[] times = BookingSystem.getInstance().getBookingTimes(); length = times.length; for (int i=0; i<length; i++){ table.setValueAt(times[i], i, 1); } }

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 13 Det meget generiske Fejler sjældent De typiske fejl er oftest gennemtænkt Oftest single point of failure Er svært at sætte sig ind i Tager lang tid at debugge

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 14 Det meget generiske protected TResponse PerformCall (Func call, Trequest req, TClient cli) where TClient : class { var context = BeforeCall(req); try { var response = call(cli, req); AfterCall(response, context, false); return response; } catch (FaultException ex) { string message = String.Format("Webservice ID: '{0}' threw exception after {1} ms.", context.CallLogId, context.Stopwatch.ElapsedMilliseconds); Logger.ErrorFormat(ex, message); throw; } catch (Exception ex) { string message = String.Format("Webservice ID: '{0}' threw connection exception after {1} ms.", context.CallLogId, context.Stopwatch.ElapsedMilliseconds); Logger.ErrorFormat(ex, message); throw; }

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 15 Historie fra erhvervslivet Ved skift af hjemmeside layout begyndte dankort indbetalinger at fejle. Fejlen skyldtes en nullpointer exception fordi dankort modulet ikke længere lå samme sted på siden som det plejede. ExtensionPageData structure = PageDataManager.LoadPageStruct(requestedPageReference); var contentArea = structure.ContentAreas[0]; var data = contentArea.ContentFunctions[0]; var area = data.ContentAreas[1]; Fejlen havde været langt mere åbenlys hvis der var bedre logning omkring kaldet.

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 16 Fiddler

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 17 dotTrace

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 18 SQL Profiler Del af Microsoft SQL Server

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 19 Debugging i praksis (Eclipse demo) Breakpoints Watch/Expresions Locals Step in Step over Step out Unittest

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 20 Debugging tips og tricks Start altid fra toppen af det flow der fejler. Tjek forventet input/output på alle metoder er korrekt, inden der hoppes videre til næste metode. Find ud af hvad du forventer en metode gør inden den kaldes, hvis den giver andet output end du forventer undersøg hvorfor. Brug breakpoints i stor stil, flyt dem efterhånden som du ved koden fungere som du forventer. Fjern flest mulige eksterne fejlkilder (Databaser, filsystem, webservices osv.). Forklar problemstillingen for en anden, ofte belyser det problemstillingen fra en ny vinkel.

© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 21 Workshop Opgaver kan findes på