Xpmetodik inom Enterpriseutveckling
|
|
- Ida Lund
- för 8 år sedan
- Visningar:
Transkript
1 Sida 1 (10)
2 Abstract Introduktion Enterprisesystem generellt Trelagersarkitektur J2EE Fördelar med J2EE Distribuerbart Skalbart Möjlighet till RPC (Remote Procedure Calls) Komplexitet hos EJB Mer om containers Utvecklingsroller EJB ur ett extremt perspektiv Collective code ownership Contineous Integration Simple Design Test First Varianter för lösningar Testning på applikationsservern Mockobjekt Strunta i att skriva explicita containers för affärslogik Lättviktiga containers Spring Färdiga abstraktioner Inversion of Control Testbar kod Singletons Statiska metoder Interface Verktyg för att förbättra testning Fortsätta arbeta med Test First Referenser: Sida 2 (10)
3 1 Sammanfattning När webapplikationer utvecklas används en annan typ av arkitektur än vid lokala applikationer. Webapplikationer tenderar att vara uppbrutna i flera mindre komponenter som kommunicerar sinsemellan. För denna typ av system har en teknik speciellt utvecklats vid namn J2EE (Java 2 Enterprise Edition)som låter kod skrivas generellt och därför kan köras oberoende av maskinvara och andra systemkomponenter. För att realisera tekniken används idag EJB (Enterprise Java Beans). Detta blir dock i längden mycket tungdrivet och den arkitektur som följer av detta leder till att bland annat testning försvåras och särskilt metodiken Test First. Det här dokumentet presenterar olika tänkbara lösningar till problemet, bland annat The Spring Framework som avhjälper de flesta svagheterna med EJB och samtidigt förenklar utvecklingen och tillåter Test First. 2 Introduktion XP är lämpligt att använda också för Internetbaserade system och miljöer, där komponenter sätts ihop för att leverera tjänster som ska vara tillgängliga utåt. Komponentbaserad utveckling kan lätt utföras med XP s olika metoder eftersom grundtankar kring arkitektur och uppbyggnad stämmer väl överrens. Exempelvis är uppmaningarna inom Simple Design att hålla klasser och metoder på en hanterbar storleksnivå lätta att anamma med de javabönor (javaobjekt i en webserver) som används inom den här typen av utveckling. Det finns dock de tekniker som inte lika lätt följer med till enterprisemiljöer (stora miljöer som ofta har flera servrar med programvaran distribuerad mellan sig). Den här studien försöker klargöra krockar mellan metodiken och arkitekturen samt eventuella lösningar till dessa 2.1 Enterprisesystem generellt Det som utmärker ett system i enterprisemiljö är mycket det stora antal användare som ska kunna ansluta till en eller flera datakällor. Detta ställer en hel del krav på systemet som skiljer sig från andra typer av system. Därför blir också arkitekturen byggd på ett helt annat sätt. 2.2 Trelagersarkitektur När en webbaserad applikation utvecklas, bör den delas upp i tre lager. Det första lagret är datalagret, ofta bestående av en eller flera relationsdatabaser. Ovanför detta ligger lagret med affärslogik för att hantera operationer och transaktioner. Överst finns presentationslagret, detta är ett användargränssnitt och bör endast innehålla logik för att presentera information för användaren och vidarebefordra kommandon ner till affärslogikslagret. Figur 1 De tre lagren i en Enterprisemiljö ska kunna fungera oberoende av varandra Sida 3 (10)
4 3 J2EE När större Internetbaserade system ska byggas, används ofta Java 2 Enterprise Edition (J2EE) [2]. Detta på grund av arkitekturlösningen som tillåter återanvändning av komponenter oavsett vilken typ av datakälla eller klient som används. Lagren i J2EE är noggrant åtskilda logiskt och ofta också fysiskt. Idén med J2EE är i grunden att kod ska kunna återanvändas. För att realisera det skapas varje objekt tillsammans med interface för att systemet inte ska påverkas av att en del byts ut. Alla anrop sker ändå mot interface. Vidare deklareras alla beroenden och anslutningar till objekt i en XML-fil som kallas deployment descriptor. När detta är gjort läggs alla objekt in i en container som hanterar beroenden, anslutningar och instansiering av objekten. Denna container hanteras av J2EE-servern. Resultatet blir att objekten blir oberoende av den miljö de körs i och de kan lätt användas i en annan arkitektur så länge den stöder J2EE. Än så länge är standarden för att göra dessa containers och objekt Enterprise Java Beans (EJB). En teknik som av de flesta utvecklare uppfattas som omständlig och onödigt komplicerad. Figur 2 [2] Arkitekturen i J2EE är baserad på containers. För att säkra oberoenden mellan lager i EJB hanteras alla komponenter i containers där anknytningar till de andra lagen finns specificerade. 3.1 Fördelar med J2EE Distribuerbart Systemet kan med lätthet läggas ut på flera datorer som kommunicerar sinsemellan istället för att köra allting på samma maskin. Kommunikationen internt sköts av en transaktionsserver som kan hantera anrop från gränssnittet hela vägen ner till datakällan för att garantera dataintegritet Skalbart I och med att lagren är så åtskilda kan de administreras var för sig, något som hjälper till att eliminera flaskhalsar. Om till exempel applikationsservern skulle bli överbelastad sätts bara en till dator in med samma data och efter en liten ändring i konfigurationen kommer hela systemet använda sig av båda maskinerna, utan att ändra något i koden för affärslogiken Möjlighet till RPC (Remote Procedure Calls) Hela systemet kan kommunicera med olika klienter och andra system [2]. Det enda som behövs är ett definierat interface utåt som skrivs för varje komponent. Dessa interface kan sedan anropas från en web-klient, ett program lokalt på en användares dator eller ett Sida 4 (10)
5 annat system som är tillgängligt via Internet. Allt utan att skriva om någon kod i affärslogiken. Allt detta gör J2EE till ett otroligt kraftfullt verktyg vid utveckling av serverbaserade applikationer. Den första arkitektur som lanserats för att realisera denna teknik är EJB (Enterprise Java Beans). EJB har ett mycket utökat stöd för alla funktioner inom J2EE. 3.2 Komplexitet hos EJB EJB kräver en mycket specifik arkitektur där alla komponenter måste användas i en Container som specificerar olika typer av anslutningar till systemspecifika komponenter och användningsområden. Denna container läggs upp på en applikationsserver som låter de objekt som används köras i ett lager mellan exempelvis en databas och ett webinterface, det så kallade affärslogikslagret. 3.3 Mer om containers En container är den miljö varje objekt körs i. En container definierar omvärlden för objekten och låter dessa ansluta till datakällor och andra objekt utan att de behöver känna till dessa direkt. Detta sparar mycket kodskrivande och tilllåter dessutom klasser, som är skrivna för ett visst system, med en uppgift att köras på ett annat system där de kan utföra samma uppgift i en helt annan miljö när de sätts i en ny container. Dessa containrar kan dock vara ett problem då objekten blir beroende av dessa. Klasserna kommer då inte att gå att köra utan sin container alls och det försvårar bland annat testning Utvecklingsroller Det faktum att EJB har så komplicerad integrationsprocess leder till att utvecklare inom projektet tilldelas olika roller för att kunna sätta ihop alla komponenter till ett körbart system. [2] Enterprise Beanutvecklare Utvecklar affärslogiken i små komponenter och packar dem i en.jar-fil. Webkomponentsutvecklare Skriver html och jsp/servlets och packar dem i en webkomponentsfil. Klientapplikationsutvecklare Utvecklar en eventuell klient till systemet och packar i.jar-fil Applikationsassembler Sätter ihop hela systemet i en.ear fil som kan köras i applikationsservern Applikationsadministratör Kör systemet och specificerar anslutningar till databaser, filssystem och dylikt. Detta är en komplex struktur för att sjösätta en applikation och leder till krockar med en del XPmetodiker. 4 EJB ur ett extremt perspektiv Vissa praktiker inom XP äventyras av det här sättet att utveckla. I texten nedan tas några av de som kan vara i farozonen upp. 4.1 Collective code ownership Det första en läsare som är insatt i XP kan tänkas reagera på är de specifika rollerna. Hur går det ihop med collective code ownership till exempel? Sida 5 (10)
6 Eftersom de olika rollerna tar vid i olika stadier av utvecklingen och inte arbetar tillsammans kommer inte samma kod skrivas av alla som är med i ett team. Detta går dock att lösa genom att i större projekt se varje roll som ett mindre projekt med ett XP-team i varje. I ett mindre projekt, som visserligen är mycket ovanligt med denna typ av utveckling, kan det tänkas att utvecklarna får skifta roller under projektets lopp. 4.2 Continuos Integration Vad gäller kontinuerlig integration kan det bli stora problem. Det är en omständlig process att lägga till nyskriven kod till arkitekturen J2EE tillhandahåller. Därför drar sig utvecklare för att lägga till kod de har skrivit i den gemensamma miljön i små omgångar. Med rätt rutiner bör det dock gå, men det är viktigt att det finns arkitektur på plats under utvecklingen. Utan en befintlig arkitektur som finns körbar kommer inte kod kunna integreras alls eftersom komponenter inte går att köra enskilt. 4.3 Simple Design En av huvudprinciperna inom simple design säger att man inte ska designa hela systemet från start. Detta går inte så bra ihop med arkitekturen för EJB där all miljö måste kodas först i anslutning till containers. Lösningen på detta problem kan ligga i iteration 0. Eftersom iteration 0 innebär att utveckla ett fungerande skelett för resten av programmet passar plötsligt de två metoderna varandra mycket väl. Om de containers som behövs för att få systemet att fungera görs först blir det en smal sak att designa metoder och klasser för varje enskild story. 4.4 Test First Ett större problem gäller testningen av applikationen. XP förespråkar Test First för att minimera fel vid sammansättningen av systemet. I EJB-arkitekturen är dock varje komponent så starkt knuten till sin container och sin applikationsserver att det ofta inte är möjligt utan att skriva många mock-objekt, något som inom EJB är väldigt tidsödande och dessutom inte går ihop med EJBs arkitektur. Dessutom kan aldrig systemet testas som helhet från en arbetsstation eftersom varje komponent är beroende av hela systemet för att kunna köras vilket verkligen försvårar eller omöjliggör test first. Detta är alltså ett problem och texten hädanefter är i huvudsak inriktad på att lösa detta. 5 Varianter på lösningar 5.1 Testning på applikationsservern Det finns olika verktyg (som Cactus) som tillåter skapandet av tester som körs på applikationsservern. På så sätt kan vi skriva tester för varje böna och köra dem när vi väl har lagt upp allting på servern. Problemet med denna approach är att det är omständligt att sätta upp din just skrivna kod så att den körs (se avsnitt 3.3.1, utvecklingsroller). 5.2 Mockobjekt Det finns sätt att skriva bra mockobjekt för EJB[6]. Detta är dock som nämnt ovan ett omfattande arbete. Dessutom går det inte att testa många aspekter som beror på hur objekt är relaterade till varandra och hittar varandra i EJBarkitekturen. Alltså skulle ett objekt som kan hittas som mockobjekt i ett test kanske inte hittas i skarpt läge. Sida 6 (10)
7 Figur3 [3] En traditionell arkitektur som körs på en J2EEserver. Implementation och presentationslager är här lagt i samma container, något som förenklar arkitekturen men tar bort mycket fuynktionalitet. Notera att det fortfarande rör sig om en trelagersarkitektur där implementationen har ett interface mot gränssnittslagret. 5.3 Strunta i att skriva explicita containers för affärslogik En metod kan vara att strunta i de containers som EJB är så beroende av. Detta leder till att vi måste använda vanliga javaobjekt (Pojos) och vi förlorar då många fördelar med arkitekturen i EJB som automatisk transaktionshantering och miljökonfiguration. Vi är i stort tillbaka på nivån som vi var på innan vi införde J2EE överhuvudtaget. I Figur 3 syns arkitekturen för ett system utan EJB. Som läsaren ser är nu logik och presentationslogik inbyggda i samma container och kan därför komma åt varandra lättare. Fortfarande är dock de två lagren logiskt åtskilda och vi behöver inte ändra i affärslogik för att byta presentationsmiljö. Denna metod gör dock att vi förlorar många fördelar med J2EE och vi får en mängd nya nackdelar. Det blir nu komplicerat att lägga till nya gränssnitt och datakällor igen. För att kunna dra nytta av EJBs fördelar, som transaktionshantering, behöver vi någon form av containers. Dessa får dock inte vara ett krav för att systemet ska gå att köra eller testa. 6 Lättviktiga containers 6.1 Spring Spring framework [4] är ett ramverk som har byggts för Enterpriselösningar för att förenkla utvecklingen av dessa. I Spring finns också containers som i EJB men de containers som används här, sk. Lightweight containers, har stöd för Pojos (Plain Old Java Objects), dessa klasser skulle Sida 7 (10)
8 alltså kunna skrivas och testas i en vanlig miljö för att sedan placeras i servermiljön och köras skarpt i sin container. Anledningen till att detta fungerar är just att helt vanliga javaklasser kan köras i dessa containers samtidigt som de får de fördelar som EJB-containrar ger. Det blir alltså lätt att skriva enhetstest och i vissa fall även inkludera en hel container i ett JUnit-test för att göra integrationstester. Dock är det fortfarande väldigt annorlunda att testa mot ett ramverk än fria klasser. Figur 4 [3]Lightweight. Här syns implementationen med lightweight contatiners. Ovanför datakällan läggs ett lager för att mappa objekt mot relationsdatabasens entiteter. Allt körs på samma Virtual Java Machine och vanliga javaobjekt (pojos) med tillhörande interface används mot gränssnittet (UI) Färdiga abstraktioner Spring innehåller abstraktioner av olika API:er och ger flera olika interfaces som det är lätt att bygga mockobjekt till och därför testa mot. Andra funktioner, som transaktionsstatus, kan också lätt fås med hjälp av Spring. Det finns speciella regler satta i spring för att sköta detta och det går lätt att kontrollera reglerna genom olika delar i API:t. Anropen till dessa regelkontroller går lätt att överlagra eller lägga i interface och på så sätt behöver de inte påverka testningen till skillnad från EJB där ständigt olika regler måste kontrolleras och ställas in. 6.2 Inversion of Control Ett mycket kraftfullt mönster för att göra implementationen oberoende av de interface och containers som används kallas Inversion of Control. Om utvecklare använder mönstret IoC, eller Dependency Injection [5], kan objekten göras fullt testbara trots att de i skarpt läge körs inuti sina containers. 7 Testbar kod För att göra koden mer testbar kan det vara lämpligt att hålla på några principer. [3] Sida 8 (10)
9 7.1 Singletons Singletonklasser är klasser som endast tillåts i en instans i hela systemet. Det kan vara en fördel när information ska hållas centralt och tillgängligt för alla andra objekt. Singletons är därför populära inom Enterpriseutveckling eftersom de kan användas som en tjänst för att leta upp rätt objekt åt ett annat objekt. Dessa blir dock mycket svårare att testa eftersom det krävs att ditt test känner till singeltonklassen och därför en stor del av systemet. 7.2 Statiska metoder En annan metod för att göra metoder och attribut tillgängliga i hela systemet är att deklarera dem statiska. Detta leder dock också till problem eftersom alla klasser måste vara relaterade till de statiska metoderna och det försvårar testning ytterligare. 7.3 Interface Att använda interface istället för statiska metoder är att tillråda. Det är lätt att programmera mot ett existerande interface och när vi testar det kan vi enkelt sätta in något mockobjekt som implementerar ett interface i testsyfte och sedan byta detta objekt mot ett riktigt i skarpt läge. 7.4 Verktyg för att förbättra testning Det finns olika verktyg för att underlätta testning. De som automatiskt genererar test kan vara bekväma att använda men bör inte användas i syftet att undgå att skriva egna tester. Det går helt enkelt inte att få tillräckligt bra tester helt automatiskt, utan utvecklaren måste själv arbeta med detta kontinuerligt. Däremot finns det verktyg för att kontrollera hur väl testningen faktiskt täcker systemet. Ett riktigt bra verktyg kan hitta otestad kod ner till enskilda try-catchblock. Ett exempel på ett sådant verktyg finns på som täcker upp tester med JUnit. 8 Fortsätta arbeta med Test First Om vi använder oss av dessa förhållandevis enkla metoder och ramverk så visar det sig att det faktiskt är möjligt att göra riktigt avancerade enterpriseapplikationer och fortfarande använda sig av XPs metodiker, inklusive Test First. Spring med flera kan därför anses vara svaret på hur denna metodik ska kunna förenas med Enterpriseutveckling. Att kunna ha testdriven utveckling leder ofta till säkrare och stabilare applikationer och spridning av den här metodiken blir därför allt större. Troligen kommer fler tekniker som Spring dyka upp då det blir lättare och billigare att utveckla i det och dessutom ger utvecklarna mindre begränsningar. Faktum är att många av de som förespråkar Springramverket också förespråkar många av de praktiker som används inom XP, något som kan anses som ett bevis för att de fungerar bra tillsammans. Sida 9 (10)
10 9 Referenser: 1) J2EE Java 2 Enterprise Edition ( 2) The J2EE 1.4 tutorial 3) Rod Johnson - Expert One on One J2EE Development Without EJB - Wiley Publishing 2004 (bilder och material) 4) 5) ( 6) ( Sida 10 (10)
Distribuerade 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
Enterprise Java Beans Assignment 1
Enterprise Java Beans Assignment 1 Distribuerade System HT 02 Fredrik Lundgren Andreas Nyberg fredrikbjurefors@hotmail.com goca8363@student.uu.se frlu4469@student.uu.se andreas.nyberg@hushmail.com Innehållsförteckning
Javautvecklare. 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
Testdriven utveckling. Teorin bakom testdriven utveckling. Bakgrund. Januari 2009, KTH. Alexander Tarnowski
Testdriven utveckling Januari 2009, KTH Alexander Tarnowski Teorin bakom testdriven utveckling Bakgrund Testdriven utveckling började nämnas kring 1999-2000 av Kent Beck I praktiken implementationen av
Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson
Rapport grupp 4 Software Engineering Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson 2009-10-29 Processer Sprinter Scrum har varit till stor hjälp för oss för att nå våra mål,
Må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
Beskrivning av gesällprov RMI Chat Mikael Rydmark
Beskrivning av gesällprov RMI Chat Mikael Rydmark rydmark@kth.se Mikael Rydmark 1(8) 12-06-06 Innehållsförteckning Inledning...3 Server...3 Klient... 3 Ansluta till servern...3 Huvudchat...4 Privat kommunikation...5
Klient/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.
Må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
Datacentertjänster PaaS
Datacentertjänster PaaS Innehåll Datacentertjänst PaaS 3 Allmänt om tjänsten 3 En säker miljö för kundensa containers 3 En agil infrastruktur 3 Fördelar med tjänsten 3 Vad ingår i tjänsten 4 Applikationer
Datalagringsmetodik och arkitektur i Java. Projektdefinition. Projektdefinition. Björn Brenander. 7 maj 2001
Datalagringsmetodik och arkitektur i Java Projektdefinition Dokumenttitel Projektdefinition Dokumentansvarig Dokumentförfattare Björn Brenander Dokumentnamn Projektdefinition.doc Version 16 Ref. nr. Skapades
Testdriven utveckling av Web Services. Ole Matzura
Testdriven utveckling av Web Services Ole Matzura eviware 1 Vad är Test-Driven utveckling? 2 Test Driven Utveckling 2 Grundregler (Kent Beck) Skriv aldrig kod utan ett fallerande test Eliminera duplicering
Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions
Testdriven utveckling Magnus Jonsson Siemens Medical Solutions 2 Soarian Stort projekt, ca 400 personer i projektet Distribuerad utveckling i USA, Indien och Sverige Web baserat lösning med admin client
1 Systemkrav avantraupphandling
1 (10) Godkänd av Produkt/Projekt/Verksamhet avantraupphandling 3.0.1 1 Systemkrav avantraupphandling Intranät webb klient Internet applikation klient Förrådssystem Beställningssystem COM+ Server File
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
Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005
Repetition DK2 Middleware, P2P, Multimediatransport Stefan Alfredsson 18 Mars 2005 Några definitioner på middleware Klistret som gör det möjligt för en klient att få betjäning av en server / i klient/server
Creo 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
SLUTRAPPORT RUNE TENNESMED WEBBSHOP
SLUTRAPPORT RUNE TENNESMED WEBBSHOP -05-30 Abstrakt Under 10 veckor har jag och Oskar Norling arbetat med att ta fram en webbshop-applikation till företaget Rune Tennesmed i Kalmar. I denna rapport tänker
Webbtjä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
Rapport inför projektavslut
Sidnr. 1(5) 1. Projektets namn Stadsnätsdatabas 2. Kontaktuppgifter Uppgifter Namn Telefon Ulf Borbos +46705373107 Projektledare Paul Wisén +46 705164100 Kontaktperson II Stiftelsen Östen Frånberg +46705190329
A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices
A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices Mattias Jarheden och Thomas Forsström Sammanfattning Denna djupstudie försöker ge en inblick
Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport
Collector en Android-app för att samla saker Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport Abstrakt Jag har gjort en Android-app för att samla saker, Collector. Med den kan man upprätta att göra-listor
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.
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
12 principer of agile practice (rörlig)
X-treme programming 12 principer of agile practice (rörlig) Ge nöjd kund genom tidig och kontinuerliga leveranser Den viktigaste punkten som betyder att min vill ha kontinuerlig feedback Välkomna sena
Web 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.)
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
Programmering = modellering
Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Din guide till. Teknisk Specifikation Säljstöd
Din guide till Teknisk Specifikation Säljstöd April 2014 Innehåll Systemkrav... 3 Operativsystem... 3 Mjukvara... 3 Maskinvara... 4 Datakällor... 4 Databas... 5 Databasstruktur... 5 Katalogstruktur...
Tentamen I Arkitektur och design av globala applikationer
Institutionen för Tillämpad IT Tentamen I Arkitektur och design av globala applikationer Kurskod:6B2061 Datum: 12/3-2007 Tid: 08.30-12.30 Examinator: Leif Lindbäck (7904425) Tentamensinformation Hjälpmedel:
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
Förra föreläsningen: Olika nivåer av meddelanden. Från oblockad sändning till. RPC: Parameterpassning, registrering, felhantering, säkerhet, kompilering ONC RPC: XDR, portmapper Brandväggar, dynamisk brandväggskonfigurering,
ekorren e-tjänst Teknisk målbild
e-tjänst Teknisk målbild Innehåll 1. OM DOKUMENTET... 3 1.1 BAKGRUND... 3 2. UTGÅNGSPUNKTER... 3 3. MÅLBILD... 3 3.1 SKALBARHET... 3 4. ARKITEKTUR... 5 4.1 DATALAGRING... 5 4.2 ÖVERSIKTSBILD FÖR ARKITEKTUR...
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.
1 Samlingar 1.1 Frekvenstabell En Integer är icke-muterbar (precis som String, Float, Boolean et.c.). Ickemuterbarhet har många fördelar, men en nackdel är att ett helt nytt objekt måste skapas när ett
Objektorienterad programmering. Grundläggande begrepp
Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller
Objektorienterad 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
Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).
Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.
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
Erfarenheter från vår resa
Erfarenheter från vår resa som började år 2000 och just nu är inne i ett omtag Tomas Nilsson Markus Milerup Svein Lister SWEAN 2011 maj 1 SWEAN 2011 maj 2 Exempel på varför arkitektuarbete behövs SWEAN
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Webbtjä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
30 år av erfarenhet och branschexperts
30 år av erfarenhet och branschexperts Integrerad Säkerhet Integrerad Säkerhet Varför överordnat system Användarvänlighet Kvalitet Trygghet Kostnadseffektivitet Varför ett överordnat system? Med stora
Några grundläggande begrepp
Några grundläggande begrepp Validering bygger vi rätt system? Uppfyller kravspecifikationen de verkliga behoven? Verifiering bygger vi systemet rätt? Uppfyller det färdiga systemet kravspecifikationen?
PM 01 En jämförelse av två analysmodeller för val av komponentteknik
MÄLARDALENS HÖGSKOLA Institutionen för Ekonomi och Informatik v PM 01 En jämförelse av två analysmodeller för val av komponentteknik Eskilstuna, 2002-12-12 EI0230 Komponentbaserad applikationsutveckling
Systemkrav Bilflytt 1.4
Systemkrav 1.4 Systemkrav 2018-08-28 2 (9) Systemkrav 1.4 Dokumentet beskriver de krav som systemet ställer på maskinvara och programvara i de servrar och klientdatorer som ska användas för systemet. Nedan
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
HEY! CODE I SKOLAN. VISAR ALLTID DEN RIKTIGA KODEN
VARFÖR HEY! CODE? Ett system för årskurs 1-9, ger en röd tråd i arbete & utveckling. Följer riktlinjer från Lgr11 Formativ bedömning. Måluppföljning för enskild individ. Lärarhandledning & klassrumsöversikt
Instruktioner för uppdatering från Ethiris 5.x till 6.0
Instruktioner för uppdatering från Ethiris 5.x till 6.0 Nedan följer instruktioner för hur man går till väga vid uppdatering av ett Ethirissystem version 5 till version 6. När man uppdaterar Ethiris från
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.
Systembeskrivning.
KTH Institutionen för Numerisk Analys och Datalogi Systembeskrivning RedInc www.nada.kth.se/projects/prom03/redinc Uppdragsgivare: Projektmedlemmar: Harald Kjellin Daniel Oscarsson Rikard Laxhammar Tommy
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
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
Systemkrav Bilflytt 1.3
Systemkrav 1.3 Systemkrav Systemkrav 2016-11-22 2 (9) Systemkrav 1.3 Dokumentet beskriver de krav som systemet ställer på maskinvara och programvara i de servrar och klientdatorer som ska användas för
1. (3p) Inom MDI-området framhåller man att människor lär sig via metaforer. Hur menar man att detta går till?
1. (3p) Inom MDI-området framhåller man att människor lär sig via metaforer. Hur menar man att detta går till? Att lära sig via metaforer innebär att man drar nytta av kunskap som användaren redan har,
Webbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget... ... 66% misslyckades!
Projektkaos. Chaos-rapporten 34% av projekten avslutades i tid och enligt budget...... 66% misslyckades! 1 Standish Group, 2003 (www.standishgroup.com) Praxis Hantera krav Använd komponentarkitekturer
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:
ADITRO LÖSNINGAR FÖR EN ENKLARE JOBBVARDAG SUMMIT 2014 PER JOHANSSON & JOEL KÖHL ADITRO L FRÅN WINDOWS TILL WEB
ADITRO LÖSNINGAR FÖR EN ENKLARE JOBBVARDAG SUMMIT 2014 PER JOHANSSON & JOEL KÖHL ADITRO L FRÅN WINDOWS TILL WEB 2014-10-10 COPYRIGHT ADITRO. ALL RIGHTS RESERVED. 1 Agenda» Inledning/Bakgrund» Vad krävs
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
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
Mobilt Efos och ny metod för stark autentisering
Mobilt Efos och ny metod för stark autentisering I och med lanseringen av E-identitet för offentlig sektor, Efos, kommer Inera att leverera komponenter som möjliggör att en användare ska kunna logga in
Utvecklingen av ett tidregistrerings- och faktureringssystem
Datavetenskap Opponenter: Anders Heimer & Jonas Seffel Respondenter: Daniel Jansson & Mikael Jansson Utvecklingen av ett tidregistrerings- och faktureringssystem Oppositionsrapport, C-nivå 2006:10 1 Sammanfattat
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Regelverk. Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag. Bilaga A. Tekniska ramverk. Version: 3.0
Regelverk Infrastrukturen för vidareförmedling av grundläggande uppgifter om företag Bilaga A Tekniska ramverk Version: 3.0 Innehållsförteckning 1 Bakgrund och syfte... 1 1.1 Definitioner 1 2 Inledning...
VIDAREUTVECKLING AV ADMINISTRATIONSAPPLIKATION
Examensarbete, Högskolan på Åland, Utbildningsprogrammet för Informationsteknik VIDAREUTVECKLING AV ADMINISTRATIONSAPPLIKATION Dag Karlsson 15:2018 Datum för godkännande: 30.05.2018 Handledare: Joakim
Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det
Behörighetssystem Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det Systemet måste kunna registrera vilka resurser, d v s data och databärande
Webservice & ERP-Integration Rapport
Webservice & ERP-Integration Rapport Hardwood AB Mustafa Lazem 930916-9713 Jonas Ahrne 920325-0379 Hasan Nerjovaj 940130-7195 Stefan Liden 920628-0639 2014-05-18 Innehåll Bakgrund... 2 Syfte... 2 Projektbeskrivning...
BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0. Innehållsförteckning
ÅTERSTÅENDE PROBLEM MultiPC v1.0 Rev 7 1(7) BILAGA E till Programvaruprojekt ÅTERSTÅENDE PROBLEM MultiPC v1.0 Här listas problem som kan behöva hanteras i kommande inkrement. De prioriteras alltså ner
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015
Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation
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
Användning av testautomation inom Extendas utvecklingsorganisation
Testautomation Användning av testautomation inom Extendas utvecklingsorganisation Agenda Presentation av Extenda Vad är en POS? Test av POS Automatiska tester Sammanfattning 2 Kort historik 1982 Extenda
Mobilt Efos och ny metod för stark autentisering
Mobilt Efos och ny metod för stark autentisering I och med lanseringen av E-identitet för offentlig sektor, Efos, kommer Inera att leverera komponenter som möjliggör att en användare ska kunna logga in
SÄKRA DIN AFFÄR VART DEN ÄN TAR DIG. Protection Service for Business
SÄKRA DIN AFFÄR VART DEN ÄN TAR DIG Protection Service for Business DET ÄR EN MOBIL VÄRLD Wifi Fotgängare Idag använder vi fler enheter med fler anslutningar än någonsin tidigare. Att då kunna välja var
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
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,
Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster
Introduktion till migrering till molnet PART 4: Plattformar för molntjänster PART 4 ÖVERSIKT 1. PaaS 2.Migration Vad betyder PaaS? PaaS betyderplatform as a Service eller plattform för cloud computing
Hur kan/vågar myndigheter tillgodogöra sig Open Source på ett bra sätt? Open Source för GIS 1-2 mars 2011
Hur kan/vågar myndigheter tillgodogöra sig Open Source på ett bra sätt? Open Source för GIS 1-2 mars 2011 Två frågor Hur kan/vågar myndigheter tillgodogöra sig Open Source på ett bra sätt? Trafikverket
Tentamen, Distribuerade System/Programvaruarkitektur 2001-08-24
Tentamen, Distribuerade System/Programvaruarkitektur 2001-08-24 FÖRSÄTTSBLAD Inlämnas ifyllt tillsammans med tentan. Skriv namn på samtliga blad. Ange nedan vilka uppgifter du besvarat. Uppgift Besvarad
<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
Elisabet 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
Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
STYRKAN I ENKELHETEN. Business Suite
STYRKAN I ENKELHETEN Business Suite HOTET ÄR VERKLIGT Onlinehot mot ditt företag är verkliga, oavsett vad du gör. Om du har data eller pengar är du ett mål. Säkerhetstillbuden ökar drastiskt varje dag
Webbtjänster med API er
Webbtjänster med API er Repetera kunskaperna Mål med lektionen! Vad lektionen omfattar Repetition av kursen. Webbtjänster? En webbtjänst är en tjänst som erbjuds av en elektronisk anordning till en annan
PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning
PMM (Process Maturity Metrics) PMM är en metod för att mäta processmognad i utvecklingsprojekt. I korthet går metoden ut på att man utvärderar sin utvecklingsprocess med avseende på ett antal framgångsfaktorer
Tjoho. Applikationsutvecklarens handledning. Maj 2003
Tjoho Applikationsutvecklarens handledning Maj 2003 Uppdragsgivare: Ylva Dalén, KI Starthus Projektmedlemmar: Sophia Demnert, Elina Eriksson, Kamilla Johansson Per-Jonny Käck, Ingela Linered, Åsa Moum,
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
XP-projekt: En fördjupning
XP-projekt: En fördjupning Extreme Programming Martin Karlsson marka@itn.liu.se K7522 011 36 34 63 Fem värden Kommunikation Var öppna Var ärliga Ta konflikter Diskutera Tag beslut Tag ansvar Kräver feedback,
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad
ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System
ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System Magnus Juvas Qwise Om oss: Qwise Vi hjälper systemutvecklingsteam att bli bättre. Vi är experter på ALM och Team System. Vi
Grafiska användargränssnitt i Java
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har
Systemanalys och arkitektur på Tillväxtverket 2012
Dokumentnamn Dokumenttyp Datum Avrop Systemanalys och arkitektur på Tillväxtverket 2012 2011-12-13 Diarienr/Projektnr Upprättad av Godkänd av Version 8531-2011-4739 Systemanalys och arkitektur på Tillväxtverket
Gränslös kommunikation
Ericsson enterprise multimedia server Gränslös kommunikation Den nya generationen multimedielösningar för företagskommunikation Kunnig personal och högeffektiva arbetssätt är viktiga faktorer om ett företag
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
Enhetstester på.netplattformen
Enhetstester på.netplattformen Praktikfall ur verkligheten Copyright Prolore 2007. All Rights Reserved. Viktor Laszlo Vem är jag 11 år inom test Prolore: specialiserat på Testautomatisering, Prestandatest
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