Verktyg för statisk kodanalys
|
|
- Linda Engström
- för 8 år sedan
- Visningar:
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: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer
Läs merVerktyget 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 merConfiguration 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 merFelsö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 merBetatestning - 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 merFilö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 merVerktyg 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 merTentamen 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 merContinuous 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 merGenerell 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 merCollector 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 merTUTORIAL: 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 merKodanalys 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 merPetter 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 merAnalysverktyg 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 merStatic 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 merEclipse. 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 merArv. 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 merStatic 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 merObjektorienterad 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 merVerktyg 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 merAtt 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 merMjukvarudesign. 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 merDjupstudie 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 merEditering, 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 merFö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 merGrundlä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 merObjektorienterad 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 merProgrammering 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 merOppositionsrapport: 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 merMina 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 merResultat 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 merLaboration 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 mer725G61 - 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 merClasses 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 merSpekulativ 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 merFö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 merInledande 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 merDjupstudie 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 merInledning. 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 merNetBeans 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 merProjekt 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 merTDDI02. 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 merProgrammering 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 merFilhanterare 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 mer732G 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 merProgrammering, 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 merFMEA. 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 merSlutrapport 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 merPeter 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 merUML. Ö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 merIntroduktion 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 merClasses 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 merMetoder 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 merIntroduktion 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 merAktivitetsschemalä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 merKristian 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 merProjekt 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 merKursplanering 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 merNetBeans 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 merEnhetstester 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 merGrä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 merTentamen 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 merImperativ 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 merFö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 merTentamen. 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 merGrundkurs 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 merLaboration 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 merProgrammering. 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 merNadia 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 merVä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 merDD2458-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 merKevin 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 merEvaluation 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 merKopiering 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 merInledande 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 merProgrammering 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 merCacheprobe: 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 merTDP005: 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 merIntroduktion 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 merPipelining 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 merSä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 merHä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 merUML. 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 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 merFö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 merDrakborgen. - 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 merIT 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 merLNU 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 merWord-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 merGoda 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 merPCKeeper. 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 merHur 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 merViktiga 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 merCDC 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 merRobotprogrammering 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 merJava: 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 merTv 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 merOperatorer 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 merTDDC30. 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