Ytterligare ett steg mot realisering av SystemJ

Storlek: px
Starta visningen från sidan:

Download "Ytterligare ett steg mot realisering av SystemJ"

Transkript

1 Ytterligare ett steg mot realisering av SystemJ Michael Hansson 27 april 2009

2 1 Abstract (Sammanfattning) 2

3 2 Förord 3

4 Innehåll 1 Abstract (Sammanfattning) 2 2 Förord 3 3 Inledning Problem Teori GALS - Globally Asynchronous Locally Synchronous Multi-processor scheduling SystemJ Signal Resolves TReK Verktyg JFlex - The Fast Scanner Generator for Java Beaver - a LALR Parser Generator JastAdd GraphViz - Graph Visualization Software Eclipse Apache Ant Subversion (SVN) JUnit Utvecklingsprocessen Planering Genomförande Kompilatorn för SystemJ FrontEnd Lexikalisk analys Syntaktisk analys Semantisk analys BackEnd Schemaläggning av signaler Generera Javakod med TReK Generera Javakod med TReK och optimerade reactions Undersökning Val av undersökningsmetod Testprogram Resultat Diskussion Arbetet Resultat - Slutsats Referenser 20 4

5 A SystemJ-kompilatorn 20 A.1 Checka ut projektet ifrån repository A.2 Exekvering A.3 SystemJ Syntax B Bilagor 20 5

6 Ytterligare ett steg mot realisering av SystemJ 3 Inledning Inbyggda system är den typ av elektroniska system som idag nyttjas mest till bearbetning av information. I de flesta elektroniska enheter som säljs t.ex. mobiltelefoner, diskmaskiner, TV, spisar, bilar, medicinsk utrustning, kameror, m.m. sitter det någon form av inbyggt system. Enligt Information Society Technologies (ITS), vilka är en grupp inom EU s teknologiska forskningsavdelning, så nyttjades år 2006 ca 98% av alla mikroprocessorer till inbyggda system (se [13]). Grafen i figur 1 visar ju inte längre än till 2001, men det räcker ju med att titta Figur 1: Grafen visar totalt antalet mikroprocessorer mellan och hur många av dem som sitter i vanliga PC (resten sitter i inbyggda system, enligt [13]). Grafen visar även antalet människor på jorden 2 under samma period i sitt egna hem för att få sig en uppfattning om hur detta teknikområde växer. Framför allt så får man kanske en uppfattning om hur viktigt utvecklingen inom inbyggda system är. 3.1 Problem Inbyggda system nyttjas ofta i kritiska system, där dom ställs mot väldigt höga krav. Exempel på sådana krav kan vara pålitlighet, säkerhet och tillgänglighet. En huvudfaktor, som påverkar flera av dessa kraven, är att inbyggda system ofta är beroende av batterier. Utvecklingen av batterier i jämförelse med utvecklingen av inbyggda system går betydligt långsammare, vilket skapar ytterligare krav på inbyggda system. Det kan vara krav som att de inbyggda systemen måste vara energisnåla, innehålla små program pga svårigheter med lagringsutrymmet, nyttja så lite resurser som möjligt för beräkningar, m.m. [6] Detta projekt kommer att fokusera på ett SLDL-språk (System Level Design Language) som kallas SystemJ. Programspråket, som ännu befinner sig på forskningsstadiet, är framtaget för att ge nya möjligheter inom mjukvaruutvecklingen för inbyggda system. Det kan t.ex. handla om att flera av de befintliga språken enbart kan hantera synkrona eller asynkrona processer. När man implementerar dessa två olika processer i olika utvecklingsmiljöer kan det 6

7 3.1 Problem Ytterligare ett steg mot realisering av SystemJ var svårt eller kanske t.o.m omöjligt att uppnå tillräckligt effektiv och tillfredställande kommunikation där emellan, vilket påverkar de krav som nämndes tidigare. I detta fall erbjuder därför SystemJ möjligheten att implementera och hantera dessa i samma utvecklingsmiljö, utan att mjukvaruutevecklaren behöver ta hänsyn till detaljerna kring kommunikationen, vilket skapar en både effektivare och där med mer tillfredställande mjukvara. Det enklaste sättet att hantera kommunikationen mellan processer är med dynamisk schemaläggning, dvs att varje process körs separat enligt ett schema som bestäms under exekveringen. I detta projekt ska vi undersöka om möjligheten till att slå samman processer på synkron nivå kan leda till ytterligare effektivisering. Min frågeställning för detta projektet blir därför: Genom att slå ihop synkrona, reaktiva 1 processer, går det att minska exekveringstid, nyttjande av minne och minimiera storleken på programmet? Eftersom det inte finns någon konkret testmiljö för simulering och där med undersökning, kommer SystemJ-programmen översätts till Javakod. Det finns ett Javapaket som kallas True Reactive Kernal (TReK) [4], vilket erbjuder SystemJ-funktionalitet i Java-miljö vilket kommer att nyttjas. Den genererade Javakoden kommer sedan att exekveras i en Java Virtual Machine (JVM). För att underlätta undersökningen kommer en kompilator för detta ändamål att konstrueras som kan översätta SystemJ-kod till Javakod och projektet är därför indelat i två delar. Del 1 Del 2 Skapa en FrontEnd för SystemJ Skapa en BackEnd som genererar Javakod med TReK Skapa en alternativ BackEnd som nyttjar TReK, men som sätter ihop flera synkrona reactions till en Undersöka om flera synkrona reactions som satts ihop till en är effektivare än att köra med separata, utifrån de egenskaper som omnämns i frågeställningen. Utvecklingen av kompilatorn finns beskriven i avsnittet Kompilator för SystemJ. 1 Med reaktiv menas att signaler har specifika egenskaper så som att dom ges möjlighet att få företräde före en annan signal och att en signal kan skicka information till flera processer 7

8 Ytterligare ett steg mot realisering av SystemJ 4 Teori 4.1 GALS - Globally Asynchronous Locally Synchronous Globally Asynchronous Locally Synchronous är en modell som bygger på att man fördelar bearbetningen av information över olika processer som arbetar på olika nivåer (global eller lokal). Globalt sker kommunikationen mellan två processer genom asynkron kommunikation, vilket är ett måste eftersom globala processer (även kallade klock-domäner) arbetar på olika processorer med olika klockfrekvenser. Lokalt, dvs i en klock-domän sker kommunikationen synkront, där alla processer arbetar med samma klockfrekvens. Fördelen med att fördela arbetet över denna modell jämfört med t.ex. en del tidigare modeller, där man globalt fördelar arbetet över synkrona processer, är att man t.ex. dels får ner förbrukningen av ström 3 och dels får en lättare struktur att arbeta med. Det finns ju dock även nackdelar och ett exempel på en sådan är att kommunikationen mellan de globala processerna blir ineffektivare då processer måste vänta på varandra. 4.2 Multi-processor scheduling 4.3 SystemJ SystemJ är ett nytt SLDL-språk 4. Framtaget för att bemästra en del av de hinder som idag finns inom inbyggda system. Det kan vara hinder som att flertalet befintliga språk endast erbjuder utvecklingsmöjligheter på asynkron eller synkron nivå, att kommunikationen mellan processer är väldigt komplext att implementera för utvecklaren i.o.m. att storleken på systemet är väldigt stort eller att kommunikationen mellan olika asynkrona processer inte är tillräckligt effektiv. Det omnämns två olika typer av nivåer ovan som behöver klargöras. Med abstraktionsnivå menas den nivå som programmeringsspråket ligger på och med bara nivå menas den nivå som koden arbetar på i systemarkitekturen dvs global eller lokal. SystemJ är baserad på GALS-modellen och tillsammans med att Java kombineras med en reaktiv paradigm, erbjuds en möjlighet att skapa komplex mjukvara som både arbetar på asynkron- och synkron nivå (se figur 2) utan att utvecklaren behöver ta hänsyn till detaljer kring kommunikationen mellan de olika processerna. [1] I SystemJ kallas reaktiva processer för reactions och denna term kommer att brukas från och med nu. För att ett programmeringsspråk ska bli mindre komplext på en högre abstraktionsnivå, krävs delvis mer komplexitet på en lägre abstraktionsnivå. Detta projekt inriktar sig mot den synkrona kommunikationen och på denna nivån yttrar sig komplexiteten genom att signalers status påverkar exekveringen. För att kunna beskriva hur signalen påverkar kommunikationen måste vi först redogöra för hur en signal fungerar. 3 Denna effektivisering av energiförbrukningen uppnås genom att man till de processer som inte körs, dynamiskt kan reglera strömförsörjningen [14] 4 System Level Design Language (SLDL) är en typ av språk där utvecklaren arbetar på väldigt hög abstraktionsnivå (sk. Systemnivå), utan att behöver ta hänsyn till detaljer i implementationen [1] 8

9 4.3 SystemJ Ytterligare ett steg mot realisering av SystemJ Figur 2: Bilden beskriver hur de olika processerna i SystemJ-modellen relaterar till varandra Signal En signal kan deklareras som antingen pure eller valued. pure innebär att signalen inte antar ett värde medans valued innebär att signalen antar ett värde. Detta ska inte beblandas med att signalen även har en viss status för varje tick 5. Statusen för varje signal är antingen PRESENT, ABSENT eller UNRESOLVED. Hädanefter kommer även termer som resolved och unresolved att användas. Med resolved menas att statusen för signalen är känd dvs att statusen är (ABSENT eller PRESENT ) och unresolved betyder då att statusen är okänd dvs (UNRESOLVED). För att skicka information via en signal, nyttjas SystemJ-kommandot emit, som dels på signalen sätter statusen till PRESENT och dels ev. ett värde under en tick. Detta i kombination med att SystemJ hanterar signalerna på klockdomän-nivå, betyder att en ny tick kan endast starta när alla signaler är resolved i alla reactions. Detta är en av anledningarna till att exekveringen påverkas, vilket i värsta fall kan leda till att programmet hänger sig. En annan anledning är att om vi sent i ett tick får reda på att att signalen är ABSENT eller PRESENT, så måste vi invänta denna status och exekveringstiden påverkas. Statusen för alla signaler sätts till UNRESOLVED i början av alla ticks Resolves I föregående avsnitt omnämndes två faktorer som påverkar exekveringen. Dessa faktorer kan dock motverkas/minimieras genom att man gör en analys av SystemJkoden och så tidigt som möjligt i en tick sätter statusen för en signal till AB- SENT för signaler som annars har statusen UNRESOLVED under en tick. Om signalen emitteras, dvs. statusen sätts till PRESENT och signalen ev. antar ett värde, behöver vi inte behandla signalen. För att kunna utföra denna analysen automatiskt nyttjas en sk. Control Flow Graph (CFG) 6. Det handlar om att följa flödet i exekveringen, dvs att hitta signaler som inte emitteras under en tick och sätta statusen till ABSENT 5 En tick är definitionen av det som exekveras mellan två 6 CFGn är ännu ett hjälpmedel ifrån skaparna bakom JastAdd, vilket nyttjas för att utföra sk. Control Flow Analysis. Mer om detta går att läsa i [3] 9

10 4.3 SystemJ Ytterligare ett steg mot realisering av SystemJ så tidigt som möjligt i samma tick. I denna analysen måste man ta hänsyn till loopar t.ex. while eller for, noder med grenar t.ex. if-then-else eller switch-case, men även specialfall med SystemJ-kommandona abort och suspend. abort och suspend fungerar nämligen så att exekveringen avbryts inte förrän vid nästa tick delimiter 7 (kommunikationen sker ju synkront). Detta kommer att beskrivas lite mer praktiskt när vi kommer till avsnittet Schemaläggning av signaler i beskrivningen av kompilatorn TReK För att kunna skapa SystemJ-program i en Java-miljö togs True Reactive Kernal (TReK) [4] fram. TReK är ett Javapaket som innehåller all grundläggade funktionalitet i SystemJ. Detta är det packet som kommer att nyttjas för simulering och utvärdering av SystemJ-kod i detta projekt. 7 Tick delimiter är det som avslutar en tick. I ystemj görs detta med komamndot pause 10

11 Ytterligare ett steg mot realisering av SystemJ 5 Verktyg I detta avsnitt presenteras verktygen. För respektive verktyg kan detaljer hittas på deras hemsidor, vilka är angivna som referenser. 5.1 JFlex - The Fast Scanner Generator for Java JFlex [12] är en skanner, vars syfte är att tolka tecken och skapa tokens (en symbol som representerar en teckenserie). 5.2 Beaver - a LALR Parser Generator Beaver [8] är en parser som genererar ett AST-träd 8 utifrån Context-Free Grammar (CFG), som är skrivna på Extended Backus-Naur Form (EBNF). Genom att sätta samman tokens ifrån skannern till sk. produktionsregler, kan programkod tolkas grammatiskt och AST-noder genereras. 5.3 JastAdd JastAdd [2] är en open-source, Java-baserad kompilator kompilator. Framtagen som ett hjälpmedel för att underlätta skapandet av en kompilator. JastAdd är navet i detta projekt när det gäller att ta fram kompilatorn för SystemJ. Verktyget erbjuder funktionalitet för att skapa objekt-orienterade AST-noder, analysera och transformera dessa noder samt lägga till diverse funktionalitet i AST-noderna. 5.4 GraphViz - Graph Visualization Software GraphViz [10] är ett verktyg som nyttjas för att rita upp grafer. Dessa grafer skapas genom att man skriver DOT-kod som sedan tolkas och en graf genereras. 5.5 Eclipse All utveckling kommer att ske i Eclipse [9]. Detta program erbjuder en interaktiv utvecklingsmiljö och är anpassat för externa verktyg som bl.a. Ant, Subversion och JUnit, vilket är väldigt praktiskt när det gäller utveckling av mjukvara Apache Ant Att bygga projekt med olika delar är oerhört tidskrävande så fort projekten börjar bli någorlunda stora. Ett effektivt hjälpmedel för detta är Apache Ant [7], som genom script kan utföra en mängd olika operationer med ett knapptryck. I detta projekt nyttjas Ant bl.a. till att sätta samman filer, exekvera JastAdd, kompilera alla klasser, m.m. 8 Ett AST-träd (Abstract Syntax Tree) är ett strukturerat sätt att representera kod på. Trädet består av noder, som kan bestå av inga eller flera barn. I detta projekt består ASTnoderna av klasser som autogenererats med JastAdd utifrån en specifikation 11

12 5.5 Eclipse Ytterligare ett steg mot realisering av SystemJ Subversion (SVN) Ett annat viktigt hjälpmedel är någon form av versionshantering. Jag har valt Subversion av det enkla skäl att vi nyttjar [5] som repository för projektet och där används SVN JUnit För all formell testning kommer JUnit [11] att nyttjas. 12

13 Ytterligare ett steg mot realisering av SystemJ 6 Utvecklingsprocessen Denna del ger en djupare bild av hur själva arbetet har genomförts. 6.1 Planering Upplägget och målet i från första början har varit en ambitiös inriktning genom hela projektet. Tyvärr måste jag dock säga att min förmåga att uppskatta tid för olika saker inte är jättebra. Jag känner dock inget enormt nederlag för det, då det åtskilliga gånger i flera kurser under utbildningens gång har poängterats att bra uppskattningar kräver erfarenhet och även de mest erfarna kan ha svårt att göra goda uppskattningar. Det betyder ju inte att det kan skilja hur mycket som helst mellan den uppskattade planeringen och den verkliga, utan jag anser fortfarande att arbetet har legat inom en rimlig ram. Efter en diskussion med min handledare så satte vi upp ett relativt tydligt mål att utgå ifrån. Med relativt menar jag att målet var beroende delmomenten, dvs vilka delmoment som hann utföras. Eftersom utgångspunkten visade sig vara lite väl ambitiös, så har planeringen förändrats under arbetets gång och där med har målet blivit tydligare. För att min handledare skulle ha en chans att hålla sig uppdaterad då vi befunnit oss på olika delar i landet, har jag även fört en dagbok på internet. 6.2 Genomförande Arbetet har försökts att hållas strukturerat genom hela genomförandet, men att ensam jobba med ett större projekt som detta gör att jag gärna tagit mig friheter genom att t.ex. tänja på gränserna och ibland tom. tagit avsteg ifrån den strukturella modellen. Jag har tydligt märkt att dessto mer jag tycker något är spännande, dessto mer tid lägger jag på det och dessto mindre tid blir det till andra aktiviteter, som i sin tur blir lidande. Själva framtagandet av kompilatorn, som har varit det primära, har skett genom små iterationer enligt figur 3. Själva arbetet har också delats upp i seg- Figur 3: Bilden beskriver hur en iteraton har sett ut under utvecklingsprocessen ment, enligt den uppdelning som är angiven i inledningen, dvs först har jag tagit fram en FrontEnd för SystemJ, där efter en BackEnd med TReK, osv. Med andra ord så har även arbetet på global nivå brytits ner i mindre iterativa delar. Specificering har inneburit att titta på den dokumentation som finns om SystemJ. Min handledare, som själv har bidragit en del till utvecklingen av 13

14 6.2 Genomförande Ytterligare ett steg mot realisering av SystemJ SystemJ, har varit en ovärderlig källa till information, så har det varit något oklarheter då har vi fört en diskussion om det. Design har för mig varit att bl.a. analysera hur TReK eller Control Flow Graph fungerar samt läsa in mig på manualen för JastAdd (se [2] för detaljer). För att kunna göra analys eller transformationer i AST-trädet innerhåller nämligen JastAdd funktionaltiet för att lägga till kod i AST-noderna. Implementation har gjorts uteslutande i Eclipse. I princip all kod har skrivits i sk. apsects (JastAdd-syntax), Beaver-kommandon eller JFlex-kommandon. Detta har gjort Eclipse har fungerat som en vanligt text-editior istället för ett kodningsverktyg. Eclipse erbjuder nämligen varken analys (lexikalisk, syntaktisk och semantisk) eller syntax highlighting för dessa kommandon, vilket har ställt högre krav på mig. Testning har delats upp i två kategorier, formell och informell. För FrontEnd har det tagits fram en formell test-suite, som kan testas med JUnit. Den formella testning i FrontEnd består av följande filer: TestAll.java - Söker upp alla filer i samma mapp som innehåller testcases. TestCaseOutput.java - Innehåller funktionalitet som gör att man kan matcha en input med en output i JUnit. I detta fall handlar det om att jämföra det som SystemJAnalzyer.java matar ut med en förväntad output. GrammatTest.java - Innehåller testcases för grammatiken SemanticTest.java - Innehåller testcases för semantiken SystemJAnalyzer.java - Innehåller olika funktioner för att analysera och testa SystemJ-kod. Testdatan för den formella testningen finns i FrontEnd/testdata, där den SystemJkod som skall testas finns i filer med ändelsen.sysj och det förväntade resultatet, som skapas när.sysj-filen matats genom SystemJAnalyzer.java, i filer med ändelsen.exp. I BackEnd har informell testning nyttjas. Detta för att det är extremt tidskrävande att skriva testfall för kodgenerering. Istället har de genererade Javafilerna analyserats, dels av Eclipses interna lexikaliska-, syntaktiska- och semantiska analysator för Java, men även av mig för att säkerhetsställa att SystemJkoden översätts korrekt. 14

15 Ytterligare ett steg mot realisering av SystemJ 7 Kompilatorn för SystemJ En kompilator är ett program som översätter kod ifrån en högre abstraktionsnivå till en lägre. För att förbättra strukturen och öka kompabiliteten hos en kompilator, så delas den upp i tre abstrakta steg; FrontEnd, Intermediate Code och BackEnd (i den ordningen). Genom att dela upp den på detta sätt kan man lättare anpassa kompilatorn t.ex. för en speciell plattform, utan att behöva skriva om hela kompilatorn. Intermediate Code är ett helt eget avsnitt och kommer inte att behandlas i detta projekt, utan här är BackEnd kopplad direkt till FrontEnd. SystemJ bygger på Java. Utvecklarna av JastAdd har tagit fram en fullständig kompilator för Java 1.5, skriven i Java, som har utvecklats genom att bl.a nyttja deras egna verktyg, dvs JastAdd, men även Beaver och JFlex har nyttjats. Java 1.5 FrontEnd är en grundpelare för SystemJ-kompilatorn och SystemJ FrontEnd läggs som en egen nivå ovanpå (se figur 4). SystemJ BackEnd är där emot inte beroende av Java 1.5 BackEnd, vilket också illustreras i figur 4 och kommer där med inte att nyttjas. Att bygga vidare på en befintlig struktur, i detta Figur 4: Bilden illustrerar hur SystemJ ligger som ett lager ovanpå Java. fall Java 1.5 FrontEnd, innebär en del fördelar. Exempel på sådana fördelar är att grammatiken och semantiken går att återanvända i SystemJ. JastAdd erbjuder funktionalitet för förädla AST-noderna i Java 1.5 FrontEnd, vilket bidrar till en tydlig och mer lättarbetad struktur i koden för kompilatorn. Med kompilatorn menas hädanefter hela SystemJ-kompilatorn med Java 1.4 FrontEnd, Java 1.5 FrontEnd (som bygger på Java 1.4 FrontEnd), SystemJ-FrontEnd samt SystemJ-BackEnd. 15

16 7.1 FrontEnd Ytterligare ett steg mot realisering av SystemJ Kompilatorns inre steg är illustrerade i figur 5 och förklaring till varje steg följer i kommande avsnitt. Figur 5: Bilden illustrerar hur kompilatorns inre steg är sammankopplade 7.1 FrontEnd Lexikalisk analys Lexikalisk analys går ut på att översätta en serie av tecken till en symbol (sk. token). I detta projekt nyttjas JFlex, ett verktyg som utifrån sk. regular expressions autogenererar en skanner som utför lexikalisk analys. Man brukar skilja på tre typer av symboler. Whitespace - Teckenserier som ska ignoreras, t.ex. mellanslag, tabbar, kommentarer. Non-Terminals - Teckenserier som inte är förbestämda, t.ex variabelnamn, konstanter. Terminals - Teckenserier som är förbestämda (nyckelord), t.ex. public, +, void. Eftersom vi bygger på Java 1.5 FrontEnd behöver endast nya nyckelord läggas till. 16

17 7.1 FrontEnd Ytterligare ett steg mot realisering av SystemJ Nyckelord signal channel emit sustain present await suspend abort trap exit reaction system output input send receive pause Beskrivning Nyttjas för att definerar en signal Nyttjas för att definerar en kanal Nyttjas till att på en signal sätta statusen till present och ev. ett värde under en tick Nyttjas till att sätta statusen för en signal till present för alla tick Nyttjas för att kolla om statusen för en signal är present Nyttjas för att vänta tills statusen för en signal blir present Nyttjas till att pausa nuvarande händelse om en specifik signal blir present Nyttjas till att avbryta en händelse om statusen för en specifik signal blir present Nyttjas till att definerar en fälla för en händelse i ett block Nyttjas till att hoppa ur blocket som är definerat för en fälla Nyttjas till att definera en synkron eller asynkron process Nyttjas till att definera klock-domäner och hur dessa kommunicerar Nyttjas till att definera en ut-signal/kanal Nyttjas till att definerar en in-signal/kanal Nyttjas till att sända data via en kanal Nyttjas till att ta emot data ifrån en kanal Nyttjas som tick delimiter Följade nyckelord är en sammansättning av de befintliga nyckelord som ingår i java. Nyckelord Beskrivning >< Nyttjas till att definera asynkron parallell kommunikation Nyttjas till att definera synkron parallell kommunikation Syntaktisk analys Steg två i kompilatorn är att analysera grammatiken (syntaxen) via syntaktisk analys. Mer konkret kan man säga att syntaktisk analys innebär att man analyserar strukturen av olika symboler för ett programmeringsspråk. Verktyget Beaver nyttjas till detta. Genom att definiera sk. produktionslagar, dvs kombinationer av Terminals och Non-Terminals, så autogenereras en parser som följer dessa lagar. Parsern i sin tur genererar ett AST-träd för en input-fil. JastAdd innehåller funktionalitet för att skapa klasser med attribut (för detaljer se [2]), som representerar AST-noderna. Grammatiken för SystemJ är definerat på Backus-Naur Form (BNF). För att grammatiken skall fungera med parsern (beaver) och även Java 1.5 FrontEnd, så behöver den skrivas om på Extended BNF-form. I detta skede har grammatiken, 17

18 7.2 BackEnd Ytterligare ett steg mot realisering av SystemJ delvis i samförstånd med min handledare men också pga att TReK stödjer det, utökats till att stödja komplexare uttryck. I definitionen för SystemJ är SystemJ-kommandona await, present, suspend och abort definerade så att dessa enbart beror på en signal. TReK stöjder dock uttryck för statusen på signaler, dvs man kan skriva t.ex. (Signal1 && Signal2), vilket innebär att både Signal1 och Signal2 måste ha statusen PRESENT, för att villkoret ska vara uppfyllt. Utöver den booleska operationen AND (&&) finns även OR ( ) och NOT (!). För en definition av grammatiken hänvisas till syntaxen för SystemJ i appendix Semantisk analys Det tredje och sista steget i FrontEnd är den semantiska analysen. Tidigare steg har endast handlat om att kontrollera så att olika tecken är skrivna i en speciell ordning. Här sker en djupare analys. Det mesta av denna analys handlar faktiskt om att hitta variabler, signaler, m.m. och kontrollera så att dom är deklarerade, att de operationer som utförs på dem följer de regler som finns t.ex. att typen av ett objekt nyttjas på ett korrekt sätt. Mer konkret innebär det att man kontrollerar så att t.ex. en numerisk operation endast får utföras om objektet är av en numerisk typ eller att en parameter som skickas med i ett metodanrop är av samma typ som metoden förväntas ta emot. I SystemJ kan det handla om att en kanal endast får ha en input och en output eller att receive endast kan vänta på kanaler. 7.2 BackEnd Schemaläggning av signaler Som nämndes i teoridelen, så påverkas exekveringen av SystemJ-kod bl.a. av statusen hos signaler. För att effektivisera kommunikationen på synkron nivå och motverka så att SystemJ-programmet fastnar i ett deadlock-läge, behöver en analys göras. Analysen går ut på att antingen bekräfta att alla signaler antingen emitteras (statusen för signalen sätts till PRESENT ) under en tick eller se till så att statusen sätts till ABSENT genom TReK-kommandot resolve så tidigt som möjligt under en tick. För att utföra denna analys nyttjas en Control Flow Graph (se [3] för detaljer). Denna graf läggs som en struktur ovanpå AST-trädet, där varje nod har en referens till båda nästa instruktion (s.k. successor) och föregående instruktion (s.k. predecessor) Generera Javakod med TReK Generera Javakod med TReK och optimerade reactions 8 Undersökning 8.1 Val av undersökningsmetod Simulering och undersökning kommer att ske i en. Den genererade Javakoden kommer att exekveras i en Java Virtual Machine, i Windows-miljö. Detta medför 18

19 8.2 Testprogram Ytterligare ett steg mot realisering av SystemJ att att eventuella förändringar mellan de olika testerna kommer att beskrivas relativt istället för definitivt, för att få en bättre uppfattning av resultatet. Resultatet kommer sedan att presenteras i en tabell. 8.2 Testprogram 8.3 Resultat 9 Diskussion 9.1 Arbetet 9.2 Resultat - Slutsats 19

20 Ytterligare ett steg mot realisering av SystemJ 10 Referenser Referenser [1] Z. S. Avinash Malik and P. Roop. Efficient compilation of gals language systemj. May [2] T. Ekman and G. Hedin. Internet, [3] E. M. o. T. E. Emma Nilsson-Nyman, Görel Hedin. Declarative intraprocedural flow analysis of java source code. LDTA08paper.pdf. [4] Z. S. Flavius Gruian, Partha Roop and I. Radojevic. The systemj approach to system-level design [5] Google. Internet, [6] P. Marwedel. Embedded System Design. Springer, P.O. Box 17, 3300 AA Dordrecht, The Netherlands, [7] A. A. team. Internet, [8] B. team. Internet, [9] E. team. Internet, [10] G. team. Internet, [11] J. team. Internet, [12] J. team. Internet, [13] I. S. Technologies. Internet, hardware.htm. [14] Z. Yu and B. Baas. High performance, energy efficiency, and scalability with gals chip multiprocessors. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, 17(1):66 79, A SystemJ-kompilatorn A.1 Checka ut projektet ifrån repository A.2 Exekvering A.3 SystemJ Syntax B Bilagor 20

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

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

Läs mer

Inlämningsuppgift MiniPlotter

Inlämningsuppgift MiniPlotter LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap EDAA01 Programmeringsteknik fördjupningskurs Inlämningsuppgift MiniPlotter I den här uppgiften ska ett program som ritar grafer av matematiska funktioner

Läs mer

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

Kompilatorer och interpretatorer

Kompilatorer och interpretatorer 1 of 6 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl lördag 7 november

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

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Priskamp. En prisjämförelsesite Björn Larsson 130609

Priskamp. En prisjämförelsesite Björn Larsson 130609 Priskamp En prisjämförelsesite Björn Larsson 130609 Abstrakt Detta är en post-mortem slutrapport om mitt projekt "Priskamp" inom ramen för kursen Individuellt Mjukvaruutvecklingsprojekt VT 2013. Projektets

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

[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

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

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2009 Kompilatorteknik Görel Hedin Datavetenskap Lunds Tekniska Högskola Temaföreläsning, Datorer i system, 2009 Kompilatorteknik källkod kompilator maskinkod Teknik för att bygga verktyg för formella språk.

Läs mer

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15 TENTAMEN I PROGRAMSPRÅK -- DVG C01 140605 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

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

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Žƒ ƒ Ž Ž ˆ ƒ ƒ ƒ Žƒ ƒ Ž ˆ Œ ŽŽ ƒ Backcode Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet Innehållsförteckning 12-05-29 Inledning... 3 Användarhandledningen... 4 Klasser... 4 Metoder...

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

Testplanering, test-first, testverktyg

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

Läs mer

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

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

Läs mer

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

Introduktion till programmering och Python Grundkurs i programmering med Python

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

Läs mer

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Läs mer

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,

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

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

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Introduktion till formella metoder Programmeringsmetodik 1. Inledning Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur

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

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering 2 Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med

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

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

TDDC74 - Projektspecifikation

TDDC74 - Projektspecifikation TDDC74 - Projektspecifikation Projektmedlemmar: Namn Efternamn abcde123@student.liu.se Namn Efternamn abcde123@student.liu.se Handledare: Handledare handledare@ida.liu.se eller handledare@student.liu.se

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

Testning av program. Verklig modell för programutveckling

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

Läs mer

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

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

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

Läs mer

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

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

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

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

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

Läs mer

Tentamen i Grundläggande programmering STS, åk 1 2005-01-13

Tentamen i Grundläggande programmering STS, åk 1 2005-01-13 Tentamen i Grundläggande programmering STS, åk 1 2005-01-13 Skrivtid: 14.00-19.00 Lokal: Polacksbacken Hjälpmedel: Inga Lärare: Anders Berglund. Anders besöker tentan cirka kl. 15.30. Observera: Programkod

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Schemaläggnings metoderna AMP & SMP i en Multiprocessor EDT621 Datorarkitekturer med operativsystem 7,5 HP 2015-12-05 Schemaläggnings metoderna AMP & SMP i en Multiprocessor Författare: Simon Plato Sammanfattning Rapporten beskriver två schemaläggnings metoder.

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

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2014 Kompilatorteknik Görel Hedin Datavetenskap Lunds Tekniska Högskola Temaföreläsning, Datorer i system, 2014 En typisk kompilator programkod while (a >= 0) { } kompilator maskinkod 0024 6050 2530 0000 0000

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf Föreläsning1 Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf scanf Ni behöver läsa boken både för att

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

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

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så 1 Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så många instruk6oner som möjligt parallellt Hårdvara

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Föreläsning 1, vecka 6: Abstraktion genom objektorientering TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 6: Abstraktion genom objektorientering Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Hur skulle ni implementera detta? (3D demo) Vi återkommer

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3 Johan Eliasson JUnit Junit Unit Testing Unit testing för java Används för att testa att metoder/klasser beter sig som det var tänkt Många IDE:er tex Eclipse har inbyggt stöd för detta. JUnit 3 Vi skriver

Läs mer

Slutrapport YUNSIT.se Portfolio/blogg

Slutrapport YUNSIT.se Portfolio/blogg Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

Välkomna till DIT012 IPGO

Välkomna till DIT012 IPGO Välkomna till DIT012 IPGO 1 Lärare och Handledare Kursansvariga, examinatorer, föreläsare och handledare Joachim von Hacht, hajo@chalmers.se, 772 1003 Handledare (se även kurssida) Alexander Sjösten, sjosten@chalmers.se

Läs mer

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

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

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med flera

Läs mer

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo 729G75: Programmering och algoritmiskt tänkande Tema 1. Föreläsning 1 Jody Foo Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt

Läs mer

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning

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

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2 IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2 Sekvensnät Om en och samma insignal kan ge upphov till olika utsignal, är logiknätet ett sekvensnät. Det måste då ha ett inre minne som gör

Läs mer

Parameteröverföring. Exempel. Exempel. Metodkropp

Parameteröverföring. Exempel. Exempel. Metodkropp Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

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

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036) Tentamen Datastrukturer, DAT037 (DAT036) Datum, tid och plats för tentamen: 2017-08-17, 8:30 12:30, M. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 9:30 och ca 11:00.

Läs mer

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15 OMTENTAMEN I PROGRAMSPRÅK -- DVG C01 130823 kl. 08:15-13: 15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Bilaga A: BNF-definition Betygsgräns: Kurs: Max 60p, Med beröm godkänd 50p, Icke utan beröm godkänd

Läs mer

Praktikum i programmering

Praktikum i programmering Praktikum i programmering Föreläsning 1 Lärare: Fredrik Degerlund E post: fredrik.degerlund@abo.fi Rum A5051 (denna korridor) Kursens innehåll Att lära sig att programmera moduler som ingår i ett större

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Pipelining Tid SSA P Pipelining FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO Superscalar pipelining FI DI CO FO EI WO FI DI

Läs mer

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet. Uppgift 1 Ett programmeringsparadigm är i grund och botten ett sätt att arbeta, ett sätt att möta problem. Det finns flera olika paradigm där varje paradigm har sina egna styrkor och svagheter. Det som

Läs mer

Versionshantering. Jan Erik Moström

Versionshantering. Jan Erik Moström Versionshantering Jan Erik Moström Johan Eliasson Versionssystem Gjorda för att användas av en eller flera personer på en eller flera platser, exempelvis: För en ensam användare som jobbar med ett projekt

Läs mer

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

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

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03

Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03 Slutrapport för JMDB.COM Johan Wibjer 2012-06-03 Abstrakt Den här rapporten kommer handla om mitt projekt som har handlat om att gör en webb sida för ett personligt media bibliotek, hur jag har jobbar

Läs mer

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia Konstruktion av en radiostyrd legobil Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia 1 1.Innehållsförtäckning Rapport Radiostyrd LEGO bil...1 1. Innehållsförtäckning...2 2.0 Inledning...3

Läs mer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Jonas Kvarnström jonkv@ida.liu.se 2013 Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Rena OO-språk (allt är objekt) Scala, Smalltalk, Eiffel, Ruby,

Läs mer

JAVAUTVECKLING LEKTION 1

JAVAUTVECKLING LEKTION 1 JAVAUTVECKLING LEKTION 1 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Introduktion till kursen Java historik och särdrag Javautvecklarens yrkesroll Installation och konfiguration

Läs mer

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2010

Kompilatorteknik. Görel Hedin Datavetenskap Lunds Tekniska Högskola. Temaföreläsning, Datorer i system, 2010 Kompilatorteknik Görel Hedin Datavetenskap Lunds Tekniska Högskola Temaföreläsning, Datorer i system, 2010 Vad är en kompilator? programkod while (a >= 0) { kompilator maskinkod 0024 6050 2530 0000 0000

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

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

MESI i Intel Core 2 Duo

MESI i Intel Core 2 Duo MESI i Intel Core 2 Duo Sammanfattning Denna rapport beskriver en processor (Intel Core 2 Duo) vars cache coherence protokoll är MESI. Rapporten beskriver hur processorn är uppbyggd, hur många kärnor den

Läs mer

Föreläsning 1: Intro till kursen och programmering

Föreläsning 1: Intro till kursen och programmering Föreläsning 1: Intro till kursen och programmering Kursens hemsida http:www.it.uu.se/edu/course/homepage/prog1/vt11 Studentportalen http://www.studentportalen.uu.se Lärare: Tom Smedsaas, Tom.Smedsaas@it.uu.se

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

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta

Läs mer

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens 2 2010-10-03 Erik Claesson 880816-1692 Beräkning med ord -hur en dator hanterar perception 2010-10-03 Erik Claesson 880816-1692 Innehåll Inledning... 3 Syfte... 3 Kan datorer hantera perception?... 4 Naturligt språk... 4 Fuzzy Granulation...

Läs mer

Projektarbete 2: Interaktiv prototyp

Projektarbete 2: Interaktiv prototyp Projektarbete 2: Interaktiv prototyp Jonatan Hilmarch (Grupp 13) 880427-5595 hilmarch@skip.chalmers.se Kurs: Människa-Datorinteraktion TIG061 HT 2010 Projekt 1 - en tillbakablick Enligt projektets systemdefinition

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

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