Hur väljer man ett språk eller ramverk för en framtida flexibel webbtjänst?
|
|
- Sofia Eklund
- för 8 år sedan
- Visningar:
Transkript
1 Hur väljer man ett språk eller ramverk för en framtida flexibel webbtjänst? En fallstudie på en värdekodstjänst JAKOB RASMUSSEN Examensarbete Stockholm, Sverige 2009
2 Hur väljer man ett språk eller ramverk för en framtida flexibel webbtjänst? En fallstudie på en värdekodstjänst JAKOB RASMUSSEN Examensarbete i medieteknik om 30 högskolepoäng vid Programmet för medieteknik Kungliga Tekniska Högskolan år 2009 Handledare på CSC var Hannes Ebner Examinator var Marko Turpeinen TRITA-CSC-E 2009:066 ISRN-KTH/CSC/E--09/066--SE ISSN Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC Stockholm URL:
3 Sammanfa-ning Genom intervjuer, workshops och en prototyp togs rekommendationer fram på vilket språk/ramverk som det borde användas i en webbtjänst som uppdragsgivaren Micromarketing utvecklade. I intervjuerna stod det ganska tydligt klart att om man har för avsikt att använda konsulter och extern personal för att sköta själva utvecklingen bör man använda sig utav PHP, ASP.NET eller Java. Det framgick även att beroende på hur pass objekt orienterat ett system är så är det betydligt viktigare för förståelsen av koden än vilken syntax språket använder som man skrivit systemet i. Web services visade sig ha en mycket stor del i MobiCodes vilket ledde till en granskning av vilken typ av web service som man borde använda. Främst studerades den typen av web services som bygger på W3C:s standarder och RESTful web service. Prototypen byggdes i Java och tog hjälp av ett antal nyare bibliotek för att bl.a. testa RESTful web services och att använda convensions over con*iguration i ORM:n. Rekommendationen blev den att vill man få den bästa koden bör man använda sig utav Java eller ASP.NET, i Micromarketings fall blev den slutgiltiga rekommendationen Java eftersom man idag sitter i en open source miljö.
4 How to choose a language or framework for a future flexible web service? a case study of a refund service Abstract Through interviews, workshops and a prototype a couple of programming languages and frameworks were presented as options for continued development of one of Micromarketings web services. The interviews indicated that if you attend to use consults and external people for the development you probably would like to use PHP, ASP.NET or Java. The interviews also indicated that the importance of object oriented architecture was more important than what kind of language syntax you were using when it comes to understanding the code. Web services turned out to be a major part of MobiCodes which led to a deeper studies in W3C web services standards and the RESTful way of designing web services. The prototype were developed in Java and tested a few quit new librarys, one for designing the RESTful web service and another for testing the conventions over con*igurations in the object relational mapper. The Uinally recommendation was for Micromarketing to use Java, you could also use ASP.NET but since Micromarketing already had an open source environment it was more natural to use Java. Both Java and ASP.NET will most likely contribute with the best code.
5 Förord Det Uinns några personer som jag lite extra skulle vilja tacka för att jag har kunnat genomföra detta examensarbete inom webbteknik vid CSC, KTH och på Micromarketing. Ett stor tack riktas till mina handledare Hannes Ebner på KTH som har bistått med tips och idéer från den vetenskapliga sidan samt Donnie SC Lygonis från Micromarketing som bistått med all tänkbar information om MobiCodes, kontaktuppgifter till nyckelpersoner och liknande. Jag vill också passa på att tacka alla de personer som har ställt upp på intervjuer och workshops och på så sätt gjort min studie möjlig.
6 Innehållsförtecking 1. Introduk4on Bakgrund MålsäSning Problemformulering Avgränsningar Läsarmålgrupp MicromarkeGng & MobiCodes Teori Modern webbutveckling Programmeringsspråk Objektorienterad programmering MVC arkitektur Programmeringsspråk och ramverk PHP ASP.NET Java Ruby on Rails Groovy and Grails Python, Django och TurboGears ColdFusion Web services Big Web Services RESTful web services Agil utveckling (Agile development) Agil design (Agile design) Agil dokumentagon Metoder TillvägagångssäS Intervju och workshop urvalet Intervjuer Workshop Prototyputveckling Validitet och reliabilitet Genomförande & Resultat Intervju med MobiCodes utvecklare Intervju med Donnie SC Lygonis, VD på MicromarkeGng Intervju på Fröjd InteracGve AB Intervju med Norbert Täubl, Stopp Intervju med Jim Carlberg och Niklas Eriksson, Pool Telefonintervju företag som migrerat från Coldfusion Gll Ruby on Rails Workshop med Eleni Bellos och Patrik Bruhl, MicromarkeGng Analyser ColdFusion Trender/popularitet Användbarhet/struktur FunkGonalitet Övriga aspekter Prototypen Beslutsunderlag... 40
7 2. Språk och ramverk ApplikaGonen Uhörande MobiCodes AdministraGonsgränssniS TestapplikaGonen Resultat MobiCodes AdministraGonsgränssniS Test applikagonen Slutsats Rekommenda4oner Referenser Bilaga 1: Principerna bakom det agila manifestot Bilaga 2: The Zen of Python, by Tim Peters Bilaga 3: Mailksvar från Staffan Rosenberg, Poolia Bilaga 4: Mailkonversa4on Anki Snis, Manpower Figurförteckning Figur 2.1. Klasser och objekt... 5 Figur 2.2. MVC arkitektur... 7 Figur 4.1. Modell av MobiCodes och dess infrastruktur Figur 4.2. Kodtabell Figur 4.3. ASribuSabell Figur 6.1. Utdrag ur MobiCodesApplicaGon.java, definering av vilken URI som ska länkas med vilken resource klass Figur 6.2. Databas schema över MobiCodes, med Primary Key (PK) och Foreign Key (FK) Förkortningar ASP.NET Active Server Pages för Microsofts.NET ramverk CFML ColdFusion Markup Language CGI Common Gateway Interface CRUD Create Read Update Delete DRY Don t Repeat Yourself HTML HyperText Markup Language IDE Integrated Development Environment IP Internet Protocol JDBC Java DataBase Connection JSON JavaScript Object Notation JSP Java Server Pages
8 JVM Java Virtual Machine MVC Model View Controller OOP Object Oriented Programming, ObjektOrienterad Programmering ORM Object Relational Mapping PHP PHP: Hypertext Preprocessor, tidigare Personal HomePage RPC Remote Procedure Call SOAP Simple Object Access Protocol UDDI Universal Description, Discovery and Integration WSDL Web Services Description Language XML extensible Markup Language
9 1. Introduk4on Detta kapitel redogör för bakgrunden och syftet med examensarbetet. En beskrivning av frågeställningen och avgränsningar ges även i detta kapitel Bakgrund En webbläsare kan tolka html kod, all annan typ av kod skrivs ut som ren text. För att inte begränsa sig till statiska sidor där all information måste hårdkodas in i html dokument så vill man kunna använda sig av dynamiska webbsidor. Fördelarna med dynamiska webbsidor är många och en förutsättning för att vi kan använda internet som vi gör idag. Det är en förutsättning för att kunna interagera med webbsidor, göra det möjligt att kunna logga in på olika typer av sajter och ha sina egna personliga inställningar, söka på Google, skapa innehållet på Wikipedia tillsammans med alla andra användare, köpa varor eller tjänser över nätet mm. Men dynamisk webbprogrammering har förändrats en hel del sedan world wide web introducerades runt Den första typen av dynamisk webbprogrammering byggde på CGI script. CGI script var inte helt enkla att använda sig av och man började istället utveckla andra typer av språk och plattformar som var mer anpassade för att användas på webben. Det började med ett fåtal, PHP var ett av de första men med tiden så utvecklades Uler och Uler och med tiden så förändras även språket samt förutsättningarna för språket eller plattformen. Plattformar som var populära för 7 8 år sedan behöver inte vara aktuella idag och samtidigt som plattformar som inte fanns för 7 8 år sedan kan vara högaktuella idag. Valde man en plattform för ett visst antal år sedan så kan man idag se facit av det valet, oavsett om det var rätt val eller fel val så kan tiden vara inne för att byta eller migrera till en annan plattform av en eller annan anledning. Nya möjligheter har dykt upp som inte fanns i första skedet. Trenderna har förändrats och kompetensen kanske idag Uinns i en annan plattform jämfört med när man gjorde sitt val en gång i tiden. Valet man gjorde då kanske inte var tillräckligt underbyggt eller genomtänkt. Det kan Uinnas en mängd olika anledningar för att göra ett byte, det kan vara rent tekniska anledningar. Att något man är ute efter att tillgodose helt enkelt inte är möjligt i den plattform man just nu bedriver sin tjänst i. Ett av dessa företag som nu ser över sitt val av plattform är Micromarketing som idag driver en tjänst som heter MobiCodes. MobiCodes körs och utvecklas idag i ColdFusion. Mircomarketing utlyste ett examensarbete som hade till uppgift att undersöka vilken eller vilka plattformar som skulle passa för att fortsätta utvecklingen av deras tjänst. I den här studien undersöks frågeställningen enligt de metoder som Uinns i kapitel 3 för att förhoppningsvis komma fram till rekommendationer till Micromarketing Målsä-ning Målsättningen med examensarbetet är att skapa en förståelse för betydelsen av att göra ett aktivt val när man står inför utmaningen att byta språk eller ramverk för olika typer av web tjänster. Att undersöka förutsättningarna och efter det använda sig utav det språk eller ramverk som passar bäst. 1
10 1.3. Problemformulering Vilket/vilka programmeringsspråk/ramverk lämpar sig bäst för framtida Ulexibla utvecklingsprojekt? För att Uinna svar på frågeställningen användes sju stycken underfrågor: 1. Vad är nackdelarna med ColdFusion idag? Varför vill man på Micromarketing genomföra den här migrationen. Vad är inte tillfredsställande med ColdFusion? 2. Hur fungerar och vad är ColdFusion? Har ColdFusion några egenskaper som gör en att en migration till ett visst språk eller ramverk skulle vara mer fördelaktig. 3. Vilka språk och ramverk föredrar konsulter som arbetar med liknande system? För att kunna rekommendera ett språk eller ramverk som inte ska försätta Micromarketing i samma situation igen när det gäller personal rekrytering bör man titta på vad som används i branschen idag. Att även få en översyn på hur dokumentation och struktur bör se ut från branschen håll är intressant. 4. Plattformar med potentiell utveckling, prognoser för framtiden? Att titta på trenderna är en viktig aspekt. Att rekommendera det perfekta ramverket i dagsläget men som på sikt inte kommer att hålla är därför något man bör undvika. 5. Har systemet någon funktionalitet som kan vara avgörande för val av språk eller plattform? Finns det något typ av funktionalitet i MobiCodes som med fördel kan utvecklas i ett visst språk eller ramverk. 6. Vilka ekonomiska aspekter Ainns det att ta hänsyn till? Ekonomiska är en intressant fråga i utvecklings projekt som t.ex. MobiCodes. Hur bör man hantera ekonomin i systemet när man väljer språk eller ramverk. 7. Hur vill Micromarketing arbeta med systemet? Den här frågan önskas ge svar på frågor kring hur man inom företaget ska använda system, hur ska personalen arbeta med det, vad har man för visioner med systemet. Med hjälp av dessa under frågor togs lämpliga metoder fram för att besvara en eller Ulera utav dem. En samlad bild av dessa ska sedan ligga till grund för resultatet av problemställningen Avgränsningar Att avgränsa studien från språk och plattformar känns som en väsentlig del i det här examensarbetet. Dels för att det inte Uinns tid att gå igenom alla och dels för att det inte är en rimlig uppgift att göra. För att avgränsa studien till ett mindre antal ramverk så diskuterades alternativen tillsammans med handledare på Micromarketing och KTH och det ledde fram till följande språk 2
11 och ramverk: PHP, ASP.NET, Java (servlets, JSP m.m.), Groovy and Grails, Ruby on Rails, Turbo Gears och Django. Förutom diskussioner med handledare så hade dessa språk och ramverk intressanta egenskaper som gjorde dem aktuella, en del har stor spridning och popularitet och en del är mer eller mindre nya ramverk som i sin tur bygger på redan mer eller mindre etablerade programmeringsspråk. För att studien ska hamna inom rimliga gränser rent tidsmässigt så har den här studien ingen djupare genomgång av de olika ramverken och plattformarna utan de har istället försökt beskrivas utifrån de särdrag som de olika plattformarna samt språken har. Hur själva migreringen ska gå till undersöks inte i denna studie. Med andra ord så tas det inte hänsyn till om det Uinns automatiserade metoder för att att migrera från en plattform till en annan. Däremot kan grundläggande information om systemets nuvarande infrastruktur spela en roll för beslutet Läsarmålgrupp För att kunna ta del av den här rapporten bör man ha grundläggande kunskap om vad HTML och XML är. Man bör även ha en vis förståelse för hur internet fungerar med de olika protokollen, t.ex. http, IP o.s.v. I det teoretiska avsnittet beskrivs ett antal programmeringsspråk. Men för att få ut mesta möjliga av rapporten är grundläggande programmeringskunskap bra Micromarke4ng & MobiCodes Micromarketing arbetar med digital kommunikation och media och är främst inriktade på den mobila marknaden. Företaget har funnits sedan 1999 och har lång erfarenhet inom skräddarsydda kampanjer. Förutom den mobila marknaden tillhanda håller man tjänster inom webb och tryck (Micromarketing, 2008). En av Micromarketings tjänster heter MobiCodes, vilket är ett registrerat varumärke. MobiCodes är en tjänst som i huvudsak går ut på att generera och validera värdekoder. MobiCodes kan användas på Ulera olika sätt, man har t.ex. använt det tillsammans med ATGs system. Då kunde man gå till en ATG ombudsman och köpa en kod som hade ett värde från 50 kr upp till 250 kr. Sedan kunde man använda koden som betalningsmedel och värdet man köpte produkter på drogs då av från koden. Produkterna gällde då främst innehåll till mobiltelefoner. Mot detaljhandeln har man använt systemet för att ge kunder ett mervärde när de köper en vis typ av produkt. En kampanj som man hade nyligen gick ut på att man köpte ett hemmabiosystem samt en full HDTV från Samsung så Uick man två åskådarbiljetter till Scandinavien masters i golf och ett presentkort från MQ på 500 kr (Newsdesk, 2008). Denna kampanj var då tillgänglig i ett visst antal butikskedjor, t.ex. SIBA och OnOff. I samband med Idol på TV4 så körde man en kampanj där man genom en kod Uick tillgång till en ringsignal, en låt och en bild. I övrigt kan systemet användas i olika typer av tävlingar. 3
12 2. Teori I detta kapitel ges en redogörelse för teorier som är av betydelse för examensarbetet Modern webbutveckling Modern webbutveckling börjar mer och mer att ta efter mönster i traditionell mjukvaruutveckling. Exempel på detta är ökad stöd för objektorientering i PHP 5 jämfört med PHP 4 även ActionScript som används i Flash programmering är numera objektorienterat. Att strukturera sin kod enligt traditionella mönster är även det något som numera används inom webbprogrammering, exemple på det är MVC (läs mer kap 2.4) och three tier även kallat n tier som påminner om MVC. Att utvecklingen på webben ligger efter traditionell utveckling kan bero på webbens historia. Till en början såg man webben som ett informationsmedium och utvecklingen var då ett problem för de som skapade innehållet. Med tiden har webben gått från ett informationsmedium till en applikations plattform och samtidigt har man börjat se utvecklingen ur ett mjukvaruperspektiv (Gellersen och Gaedke, 1999). Med detta har de arbetssätt som används inom mjukvarubranschen även börjat användas i webbutveckling. Ett programspråk kan vara objekorienterat men det är inte på något sätt kopplat till någon speciell typ av struktur utan det är upp till varje utvecklare att bestämma. För att underlätta detta arbete med struktur och samtidigt undvika att uppuinna hjulet varje gång man bygger en ny applikation så Uinns det ett antal så kallade ramverk som man kan använda. ASP.NET är ett sådant ramverk, dessa ramverk hjälper utvecklaren att öka produktiviteten och återanvända sådan kod som återkommer i många applikationer. Ramverket kan hjälpa till att skapa kopplingar som behövs mellan de olika delarna i systemet. Trots att mjukvarubranschen har en Ulera års erfarenhet av dessa typer av projekt så ligger fortfarande den genomsnittliga kostnaden för underhåll av mjukvaran på 55% av mjukvarans totala livskostnad (SEPT, 2009). Två av de stora kostnaderna ligger på arbete som måste göras om p.g.a. dålig kvalité samt rent underhåll Programmeringsspråk Den här studien försöker visa skillnader mellan klassiska programspråk och de agila programspråken. Programmeringsspråk kan delas in i Ulera olika grupper, kompilerade eller tolkade, statiska eller dynamiska, hårdtypade eller löstypade och till dessa grupper kommer även begrepp som programspråk och scriptspråk. Ofta händer det att Ulera av dessa begrepp tolkas som synonymer och olika källor har olika åsikter i frågan. DeUinitionen på agila programmeringsspråk i den här studien syftar generellt till den grupp av språk som oftast räknas in i grupper så som scriptspråk, dynamiska språk och tolkade eller interpretated languages. De språk som inte räknas in i de agila språken kallas fortsättningsvis programspråk. 4
13 I den här studien kommer programspråken i första hand att syfta till Java, C#, C++, Visual Basic och de agila språken kommer att syfta till Ruby, Python, Groovy och PHP. Med de olika typerna av språk så Uinns det både fördelar och nackdelar. Fördelarna med programspråken är att de är snabbare och det beror på att de behöver färre instruktioner per kommando för att utföra samma operation (Wright och More, 2006). Likaså har de bättre minneshantering, med det inte menat att agila språk inte har detta men de tar hand om det utan att programmeraren behöver bry sig om det. Detta är ytterligare en anledning till att det är långsammare. Fördelarna med de agila språken är dels tiden det tar att programmera olika uppgifter, med dessa typer av språk går det snabbt att ändra och köra applikationen igen utan att behöva kompilera om. Dessutom är syntaxen betydligt enklare och man har plockat bort delar av koden som det annars är vanligt att man gör misstag på som t.ex. måsvingar ({}) samt att man inte behöver avsluta en rad med ett semikolon (;). När dessa språk sedan används i webbprogrammering så ger det även en fördel när man använder sig av information som sparas i webbläsaren. Vill man då göra en uppdatering i en funktion som bygger på att man går igenom Ulera steg på en webbplats så måste man med programspråken kompilera om innan uppdateringen börjar gälla. Man hamnar då Ulera steg bakåt i kedjan och testning av dessa funktioner blir tidskrävande, denna testning blir enklare när kompilering mellan varje uppdatering inte behöver göras (Rocher, 2006) Objektorienterad programmering Alla moderna språk är mer eller mindre objektorienterade, tidigare så var språken funktionsbaserade eller proceduella. Objektorienterad programmering (OOP) innebär bra möjligheter att avbilda eller modellera verkligheten på ett bra sätt (Nordqvist, 2003). Huvudbegreppen i OOP är klasser och objekt. Klasser beskriver hur objekten ser ut och vilka attribut de har. Objekten är instanser av en klasser och har sina speciella värden på sina attribut. Attributen är egenskaper som klassen har, t.ex. kan en bil ha ett attribut som heter registreringsnummer och ett annat som heter färg (se Uigur 2.1). reg nr märke färg motor Klass Objekt ABC 123 Saab gul bensin ABC 456 Volvo grön diesel ABC 789 Renault blå etanol DEF 123 Ferrari svart bensin Figur 2.1. Klasser och objekt. 5
14 Förutom att objekten har sina speciella värden på attributen så har ett objekt oftast metoder som kan ändra värdena på attributen, en bil kanske lackeras om till en annan färg o.s.v. De här metoderna leder oss till en annan del av OOP, nämligen inkappsling. Inkappsling innebär att man skiljer på gränssnitt och implementation (Nordqvist, 2003). För omvärlden är det helt ointressant att veta exakt hur man lackerar om bilen, man vill bara lämna in bilen och få tillbaka den i den färg man vill ha. På samma sätt fungerar det i OOP, för omvärlden Uinns det bara en metod som med ett logiskt namn förhoppningsvis talar om vad den gör, i övrigt vet inte omvärlden exakt vad som händer när metoden anropas. Arv kan beskrivas som om det Uinns ett visst antal egenskaper som alla bilar har, det här är då superklassen. Under superklassen Uinns det subklasser som ärver från superklassen, de kan t.ex. vara en Cabriolet subklass som har några attribut som inte alla bilar har. Subklassen har då alla attribut och metoder som superklassen har, som färg och registreringsnummer men även en del egna attribut och metoder. PolymorUism innebär att en del subklasser vill utföra en metod från superklassen på ett något speciellt sätt. Det kan vara att samtidigt som man byter färg på bilen så skaman registrera det hos biltillverkaren, har man då en metod i superklassen som heter byt_färg så döper man special metoden i subklassen till samma namn, alltså byt_färg men man implementerar den på ett annorlunda sätt. Objektorientering har en något speciell roll i webbprogrammering. I webbprogrammering är det vanligt att man använder sig av relationsdatabaser. Relationsdatabaser sparar dock inte sina poster som objekt utan som rader i en tabell. En lösning för att arbeta objektorienterat med dessa databaser är att man kopplat samman raderna i tabellerna med ett objekt. Så istället för att använda sig utav SQL frågor så anropar man de rader man vill ha genom klassmetoder och de rader man får tillbaka som resultat blir då objekt av en klass. Man kan på så sätt enkelt skapa egna metoder i klassen för att modiuiera raderna i SQL tabellen istället för att använda SQLsyntax, detta kallas Object Relational Mapping (ORM) MVC arkitektur Model View Controller (MVC) innebär en uppdelning av en mjukvara i tre lager. Modellen tar hand om statusen på applikationen, en del information ska sparas en kortare stund medan andra ska sparas en längre tid. View representerar hur informationen ska presenteras för användaren, hur layouten ska se ut mm. Controllern tar hand om användarens förfrågningar, controllern tar den informationen och ser till att rätt sak blir utförd (se Uigur 2.2, sid 7). MVC har en historia sedan slutet på 1970 talet då det första grauiska gränssnitten började se dagen ljus och Trygve Reenskaug ses som MVCs fader (Ramm, Dangoor och Sayfan 2006). 6
15 Webbläsare Controller Figur 2.2. MVC arkitektur. View Model Databas / Web service Model Modellens huvudfunktioner är de s.k. CRUD operationerna (Creat, Read, Update och Delete), alltså att skapa, läsa, uppdatera och radera data. Men i modellen brukar man även bygga in vad man kallar för Buisness Logic. I en webbshop kan det handla om att en order under ett visst värde inte innefattar fri frakt, då ingår det i modelens uppgift att se till så att applikationen håller reda på det faktum (Thomas och Hansson, 2007). View Viewn får den information den ska visa från controllern och använder sin design för att göra detta. En view kan t.ex. vara en sida som har till uppgift att presentera samtliga produkter, eller endast produkter i en viss kategori. Vilket som gäller beror på vad controllern skickar för information. Controller Controllern är spindeln i nätet och är det lager som tar hand om alla förfrågningar som kommer in. Detta kan innebära att plocka fram information från modelen för att sedan skicka den vidare till Viewn som presenterar informationen. Trots att MVC arkitekturen varit känd sedan länge inom mjukvarubranchen så var det inte där man började när man började designa webbapplikationer. Utan istället buntade man ihop all typ av kod och databas anrop kunde ske direkt från en view sida. De tidiga teknikerna som ASP (Active Server Page), PHP och ColdFusion byggde på tekniken att integrera scriptkoden och på så viss uppmuntrade detta sätt att designa. Men sedan kom JSP och Servlets från java vilket gjorde att man använde JSP som view och servlets som allt annat. Men fortfarande var det enklare att skriva kod i JSPn istället för att göra en servlet (Ramm, Dangoor och Sayfan 2006). WebObjects var ett utav de första stegen mot att använda riktigt MVC i webbramverk och på det följde Struts, båda för Java (Thomas och Hansson, 2007). I webbapplikationer fungerar MVC så att modellen oftast kopplas till en databas men kan även användas mot ett web services gränssnitt. Viewn är i de Ulesta fall en HTML sida med integrerad kod beroende på vilket språk man använder. Fördelarna med MVC ska vara att man tydligt ska separera de olika lagren ifrån varandra för att på så sätt kunna vara utbytbara utan att påverka de andra lagerna (Holovaty och Kaplan Moss, 2008). Detta ger fördelar på Ulera olika sätt, dels blir underhållet enklare när man vet var man bör hitta de 7
16 olika delarna av systemet. En ytterligare fördel av utdelningen av arbete. I den har arkitekturen kan man på ett enklare sätt dela upp arbetet mellan programmerare och designers, även de som har sin expertis inom databaser har sin del att arbeta med Programmeringsspråk och ramverk Under de tidiga åren av internet använda man sig av s.k. CGI script (common gateway interface). Det är ett protokoll som låter webbservern använda sig utav externa program för att skapa dynamiskt innehåll på webbsidor (Holovaty och Kaplan Moss, 2008). Före detta fanns det endast Uiler med HTML kod som man Uick uppdatera en efter en om man ville ändra innehållet. Detta hade sina begränsningar, bl.a. var inlärningströskeln ganska brant och det var en hel del upprepning av kod. CGI script var inget språk utan endast ett protokoll, språk som kunde användas var bl.a. Perl eller Python. Efter detta började man utveckla metoder för att på enklare sätt integrera de dynamiska funktionerna i webbuilerna istället för att hämta externa script PHP 1995 började utvecklingen av vad idag kallas PHP. Det var en utveckling av CGI scripten och tjänade till att minska kodupprepningen. PHP/FI hette det då och stod för Personal Home Page / Forms Interpreter (PHP.net) och var utvecklat i C. På detta följde PHP/FI 2.0 och efter ytterligare utveckling kommer 1998 PHP 3. Man har då byt namn till endast PHP som nu får betydelsen PHP: Hypertext Preprocessor (PHP.net). I maj 2000 kommer PHP 4 som nu har fått objekt orienterande egenskaper men det ska dröja till PHP 5 innan det blir mer användbart (Naramore et al., 2005). PHP är från början tänkt att användas just som ett script som läses från topp till botten och har ingen naturlig MVC arkitektur men har efter att Ruby on Rails släppts fått många ramverk till sitt förfogande (Golding, 2008). Detta gör att det blir extra svårt att välja ett som passar bättre än andra men eftersom de kan ha olika varianter så Uinns det vissa som påminner om varandra mer än andra. T.ex. är CakePHP ett ramverk som har stora likheter med Ruby on Rails, Fuse är ett annat som Uinns till både PHP och ColdFusion men i original utförande är utvecklat för ColdFusion, ramverk som har likheter med Javas Struts Uinns också i ett antal varianter (Web Application Component Toolkit, 2008). Vad gäller syntax så är PHP en blandning av Java, C och Perl samt några egna. Som scriptspråk har det en låg ingångströskel och man kan snabbt komma igång med att utveckla(php.net). Nackdelen är att PHP inte har en klar struktur över hur man ska använda och strukturera upp sin kod och Uiler. Det blir enkelt att man bara bygger på det och på så sättet får en struktur som är svår att underhålla och framför allt bygga på för någon annan. För att hantera externa paket har PHP ett extension interface som kallas för PHP Extentions and Application Repository (PEAR) ASP.NET Active Server Pages (ASP) var introducerat runt 1997 av Microsoft. ASP var inget språk i sig utan stod för en teknik som användes för att skapa dynamiska webbsidor. Språket som användes var Visual Basic script, VB 8
17 script. Som namnet antyder så var det det ett språk som tolkades och inte kompilerades. ASP lämnade mer att önska och den sista versionen som kom ut var version 3. Efter detta började man utveckla ASP.NET, det är igen vidareutveckling av ASP utan är en ny utveckling och är inte bakåtkompatibelt med ASP. Som namnet antyder bygger ASP.NET på Microsofts.NET plattform..net plattformen är inte bunden till ett språk utan är uppbyggt på ett speciellt sätt för att kunna hantera Ulera olika språk. Common Type System (CTS) och Common Language SpeciUications (CLS) är de grunder som alla språk inom.net måste förhålla sig till. I princip går det till så att alla typer av språk ska kompileras till så kallad Intermediate Language (IL) kod. Common Language Runtime (CLR) som är Microsofts implementation av IL just in time kompilerar sedan koden till maskinkod som operativsystemet kan tolka..net har fem stycken standardspråk som ingår i ramverket, dessa är C# (C sharp), Managed C++, Visual Basic.NET (VB.NET), J# (J sharp) och JScript.NET (Hurwitz och Liberty, 2003). Men med hjälp av CTS och CLS kan man skapa Uler språk som är kompatibla med.net. IronRuby och IronPython är två sådana exempel. Att.NET har stöd för dessa språk innebär att även ASP.NET har stöd för dessa samt alla de bibliotek som ingår.net. Att det är uppbyggt på det här visset innebär att man kan bygga en CLR för en annan plattform än Microsofts, t.ex. Unix eller Mac OS X och köra samma applikationer på dessa utan att behöva ändra källkoden, write once run anywhere. I ASP.NET använder man sig av termer som Code Behind, Code Beside och Code Inline. Code Beside är en nyare variant av Code Behind men fungerar på liknande sätt. Code inline innebär att all dynamisk kod samt HTML eller layoutkod ligger i samma dokument. Code Beside innebär istället att man använder sig av en separat Uil för att hantera all dynamisk kod. Att använda sig utav den ena eller andra har inga prestandamässiga skillnader utan de enda skillnaderna som Uinns är att att det blir lättare att underhålla, läsa och ändra (Esposito, 2005) Java Java har ett antal olika tekniker för webbprogrammering och de är i huvudsak Java Server Pages (JSP), Servlets och Applets. Applets är ett Javaprogram som är inbäddad i HTML koden på liknande sätt som man lägger in en bild i koden. Koden bäddas in i HTML koden med applet taggar, och kan använda param taggar för att skicka parametrar till programmet. För att sedan kunna exekvera koden måste man ha en webbläsare med Java teknologi som i sin tur kör koden i sin Java Virtual Machine (JVM) (Sun Microsystems, 2009a). Java Servlets API:t är en standardpåbyggnad till Java som gör det möjligt att bygga dynamiska webbapplikationer. Servlets kan liknas vid en Applet som körs på serversidan (Sun Microsystems, 2009b), Servlets har tillgång till hela Javas API inklusive Java Database Connector (JDBC) (Sun Microsystems, 2009c). JSP är en påbyggnad av Servlets och är till för att enklare skapa HTML och XML sidor. JSP gör det enklare att mixa statisk och dynamiskt innehåll (Sun Microsystems, 2009c). JSP påminner lite om PHP på det sättet att det är en blandning av HTML kod med integrerade Javakod. Skillnaden från PHP är att JSP sidan inte tolkas av webbservern utan skickas vidare till en servlet engine som bryter ut HTML koden och 9
18 kompilerar Java koden till en servlet där HTML koden läggs tillbaka som write funktioner i Java (Downey, 2007). Servlets är redan kompilerad källkod som körs av en servlet engine, Tomcat är en populär sådan men det Uinns Uler. Servlets och JSPs är de metoder som kan ansluta till en databas, Applets kan inte göra detta p.g.a. den anledningen att den körs hos klienten och är inte tillräckligt säker för att få göra det (Dr. Zhiqi, 2007). När det gäller att koppla ihop Java med en databas så har Java just där en styrka i JDBC. JDBC är ett API för Java för att kunna kontakta en databas och just antalet databaser som det Uinns stöd för i JDBC är mycket stort och det Uinns så gott som ingen databas som inte har stöd av en JDBC driver. Applets är den tredje delen av Java och är kompilerade klasser som inte har tillgång till databaser men kan användas för mer avancerade grauiska inslag på klient sidan. JSP sidor har sina fördelar i att Java script (inte att förväxlas med JavaScript) kan integreras i HTML koden. Detta leder till att det går fortare att utveckla den grauiska layouten utan att behöva använda sig utav en massa writefunktioner som skulle krävas i en Servlet. Att underhålla layouten i en Servlet är betydligt svårare än att göra det i en JSP sida. I och med den uppdelningen är det inte helt ologiskt att använda Servlets i controllers samt i kontakt med databasen och JSPs i views (Downey, 2007) Ruby on Rails Ruby on Rails är ett ramverk som bygger på det dynamiska språket Ruby utvecklat av Japanen Yukihiro Matsumoto och släpptes första gången Målet var att göra ett språk kraftfullare än Perl men mer objektorienterat än Python, resultatet blev Ruby (Thomas, 2004). Till Ruby Uinns ett ramverk kallat RubyGems. RubyGems är en standard för hur bibliotek (librarys) och tilläggsapplikationer ska paketeras för att det ska vara så enkelt som möjligt att hitta installera uppdatera och avinstallera. RubyGems har en gemensam lagringsserver där alla paket Uinns tillgängliga för det mesta men det kan även vara så att man explicit måste ange källan man vill hämta det ifrån. Innan RubyGems fanns var man tvungen att leta på nätet efter det paket (gem) man ville ha och när man väl lyckats installera det kunde det visa sig att man saknade ett paket som man var tvungen att ha för att just det paketet skulle fungera. Med RubyGems kan man be om att installera ett paket och alla paket som det i sin tur behöver (Thomas, 2004) släpptes ramverket Ruby on Rails (rails) första gången under MIT license vilket är en öppen källkods licens. Basecamp är ett projectmanagement verktyg utvecklat i Ruby och från detta projekt plockade man ut delar för att sedan skapa Ruby on Rails. Rails är ett RubyGem men har ett antal gems som också krävs för att det ska fungera, ett av dem är Active Record paketet som tar hand om mappningen till databasen (ORM). ORM innebär att man istället för att använda sig av SQLsyntax i koden för att arbeta mot databasen så använder man sig av objekt. Varje objekt motsvarar en tabell i databasen med ett antal attribut som då är kolumnerna i tabellen. Så istället för att arbeta direkt mot databasen så 10
19 arbetar man mot dessa objekten som har en del fördeuinerade metoder för t.ex. skapa, läsa, uppdatera och radera (CRUD) men även metoder för att söka efter objekt. Mappningen följer en av Rails grundstenar convention over con*iguration, alltså konventioner framför konuiguration (Geer, 2006). Detta innebär att skapar du ett objekt som heter week så skapas det efter det en tabell i databasen som heter weeks. Rails har bra stöd för detta och stöder inte bara regelbundna substantiv utan även oregelbundna som person och people. Man kan även skapa egna regler om man t.ex. vill använda svenska ord. Att det fungerar så här innebär att man slipper en massa konuiguration om vilken tabell som hör till vilket objekt och vilken kolumn som hör till respektive attribut. Andra egenskaper som Rails använder sig av är generatorer och scaffolding. Generatorer innebär att skelett för olika typer av Uiler i applikationen skapas och lägger sig på rätt plats, t.ex. controllers och objekt där man kan välja vilka metoder man kan behöva för controllern och vilka attribut man vill ha på objektet och vilken typ de ska vara. Scaffolding är en annan typ av generator där man kan välja att göra en scaffold av ett objekt och då skapas ett helt grauiskt gränssnitt med alla CRUD operationer och ett index över alla objekt i objektets motsvarande tabell. Funktioner som man i de Ulesta fall använder sig av i databasdrivna webbapplikationer. Förutom convention over con*iguration så använder sig Rails av Don t Repeat Yourself (DRY), vilket innebär att ramverket eftersträvar att man så långt det går inte ska behöva upprepa kod Groovy and Grails Groovy är vad man kallar ett dynamiskt språk utvecklat för att kunna användas i Java miljö. Det skiljer sig dock på en väsentlig punkt från andra och det är att det faktisk kompileras ner till bytecode och sedan exekveras. Det beter sig i sin natur precis som Ruby eller Python men det tolkas inte utan kompileras. Detta märker man inte av av den anledningen att det fungerar som ett scriptspråk men mer viktigt är att veta att en Groovy class är en Java klass och de kan på så vis arbeta med varandra. En Java klass kan alltså använda sig av metoder i ett interface som är implementerat av Groovy utan att märka någon skillnad (Rocher, 2006). Eftersom Groovy är så nära integrerat med Java så drar Groovy samma fördelar från JDBC som Java gör. Även alla bibliotek (librarys) som Uinns tillgängliga för Java är även tillgängliga för Groovy och det Uinns en hel del och oftast Ulera för samma uppgift och mer parten av dessa är öppen källkod (open source). (Rocher, 2006) Groovy släpptes första gången sommaren 2005 och ses som ett svar på Java implementationerna av Ruby och Python som kallas JRuby och Jython. Detta är scriptspråk som i princip fungerar som i originalutförande men har fördelen av att kunna köras på en Java Virtuell Machine (JVM). Det är en stor fördel med tanke på alla de installationer som Uinns av JVMs och att byta ut hela sitt system bara för att byta plattform är kostsamt (Bini, 2007). Integrated Development Environment (IDE) är något som är populärt i Java miljön och Eclipse är en av de populäraste, Microsoft har sin Visual Studio för att nämna några. IDE innebär en textredigerare, kompilerare och en 11
20 debugger. Utrycket Edit Compile Run är välkänt för Java utvecklare och innebär att man först redigerar sin kod, kompilerar den för att sedan köra applikationen (Dr. Zhiqi, 2007). Att ha allt detta samlat i ett utvecklings verktyg gör förfarandet snabbare än om man skulle ha olika delar för de olika stegen. En anledning för att inte byta plattform från Java är att det saknas bra IDE för andra språk och i detta fallet speciellt för Ruby on Rails. Med Groovy and Grails är det möjligt att jobba vidare i Eclipse eftersom det Uinns en groovy plug in och förutom möjligheten att jobba med Groovy kan man köra Grails ifrån Eclipse (Rocher, 2006) Python, Django och TurboGears Python släpptes första gången redan 1989 och var då utvecklat av Guido Van Rossum (Agarwal och Agarwal, 2005). Pythons har liksom Ruby ett system för att enkelt installera och uppdatera externa paket, i Pythons fall heter det easy_install. Python har till skillnad från Ruby ett Ulertal olika ramverk som utvecklare använder. Två utav dem som påminner mycket om Ruby on Rails är Django och TurboGears. Django är ursprungligen utvecklat för artikelpublicering för nyhetstidningar. Det är alltså precis som Ruby on Rails skapat efter ett verkligt projekt. Man utvecklade alltså ramverket för att man verkligen behövde det och såg det som ett sätt att underlätta framtida projekt (Holovaty och Kaplan Moss, 2008). Funktionerna i Rails, Grails, Django och TurboGears är ganska lika och ramverken har bara valt att implementera dem på olika sätt och tolkat MVCarkitekturen på lite olika sätt vilket är beskrivet tidigare. En funktion som dock är unik för Django är ett automatiskt genererat administrationsgränssnitt med enklare inloggningsfunktioner. Man kan sedan välja vilka objekt som ska ingå i gränssnittet. Med andra ord lämpar sig Django väl för olika typer av publiceringsapplikationer vilket dess ursprung även talar för. Även speciuikt för Django är att man har speciella datatyper för e post adresser och URL (Uniform Resource Locator) adresser. Ett känt begrepp inom Python programmering är Pythonic. Det är ett karakteristiskt sätt för hur Python och dess bibliotek används (Ramm, Dangoor och Sayfan, 2006). Detta sätt att använda koden som påminner om en UilosoUi och sträcker sig utanför standardbiblioteken och går även att känna av i många tredjepartsbibliotek. Tim Peters har formulerat detta i The Zen of Python (Appendix B). TurboGears har även försökt fånga denna UilosoUi så långt det är möjligt. Man har även tagit hänsyn till förfrågningar på webben, vilket gör att de ser ut som standardmetoder när de väl når koden i applikationen (Ramm, Dangoor och Sayfan, 2006) ColdFusion ColdFusion har haft många turer genom åren från olika bolag utvecklade Alaire Corporation första versionen. Alaire blev uppköpt av Macromedia och ColdFusion MX utvecklades (Churvis et al., 2003). Efter detta köptes Macromedia upp av Adobe som nu utvecklar och under håller 12
Webbservrar, severskript & webbproduktion
Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera
Läs merWeb Services. Cognitude 1
Web Services 1 Web Services Hur ska tillämpningar integreras? Hur ska tillämpningar integreras (via nätet ) för att erbjuda tjänster åtkomliga på nätet? SVAR: Web Services (Enligt Microsoft, Sun, IBM etc.)
Läs merWebbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion
Webbteknik En kort introduktion Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender 1 Historisk återblick 89 CERN Tim Berners Lee Ett plattformsoberoende sätt att sprida
Läs merOlika slags datornätverk. Föreläsning 5 Internet ARPANET, 1971. Internet började med ARPANET
Olika slags datornätverk Förberedelse inför laboration 4. Historik Protokoll, / Adressering, namnservrar WWW, HTML Föreläsning 5 Internet LAN Local Area Network student.lth.se (ganska stort LAN) MAN Metropolitan
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 merSwedbank Mobile Loadtesting. LoadRunner 11.04 Mobile App protocol
Swedbank Mobile Loadtesting LoadRunner 11.04 Mobile App protocol Bakgrund Mission: Prestandatesta mobilt backend Typ: RESTful tjänst Underlag: Dokumenterat URI och API (Uniform Resource Identifier, Application
Läs merDu fulländar mig! Om synergierna mellan agila metoder och UX. Joakim Holm Adaptiv AB. Erik Hammarström Antrop AB
Du fulländar mig! Om synergierna mellan agila metoder och UX Joakim Holm Adaptiv AB Erik Hammarström Antrop AB Vetenskapliga metoden 1. Observera verkligheten 4. Genomför experiment 2. Utforma hypotes
Läs merWebbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011
Webbteknik II Föreläsning 4 Watching the river flow Web Service XML-RPC, SOAP, WSDL, UDDI HTTP Request, Response, Headers, Cache, Persistant Connection REST Hype or the golden way? Web Service / Webbtjänst
Läs merDet här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.
Informationsinfrastruktur 7.5 hp Mattias Nordlindh Inledning Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer. Dokumentet består av
Läs merASP.NET Thomas Mejtoft
ASP.NET Introduktion till ASP.NET Utveckla i ASP.NET I ASP.NET kan och bör man separera HTML-kod från övrig kod (C#, VB ) I enklare fall läggas kod i script-block Vanligtvis läggs den i en Code Behind-fil
Läs merJAVAUTVECKLING 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 merCreo Customization. Lars Björs 2014-10-16
Creo Customization Lars Björs 2014-10-16 Norra Europas största partner och återförsäljare av PTC relaterad programvara (Windchill, Creo, Arbortext, MathCad, Relex) 70 anställda Egen utvecklingsavdelning
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 merWebbtjänster med API er
Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Läs merAutomation Region. Affärsdriven systemutveckling genom agila metoder. Stefan Paulsson Thomas Öberg
Automation Region Affärsdriven systemutveckling genom agila metoder Stefan Paulsson Thomas Öberg Frontit Frontit är ett svenskt konsultföretag i gränslandet mellan Management & IT, som stärker sina kunders
Läs merServices + REST och OAuth
Services + REST och OAuth Syftet med Services Skapa ett Drupal API för att exponera webb- API:er. Officiella versionen - Create a unified Drupal API for web services to be exposed in a variety of different
Läs merKlient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
Läs merMål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen.
Entity Framework Mål med lektionen! Veta kursmålen. Ha kännedom om några av de grundläggande begreppen. Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Läs merAnvändningscentrering i agila utvecklingsprojekt. johanna.sarna@valtech.com Valtech
Användningscentrering i agila utvecklingsprojekt johanna.sarna@valtech.com Valtech Vem är jag? Johanna Särnå Jobbar på Valtech sedan 3 år tillbaka Jobbar där med användbarhet och projektledning Certifierad
Läs merJavautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år
Javautvecklare 400 YH-poäng, 2 år Utbildningsfakta Kurser (12 stycken) Grundläggande programmering och javaverktyg 50 yhp Grafiskt gränssnitt och interaktion 20 yhp Internet, webb och webbramverk 40 yhp
Läs merWebbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Läs merAvancerade Webbteknologier
Projektledning, Business Knowledge Användbarhet & Layout Avancerade Webbteknologier Lkti Lektion 1 Kommunikation Tobias Landén tobias.landen@chas.se Avancerade webbteknologier del 1 (4 KY poäng) Syfte
Läs merProgramutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Läs merKONSULTPROFIL Rodrigo
KONSULTPROFIL Rodrigo Systemutvecklare.NET/EPiServer/SharePoint Sammanfattning Rodrigo är en utåtriktad och glad person med båda fötterna på jorden som trivs både med att leda och samarbeta. Har jobbat
Läs merWebbprogrammering. Sahand Sadjadee
Webbprogrammering Sahand Sadjadee Agenda Webb The World Wide Web (WWW) is a network of online content that is formatted in HTML and accessed via HTTP. The term refers to all the interlinked HTML pages
Läs merHur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka
Webben som verktyg Idag: Hur hänger det ihop? Viktiga tekniker Stegen i ett webbprojekt Verktyg Dreamweaver Photoshop Joomla CMS Storyboard och flödesschema Fixa webbhotell Hur hänger det ihop? För att
Läs merWebbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011
Webbteknik II Föreläsning 5 Restless farewell HTTP Request HTTP verbs (methods): GET, POST, HEAD, DELETE, PUT, OPTIONS, TRACE, CONNECT http://www.w3.org/protocols/rfc2616/rfc2616-sec9.html variable=value&variable2=value2
Läs merMål med lektionen! Repetera och befästa kunskaperna.
Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer
Läs merKursplanering Utveckling av webbapplikationer
Kursplanering Utveckling av webbapplikationer Fakta Ämne Programmering Poäng 40 Yh-poäng Kurskod YSYS-WEB Klass Systemutvecklare.NET Syfte och koppling till yrkesrollen För att kunna arbeta som systemutvecklare
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 merHenrik Häggbom Examensarbete Nackademin Våren 2015
AV Henrik Häggbom Examensarbete Nackademin Våren 2015 1 INLEDNING Som examensarbete på min utbildning på Nackademin Programutveckling.NET kommer jag skapa ett webbaserat system för statistik, tabeller
Läs mer<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
AngularJS Skriven av: Isak Glans. Datum: 2015-04-29. Kurs: Webbutveckling. Lärare: Per Sahlin. Utbildning: Systemutvecklare i.net, Newtons Yrkeshögskola. 1 Sammanfattning Syftet med denna uppsats är att
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 merNamn: (Ifylles av student) Personnummer: Tentamensdatum: 2013-03-25 Tid: 14.00 19.00. Hjälpmedel: Inga hjälpmedel
Webbprogrammering Provmoment: Ladokkod: Tentamen ges för: Tentamen NWP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2013-03-25
Läs merObjektorienterade 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 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 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 merMiddleware vad, hur, varför när?
Middleware vad, hur, varför när? Anders Kingstedt Askus AB Ersättas med en bild 1 Disposition Vad? Hur? Varför? När? Målsättning Ge er möjlighet att skilja på och 2 Vad? - är Middleware Ersättas med en
Läs merDatakommunika,on på Internet
Webbteknik Datakommunika,on på Internet Rune Körnefors Medieteknik 1 2015 Rune Körnefors rune.kornefors@lnu.se Internet Inter- = [prefix] mellan, sinsemellan, ömsesidig Interconnect = sammanlänka Net =
Läs merE13 "Behind the Wild"
E13 "Behind the Wild" Föreläsning 13, HT2014 Det vi missat och lite till Kurs: 1dv403 Webbteknik I Johan Leitet E13 Behind the Wild Dagens agenda Cookies Web storage Context/ändra context Augmentation
Läs merSystemutvecklare SU14, Malmö
Systemutvecklare SU14, Malmö Tentamen, Tenta Utveckling med ramverket.net(35 YH-poäng) Plats: Plushögskolan Malmö Tid: 2 februari 2015, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna, suddgummi. Ej
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 meremopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)
emopluppen Användning av "Ant" Version: 1.4 ( 2002/04/26 07:27:52 UTC) Niklas Backlund Sammanfattning Det här dokumentet handlar om programmet Ant, som är en byggmiljö för programutvecklingsprojekt. Dess
Läs merProva på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09
Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet 2009-08-09 1. Introduktion till webbprogrammering Webbprogrammering består av ett antal
Läs merKärnfunktionalitet. Middleware. Samverkande system. Service Oriented Architecture. Kommunikationsmekanismer. Tjänsteorienterade arkitekturer
Samverkande system Tjänsteorienterade arkitekturer Hur får vi mjukvarukomponenter som är distribuerade över internet att enkelt upptäcka, utnyttja, och interagera med, varandra? Vi vill ha Komponenter
Läs merDistribuerade affärssystem
Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska
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 merWEBBSERVERPROGRAMMERING
WEBBSERVERPROGRAMMERING Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets syfte Undervisningen i ämnet
Läs merArkitektur. Den Röda Tråden
Arkitektur Done Den Röda Tråden Vad är arkitektur? Vad har vi arkitekturmodellen till? Hur redovisar vi en arkitektur? Hur tar vi fram en arkitektur? Uppgift arkitekturella krav Nu Redovisning/Diskussion
Läs merRäkna med ASP.NET MVC 3
Instruktion Räkna med ASP.NET MVC 3 Introduktionsuppgift Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Du ska följa steg-för-steg -instruktionen i denna introduktionsuppgift och skapa
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 merUTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten
UTVECKLINGSVERKTYG Praktiska tips för PUM-projekten TEKNIKER I PROJEKTEN ios 2 C#.NET 1 Java (inkl Android) 6 Webb (HMTL/JS) 4 En genomskumning av de tilldelade projektförslagen ger ovanstående uppfattning
Läs merInnehålls förteckning
Programmering Uppsats i skrivteknik Axxell Företagsekonomi i informationsteknik 19.3.2015 Respondent: Tomas Björklöf Opponent: Theo Wahlström Handledare: Katarina Wikström Innehålls förteckning 1. Inledning...3
Läs merGuide för Innehållsleverantörer
Library of Labs Content Provider s Guide Guide för Innehållsleverantörer Inom LiLa ramverket är innehållsleverantörer ansvariga för att skapa experiment som "LiLa Learning Objects", att ladda upp dessa
Läs merRune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling
Rune Tennesmed Oskar Norling Individuellt Mjukvaruutvecklingsprojekt Webbprogrammerare H12 Oskar Norling 2012-05-30 Abstrakt Denna rapport handlar om mitt mjukvaruutecklingsprojekt som jag och en klasskompis
Läs merCMS. - Content management system
CMS - Content management system Agenda CMS Server, webbhotell och FTP Wordpress, ställ mycket frågor Om vi hinner - Snabb genomgång av CMS - uppgiften Nu & Då Sidor med bara HTML och CSS kräver manuell
Läs mer2014-2015 Alla rättigheter till materialet reserverade Easec
1 2 Innehåll Introduktion... 3 Azure Client SDK Libraries... 4 Översikt: Azure Client Libraries... 5 Azure SDK... 6 Azure SDK (forts.)... 7 Azure SDK (forts.)... 8 Cloud Services... 10 Cloud Services...
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 merRuby on Rails eller Django?
Ruby on Rails eller Django? En jämförelse av två ramverk för webbutveckling MARTIN KARSBERG och PÄR- JOHAN JÖNSSON Examensarbete Stockholm, Sverige 2010 Ruby on Rails eller Django? En jämförelse av två
Läs merIntroduktion till Entity Framework och LINQ. Källa och läs mer https://msdn.microsoft.com/en-us/data/aa937709.aspx
Introduktion till Entity Framework och LINQ Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är Entity Framework? The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping
Läs merJavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?
Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia
Läs merIntroduk+on +ll programmering i JavaScript
Föreläsning i webbdesign Introduk+on +ll programmering i JavaScript Rune Körnefors Medieteknik 1 2012 Rune Körnefors rune.kornefors@lnu.se Språk Naturliga språk Mänsklig kommunika+on T.ex. Svenska, engelska,
Läs merDaniel.Ringquist@swe.sas.com Copyright 2003, SAS Institute Inc. All rights reserved.
SAS Enterprise Guide 3.0 och framåt Daniel.Ringquist@swe.sas.com Copyright 2003, SAS Institute Inc. All rights reserved. SAS Enterprise Guide Ett Windowsbaserat rapporterings och analysverktyg. Enterprise
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 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 merObjekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016
Objekt-orienterad Programmering och Design TDA551 Alex Gerdes, HT-2016 Kursteamet Dr. Alex Gerdes kursansvarig, föreläsare Dr. Niklas Broberg examinator, (föreläsare) Fredrik Sjöholm handledare Johan Andersson
Läs merWebbtjänster med API er
Webbtjänster med API er Mål med lektionen! En lite djupare inblick i RESTfulla tjänster Vad lektionen omfattar RESTful Services Överblick SOAP kan vara lite overkill för vissa specifika web service scenarion.
Läs merLite mer om CGI-programmering
Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Läs också: Internetprogrammering F 14 Kursboken s s 48-51 Exemplen på på kursens sidor: sidor: http://www.nada.kth.se/kurser/kth/2d4334/98-99/contents/cgi/examples.html
Läs merBakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1
Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut
Läs merSyfte : 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 merXML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.
XML-produkter -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: 2018-09-18 Version: 1.0 Innehållsförteckning 1. Inledning... 3 1.1. Syfte 3 1.2. Målgrupp
Läs merKvalitetssäkra ditt projekt med kontinuerlig integration
Kvalitetssäkra ditt projekt med kontinuerlig integration Mathias Olausson http://olausson.net/blog Om oss: QWise Vi hjälper systemutvecklingsteam att bli bättre. Vi är experter på ALM och Team System.
Läs merWebbtjänster med API er
Webbtjänster med API er Mål med lektionen! Titta på hur service:ar fungerar och hur vi programmerar dem. Vad lektionen omfattar WCF Service WCF Services Vad är en WCF service? En WCF Service är ett program
Läs merPriskamp. 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 merPHP-presentation Dataföreningens Open Source-nätverk
PHP-presentation Dataföreningens Open Source-nätverk Netera AB Jimmy Furland jimmy@netera.se Björn Hansson hansson@netera.se Introduktion HTML-inbäddat webbprogrammeringsspråk Står för PHP Hypertext Preprocessor
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 merObjektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
Läs merInnehåll. Dokumentet gäller från och med version 2014.3 1
Innehåll Introduktion... 2 Före installation... 2 Beroenden... 2 Syftet med programmet... 2 Installation av IIS... 2 Windows Server 2008... 2 Windows Server 2012... 6 Installation av webbapplikationen
Läs merChrister Scheja TAC AB
Byggnadsautomation för ingenjörer Byggnadsautomation för ingenjörer VVS-tekniska föreningen, Nordbygg 2004 Christer Scheja TAC AB resentation, No 1 Internet/Intranet Ihopkopplade datornät ingen ägare Internet
Läs merInstallationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund
Sida: 1(7) Installationsanvisningar VisiWeb Ansvarig: Visi Closetalk AB Version: 2.3 Datum: 2009-12-14 Mottagare: Visi Web kund Detta dokument Detta dokument beskriver hur man installerar VisiWeb på en
Läs merModern webbutveckling. av Robert Welin-Berger
Modern webbutveckling av Robert Welin-Berger robertwb@kth.se Modern webbutveckling 1. Projektstorlek och Arkitektur 2. Callbacks 3. Event driven arkitektur 4. MEAN stack 5. ODM/ORM 1. Projektstorlek och
Läs merKort om World Wide Web (webben)
KAPITEL 1 Grunder I det här kapitlet ska jag gå igenom allmänt om vad Internet är och vad som krävs för att skapa en hemsida. Plus lite annat smått och gott som är bra att känna till innan vi kör igång.
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 merBeijer Electronics AB 2000, MA00336A, 2000-12
Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this
Läs merFö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 merElisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved.
Administrera din SAS miljö med SAS Metadata Server och SAS Management Console. Elisabet Stöök Konsult SAS Institute AB Copyright 2003, SAS Institute Inc. All rights reserved. SAS Intelligence Value Chain
Läs merGYMKEEPER ANDREAS SÖDERSTRÖM
GYMKEEPER ANDREAS SÖDERSTRÖM 20120529 ABSTRAKT En post mortem på mitt ios-projekt. Utmaningen låg i att under 10 veckors tid sätta sig in i en plattform och programspråk jag aldrig använt förut. Jag har
Läs merAvtal/överenskommelse för leverans till K- samsök
Avtal/överenskommelse Datum 2012-10-** Dnr 159-1562-2012 Avdelning Informationsavdelningen Enhet Enheten för informationsutveckling Författare Johan Carlström Avtal/överenskommelse för leverans till K-
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 merTDP003 Projekt: Egna datormiljön
. TDP003 Projekt: Egna datormiljön Egen utvecklingsmiljö Kursmaterial till kursen TDP003 Höstterminen 2017 Version 2.2 2017-06-30 2017-06-30 Egen utvecklingsmiljö INNEHÅLL Innehåll 1 Revisionshistorik
Läs merObjekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018
Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018 Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh
Läs mer1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors
1ME323 Webbteknik 3 Lektion 6 API Rune Körnefors Medieteknik 1 2019 Rune Körnefors rune.kornefors@lnu.se Agenda API (Application Programming Interface) Mashup Flickr API Google Maps API Labb 6 2 API (Application
Läs merAllmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.
Webbprogrammering Provmoment: Ladokkod: Tentamen ges för: Om-Tentamen NWP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2014-06-13
Läs merF8 Webbteknologier 1. Dynamiska webbsidor
Dynamiska webbsidor F8 Webbteknologier 1 EDA095 Roger Henriksson Datavetenskap Lunds universitet HTML är statisk. En sida får sitt utseende bestämt när en webbdesigner skapar den. Ofta vill man ha mera
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 merInkapsling (encapsulation)
UML UML är en standard för att dokumentera och visualisera sina tankar och beslut under analys och design. Att lära sig allt om UML får inte plats i den här kursen, men vi kommer lära oss vissa delar.
Läs merLär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse
Lär känna MS SQL 2008 / Övning Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill
Läs merWebbprogrammering TDDD52
Webbprogrammering TDDD52 ERD MySQL+PHP. Förra gången Idag Javascript jquery Progressive enhancement XML & AJAX Lab 4 och 5 Sammanfattning av kursen. Om databastabeller varje tabell ska beskriva en typ
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 merSammanfattning. Applikationen är utvecklad i Microsofts utvecklingsmiljö Visual Studio 2012.
Sammanfattning Inom ramen för kursen Självständigt arbete i Teknisk Fysik (15 hp) har en databaskopplad webbapplikation utvecklats. Arbetet var utformad som ett konsultuppdrag med pappersbruket Gruvön
Läs mer