Petter Berglund. Sammanfattning

Storlek: px
Starta visningen från sidan:

Download "Petter Berglund. Sammanfattning"

Transkript

1 EDA270 - Coaching av programvaruteam Verktyg för kodanalys Petter Berglund D05, Lunds Tekniska Högskola dt05pb2@student.lth.se Sammanfattning Verktyg för kodanalys blir allt vanligare i programvaruutvecklingsprojekt för att underlätta utvecklingsprocessen och öka kodkvalité. Denna artikel ämnar introducera ett antal verktyg för kodanalys av Java-kod. Artikeln kommer introducera metoder för kodanalys och verktygen PMD, SemmleCode, FindBugs och RevJava.

2 Introduktion Moderna programvaruutvecklingsprojekt har ständiga krav på sig om hög funktionalitet, stabilitet, effektivitet och kort utvecklingstid. Att skriva programvara utgående ifrån dessa krav är problematiskt då de indirekt eller direkt påverkar varandra. För att lägga till ny funktionaliteten i ett program krävs det en utökad kodbas, vilket i många fall leder till både försämrad stabilitet och effektivtet. Kort utvecklingstid ger mindre tid för att testning vilket kan leda till att allvarliga buggar inte upptäckas och lanseras med en färdig produkt. Kort sagt, det finns många anledningar till att det är svårt att skriva programvara med dagens höga krav. Ett sätt att effektivisera en utvecklingsprocess är genom verktyg som analyserar kod automatiskt. Verktyg underlättar genom att en delmängd av testning och analys av programvara kan automatiseras, vilket leder till att mer resurser kan spenderas på själva utvecklingsprocessen. Kodanalys kan utföras i många varianter, men gemensama nämnare är att problem ska kunna identifieras, kodkvalité och stabilitet förbättras. Då verktyg för kodanalys finns för i princip alla programmeringsspråk är denna artikel begränsad till verktyg som analyserar Java-kod. Verktygen kommer att introduceras och utvärderas utgående ifrån deras lämplighet i programvaruutveckling. Metoder för kodanalys Kodanalys kan göras utifrån två differentierande metodiker, statisk och dynamisk analys [5]. Verktygen som introduceras i artikeln använder statisk kodanalys men dynamisk analys kommer presenteras likaväl. Att verktyg som utför dynamisk analys inte introduceras beror på att det krävs mer förberedelser i form av relevanta körningar för att kunna utvärdera verktygen. Statisk kodanalys Statisk kodanalys är inte en enskild metod för kodanalys utan en benämning på alla former av automatiserad analys som sker på källkod. Analyserna kan ske på enskilda metodanrop upp till hela program beroende på vilket verktyg som används. Metoder som utnyttjas för statisk kodanalys är samtliga matematiskt betingade. Analyser utförs genom att approximera matematiska funktioner som representar programmet i något tillstånd. I många fall kan dessa matematiska approximationer imitera ett program väldigt nära vilket medför att utvärderingar av de matematiska approximationerna återspeglas på programmet. Vid statisk kodanalys är det vanligt förekommande att precision i modellen abstraheras bort genom att ersätta faktiska värden med symboliska värden, detta för att förenkla beräkningar. Statisk kodanalys används aktivt inom analys av säkerhetskritiska program just på grund av dess matematiska grund. Dynamisk kodanalys Dynamisk kodanalys kan ses som en motsats till statisk kodanalys, då dynamisk kodanalys exekverar programmet som ska analyseras och utvärderar det under exekveringen.

3 Dynamisk kodanalys utförs genom att programmet som ska analyseras exekveras i en virtuell exekveringsmiljö eller via specialla bibliotek som sonderar programmet så att dess exekvering kan följas i dess ordinare exekveringsmiljö. För att dynamisk kodanalys ska vara effektiv krävs det att en stor mängd av koden täcks av tester så att man på förhand vet att programmets samtliga exekveringsmöjligheter kommer att exekveras. Dynamisk kodanalys lämpar sig väl för att upptäcka exekveringsfel som minnesläckor och problem orsakade av samtida exekvering (concurrent execution). Verktygsintroduktion Verktygen som undersöks är alla utvecklade för kodanalys men har olika mål och metoder. Kod kan analyseras utifrån källkod, bytekod, mätvärden (metrics) och regelverk. För att jämförelser mellan verktygen ska vara relevanta kommer varje verktygs mål och metod att presenteras kortfattat. PMD är ett verktyg utvecklat för statisk kodanalys av källkod, släppt under en licens som bygger på Berkeley Software Distribution (BSD) licensen. Källkoden som skall analyseras kommer att passera en tolk som översätter koden till ett Abstrakt Syntax Träd (AST). Ett AST representerar det tolkade programmets struktur på ett sätt som utelämnar syntaktiska detaljer [4]. Analysen sker genom att en uppsättning regler skrivna i ett specifikt språk översätts till matchningar som får traversera trädet. Om reglerna matchas mot någon av trädets noder representerar detta ett regelbrott vilket kommer rapporteras. PMD tillhandahåller en stor mängd fördefinerade regler och stödjer utveckling av egna regler. PMD har utvecklats för att upptäcka enklare fel i kod som oanvänd kod, for-loopar som borde vara while-loopar, felaktigt användande av StringBuffer och liknande fel. RevJava utför statisk kodanalys på bytekod och kan därför utföras på program där källkoden inte är tillgänglig. Programmet är släppt under en proprietär licens. RevJava har utvecklats för kunna automatiskt ta fram en stor mängd mätvärden för ett programs interna struktur och för att kunna utgående ifrån olika regelverk skapa kritiska kommentarer (critics) om potentiella svagheter i koden. Grundutbudet på regler är stort men går att utökas genom egen utvecklade regler för att kunna anpassas till speciella projekt [2]. SemmleCode är ett verktyg för statisk kodanalys utifrån olika regelverk. Semmlecode är kommersiellt men tillhandahåller en gratis proprietär version som plugin till Eclipse. Reglerna avviker lite från PMD och RevJava i den mån att de är uppbyggda som frågor som ställs till Java-kod. Beroende på frågans uppbyggnad kan mätvärden genereras, buggar lokaliseras, avvikelser från kodningsstandarder identifieras och förändringar i kod kan analyseras utifrån dess påverkan på koden [6]. FindBugs är ett verktyg för att finna mönster i kod som kan orsaka problem via statisk kodanalys. Fundbugs är släppt under Lesser General Public License (LGPL) [7]. Analysen utförs på bytekod utgående ifrån regelverk som refereras till som bugg mönster. FindBugs stödjer ett stort regelverk som standard men kan även utökas ytterligare via en plugin-arkitektur [3]. Utvärdering Samtliga verktyg kommer att utvärderas mot Team 02s enduro-projekt från kursen Programvaruutveckling i grupp EDA260. Projektets tillstånd i korta ordalag vid

4 utvärderingen är följande: Antal tester: 45 Antal varningar i eclipse (Av typen oanvända import, oanvända variablar etc.): 47 Antal paket: 5 Antal klasser: 17 PMD PMD kan utnyttjas som ett fristående verktyg eller enkelt integreras med olika utvecklingsmiljöer, i detta fallet har PMD utvärderats som ett plugin till Eclipse. När PMD är installerat som plugin till Eclipse kan det utnyttjas på två olika sätt, antingen genom manuellt användande, eller genom att integereras med Eclipses problem-flik. Om PMD integreras med Eclipses problem-flik körs PMD automatiskt vid kodändringar. Figur 1: Visar ett utdrag ur PMDs rapport och en översikt av rapporterade regelbrott. Resultatet från PMD visar att koden innehåller totalt 106 regelbrott varav de tidigare 47 regelbrotten Eclipse rapporterar är exkluderade. Som översikten visar kan mycket av regelbrotten spåras till testfallen, detta antyder att mindre tid spenderas på att korrigera problem med testfallen. Regelbrotten som rapporteras är alla av olika karaktär, en del av de upptäcka regelbrotten är brott mot kodningskonventioner som anses vara bra att följa. Regelbrott nummer två i rapporten uttrycker att variabelnamn inte bör vara för korta t ex. Andra regelbrott pekar på möjliga optimeringar, variablar som kan deklareras som final då de endast initialiseras i konstruktor eller vid deklarering.

5 Fördelar PMD lämpar sig mycket väl för att upptäcka mindre optimeringar, avvikelser från kodkonvetioner och s.k. "Code smells" i ett projekt speciellt då PMD körs integrerat med Eclipses problem-flik. Det stora utbudet av färdigskrivna regler gör verktyget enkelt att använda utan egna modifikationer, medans stödet för egna regler utökar användningsområdena. Nackdelar Trots att det är en stor fördel med färdigskrivna regler kan dessa vara problematiska då konfigureringsgränssnitt inte är helt självklart, det kräver vissa insatser av användaren för att utesluta vissa regler. PMD saknar möjlighet att förklara ett regelbrott utifrån den regeln som brutits, dv s det lämnas till användaren att tolka eller slå upp i regelverket vilket fel detta motsvarar. RevJava RevJava körs som ett fristående javaprogram och konfigureras enkelt via ett grafiskt gränssnitt. Eftersom RevJava analyserar bytekod kommer projektets release i jar-form analyseras. Figur 2: Statisk från RevJavas analys Figur 2 visar den sammanfattande statistiken från RevJavas analys, totalt 210 insamlade kritiska kommentarer gällande projektet. Statistiken ger en snabb översikt över på vilken nivå problem eventuellt befinner sig, i projektet gäller nästan 60% av alla kommenterar enskilda metoder. RevJavas vy över programstruktur ger en översikt över programmets struktur och information om varje pakets kritik och mätvärden.

6 Figur 3: RevJavas vy över programstrukturen för projektet innehåller stora mängder information presenterad i en välstrukturerad lista I figur 3 visas information om kritik och mätvärden paket- och klassvis. För att det inte ska vara några tveksamheter kring vad man studerar, är varje nivå kodad med bokstäver. P Paket C V M Klass Variabel Metod

7 Figur 4: RevJavas vy över mätvärden Kritiken som RevJava producerar är välformulerad, ett måste för att åtgärder ska vara möjliga. I vissa fall framgår det tydligt av detaljbeskrivningen hur problem kan lösas. Fördelar RevJavas mätvärden som produceras är intressanta för att identifiera svagheter i arkitekturen, stora klasser, många beroenden eller dylika designproblem kan lätt upptäckas. RevJava lämpar sig väl för att användas i samband med utvärdering av milstenar eller löpande under utvecklingsprocessen. Eftersom RevJava utför analysen på bytekod behöver en utvärderare inte ha tillgång till källkoden och kan utgående ifrån upptäckt kritik och mätvärden granska programmets struktur. Detta kan utnyttjas i samband med acceptanstestning, då programvaran kan analyseras med RevJava för att upptäcka eventuella svagheter eller framtida problem i designen. RevJava kan utnyttjas för att se hur refaktoreringar påverkar kodens struktur genom att jämföra mätvärden innan och efter. Nackdelar Ett problem med RevJava är att information presenteras för användaren på ett sätt som gör den svårtolkad. Många utav vyerna innehåller stora mängder information som gör det svårt att få en bra uppfattning om vad det är som studeras, mer specifika vyer tappar viktig information. RevJava kräver att koden kompileras för att kunna utnyttjas och kan inte integreras mot te x Eclipse vilket försvårar kontinuerlig användning.

8 SemmleCode SemmleCode är utvecklat för att användas i Eclipse som ett plugin. En stor skillnad gentemot PMD och RevJava som analyserar koden utifrån en stor mängd krav kan SemmleCode begränsas till att ställa en fråga i taget. I Eclipse kan SemmleCode utnyttjas på olika sätt, men ett utav de bekvämare tillvägagångsätten är att utnyttja Eclipses "Run"-meny och välja att köra SemmleCode. Grundutbudet på frågor är stort och kan fördelaktigt utnyttjas utan att kompletteras med egna. Figur 5: Ett exempel på en testkonfiguration för SemmleCode och resultatet från en fråga gällande medelantalet metoder per paket. Fördelar SemmleCode stödjer många typer av presentationer av resultat, allt ifrån grafer till trädvyer vilket ger ett snyggt resultat. I jämförelse mot andra verktyg är SemmleCode mycket mer anpassningsbart då det är så gott som utvecklat för att användas med egna frågor, men begränsas av att generell kodanalys kräver stora insatser av användaren. SemmleCode lämpar sig väl för att identifera specifika problemområden, men kan även utnyttjas för att

9 förutsäga en refaktorerings påverkan på koden i överlag. Te x kan en en fråga genereras för antalet beroenden mellan klasser. Om frågan ställs först innan och sedan efter refaktoreringen införs kan resultatet enkelt jämföras och en eventuellt onödig refaktorering undvikas. Nackdelar Ett problem med SemmleCode är att det är svårt att ställa flera frågor och få ett övergripligt resultat. Problemet beror mycket på att varje enskild fråga presenteras i en enskild flik. För en delmängd av frågorna kan resultatet presenteras i Eclipses problem-flik som varningar, vilket underlättar hantering. I jämförelse mot de andra verktygen är Semmlecode svårare att använda då det kräver mer insatser från användaren. FindBugs FindBugs finns i tre utförande, ett kommandoradbaserat, ett som Eclipse plugin och ett med grafiskt gränssnitt. Eftersom alla varianter är likvärdiga kommer FindBugs som plugin till Eclipse att utvärderas. FindBugs kan integreras med Eclipses problem-flik och presenterar där upptäckta problem likväl som i kodvyn. Problemidentifiering kan automatiseras i samband med att klasser uppdateras, så att informationen till användaren alltid hålls uppdaterad. Figur 6: Eclipses problem-flik med FindBugs problembeskrivning. Vid en problemidentifiering på projektet upptäcks totalt 182 problem, varav 76 lyfts fram till användaren (inkluderat de 47 initiala varningarna). Att bara 76 lyfts fram till användaren beror på att FindBugs standardinställning gällande problemrapportering försöker filtrera ut allvarliga problem som kräver korrigering. För varje problem som identifieras kan FindBugs visa en problembeskrivning med hänvisning till vart problemet är lokaliserat som Figur 7 visar.

10 Fördelar FindBugs är ett bra komplement till Eclipses inbyggda problemhanterare och är lättanvänt på grund av integreringen med Eclipses problemflik. Eventuella upptäcka problem markeras med en liten insekt i kodvyn (från engelskans bug, insekt) så utan att konsultera problemvyn kan problem upptäckas direkt. I princip alla problem som upptäcks är utförligt beskrivna vilket resulterar i att det är enkelt att åtgärda problem utan att konsultera någon annan källa. Att FindBugs kan justera gällande vilken nivå problem ska rapporteras på samt vilka problem ska rapporteras gör det användbart i vilket utvecklingsprojekt som helst som kontrollant av kodkvalité. Tack vare ett pluginsystem kan FindBugs dessutom anpassas och utökas med nya problemidentifieringar specifika för projekt. Nackdelar FindBugs är precis som PMD användbart löpande i utvecklingen, men trots att FindBugs har utförligare problembeskrivningar så upptäcker FindBugs mycket färre problem i koden. FindBugs kräver också att koden är kompilerad för att kunna analyseras, större program där kompilering tar längre tid kan medföra att FindBugs blir mindre användbart. Slutsatser Efter att ha utvärderat de fyra verktygen kan det konstateras att resultaten mellan de olika verktygen skiljer sig markant. Trots att verktygen samtliga utför statisk analys är resultaten skiljda, så för att få ett riktigt bra resultat är en kombination önskvärd. PMD och FindBugs som integrerar väl med Eclipse är ett bra komplement till alla Java-projekt, kombinationen av analys på källkod och bytekod ökar chanserna för att problem ska kunna identiferas tidigt i processen. Under utvärderingen användes PMD och FindBugs samtidigt i automatiskt läge, utan några indikationer på problem. SemmleCode skiljer sig från de andra verktygen genom att ha ett mer kraftfullt språk för kodanalys men mycket mer begränsat användningsområde, det lämpar sig mycket väl för att utföra specifika analyser. Ett användningsområde som RevJav och SemmleCode stödjer till skillnad från de övriga verktygen är analys av hur ändringar i koden kommer att påverka programmets helhet, detta kan vara mycket användbart för att få en uppfattning om refaktoreringars omfattning. RevJava lämpar sig väl att användas i acceptanstestning men kan även utan problem användas löpande i utvecklingsprocessen. Utgående ifrån RevJavas mätvärden kan arkitekturmässiga fel upptäckas och åtgärdas tidigt. Referenser [1] Eva van Emden, Leon Moonen: Java Quality Assurance by Detecting Code Smells. Proceedings of the Ninth Working Conference on Reverse Engineering, [2] Gert Florijn: RevJava Design Critiques and Architectural Conformance Checking for Java Software Software Engineering Research Centre SERC, 2002 [3] David Hovemeyer, William Pugh: Finding Bugs is Easy Dept. of Computer Science, University of Maryland, 2004

11 [4] Joel Jones: Abstract Syntax Tree Implementation Idioms Department of Computer Science, University of Alabama, 2003 [5] Michael D. Ernst: Static and dynamic analysis: synergy and duality MIT Lab for Computer Science, 2003 [6] Mathieu Verbaere, Elnar Hajiyev, Oege de Moor: Improve Software Quality with SemmleCode Semmle Ltd., Robert Robinson Avenue, Oxford OX4 4GA, United Kingdom, 2007 [7] GNU Lesser General Public License - Besökt

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola

Verktyget FindBugs. Djupstudie i kursen EDA 270 Coachning av programvaruteam. Christofer Bach dt05cb6 Daniel Nilsson dt05dn4. Lunds Tekniska Högskola Verktyget FindBugs Djupstudie i kursen EDA 270 Coachning av programvaruteam Christofer Bach dt05cb6 Daniel Nilsson dt05dn4 Lunds Tekniska Högskola 15 feb 08 1. Sammanfattning Denna djupstudie kommer att

Läs mer

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund

Djupstudie Verktyg för att förebygga problem i källkod. Anders Forslund Anders Lund Djupstudie Verktyg för att förebygga problem i källkod Anders Forslund (d04afr@student.lth.se) Anders Lund (et05al1@student.lth.se) 2 mars 2010 Sammanfattning Då kodningsstandard ej hålls så blir ofta

Läs mer

Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7

Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7 Djupstudie Code smells / Refaktorisering Martin Larsson dt08ml5 Stefan Johansson, dt08sj7 27 februari 2012 Innehåll 1 Inledning 1 2 Bakgrund 1 2.1 extreme programming....................... 1 2.2 Programvaruutveckling

Läs mer

Verktyg för statisk kodanalys

Verktyg för statisk kodanalys Verktyg för statisk kodanalys Av: Peter Seimar, adi09pse 4 mars 2013 Att hitta fel, bad smells och brister i en stor kodbas kan vara både svårt och tidsödande. För att hjälpa till med det arbetet nns en

Läs mer

Att lära sig av kodanalys

Att lära sig av kodanalys Att lära sig av kodanalys Om att använda kodanalysverktyg i utbildningssyfte tillsammans med XP Daniel Bengtsson, c02db@student.lth.se Mikael Piotrowski, c04mpi@student.lth.se Lunds Tekniska Högskola den

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

Continuous Integration med Jenkins. Linus Tolke Enea Experts

Continuous Integration med Jenkins. Linus Tolke Enea Experts Continuous Integration med Jenkins Linus Tolke Enea Experts Föredraget Grunderna i mjukvaru-cm Trender inom mjukvaruutveckling Continuous Integration Vad är Jenkins Demo Jenkins i ArgoUML-projektet Problem

Läs mer

Kodanalys med hjälp utav SemmleCode

Kodanalys med hjälp utav SemmleCode Kodanalys med hjälp utav SemmleCode Henrik Andersson, D05 (dt05ha1@student.lth.se) Erik Mossberg, D01 (d01em@student.lth.se) 18 Februari 2008 Sammanfattning Avsikten med denna rapport är att läsaren ska

Läs mer

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Verktyg och Utvecklingsmiljö. Jochim von Hacht Verktyg och Utvecklingsmiljö Jochim von Hacht Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg Editorer Kompilatorer Avlusare (debugger) Versionhantering (kommer i projektkurs)

Läs mer

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices Mattias Jarheden och Thomas Forsström Sammanfattning Denna djupstudie försöker ge en inblick

Läs mer

Programmering i C++ Kompilering från kommandoraden

Programmering i C++ Kompilering från kommandoraden Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Editering, Kompilering och Exekvering av Javaprogram

Editering, Kompilering och Exekvering av Javaprogram UMEÅ UNIVERSITET Institutionen för informatik B.1, Programmeringens grunder, 5 poäng Editering, Kompilering och Exekvering av Javaprogram Introduktion Syftet med kursmomentet Programmeringens grunder (B.1)

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten UTVECKLINGSVERKTYG Praktiska tips för PUM-projekten TEKNIKER I PROJEKTEN ios 2 C#.NET 1 Java (inkl Android) 6 Webb (HMTL/JS) 4 En genomskumning av de tilldelade projektförslagen ger ovanstående uppfattning

Läs mer

Några grundläggande begrepp

Några grundläggande begrepp Några grundläggande begrepp Validering bygger vi rätt system? Uppfyller kravspecifikationen de verkliga behoven? Verifiering bygger vi systemet rätt? Uppfyller det färdiga systemet kravspecifikationen?

Läs mer

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator Viktiga begrepp Den här ordlistan är till för dig som går kursen Om Programmering. Eftersom detta är en grundläggande kurs har vi i vissa fall gjort en del förenklingar. En del begrepp är svåra att förenkla,

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Eclipse en handledning

Eclipse en handledning LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap VT 2015 Eclipse en handledning 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas

Läs mer

Software Technology. Josef Svenningsson

Software Technology. Josef Svenningsson Software Technology Josef Svenningsson Software Technology Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för

Läs mer

Analysverktyg för Code smells och Test coverage. Djupstudie för Coaching av programvaruteam 2015

Analysverktyg för Code smells och Test coverage. Djupstudie för Coaching av programvaruteam 2015 Analysverktyg för Code smells och Test coverage Djupstudie för Coaching av programvaruteam 2015 Lund, 6/3 2015 Christian Kuijer Andersen Rickard Johansson dat11can@student.lu.se dat11rjo@student.lu.se

Läs mer

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: Bilaga C Eclipse 1 Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: www.eclipse.org help.eclipse.org www.eclipse.org/downloads/

Läs mer

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDI02 Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Verifikation, Validering och Testning XP Extreme Programming Vad är ett fel? I engelskan

Läs mer

Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI Magnus.Runesson@smhi.se

Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI Magnus.Runesson@smhi.se Öppen Källkod inom Offentlig Sektor 15-16 april 2008, Stockholm Varningssystem byggt på öppna källkodskomponenter Magnus Runesson SMHI Magnus.Runesson@smhi.se 2008-05-14 Signatur Om SMHI Som experter inom

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Magnus Oskarsson Matematikcentrum Lunds Universitet Matematisk Modellering p.1/34 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

Metoder och verktyg för funktionssäkerhet

Metoder och verktyg för funktionssäkerhet Metoder och verktyg för funktionssäkerhet Projektstart 1. Hantera kraven En bra process är grunden för att hantera kraven i ett säkerhetsprojekt. Det krävs att du har en tydlig spårbarhet mellan krav och

Läs mer

Introduktion till programmering. Programspråk och paradigmer

Introduktion till programmering. Programspråk och paradigmer Introduktion till programmering Programspråk och paradigmer Vad är ett programspråk? Aprogramming languageis a formal constructedlanguagedesigned to communicate instructions to a machine, particularly

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll

Handbok Svarta lådan. Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll Nicolas Roffet Robert Cimrman Philip Rodrigues Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategier och tips 7 3.1 Spelregler..........................................

Läs mer

Inlämningsuppgifter, EDAF30, 2015

Inlämningsuppgifter, EDAF30, 2015 LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgifter, EDAF30, 2015 Det finns två deluppgifter som båda ska lösas: 1. skriv ett program för att hantera bankkonton

Läs mer

Variabler, värden och typer

Variabler, värden och typer Variabler, värden och typer Viktigt att förstå på djupet: För programmering i många språk, t.ex. Java För kommande objektorientering! TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Fråga kommentera

Läs mer

Open Source-licenser

Open Source-licenser 2005-12-02 1 Open Source-licenser Open Source NEA Nätverket för Elektroniska Affärer Advokat Sofia Geilert 2005-12-02 2 Open Source-licenser Vad är Open Source Software (OSS)? Öppen källkod Programvara

Läs mer

Mälardalens högskola

Mälardalens högskola Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del

Läs mer

Open Source - Utmaningar och fördelar

Open Source - Utmaningar och fördelar Open Source - Utmaningar och fördelar Johan Hübner Emil Dicksved 16 mars 2011 Agenda Vad är open source? Historik och utveckling över tid Krav på open source-licenser Översiktlig genomgång av några vanliga

Läs mer

open Opensource Oberoende av leverantör Samverkan Dela utvecklingsresultat Kontroll över utveckling Inga licenskostnader Uppfinn inte hjulet igen

open Opensource Oberoende av leverantör Samverkan Dela utvecklingsresultat Kontroll över utveckling Inga licenskostnader Uppfinn inte hjulet igen open Opensource Oberoende av leverantör Samverkan Kontroll över utveckling Dela utvecklingsresultat Inga licenskostnader Uppfinn inte hjulet igen Utveckling, inte licenskostnader Vanliga frågor om Opensource

Läs mer

TUTORIAL: SAMLING & KONSOLL

TUTORIAL: SAMLING & KONSOLL TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även

Läs mer

Testning av program. Verklig modell för programutveckling

Testning av program. Verklig modell för programutveckling Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket

Läs mer

Slutrapport Vertikala Sökmotorer Uppdrag från.se:s Internetfond Våren 2008

Slutrapport Vertikala Sökmotorer Uppdrag från.se:s Internetfond Våren 2008 Slutrapport Vertikala Sökmotorer Uppdrag från.se:s Internetfond Våren 2008 Anders Ardö Elektro- och informationsteknik Lunds Universitet Box 118, 221 00 Lund June 18, 2009 1 Inledning Digitala bibliotek

Läs mer

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat

Läs mer

Spekulativ exekvering i CPU pipelining

Spekulativ exekvering i CPU pipelining Spekulativ exekvering i CPU pipelining Max Faxälv Datum: 2018-12-05 1 Abstrakt Speculative execution is an optimisation technique used by modern-day CPU's to guess which path a computer code will take,

Läs mer

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS Individuellt Mjukvaruutvecklingsprojekt (Utvecklare av digitala tjänster) Den 1 juni 2011 ABSTRAKT Rapporten tar upp positiva och negativa erfarenheter som jag erhållit

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson Översikt Trivicalc SMD168/SMD15 Fredrik Bengtsson bson@sm.luth.se Föreläsning 1 Introduktion till Trivicalc - problem Föreläsning Grafiska Användargränssnitt Föreläsning del 1 Versionshantering CVS (Johan

Läs mer

Objektorientering: Lagring och livstid

Objektorientering: Lagring och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Objektorientering: Lagring och livstid Tre sorters variabler Tre sorters variabel (1): Lokal 2 Lokal variabel Deklareras inuti en metod Vid varje anrop

Läs mer

TDP005 Projekt: Objektorienterat system

TDP005 Projekt: Objektorienterat system . TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg

Läs mer

Objektorientering: Lagring, räckvidd och livstid

Objektorientering: Lagring, räckvidd och livstid TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Projektplan, Cykelgarage

Projektplan, Cykelgarage Projektplan, Cykelgarage Johan Anderholm, (dt08ja5@student.lth.se) Jon Andersen (dt08ja8@student.lth.se) Marcus Carlberg (dt08mc4@student.lth.se) Simon Ekvy (dt08se2@student.lth.se) Stefan Johansson (dt08sj7@student.lth.se)

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Lärare: pl@cdt.luth.se A 3113 Tomas Klockar klockar@sm.luth.se A 3019 Mats Folke folke@sm.luth.se A 3019 Labhandledare: Natasja Saburova Fredrik Jonsson Lars Persson

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

men borde vi inte också testa kraven? Robert Bornelind

men borde vi inte också testa kraven? Robert Bornelind men borde vi inte också testa kraven? Robert Bornelind Presentation på SAST 15 års jubileum 14 oktober 2010 SQS Software Quality Systems Nordic Innehåll Introduktion Kvalitet, tid och kostnad Process Testning

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

Regressionstestning teori och praktik

Regressionstestning teori och praktik Regressionstestning teori och praktik Lic. Emelie Engström emelie.engstrom@cs.lth.se Software Engineering Research Group LUND UNIVERSITY Sweden SWELL the Swedish Research School in Software Verification

Läs mer

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se

Läs mer

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Handbok KAppTemplate. Anne-Marie Mahfouf Översättare: Stefan Asserhäll Anne-Marie Mahfouf Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Att använda KAppTemplate 6 3 Vilken mall behöver du? 9 3.1 C++ mallen för ett grafiskt användargränssnitt i KDE 4................

Läs mer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss

Läs mer

Föreläsning 5 5DV086 - Programspråk

Föreläsning 5 5DV086 - Programspråk Föreläsning 5 5DV086 - Programspråk Petter Ericson (pettter@cs.umu.se) Umeå University 6 februari, 2015 Haskell-frågor? Haskell-tips do-syntax State-monaden Dagens plan Programspråksteori Varför? Vad?

Läs mer

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll

Handbok Othello. Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll Clay Pradarits Utvecklare: Mario Weilguni Granskare: Lauri Watts Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Hur man spelar 6 3 Spelets regler, strategi och tips 7 3.1 Spelets grunder.......................................

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll

Handbok Dela Skrivbord. Brad Hards Översättare: Stefan Asserhäll Brad Hards Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Protokollet Remote Frame Buffer 6 3 Använda Dela Skrivbord 7 3.1 Hantera inbjudningar i Dela Skrivbord.......................... 9 3.2

Läs mer

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning PMM (Process Maturity Metrics) PMM är en metod för att mäta processmognad i utvecklingsprojekt. I korthet går metoden ut på att man utvärderar sin utvecklingsprocess med avseende på ett antal framgångsfaktorer

Läs mer

Användning av testautomation inom Extendas utvecklingsorganisation

Användning av testautomation inom Extendas utvecklingsorganisation Testautomation Användning av testautomation inom Extendas utvecklingsorganisation Agenda Presentation av Extenda Vad är en POS? Test av POS Automatiska tester Sammanfattning 2 Kort historik 1982 Extenda

Läs mer

Matematisk modellering

Matematisk modellering Matematisk modellering Genomgång 1 Pelle Matematikcentrum Lunds universitet 6 november 2018 Pelle Matematisk modellering 6 november 2018 1 / 25 Mål Dagens program Vad handlar kursen om, mål, kurskrav,

Läs mer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer LUNDS UNIVERSITET Parallell exekvering av Float32 och INT32 operationer Samuel Molin Kursansvarig: Erik Larsson Datum 2018-12-05 Referat Grafikkort utför många liknande instruktioner parallellt då typiska

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Föreläsning 2 Verktyg m.m.

Föreläsning 2 Verktyg m.m. Föreläsning 2 Verktyg m.m. Innehåll Java-paket Utvecklingsmiljö (development environment) Hur man organiserar sin utvecklingsmiljö Verktyg (tools) Editorer, debuggers, IDE's (integrated development environments),

Läs mer

ID1004 Laboration 4, November 2012

ID1004 Laboration 4, November 2012 06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt

Läs mer

2 Eclipse en handledning

2 Eclipse en handledning 2 Eclipse en handledning Inledning Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på: http://www.eclipse.org http://help.eclipse.org http://www.eclipse.org/downloads/

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering och Python Grundkurs i programmering med Python Introduktion till programmering och Python Hösten 2009 Dagens lektion Vad är programmering? Vad är en dator? Filer Att tala med datorer En första titt på Python 2 Vad är programmering? 3 VAD ÄR PROGRAMMERING?

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class

Läs mer

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Föreläsning 1 Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Deitel: 1.1-1.9, 2.1-2.3 DA101A Programmering Programmering, DA101A Kursansvarig:

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

men borde vi inte också testa kraven?

men borde vi inte också testa kraven? men borde vi inte också testa kraven? Robert Bornelind Presentation på SAST, 24 februari 2011 SQS Software Quality Systems Sweden AB Innehåll Introduktion Kvalitet, tid och kostnad Process Testning av

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Anders Heyden Matematikcentrum Lunds Universitet Matematisk Modellering p.1/37 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

Kompilera och exekvera Javakod

Kompilera och exekvera Javakod Kompilera och exekvera Javakod Förberedelser För att kunna göra dessa övningar måste du ha installerat Java Development Kit, JDK, som bland annat innehåller Java kompilatorn, javac. Hur du installerar

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

Handbok för skrivbordsväljaren. Dirk Doerflinger Antonio Larrosa Jiménez Pino Toscano Matthias Elter Matthias Ettrich Översättare: Stefan Asserhäll

Handbok för skrivbordsväljaren. Dirk Doerflinger Antonio Larrosa Jiménez Pino Toscano Matthias Elter Matthias Ettrich Översättare: Stefan Asserhäll Dirk Doerflinger Antonio Larrosa Jiménez Pino Toscano Matthias Elter Matthias Ettrich Översättare: Stefan Asserhäll 2 Innehåll 1 Inledning 5 2 Att använda skrivbordsväljaren 6 2.1 Mer funktioner i skrivbordsväljaren...........................

Läs mer

Proj-Iteration 5B. Plan för återstående iterationer

Proj-Iteration 5B. Plan för återstående iterationer Proj-Iteration 5B PVG/Coaching Boris Magnusson Datavetenskap LTH PVG/Coach 2009. Proj-Iter5B : 1 Plan för återstående iterationer Förutom att arbeta vidare på stories skall release göras både under iteration

Läs mer

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Länkade listor och automatisk testning

Länkade listor och automatisk testning 1 (6) Länkade listor och automatisk testning Algoritmer och datastrukturer Obligatorisk nr 3 Syfte Att ge träning i programmering av länkade listor på låg abstraktionsnivå med primitiv pekarmanipulering.

Läs mer

LEX INSTRUKTION LEX LDAP

LEX INSTRUKTION LEX LDAP LEX INSTRUKTION LEX LDAP Innehållsförteckning LEX INSTRUKTION LEX LDAP... 1 1 INLEDNING... 1 2 INSTALLATION... 2 3 LEXLDAPSERVICE - KLIENTEN... 3 3.1 HUVUDFÖNSTER... 3 3.2 INSTÄLLNINGAR... 4 3.2.1 Lex...

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

Kursplanering Objektorienterad programmering

Kursplanering Objektorienterad programmering Kursplanering Objektorienterad programmering Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-OOP Klass Systemutvecklare.NET 2 Syfte och koppling till yrkesrollen Syftet är att få en stabil grund

Läs mer

Testplanering, test-first, testverktyg

Testplanering, test-first, testverktyg Testplanering, test-first, testverktyg Mats Skoglund Department of Computer and Systems Sciences Stockholm University/Royal Institute of Technology Stockholm, Sweden 12 mars 2007 Mats Skoglund Page 1(33)

Läs mer

Versionshantering med Git

Versionshantering med Git Versionshantering med Git Vad, varför och hur? Magnus Nielsen Institutionen för datavetenskap, LiU magnus.nielsen@liu.se Vad ska jag ha Git till? Versionshantering Sparar källkod (eller vad som helst)

Läs mer

Licenser - Jo, tack, men så få som möjligt

Licenser - Jo, tack, men så få som möjligt Rejås 1(22) Licenser - Jo, tack, men så få som möjligt Copyright 2006 Rejås Jag ger härmed rätten till alla att nyttja denna presentation på alla sätt som anses lämpliga så länge som syftet på något sätt

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk

Läs mer