Verktyg för statisk kodanalys

Storlek: px
Starta visningen från sidan:

Download "Verktyg för statisk kodanalys"

Transkript

1 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 rad olika kodanalysverktyg tillgängliga. En typ av dessa verktyg analyserar koden utan att köra den och kallas för statiska kodanalysverktyg. Jag vill med den här studien gå genom grunderna för hur statisk kodanalys fungerar, både som koncept och rent tekniskt. Till min hjälp har jag en samling artiklar och några av de större analysverktygen till Eclipse. Jag kommer med verktygen att inrikta mig specikt på Java, då jag kommer ha tillgång till ett ständigt växande Javaprojekt i och med att jag coachar en grupp i programvaruutvecklingskursen. Tanken är också att någon eller några i gruppen kommer få pröva på ett av verktygen om jag anser att det kan hjälpa till med att hitta problem i koden. Detta kommer dels ge mig mer input på hur verktyget fungerar och dels kunna hjälpa gruppen att få sin kodbas renare. 1

2 1 Sammanfattning Analysera och buggxa programkod är ett svårt och tidsödande arbete om man inte är van vid det. Till hjälp för detta nns en rad verktyg för att göra så kallad statisk kodanalys. Jag har under det pågående PVG-projektet prövat några av dessa verktyg på min projektgrupps kodbas för att hitta något verktyg som fungerar bra. Resultatet jag fann var att det nns ett par verktyg som är dels lätta och smidiga att använda och som dessutom gör ett bra jobb. 2 Teori Här följer en den teorin jag ansett vara relevant dels för att förstå hur statuisk kodanalys funegrar, vad det är bra till samt hur det fungerar i jämförelse med dynamisk analys. 2.1 Statisk kodanalys Ett verktyg för att rensa upp fel i sin kod är statisk kodanalys, vilket innebär att koden analyseras i ren textform, d.v.s. utan att kompileras och köras. Det nns väldigt många saker man kan specialisera sin analys på, såsom testcoverage, hitta vanliga buggar, generera UML-diagram m.m. Ett statiskt analysverktyg måste ha någon form av bibliotek eller referens som mall för vad det ska leta efter när det går genom koden för att hitta felen. Denna mall måste göras av människor, vilket innebär att den inte kan bli helt perfekt. 2.2 Problematik med kodanalys Ett av de stora problemen med programmering och att förutse buggar i ett program är att det är väldigt svårt att detektera dessa om man inte har stött på dem under exekvering. En bra liknelse är att låta en blind man laga hål i en vägg av okänd längd, man måste testa sig fram tills man hittar hålet/buggen, laga den och sedan leta efter nya. Det stora problemet är att det inte går att se hela bredden av programmet och på så sätt kunna förutspå buggarna. Vad man däremot kan göra är att använda sig av en uppsättning av regler och metoder för att hitta fel som brukar vara vanliga att de förekommer, såsom duplicerad kod, missade nullkontroller m.m. Den mänskliga faktorn gör att det nns en hel del fel som går att förutsäga och varna för om de dyker upp, medan det samtidigt innebär att det nns många fel som INTE går att förutsäga. Inte ens ett program med fördenerade sökregler klarar av att hitta alla fel och brister, så det kan vara värt att köra era olika verktyg för att täcka in så mycket som möjligt[10]. Ett annat problem som kan uppstå är om man har en kompilator som yttar om delar av koden p.g.a optimering exempelvis. I Java är det inget problem, då koden inte kompileras på samma sätt som t.ex. C-kod. Ett program skulle kunna gå felfritt genom en statisk analys, sedan kompileras och funka dåligt om kompilatorn gjort om för mycket. 2

3 Man kan göra analyser på både den faktiska koden och på bytekoden som genererats av kompilatorn. Fördelen med att köra analys på den faktiska koden är att det är lättare att detektera mönster som kan ses som felaktiga, kodkonventioner m.m. Bytekoden däremot går mycket snabbare att analysera men det går inte göra lika mycket med den. Bytekoden är dessutom väldigt svår att koppla till högnivåkoden[1]. Som tidigare nämnt är det extremt svårt, för att inte säga omöjligt, att förutspå och detektera allt som kan gå fel med ett program. Kodanalys kan hjälpa oss med de vanligaste felen men kan dessvärre omöjligt garantera 100% felfrihet. 2.3 Statisk eller dynamisk analys? När man ska analysera sin kod efter fel nns det två olika typer av analyser man kan göra, dynamisk och statisk kodanalys. För att ge en mer komplett bild av kodanalys bör den dynamiska delen också nämnas för att ge lite mer förståelse för vad den statiska analysen faktiskt gör och går ut på. Jag kommer härmed att gå genom skillnaderna mellan de båda varianterna och berätta om vad de kan användas till. För att komplettera statisk analys av kod kan man göra en dynamisk analys, vilket innebär att verktyget kör koden direkt på processorn eller hellre i en virtuell processor. Fördelen med att köra en dynamisk analys är att man kan se hur programmet beter sig nere på ren instruktionsnivå i processorn. Detta kan göra det lättare att optimera programmet för att bättre klara av pipeliningen i processorer. Dynamisk analys ger möjlighet att testa programmet i skarpt läge med många olika inparametrar, till skillnad från den statiska som lämpar sig bättre för att hitta bad smells, vanliga buggar samt brott mot kodkonventioner. Code coverage kan teoretisk sett beräknas med båda varianterna men lämpar sig bäst när man gör det dynamiskt då man kan se vilka rader kod som faktiskt körs, medan den statiska varianten får problem vid if-satser och andra vägval i programmet. Minnesläckage är ett bra exempel på ett allvarligt problem som kan detekteras både med statisk och dynamisk analys. Den statiska metoden går ut på att kontollera de olika allokering- och deallokeringsfunktionerna i ett program för att försöka se om det är något minne som inte lämnas tillbaks. Java har inte det problemet men programmerar man i exempelvis C är det väldigt viktigt. Man kan då använda exempelvis Memcheck/Valgrind[4] (används bl.a. i kursen Algoritmimplementering, EDAF15[7] på lth) Den dynamiska varianten är dock bättre på att detektera minnesläckagen eftersom att den metoden kräver att programmet faktiskt krös och gås genom, medan den statiska metoden lättare kan göra missar. Detta på grund av att det är svårt att förutse alla vägar ett program tar. Den dynamiska metoden har dock nackdelen att den bara tar en väg genom programmet(per test) vilket kan bli extremt tidsödande om det nns många vägar genom programmet. 3

4 Det nns vissa verktyg som använder en kombination av dynamisk och statisk analys för att detektera problem. Här följer ett citat jag ansåg beskriva hur man på ett bra genomför en analys med en blandning av statisk och dynamisk analys. Citat: This system automatically generates from a query a pair of complementary checkers: a static checker that nds all potential matches in an application and a dynamic checker that traps all matches precisely as they occur.[6] För att sammanfatta det hela bör man som programmerare använda en sund blandning av statisk och dynamisk kodanalys. De båda varianterna står inte i konkurrans med varandra, utan kompletterar snarare varandra. 2.4 Säkerhet En viktig aspekt när man programmerar större produkter som ska säljas till användare är att tänka på programmets säkerhet. Det är inget som spelar så stor roll om du programmerar en miniräknare som hobbyprojekt men när det nns kritisk information och pengar inblandade måste man kunna sätta krav på att det inte nns säkerhetsluckor i programmet. Statisk kodanalys kan hjälpa till att hitta kända säkerhetsluckor och vanliga misstag som kan äventyra programmets säkerhet och det är väldigt viktigt att informationen om dessa luckor läggs till i uppdaterade versioner av analysverktygen. Risken kan nämligen vara stor att en programmerare förlitar sig för mycket på sina analysverktyg och tror att det är lugnt när deras kod går genom felfritt. I dessa fall är det extra viktigt att poängtera att kodanalys aldrig kan vara helt att lita på, och kanske inte alltid har informationen om de senaste säkerhetsluckorna. Säkerhetsluckorna är inte heller alltid beroende av en enda faktor, vilket kan göra det ännu svårare för verktygen att hitta dem. Det kan vara en kombination av dålig design, implementation, utförande eller kravspecikation[2]. 3 Verktyg Följande är en genomgång av de analysverktygen jag prövat och ansett att de är vettiga att nämna. Urvalet av verktyg är gjort med fokus på vad som faktiskt används av programmerare genom att kolla runt mest på forum som t.ex. StackOverow [7]. 3.1 FindBugs Det här verktyget var ett av de första jag prövade och var väldigt simpelt att använda. Vid en första genomsökning av teamets kod hittade den 7 problem såsom missade nullkontroller, samt varning för att använda en vanlig likhetskontroll(==) för att jämföra strängar och hänvisade till String.equals()-funktionen istället. Det går dessutom att ändra känsligheten på FindBugs, vilket medför att det går 4

5 att få den riktigt pedantisk och markera fel i kodkonventioner m.m. Verktyget är lätt att använda, och gör genomsökningen direkt via en knapp i Packageexplorer-fältet. Det går att göra sökningar på enstaka klasser, hela paket eller på hela projektet. 3.2 PMD Jag är lite osäker på om jag verkligen ck PMD att fungera när jag prövade det, då det inte detekterade ett enda fel i koden. Det är möjligt att kodbasen var för liten, att pluginet var felkongurerat eller för okänsligt, eller så var det helt enkelt inget fel med koden. Ett par av gruppmedlemmarna prövade att använda PMD i ett senare stadie i projektet för att detektera bad smells i kodbasen och ck det att fungera ypperligt. Verktyget genererade i genomsnitt 1.6 anmärkningar per rad kod, vilket resulterade i extremt många anmärkningar. PMD delar in anmärkningarna i fem kategorier beroende på hur kritiska de är. De esta anmärkningarna var på väldigt låg prioritet, så verktyget var ganska pedantiskt, på ett bra sätt. Gruppen har inte använt verktyget systematiskt under projektet, utan bara vid ett par enstaka tillfällen men har själva sagt att det var väldigt smidigt och lätt att använda och skulle varit praktiskt att ha använt verktyget mer systematiskt och främst vid refaktoriseringsarbetet. De tyckte främst att det var bra att se olika kodkonventioner de bröt mot och även bad smells. Dock var inte pluginet helt perfekt och pekade era gånger ut olika xar som motsade varandra eller som i sig skulle skapa nya klagomål. 3.3 jdeodorant jdeodorant är ett populärt verktyg för att specikt detektera bad smells i koden. De bad smells det kan upptäcka är långa metoder, klasser som använder andra klassers metoder för mycket(feature envy), gudklasser och föreslår vart man kan införa strategy- och template methodmönstrena. Verktyget är ganska simpelt att använda och gör ett helt okej jobb. Dock gör dess inriktning att det inte är användbart till så mycket annat. Jag fann inte jdeodorant jätteintressant, främst för att jag tycker det är mer direkt hjälpsamt om man kan hitta buggar och säkerhetsrisker. Bad smells är givetvis viktigt att hitta också men jag tycker inte det är nödvändigt att använda ett plugin för att hitta långa klasser och metoder och ställen där jag kan göra subklasser och strategymönster. Feature envy är väl egentligen det jag anser svårast att se direkt i koden, och det är väl egentligen där jag skulle använda jdeodorant. I större projekt på era tusen rader kod däremot skulle ett sånt här program vara mer användbart, då det skulle vara extremt tidsödande att själv hitta dessa bad smells. Det verkar inte nnas allt för många (väl fungerande) bad smelldetekteringsverktyg till Java tyvärr, men jdeodorant verkar lovande även om de inte ger så många resultat som t.ex. PMD. Dock var i princip alla förslagen jdeodorant gav 5

6 vettiga, medan PMD ger en del vettiga förslag och jättemånga rent pedantiska förslag på förbättringar. 3.4 CodePro CodePro är ett väldigt stort verktyg med många funktioner som andra enskilda verktyg har var för sig, och är väldigt lätt och smidigt att använda, vilket gjorde att jag valde det som min personliga favorit och har mest fördjupat mig i hur man använder det. Funktionen. Verktyget har ett antal funktioner som blandar både statisk och dynamisk analys för att täcka in en stor rad av metrics och fel. Den första funktionen kallas Audit och gör en sökning efter ett 20-tal olika säkerhetsrisker[3] i koden såsom hårdkodade lösenord, känsliga resurser som ligger allt för tillgängliga m.m. Det nns inbyggda funktioner för att skapa testfall och factorymetoder men de ck Eclipse att krascha, så jag har inte kunnat se hur bra de gör sitt jobb. CodePro kan dessutom generera väldigt mycket metrics om koden, dels som ren statistik men även relationsgrafer mellan klasser och metoder. Dessa diagram blir dessvärre väldigt röriga då de tar med en del klasser och metoder i de interna Java-biblioteken, vilket ger en relationsgraf med nästan 100 noder i vårt projekt. Test-coverage går även att göra men detta räknas inte till den statiska kodanalysen, så det har jag inte riktigt testat. Jag har dock förståt att det skulle kunna ersätta coverage-verktyget EclEmma. Slutligen går det även att detektera död och duplicerad kod som visas i ett väldigt lättförståeligt interface. Som tidigare nämnt tycker jag att CodePro var det bästa av de verktyg jag testat. Även om det säkert nns många nischade verktyg som var och sig är bättre på den enskilda uppgift de är utformade så är det väldigt praktiskt att ha så mycket funktionalitet samlat på ett och samma ställe. Nackdelen med CodePro dock är att nästan ingen bad smell detekteras, vilket ändå kan vara väldigt viktigt att hitta, speciellt i större och mer komplexa kodbaser. Det jag saknade mest med CodePro var dock att det inte detekterades abd smells i koden. Detta kunde givetvis lösas genom att köra PMD eller jdeodorant utöver CodePro. En av studenterna i projektgruppen prövade på CodePro vid ett par tillfällen och tyckte att det var bra att det fanns så mycket funktionalitet samlad, men att varje funktionalitet i sig inte var så djupgående och bra. Exempelvis funktionen för att generera UML-diagram ansåg studenten vara väldigt dålig i jämförelse med t.ex. Green UML [9] (jag prövade inte Green i den här studien) då CodePros diagram var väldigt rörigt. 3.5 Sammanfattning Efter att ha prövat olika verktyg så är det lite svårt att bestämma vilket som är värt att satsa på. Jag valde CodePro som favorit för jag tyckte att den hade många funktioner samlade och det var mycket smidigare att ha ett enda plugin 6

7 i Eclipse som sköter analysen, istället för att ha 6-7 olika som var och en är bra på sin sak. I mitt fall stötte jag på problem när jag hade många plugins, vilket dock enbart var problematiskt på grund av hårdvaru- och minnesbrist. Hade jag gjort samma studie med mer än en vanlig skoldator och det begränsade utrymmet eleverna har på datorerna hade jag kanske föredragit att ha de olika nischade verktygen istället. Jag antar att det är en smaksak egentligen. Märker jag att CodePro gör en av funktionerna för dåligt kan man installera ett av de andra pluginen för att få just den funktionen gjord bättre. Kort och gott beror det helt på hur djupgående och specik analys man är tue efter att genomföra. Bild: Gränssnittet för jämförelse av liknande kod [5]. 4 Slutsats Jakten efter felfri kod är väldigt svår, men det nns många metoder och verktyg för att göra en del av arbetet åt dig. Jag har bara testat ett fåtal av de som verkade vettigast för Java och anser personligen att CodePro är det vettigaste, då det har samma funktionalitet some ett antal olika verktyg kombinerat i ett enda verktyg. Det stora problemet med CodePro dock är att det inte täcker in särskillt mycket när det kommer till bad smells. Det är svårt att lyckas med allt när man gör ett sådant plugin och olika plugin med samma syfte kan hitta en hel del olika buggar och kompletterar på så sätt varandra. Man får i slutändan göra en övervägning om hur många plugins man vill installera och köra. Fler plugins ger större täckning för buggar, bad smells m.m. men innebär att man får ett Eclipse som är rörigare och att man får lägga ner mer tid på att utföra analyserna. 7

8 Jag hade själv problem med att Eclipse blev lite för fullt och långsamt av att ha så många testverktyg jag hade när jag hade som mest(några dåliga tog jag aldrig upp i den här rapporten, då jag aldrig ck dem att fungera), vilket resulterade i väldiga problem med skoldatorerna. CodePro enbart kunde ersätta de esta av dem utan att förstöra Eclipse. Jag fann under arbetet att även dynamisk programanalys verkade väldigt intressant och jag hade gärna skrivit om det om inte projektet hade varit i Java. Jag har lite erfarenhet av sådana verktyg för C och tycker det är ganska intressant när det kommer till minneshantering och pipelining i processorer m.m. Dock hade det inte varit lika intressant i Java då man kör på en virtuell maskin och minnesdeallokeringen sköts av sig själv. Referenser [1] Panagiotis Louridas, Static Code Analysis. IEEE [2] Alexandru G. Bardas Static Code Analysis. Romanian Economic and Business Review [3] CodePro Audit Rule Set CodePro Analytics, Eclipse, [4] Julian Seward Nicholas Nethercote Using Valgrind to detect undened value errors with bit-precision [5] Pawel Michalski [6] Michael Martin, Benjamin Livshits, Monica S. Lam Finding Application Errors and Security Flaws Using PQL: a Program Query Language 8

9 [7] Stack Overow [8] Algoritmimplementering, EDAF15 [9] Green UML plugin for Eclipse [10] Nick Rutar, Jerey S. Foster A Comparison of Bug Finding Tools for Java 9

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

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

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar Skapa testfall Testing Köra testen Hitta fel Inspections and reviews Verifiera resultatet Formal methods Static analysis Completeness Verifiering Kvalitet Maintainability Validering Traceability Fault

Läs mer

Felsökning av mjukvara

Felsökning av mjukvara KUNGLIGA TEKNISKA HÖGSKOLAN Felsökning av mjukvara Programmering av en NXT-robot Max Kufa [03/08-13] mkufa@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Syftet med laborationen var att

Läs mer

Betatestning - Solsystem

Betatestning - Solsystem Betatestning - Solsystem Mikael Ågren, F03 Innehåll 1 Inledning 2 2 Frågorna 2 2.1 Är programmet konsekvent?................... 2 2.2 Behövs genvägar?......................... 2 2.3 Tillräcklig feedback?.......................

Läs mer

Filöverföring i Windowsmiljö

Filöverföring i Windowsmiljö Linnéuniversitetet Projektrapport Grundläggande Operativsystem 1DV415 Filöverföring i Windowsmiljö Erik Ljungqvist, Viktor Hjertman 10 januari 2014 Sammanfattning I detta projekt undersöks skillnaden i

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär

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

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk

Läs mer

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport Collector en Android-app för att samla saker Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport Abstrakt Jag har gjort en Android-app för att samla saker, Collector. Med den kan man upprätta att göra-listor

Läs mer

TUTORIAL: KLASSER & OBJEKT

TUTORIAL: KLASSER & OBJEKT TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan

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

Petter Berglund. Sammanfattning

Petter Berglund. Sammanfattning EDA270 - Coaching av programvaruteam Verktyg för kodanalys Petter Berglund D05, Lunds Tekniska Högskola dt05pb2@student.lth.se 2008-02-10 Sammanfattning Verktyg för kodanalys blir allt vanligare i programvaruutvecklingsprojekt

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

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

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

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

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

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

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

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign

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

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

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

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1 Grundläggande programmering DVG A08 & ISG A04 Allmän information Grupp C och D slås ihop Schemat är ändrat Kurs i programmering utan förkunskaper Hjälp oss med detta Lita inte på era klasskamrater De ställer

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

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

Oppositionsrapport: Experior DSTL. Vincent Thuning, Björn Nordström 4 juni 2012

Oppositionsrapport: Experior DSTL. Vincent Thuning, Björn Nordström 4 juni 2012 Oppositionsrapport: Experior DSTL Vincent Thuning, Björn Nordström 4 juni 2012 1 Innehåll 1 Sammanfattat omdöme av examensarbete 2 2 Synpunkter på uppsatsen knuten till examensarbetet 2 2.1 Titel..................................

Läs mer

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu. Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund

Läs mer

Resultat och reektioner kring mailkategorisering av användares mail till Uppsala läns landsting kring åtkomst av journaler via nätet

Resultat och reektioner kring mailkategorisering av användares mail till Uppsala läns landsting kring åtkomst av journaler via nätet Resultat och reektioner kring mailkategorisering av användares mail till Uppsala läns landsting kring åtkomst av journaler via nätet Nanna Kjellin Lagerqvist 11 mars 2015 Abstract På uppdrag av Benny Eklund,

Läs mer

Laboration i datateknik

Laboration i datateknik KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Programmering av LEGO-robot Rickard Eriksson 2012-09-06 rieri@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Denna rapport är till följd

Läs mer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack 725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den

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

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

Föreläsning 3.1: Datastrukturer, en översikt

Föreläsning 3.1: Datastrukturer, en översikt Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,

Läs mer

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så

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

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

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

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10 Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,

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

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot Josef Karlsson Malik 2015-09- 02 jkmalik@kth.se Introduktionskurs i datateknik (II0310) Sammanfattning

Läs mer

Filhanterare med AngularJS

Filhanterare med AngularJS Filhanterare med AngularJS Författare: Filip Johansson Peter Emilsson Oskar Georgsson Christian Nilsson Datum: 2014-03-26 1 Sammanfattning Filhanterare med AngularJS är en filhanterare skapad för Sigma

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

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

FMEA. Failure Mode and Effects Analysis. Kurs: KPP017 Produktutveckling 2 Handledare: Rolf Lövgren Program: Innovation och produktdesign 2010-10-06

FMEA. Failure Mode and Effects Analysis. Kurs: KPP017 Produktutveckling 2 Handledare: Rolf Lövgren Program: Innovation och produktdesign 2010-10-06 2010-10-06 FMEA Failure Mode and Effects Analysis Grupp 1: Fredrik Nyberg Robin Rudberg Pontus Ramström Petra Kellokumpu Noor Abdulamir Junior Ndiaye Kurs: KPP017 Produktutveckling 2 Handledare: Rolf Lövgren

Läs mer

Slutrapport för Internetfonden

Slutrapport för Internetfonden Slutrapport för Internetfonden Webbprogrammering i matematik och fysikundervisning Mikael Tylmad mikael@roboro.se Fredrik Atmer fredrik.atmer@gmail.com Ella Kai-Larsen e@k-l.se 10 april 2014 http://www.profyma.se/

Läs mer

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310

Peter Ottosson 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 KUNGLIGA TEKNISKA HÖGSKOLAN Robotlabb En introduktion till Datateknik 31/8-2012 petott@kth.se Introduktionskurs i datateknik II1310 1 Innehållsförteckning 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte

Läs mer

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

Introduktion till programmering med hjälp av Lego Mindstorm

Introduktion till programmering med hjälp av Lego Mindstorm Kungliga Tekniska Högskolan Introduktion till programmering med hjälp av Lego Mindstorm Laborationsrapport gällande programmering inom NXC Simon Jansson 31 08 2014 simonjan@kth.se Introduktionskurs i datateknik

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

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

Aktivitetsschemaläggning för flerkärninga processorer

Aktivitetsschemaläggning för flerkärninga processorer Lunds Tekniska Högskola Datorarkitekturer med Operativsystem EDT621 Aktivitetsschemaläggning för flerkärninga processorer Tobias Lilja 5 december 2016 Innehåll 1 Inledning 3 1.1 Syfte................................

Läs mer

Kristian Almgren Artificiell Intelligens Linköpings Universitet 2011. Talstyrning

Kristian Almgren Artificiell Intelligens Linköpings Universitet 2011. Talstyrning Talstyrning Abstrakt Talstyrning är en teknik som gör det möjligt för oss människor att mer eller mindre verbalt kommunicera med en dator eller ett system. Det här är ett tillvägagångssätt inom AI och

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

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

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

Enhetstester på.netplattformen

Enhetstester på.netplattformen Enhetstester på.netplattformen Praktikfall ur verkligheten Copyright Prolore 2007. All Rights Reserved. Viktor Laszlo Vem är jag 11 år inom test Prolore: specialiserat på Testautomatisering, Prestandatest

Läs mer

Gränssnitt för FakeGranska. Lars Mattsson

Gränssnitt för FakeGranska. Lars Mattsson Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Föreläsning 3. Programmering, C och programmeringsmiljö

Föreläsning 3. Programmering, C och programmeringsmiljö Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

Läs mer

Laboration i datateknik

Laboration i datateknik KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Felsökning och programmering av LEGO NXT robot Daniel Willén 2012 09 06 dwill@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Syftet med

Läs mer

Programmering. Den första datorn hette ENIAC.

Programmering. Den första datorn hette ENIAC. Programmering Datorn är bara en burk. Den kan inget själv. Hur får man den att göra saker? Man programmerar den. Människor som funderar ut program som fungerar. Datorn förstår bara ettor och nollor och

Läs mer

Nadia Bednarek 2013-03-06 Politices Kandidat programmet 19920118-9280 LIU. Metod PM

Nadia Bednarek 2013-03-06 Politices Kandidat programmet 19920118-9280 LIU. Metod PM Metod PM Problem Om man tittar historiskt sätt så kan man se att Socialdemokraterna varit väldigt stora i Sverige under 1900 talet. På senare år har partiet fått minskade antal röster och det Moderata

Läs mer

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Välkomna till DIT012 IPGO 1 Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1. Lärare och Handledare Kursansvariga, examinatorer, föreläsare och handledare

Läs mer

DD2458-224344 - 2014-12-19

DD2458-224344 - 2014-12-19 KTH / KURSWEBB / PROBLEMLÖSNING OCH PROGRAMMERING UNDER PRESS DD2458-224344 - 2014-12-19 Antal respondenter: 26 Antal svar: 18 Svarsfrekvens: 69,23 % RESPONDENTERNAS PROFIL (Jag är: Man) Det var typ en

Läs mer

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning] [NXT Legorobot] [Programmering och felsökning] Kevin Lane 28/8-12 klane@kth.se Introduktionskurs i datateknik II1310 1 Sammanfattning I denna laboration så fick vi programmera och felsöka en LEGO-robot.

Läs mer

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin Evaluation Summary CDT Grundläggande Webbdesign HT7 Dan Levin Antal kursutvärderingar: Q. Anser du dig ha tillräckligt med förkunskaper för att klara kursen? (=JA =NEJ) 9 Skriv kommentarer här... Q. a

Läs mer

Kopiering av objekt i Java

Kopiering av objekt i Java 1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom

Läs mer

Inledande programmering med C# (1DV402) Introduktion till C#

Inledande programmering med C# (1DV402) Introduktion till C# Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i

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

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Gabriel Gerhardsson Cacheprobe p.1/38 Abstract Kan analytiskt ta reda på associativitet, line storlek och storlek på processorns cacheminnen

Läs mer

TDP005: Introduktion till Make

TDP005: Introduktion till Make TDP005: Introduktion till Make Jonas Lindgren jonas.lindgren@liu.se Torbjörn Lönnemark torbjorn.lonnemark@liu.se Niklas Hayer 2013-11-14 1 1 PROGRAMMET MAKE 2 1 Programmet make Om du kör make letar programmet

Läs mer

Introduktion till programmering, hösten 2011

Introduktion till programmering, hösten 2011 Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter

Läs mer

Pipelining i Intel 80486

Pipelining i Intel 80486 Lunds Universitet Pipelining i Intel 80486 EITF60 Datorarkitekturer med operativsystem Martin Wiezell 2017-12-04 Abstract This paper gives a brief description of the instruction pipeline of the Intel 80486

Läs mer

Säker programmering - Java

Säker programmering - Java Säker programmering - Java Information är en värdefull tillgång i dagens värld och en effektiv hantering sätter höga säkerhetskrav på medarbetarna. Säker programmering - Java Nowsec säkerhetsgranskar dagligen

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P Slutrapport Författare: Zlatko Ladan Program: Utvecklare av Digitala Tjänster 180P Kurs: Individuellt Mjukvaruprojekt Z l a t k o L a d a n Sida 1 Abstrakt: Denna rapport handlar om mitt projekt som jag

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Drakborgen. - Tips och rekommendationer. III. Tillvägagångssätt. Abstract. I. Inledning. II. Beskrivning av spelet

Drakborgen. - Tips och rekommendationer. III. Tillvägagångssätt. Abstract. I. Inledning. II. Beskrivning av spelet Drakborgen - Tips och rekommendationer Av Per Hamrin, IT05 Abstract Utbildningen inom programmering är under förändring på Uppsala Universitet. Ett av kursmomenten består av att designa och implementera

Läs mer

IT för personligt arbete F6

IT för personligt arbete F6 IT för personligt arbete F6 Datalogi del 2 DSV Peter Mozelius Datarepresentation Det som lagras i en dator representeras i grunden som 1:or och 0:or Dessa binära värden kan sedan tolkas på olika sätt i

Läs mer

LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT. Honey Hunter. Androidspel. Martin Karlsson 1/17/2014

LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT. Honey Hunter. Androidspel. Martin Karlsson 1/17/2014 LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT Honey Hunter Androidspel Martin Karlsson 1/17/2014 Abstrakt: Denna slutrapport berör androidspelet Honey Hunter som berör kursen Indiviudellt Mjukvaruutvecklingsprojekt

Läs mer

Word-guide Introduktion

Word-guide Introduktion Word-guide Introduktion På det kognitionsvetenskapliga programmet kommer du läsa kurser inom flera olika vetenskapsområden och för varje vetenskapsområde finns ett speciellt sätt att utforma rapporter.

Läs mer

Goda råd från studenterna som gjorde kandidatprojektet 2018

Goda råd från studenterna som gjorde kandidatprojektet 2018 Goda råd från studenterna som gjorde kandidatprojektet 2018 Strukturera tiden och se till att komma igång tidigt i kursen. Det är en väldigt intensiv period när sommaren närmar sig och det är inte till

Läs mer

PCKeeper. Human Inside

PCKeeper. Human Inside PCKeeper Human Inside är ett allt-i-ett-program som erbjuder en unik blandning av programkodens iskalla precision och medkänslan hos en levande människa. PCKeepers Microsoft-certifierade specialister analyserar

Läs mer

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline

Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline Hur det går att minska effektutvecklingen i en processor genom att ändra pipeline Linda Wapner HT2018 EITF60 Sammanfattning Effektutvecklingen i en processor har länge ökat genom att klockfrekvensen för

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

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA CDC6600 - en jämförelse mellan superskalära processorer av: Marcus Karlsson Sammanfattning I denna rapport visas konkret information om hur den första superskalära processorn såg ut och hur den använde

Läs mer

Robotprogrammering felsökning & analys.

Robotprogrammering felsökning & analys. KUNGLIGA TEKNISKA HÖGSKOLAN Robotprogrammering felsökning & analys. Användning utav BricX Command Center Haval Amir Rabiee 2013-09-03 E-post havalsr@kth.se Introduktionskurs i datateknik II1310 Sammanfattning

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

Tv när du vill användarmanual. Tv när du vill. användarmanual

Tv när du vill användarmanual. Tv när du vill. användarmanual Tv när du vill användarmanual Innehåll 1. Huvudmenyn s. 3 2. TV-Guide s. 3 3. Miniguide s. 4 4. Starta om program som redan börjat s. 4 5. Playtjänster s. 4 6. Pausa och spola i direktsänd tv s. 4 7. Påminnelse

Läs mer

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera Föreläsning 2 Operatorer Tilldelning Kodblock if satsen Logiska uttryck Att programmera En operator tar ett eller två data och producerar ett svar. Typexemplet är +. Den tar t.ex två heltal och producerar

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,

Läs mer