Naked Objects. Michael Persson, d04mpe Peter Exner, dt08pe8
|
|
- Ann-Marie Nilsson
- för 8 år sedan
- Visningar:
Transkript
1 Naked Objects Michael Persson, d04mpe Peter Exner, dt08pe8 2 mars 2010
2 Sammanfattning Naked objects är ett mönster som kan användas för att skapa en grundarkitektur. Tankesättet med Naked Objects är att eliminera den traditionella lagerstrukturen och istället skapa ett sammanlänkat. Vi har skapat en första iteration av Enduro projektet med hjälp av Naked Objects ramverket och tillsammans med olika mätvärden och våra observationer skapat en bild av Naked Objects stryka resp. svaghet för agila projekt.
3 Innehåll 1 Inledning 2 2 Enduro 2 3 Naked objects 3 4 Utförande och Observationer 5 5 Metrics 5 6 Slutsats 6 1
4 1 Inledning Inom mjukvaruutveckling har det länge funnits en strävan åt att återspegla användarkrav iform av olika strukturer som på ett enhetligt och inkapslande sätt representerar de entiteter som finns inom användardomänen. Tanken bakom har varit att på ett naturligt sätt fånga in logik och data till de objekt de tillhör. Inom affärssystem används ofta begreppen affärs- eller domänobjekt för att beskriva dessa entiteter. Objektorienterad programmering där attribut och beteende kapslas in i ett objekt är ett steg i den riktningen. För att dessutom hålla arkitekturen av ett system agilt och därmed utbyggningsbart är det av stor vikt att kopplingen mellan affärsobjekt hålls minimal [9]. Av denna anledning är det viktigt att affärsobjekten själva innehåller den logik som de representerar och inte endast blir till samlingsobjekt av data. En av anledningarna till denna separering av logik från data är enligt grundarna till Naked Objects uppkomsten av arkitekturer som delar upp system i skilda lager [9]. Naked Objects är ett arkitekt mönster som motverkar detta genom att automatiskt generera de lager som sluter sig kring affärsobjekten. Affärsobjekten blir på så vis direkt exponerade för användarna och genom detta utlovas ett gemensamt språk mellan utvecklare och kund samt kortare utvecklingstider då GUI autogenereras. Dessa egenskaper verkar dessutom falla väldigt väl inom ett projekt som använder agil utveckling. Ett gemensamt språk är en av förutsättningarna till att kunden kan kommunicera med utvecklarna och därmed medverka i utformningen av systemet. Genom ett gemensamt språk stödjs XP teknikerna Add a Customer to the Team och Develop a Common Vocabulary [6]. Den korta utvecklingstiden stödjer framtagningen av en första iteration(exploration phase), varifrån nya stories kan tas fram. Tidigare studier [7] av Naked objects pekar på att mönstret med fördel kan användas i utforskningsstadiet av ett agilt projekt, dessutom utlovas en kortare utvecklingstid av användarstories. Vårt mål med studien är att: skapa en första iteration av Enduro projektet i Naked Objects jämföra första iterationen mellan teknikerna lokalisera svagheter/styrkor med Naked Objects i ett XP projekt undersöka affärsvärdet av en första iteration i Naked Objects undersöka hur Naked Objects kan användas i PVG-kursen Rapporten avser att ge en allmän översikt av Naked Objects och hur naked Objects kan appliceras i ett agilt projekt. Rapporten behandlar och analyserar den empiriska datan som skapats under utvecklingen av projektet. 2 Enduro Enduro är ett skolprojekt, i PVG(Programvaruutveckling i grupp) kursen, vars syfte är att ett team datateknikstudenter ska praktisera XP metodik [6]. Programmet som ska utvecklas är ett tidtagningsprogram som kan hantera olika sorters indata. Hur mycket indata samt vilka funktioner som ska finnas sker enligt överenskommelse mellan teamet och kunden. Kunden är en lärare som agerar som slutanvändare och kund. Det är samma person som presenterar ev. önskemål och förändringar. Teamet utvecklar programmet under sex iterationer. I varje iteration ingår ett planeringsmöte samt en långlabb. På planeringsmöten skattas relevanta stories och därefter görs en prioritering av teamet. Det förs även en dialog med kunden om dess ev. önskemål. På långlabbarna utvecklar teamet de stories som kunden om teamet kommit överens om. På planeringsmötet delas delas det ut spikes. Spikes kan ses som en hemuppgift som ska göras på ca 4 h och varje teammedlem får en spike. Hädanefter refereras Enduro projektet som projektet och PVG teamet som teamet. 2
5 Figur 1: Figuren beskriver tanken med lagerstrukturen i Naked Objects 3 Naked objects Naked Objects är ett mönster som kan användas för att skapa en grundarkitektur. Tankesättet med Naked Objects är att eliminera den traditionella lagerstrukturen och istället skapa ett sammanlänkat lager Why develop multiple layers when you only need develop one? [4]. Se figur 1. Vid utveckling av affärssystem innebär en ändring på affärslagret oftast att även omkringliggande lager behöver ändras. I Naked Objects arbetar utvecklarna endast på affärslagret, omkringliggande lager såsom presentationslagret genereras automatiskt och på så vis undgås även att funktioner som normalt tillhör affärsobjekten hamnar utanför i ett annat lager. Mappningen av affärsobjekt till presentationslagret är direkt, attribut och funktioner som är definerade i affärsobjekten visas i gränssnittet. På så vis läggs fokus på utvecklingen av affärsobjekt och det blir självklart att placera funktioner lokalt i affärsobjekten. I Naked Objects finns det tre klasser huvudsakliga abstrakta klasser, AbstractDomainObject, AbstractFixture och AbstractService. AbstractDomainObject - Denna klass äver alla affärsobjekten ifrån. Affärsobjekten måste ha lämpliga metoder för att hantera affärobjektets attribut för att Naked Objects ska kunna utnyttja objekten. AbstractFixture - En fixture laddas först av alla klasser och kan ses som en form att setup klass. En fixture används för att fylla på affärsobjekten med lämplig data från t ex. en databas. AbstractService - En service är den klassen som publiceras mot GUI. Det är i serviceklassen som funktionerna bestäms och vilka funktioner som ska vara tillgängliga, publika, i GUI (högerklick i GUI). Genom att ärva från klasserna ovan får utvecklaren tillgång till en del användbara metoder t ex. ges det tillgång till samtliga affärsobjekt av en viss typ och vilken text/label som ska visas i GUI. Det finns även en del notationer som kan styra metoderna t ex. om en funktion ska vara synlig, eller inte, i GUI. Se public Contestant newcontestant(string name, int startnumber) { Contestant contestant = (Contestant) newtransientinstance(contestant.class); contestant.setname(name); contestant.setstartnbr(startnumber); persist(contestant); return contestant; } 3
6 Figur 2: DND(Drag n drop) GUI i Naked Objects Framework Naked Objects styrs väldigt mycket av en konfigurationsfil. I konfigurationfilen sätts vilka services som ska visas i GUI och vilka fixtures som ska laddas, vilka olika path:er som ska användas samt vilka användare som ska finnas. Det finns väldigt många inställningar, många outforskade, som kan sättas i konfigurationsfilen. Naked Objects Framework har stöd för användarprofiler vilket gör Naked Objects väldigt flexibelt och ger möjlighet att begränsa användare enligt traditionellt mönster, t ex. administratör och användare. För att sammanlänka affärslagret med databaslagret använder sig Naked Objects av Hibernate[2]. Mer precist används hibernate för att automatiskt generera en koppling mellan affärsobjekt och databasentiteter. Fördelarna med Naked objects är att: utvecklingsiterationen blir snabbare eftersom en stor del av utvecklingsarbetet genereras automatiskt. ändringar underlättas då de endast sker i ett lager och får genomslag i övriga lager. GUI genereras automatiskt vilket annars är en tidskrävande process. en gemensam terminologi utvecklas då samma namngivning används genomgående i de olika lagren Fördelarna vid agil utveckling med Naked Objects är: Strategisk agilitet [10], funktionerna är lokalisera de till affärsobjekten vilket gör utbyggnad enklare. Därmed stöds en iterativ utvecklingsmodel. 4
7 Operationell agilitet [10], det objektorienterade användargränssnittet får användarna att tänka i termer av affärsobjekt, operationer blir således inte en följd av knapptryckningar. Det automatiskt genererade användargränssnittet leder till en snabb utveckling där användarkrav snabbt omvandlas till ett körbart program. Det gemensamma språket bygger kring affärsobjekten, detta möjliggör att kommunikationen mellan användare och utvecklare blir effektiv. Naked Objects är implementerat i ett Open-Source ramverk kallat Naked Object Framework, förutom mönstret stödjer även ramverket automatisk generering av dokumentation. Generingen av användargränssnittet kan ske till olika plattformar.två av dessa DND(Drag n drop), se figur 2, och HTML följer med ramverket. 4 Utförande och Observationer För att på något sätt få en bra och rättvis jämförelse om hur bra Naked Objects ramverket lämpar sig för projektet kom vi fram till att vi skulle jämföra en första iteration mellan teamet och oss. Vi lät först teamet skapa den första iterationen genom att använda traditionell XP metodik, därefter utvecklade vi en egen iteration i Naked Objects ramverket som uppfyllde samma krav och stories. Under utvecklingen i Naked Objects observerade vi följande: Strukturen blev väldigt påtvingad, i Naked Objects finns det tre huvudsakliga klasser att ärva från: DomainObjects, Services och Fixtures. Detta leder till att man naturligt tänker i termer av affärsobjekt, i vårt fall fick vi affärsobjekten Förare, Starttider och Måltider som samtliga ärver från klassen DomainObjects. Inlärningströskel är väldigt hög - dokumentationen kring Naked Objects är till mängden omfattande och koncepten kring affärsobjekten är väl dokumenterad. Samtidigt brister dokumentation när det gäller att förklara hur datalagringen av affärsobjekten sker. Vi kunde av denna anledning inte dra nytta av ramverkets styrka i detta området Det saknas bra tutorials som steg för steg visar hur man skapar och visar ett affärsobjekt från grunden, det tog oss därför lång tid att att komma igång. Det automatiskt genererade användargränssnittet(dnd), se figur 2, är väldigt begränsat. T ex. är det begränsat på så sätt att det inte går att lägga till egen grafik så som bilder och grafer. Visserligen går det att utöka ramverket och utveckla ett eget gränssnitt, men då går en av fördelarna med Naked Objects förlorad. Vår utmaning har varit att implementera iteration ett av projektet i Naked Objects, ett för oss tidigare okänt ramverk. På motsvarande sätt ställdes teamet inför utmaningen att implementera Enduro projektet genom att använda XP-metodik. 5 Metrics För att jämföra Naked Objects med traditionell XP utveckling har vi tagit ett antal mätvärden på de två projekten. Vid utvecklingen av Naked Objects versionen tillämpades inte test first metoden, av denna anledning ingår ingen testkod från något av projekten. Mätvärdena är framtagna med hjälp av verktygen Metrics [3], Pmd [5] samt Chidamber and Kemerer Java Metrics [1]. 5
8 Mätvärde Naked Objects XP Antalet programmeringspar 1 4 Utvecklingstid total (h) 16 8 Arbetsinsats (h) Antalet klasser Antalet metoder Antalet kodrader i metoder(mloc) Varav GUI 0 45 Totalt antal kodrader(tloc) McCabe CC, Max 6 13 NPath, Max Coupling between objects classes, Max 5 6 Arbetsinsatsen, totalt antal utvecklartimmar som utnyttjades, talar tydligt till fördel för Naked Objects, på hälften av tiden det tog för ett team på 8 utvecklare lyckades vi ta fram ett program som uppfyllde samma krav och funktionalitet. Antalet klasser blev nästan identiska i båda projekten, detta var förväntat då antalet klasser är förhållandevis få i början av ett projekt. Antalet metoder i överstiger tydligt i Naked Objects projektet, detta beror till stor del på att man via Naked Objects mönstret är tilltvingade till att implementera getter- och settermetoder i affärsobjekten. De övriga mätvärdena bör med tanke på projektets storlek tolkas med stor försiktighet. Cyklomatisk Komplexitet(McCabe CC)[3], antalet olika vägar(npath)[5] samt funktionsberoende mellan objekt(coupling between object classes)[1] visade enligt vår mening inga större skillnader, de är till viss del beroende på hur mycket av arbetsinsatsen som tilldelats refaktorisering. Antalet kodrader i metoder pekar dock på ett intressant faktum, då GUI genereras automatiskt i Naked Objects utvecklade vi inget GUI vilket även ledde till ett lägre antal kodrader. Det totala antalet kodrader blev nästan detsamma, i detta mätetal ingår importer av bibliotek, deklarationer av klassattribut samt metodnamn, vi tror att kodrader i metoder visar ett mera relevant jämförelsetal. Mätvärdena bör aktsamt jämföras då förkunskaperna i java spelar en stor roll för samtliga utvecklare. 6 Slutsats Baserat på våra erfarenheter och observationer drar vi följande slutsatser om Naked Objects: Inlärningskurvan är väldig hög vid första användningen av Naked Objects. Av detta skäl vill vi inte rekommendera användningen av Naked Objects i projektet. Det kan däremot vara intressant att tillsammans med Naked Objects experter ta fram och diskutera en första iteration av projektet. Om kunskap kring Naked Objects redan finns i ett utvecklingsteam så kan Naked Objects med fördel användas för att ta fram en prototyp. Ingen GUI kod skrivs vid användning av Naked Objects. Detta ska vägas mot det faktum att det genererade gränssnittet inte blir anpassningsbar och av den anledningen inte kommer att passa ett projekt i längden. Naked Objects är mest lämpligt för projekt som är databasintensiva och inte fordrar stora krav på användargränssnitt. Sådana affärssystem kan dra stor nytta av att presentationslagret och databaslagret automatiskt genereras. Utvecklingen sker genom att affärsobjekt identifieras, hela tänkandet kring ett projekt sker i termer av affärsobjekt. Detta kan ge en stor fördel vid agil utveckling, kommunikationen mellan utvecklare och kund förbättras samtidigt som avståndet mellan stories och resultat blir kortare. För att dra större slutsatser om kodkvalité samt kodstorlek måste ytterligare iterationer av projektet implementeras. Även om antalet kodrader i metoder var färre är det för tidigt att dra slutsatser om detta även kommer att gälla i fortsättningen. Likaså bör kodkomplexiteten endast utvärderas efter flera iterationer. Samtidigt bör det även tas i beaktning att teamet fick en overhead pga. den kommunikation som krävs när åtta personer samarbetar kring ett projekt. 6
9 Referenser [1] Chidamber and kemerer java metrics - [2] Hibernate - [3] Metrics - [4] Naked objects - [5] Pmd - [6] Chromatic. Extreme Programming: Pocket guide [7] Heikki Keränen and Pekka Abrahamsson. A case study on naked objects in agile software development. In Hubert Baumeister, Michele Marchesi, and Mike Holcombe, editors, XP, volume 3556 of Lecture Notes in Computer Science, pages Springer, [8] Michele Marchesi and Giancarlo Succi, editors. Extreme Programming and Agile Processes in Software Engineering, 4th International Conference, XP 2003, Genova, Italy, May 25-29, 2003 Proceedings, volume 2675 of Lecture Notes in Computer Science. Springer, [9] Richard Pawson. Naked Objects, Ph.D Thesis [10] Richard Pawson and Vincent Wade. Agile development using naked objects. In Marchesi and Succi [8], pages
Laboration 1: Design av applikation för uthyrning av maskeradkläder
Laboration 1: Design av applikation för uthyrning av maskeradkläder Syfte Uppgift Inledning Syftet med laborationen är att visa förmåga att kunna tillämpa en iterativ process för objektorienterad analys
Kodkomplexitet i agil utveckling. Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010
Kodkomplexitet i agil utveckling Axel Nilsson Svegard, Patrick Fogwall EDA270 - Djupstudie 2 mars 2010 Sammanfattning Denna studie avser att undersöka hur uppmätning av kodkomplexitet kan användas för
Scrum + XP = sant. Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se. Frederik Blauenfeldt Jeppsson. dt06fb8@student.lth.
Scrum + XP = sant Kristian Björk D06, Lunds Tekniska Högskola dt05kb1@student.lth.se Frederik Blauenfeldt Jeppsson D06, Lunds Tekniska Högskola dt06fb8@student.lth.se 2010-03-02 1 Abstract Scrum och XP
Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.
Föreläsning 2 Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program. Vår process Kravbeskrivning (3 dagar). Enkel form av användningsfall (use cases). Analys
Imperativ programmering. Föreläsning 4
Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
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
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
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
Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.
Page 1 (5) Hemuppgift 1DV404 150115-150118 Deluppgift 1 Processmodeller a) (4p) Alla mjukvaruutvecklare följer någon form av utvecklingsprocess i sitt arbete. Diskutera vad organisationer brukar ange som
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
Föreläsning 4: Designprocessen
Föreläsning 4: Designprocessen FSR: 2, 3, (6), 7 Att läsa: Kapitel 9 och 12 i Rogers et al.: Interaction design 4/e 150911 Designprocessen 2 Designprocessenöversikt Introduktion Att involvera användare
UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language
Ett modelleringsspråk : Exempel Fönster Klassnamn Unified Modelling Language Av Booch, Jacobson, Rumbaugh Exempel: En klass position storlek Attribut (instansvariaböe) Resultatet av en sammanslagning 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
Nyttomaximering av spikes
Nyttomaximering av spikes Johan Hedin Sånemyr D11, LTH dat11jh1@student.lu.se Victor Shu-Ming Lam D11, LTH dat11vla@student.lu.se 2016-03-07 Sammanfattning Som projektledare av ett team programmerare så
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
Scrum + XP samt konsekvensanalys
Scrum + XP samt konsekvensanalys Daniel Nimren dt05dn8 Douglas Frisk dt05df1 Dept. of Computer Science, Lunds Tekniska Högskola, Sweden {dt05dn8 dt05df1}@student.lth.se 1 mars 2010 Sammanfattning Denna
2010-12-27 SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.
Vattenfallsmodellen SCRUM Analys Kallas också linjär sekventiell modell Introduktion Design Kod Test Rational Unified Process Agile DSDM Adaptive Software Development Crystal Feature-Driven Development
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
Verktyg och Utvecklingsmiljö. Jochim von Hacht
Verktyg och Utvecklingsmiljö Jochim von Hacht Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg Editorer Kompilatorer Avlusare (debugger) Versionhantering (kommer i projektkurs)
JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08
JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit
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
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
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
Webbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Proj-Iteration 5B. Plan för återstående iterationer
Proj-Iteration 5B PVG/Coaching Boris Magnusson Datavetenskap LTH PVG/Coach 2009. Proj-Iter5B : 1 Plan för återstående iterationer Förutom att arbeta vidare på stories skall release göras både under iteration
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
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
Tentamen i Objektorienterad modellering och design
Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram
Användarcentrerad Systemutveckling
Användarcentrerad Systemutveckling Människadatorinteraktion (MDI) Inst. för informationsteknologi http://www.it.uu.se/edu/ course/homepage/hci/ ht10 Användarcentrerad systemutveckling, gränssnitt och prototyper.
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:
Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar
Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson
Minesweeper Individuellt Mjukvaruprojekt Joakim Jonsson 08 06 2013 Abstrakt Nedan följer en slutrapport för projektet inom kursen Individuellt Mjukvaru utvecklingsprojekt. Jag har under dessa 10 veckor
Objektorienterad programmering
1(5) Objektorienterad programmering och Java Programkurs 7 hp Object Oriented Programming and Java TDDE30 Gäller från: 2018 VT Fastställd av Programnämnden för data- och medieteknik, DM Fastställandedatum
SLUTRAPPORT WEBBPROJEKT 1
SLUTRAPPORT WEBBPROJEKT 1 Kostregistrering 30 mars 2012 Webbprojekt 1 1DV411 Institutionen för datavetenskap, fysik och matematik Linnéuniversitetet Ella Källman - ella@kallman.se Martin Kuoppa - martin@duofy.com
Designmönster, introduktion. Vad är det? Varför skall man använda mönster?
Designmönster, introduktion. Vad är det? Varför skall man använda mönster? Kent Petersson EMW, Mölndal Datavetenskap, Chalmers epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL: http://www.cs.chalmers.se/~kentp
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om
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
F9 del B Organisatoriskt. EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH
F9 del B Organisatoriskt EDAF45 Programvaruutveckling i grupp Projekt Boris Magnusson Datavetenskap, LTH 1 Projektet - moment Projektstartsmöte 6 Iterationer (en per vecka) - 10-12 team - 12-14 personer
D J U P S T U D I E I E D A S I M P L E C O D E A N D D E S I G N
D J U P S T U D I E I E D A 2 7 0 S I M P L E C O D E A N D D E S I G N S. Marcus Jacobsson D03, Lunds Tekniska Högskola d03mj@efd.lth.se S. Magnus Weinberg D03, Lunds Tekniska Högskola d03mw@efd.lth.se
Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram
Analys och design med hjälp av CRC 83 Klassdiagram Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt,
Inspel till dagens diskussioner
Intro till Agil Projektledning CMB 11 juni 2018 Mats Nyman Wenell Management AB Inspel till dagens diskussioner Historik och bakgrund Agila manifestet och de agila principerna SCRUM Kort om SAFe Wenell
Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod
Systemutveckling TDP029 Systemutveckling Annika Silvervarg COIN/HCCS/IDA Systemutveckling kallas processen att ta emot en beställning på ett datorsystem, skriva en strukturerad kravspecifikation på systemet,
TENTAMEN I DATAVETENSKAP
Umeå Universitet Datavetenskap Marie Nordström Thomas Johansson Jürgen Börstler 030124 TENTAMEN I DATAVETENSKAP PROGRAMMERINGSMETODIK OCH PROGRAMMERING I JAVA, 5P. (TDBA63) Datum : 030124 Tid : 9-15 Hjälpmedel
Business research methods, Bryman & Bell 2007
Business research methods, Bryman & Bell 2007 Introduktion Kapitlet behandlar analys av kvalitativ data och analysen beskrivs som komplex då kvalitativ data ofta består av en stor mängd ostrukturerad data
Objekt-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
Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul
Föreläsning 8 Programmeringsteknik och Matlab DD1312 er, Self Metoderna:, av metoder, Det är en metod som tillhör klassen och inte objektet. class Skylt(object): antal=0 def init (,r):.reklam=r def antal():
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
TDP023 Projekt: Agil systemutveckling
TDP023 Projekt: Agil systemutveckling Johan Åberg johan.aberg@liu.se Tre moment Projekt 8hp Marknadsföring av produkt 2hp Kopplat till projektarbetet Individuell rapport 2hp Kopplat till projektarbetet
Djupstudie Code smells / Refaktorisering. Martin Larsson dt08ml5 Stefan Johansson, dt08sj7
Djupstudie Code smells / Refaktorisering Martin Larsson dt08ml5 Stefan Johansson, dt08sj7 27 februari 2012 Innehåll 1 Inledning 1 2 Bakgrund 1 2.1 extreme programming....................... 1 2.2 Programvaruutveckling
Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
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
Software Engineering
Software Engineering Kristian Sandahl Niklas Lanzén Kort presentation Kristian Sandahl, 57 år Började Datateknik 1978 Första arbetsgivaren efter examen var LiU Konsult 1986-1987 Ericsson 1995-2001 olika
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA
Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Evelina Andersson 18 maj 2011 1 Introduktion Att träna mycket för att bli duktig på ett språk
Proj-Iteration 3. Grov plan för releaser
Proj-Iteration 3 PVG/Coaching Boris Magnusson Datavetenskap LTH Proj-Iter3-1 Grov plan för releaser Kunden är mycket nöjd med första releasen som visar att stora framsteg gjorts med implementationsarbetet.
Inledande programmering med C# (1DV402) Introduktion till C#
Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i
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,
Tentamen i Objektorienterad modellering och design Helsingborg
Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng
Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design
RE SD PD I UT IT ST AT Mjukvarudesign System Requirement Specification Inkrementell och iterativ! Konceptuell design (VAD) Systemdesign (OOA) Arkitekturell (grovkornig, UML) Teknisk design (HUR) Programdesign
OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1
Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.
Introduktion. Byggstenar TDBA63 2005-11-22
Introduktion UML står för Unified Modeling Language. Det är tänkt att fungera som hjälpmedel vid modellering av alla tänkbara typer av utvecklingsarbeten, inte bara inom dataomdrådet. Det största värdet
Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se
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,
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.
HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet
Design och konstruktion av grafiska gränssnitt
Design och konstruktion av grafiska gränssnitt Armin Nezirevic Peter Börjesson Interaktionsdesign Tillämpad informationsteknologi Chalmers/GU Idag Vad utmärker ett bra användargränssnitt? Kort kursinfo
Chaos om datorprojekt..
Systemutveckling och användbarhet Användarcentrerad systemutveckling, gränssnitt och prototyper. Referens till avsnitt i kursboken Dix kapitel 6 Gulliksen, Göransson: Användarcentrerad systemdesign, kapitel:
Statistik över heltal
Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande
Chaos om IT-projekt..
Användarcentrerad systemutveckling, gränssnitt och prototyper. Lämplig extraläsning Gulliksen, Göransson: Användarcentrerad systemdesign, Studentlitteratur, kapitel: 4, 5, 6, 7, 8, 9 (Bredvidläsning) Syfte
Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:
MOI Ämnet mobila applikationer behandlar olika tekniker för att utveckla programvara riktad mot mobila enheter samt processen från idé till färdigt program. Ämnet mobila applikationer får bara anordnas
Rune 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
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
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
Proj-Iteration1. Arkitektur alt. 1
Proj-Iteration1 PVG/Coaching Boris Magnusson Datavetenskap LTH Proj-Iter1-1 Registrering Registrering Arkitektur alt. 1 Personuppgifter Starttid Sorterare Måltid Efterbehandling Resultat Tre program som
Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser
Abstrakta Klasser 1 God klassdesign placerar gemensamma attribut och metoder så högt som möjligt i hierarkin men ibland kan dessa egenskaper inte definieras fullständigt Abstrakta klasser innehåller ofta
F6 Arkitektur, Planering
F6 Arkitektur, Planering EDA260 Programvaruutveckling i grupp Projekt Ulf Asklund, Boris Magnusson Datavetenskap, LTH PVG, 2013 F6-1 Mjukvaruarkitektur? Enkel Design och Refaktorisering handlar i första
Tentamen i Objektorienterad modellering och diskreta strukturer
Lunds Tekniska Högskola Datavetenskap Ulf Asklund, Sven Gestegård obertz Tentamen EDAF10 2013 10 24, 8.00 13.00 Tentamen i Objektorienterad modellering och diskreta strukturer Vid bedömningen kommer hänsyn
Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:
WEBBUTVECKLING Ämnet webbutveckling behandlar de tekniker som används för att presentera och bearbeta information i webbläsaren samt utifrån dessa tekniker skapa och vidareutveckla statiska och dynamiska
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
Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016
Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik
WEBBSERVERPROGRAMMERING
WEBBSERVERPROGRAMMERING Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets syfte Undervisningen i ämnet
Slutrapport för JMDB.COM. Johan Wibjer 2012-06-03
Slutrapport för JMDB.COM Johan Wibjer 2012-06-03 Abstrakt Den här rapporten kommer handla om mitt projekt som har handlat om att gör en webb sida för ett personligt media bibliotek, hur jag har jobbar
PROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Software Engineering. Mål med föreläsningen 10/2/2017. Kort presentation
Kort presentation Software Engineering Kristian Sandahl Niklas Lanzén Kristian Sandahl, 58 år Började Datateknik 1978 Första arbetsgivaren efter examen var LiU Konsult 1986-1987 Ericsson 1995-2001 olika
Effekter av införande av agila metoder. Daniel Sundmark Mälardalens högskola
Effekter av införande av agila metoder Daniel Sundmark Mälardalens högskola Agila metoder Agila metoder Values T. ex., working software over comprehensive documentation (Agile manifesto) Agila metoder
Objektorienterad programmering
Objektorienterad programmering Aletta Nylén http://user.it.uu.se/~aletta Epost: aletta.nylen@it.uu.se Rum: 1216 Kursinfo Lärare: Aletta Nylén Jesper Wilhelmsson Litteratur: Object-Oriented Software Development
Objekt-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
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...
Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?
Jonas Kvarnström jonkv@ida.liu.se 2013 Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? Rena OO-språk (allt är objekt) Scala, Smalltalk, Eiffel, Ruby,
Scaled Agile Framework
Scaled Agile Framework Grunder för självorganisation Vad är det och är det bra? @svante_lidman svante.lidman@coreboost.se 1 Vem är Svante? Senaste 6-7 åren Konsultat inom Large-Scale Lean/Agile De +20
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
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
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.
Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv
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
Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2014 2017 jonas.kvarnstrom@liu.se
Opponentrapport på examensarbete Utveckling av ett affärssystem med Unified Process av Therese Sundström.
Opponentrapport på examensarbete Utveckling av ett affärssystem med Unified Process av Therese Sundström. Författare Per Johansson, Henrik Wallinder Generellt Helhetsintrycket från genomläsning av uppsatsen