Vad är. Domändriven design?



Relevanta dokument
LADOK3 DOMÄNMODELLER. SUNET-veckan, , KTH Mikael Berglund, ITS, Umeå Universitet

Domain Driven Design - En fallstudie om kvalitetsfrämjande

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:

Checklista. Hur du enkelt skriver din uppsats

För smartare belysning

Inkapsling (encapsulation)

Datalogiskt tänkande är mer än Programmering. Fredrik Heintz Linköpings universitet

Projektuppgift.

Förbättring av Hofors kommuns hemsida: Socialtjänsten

Svenska som andraspråk åk 1

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

Projektet. TNMK30 - Elektronisk publicering

Boken. Kap Kap 11.3

Objektorienterad programmering

Mall & guide inför Ditt företags utvecklingssamtal

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

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

AKTIVITETSUTVÄRDERING

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Felsökning av mjukvara

Handledning och checklista för klarspråk

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

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

SPRÅKLIGA RIKTLINJER FÖR INVÅNARTJÄNSTERNA 1177 VÅRDGUIDEN OCH UMO

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

ArbetsrelateratDNA. Daniel Brodecki. Här är ditt ArbetsrelateratDNA i form av en rapport.

En bok om oss. För dig.

Molntjänster -- vad är molnet?

Designmönster, introduktion. Vad är det? Varför skall man använda mönster?

PROGRAMMERINGSMETODIK

Historien om mitt liv so far

Lokal pedagogisk planering Läsåret

ArbetsrelateratDNA. Daniel Brodecki. Här är ditt ArbetsrelateratDNA i form av en rapport.

BLI VÄN MED DIN BUGG. Frukostseminarium. Göteborg

SKOLFS. beslutade den XXX 2017.

Business Model You Din personliga affärsplan framtagen på åtta timmar.

Lokal verksamhetsplan årskurs 4-9 läsåret

Det låter underbart! Och hur gör man? Om jag vill träffa en ny kompis? Ja, då får man komma till oss och då gör vi en kort intervju.

Kartlägg mångfalden. Att skapa en enkät

729G06 Föreläsning 1 Objektorienterad programmering

Bedömningmatris Moderna språk år 7-9 Grundskola 7 9 LGR11 Mspr2

Sandåkerskolans plan för elevernas utveckling av den metakognitiva förmågan

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

Bulls-eye Dagbok. - för att finna steg i sin värderade riktning och att leva i riktning med det man vill att livet skall handla om

Här kan du ta del av presentationen från webbseminariet i pdf-format. Tänk på att materialet är upphovsrättsskyddat och endast till för dig som

Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt

ÄR DINA MEDARBETARE MOTIVERADE?

Mjukvaruprojekt Onlinebooks

MBS 12 & Mamut Online Desktop. Ole M Hasven - Product Manager, Marketing Partner Summit, oktober 2008 oleha@mamut.com

PERSONLIGT LEDARSKAP

Tummen upp! Matte ÅK 6

Förvaltningen föreslår att Vård- och omsorgsnämnden beslutar

Ankarmodellering L A R S R Ö N N B Ä C K

Inledande programmering med C# (1DV402) Introduktion till programmering

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Att jobba med. alla svaren, utan att våga ställa frågorna

Tillämpningsanvisningar

Användning av testautomation inom Extendas utvecklingsorganisation

Slutrapport för JMDB.COM. Johan Wibjer

GeografIKS. Ett nytt sätt att visualisera komplex information

Innehållsförteckning. Företagsanpassade uppdrag

Har du en idé? Vi hjälper dig vidare. Skydda dina idéer

MEDARBETARSAMTAL. vid miljöförvaltningen

OMSTRUKTURERING AV LEGACY- KOD MED HJÄLP AV DOMÄNDRIVEN DESIGN

Vägledningen för webbutveckling webbriktlinjer.se. Björn

Guide inför ett. storageprojekt. Viktiga överväganden inför lagringskonsolidering

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Dialogue Technologies April 2005

LPP, Reflektion och krönika åk 9

1 Installationsinstruktioner

In-flight Information System utveckling med ett användningscentrerat synsätt

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

Välj bloggen som du använder i skolan, i detta fallet heter den Min Skolblogg.

UID Hållbarhets - seminarier

Design. Vad lärde jag mig förra lekfonen? Hur bidrog jag Fll lärandet? Kravhantering sammanfa0ning 13/04/14

Pedagogisk planering år 2 Skriva meningar

Unga och pension. Februari Carina Blomberg, trygghetsekonom AMF,

Introduktion. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Din RelationsBlueprint - Källan till smärta eller framgång i din intima relation

Praktikum i programvaruproduktion

Språkteknologi och Open Source

IT-branschen växer i en rasande fart. Det är en högst välmående näring som formligen skriker efter nytt folk. Olika typer av människor, med olika

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Sammanställning - handlingsplan

Öppen/Fri programvara

Vad är molnet? Vad är NAV i molnet? Vem passar NAV i molnet för? Fördelar med NAV i molnet Kom igång snabbt...

Rapport. Framtidsjobb i staten

Introduktion. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Objektorientering. Grunderna i OO

TIPS OCH IDÉER FÖR DIG SOM VILL INTERVJUA

Sammanfattning av programmet UID FutureMap

År 6 Arbetsområde 1 Tema: Holiday

Working with parents. Models for activities in science centres and museums

Arkitektur Michael Åhs

LIISA: AYRAN: Grekland, tick tick tick tick. LIISA: Nej! Inte tick tick tick. Du måste använda ord! AYRAN: Jag kan inte. Inte bra. LIISA: Varför?

Ledarskap och kommunikation med NLP

Met/Track Software Ver 8.X 1 dagskurs

Transkript:

Vad är Domändriven design? 1

Domändriven design är utvecklare och domänexperter som arbetar tillsammans för att skapa mjukvara som är både begriplig och möjlig att underhålla. ett sätt att fånga och sprida kunskap genom delade modeller och källkod som är såväl lättläst som förändringstålig. att gradvis skapa ett språk som delas mellan utvecklare och domänexperter. en uppsättning mönster och principer som vägleder dig när du designar mjukvara. till stor hjälp att fokusera din arbetsinsats. Domändriven design, eller DDD, bistår dig att förstå var i ditt system sofistikerad design verkligen lönar sig, och var bra nog, är bra nog. 2

Hur kan DDD hjälpa mig? Som produktägare gillar jag att domändriven design hjälper oss möta verksamhetens utmaningar och möjligheter. Som agil utvecklare gillar jag att domändriven design fokuserar på samarbete och hög designkvalitet för att nå sina mål. Som domänexpert uppskattar jag att snabbt kunna fånga upp och korrigera missförstånd kring domänen. Som utvecklingschef gillar jag hur domändriven design hjälper oss dokumentera och sprida kunskap så att den delas av mer än en medarbetare. 3

När vi arbetar med domändriven design bygger vi gradvis upp ett allestädes närvarande språk. Vi använder detta språk i allt vi gör, så väl källkod som kravdokument och samtal mellan utvecklare och domänexperter. 4

Ordlista Domän (Domain) Domänen är vårt verksamhetsområde eller intresseområde. Exempel på domäner är containerfrakt, aktiehandel och DNA-sekvensering. Modell (Model) En modell är ett system av abstraktioner som representerar utvalda aspekter av domänen. Vi använder modellen för att lösa specifika problem relaterade till den domän modellen beskriver. Modellen är implementerad i mjukvarans källkod. Allestädes närvarande språk (Ubiquitous Language) Ett språk strukturerat runt domänmodellen, som används av alla teammedlemmar. Det används av såväl utvecklare som domänexperter när de samarbetar i mjukvaruprojektet. Även källkoden uttrycks i språket. Det är gemensamt och allestädes närvarande. Kontextavgränsning (Bounded Context) Modellen existerar i en kontext och skyddas av en avgränsning. Vi kartlägger hur olika kontext och deras modeller interagerar, i syfte att undvika modellkorruption och ta medvetna beslut kring integration. Byggstenar (Building Blocks) Domändriven design definierar ett antal taktiska designmönster, eller byggstenar, som hjälper oss att karaktärisera de olika delarna av domänmodellen. Byggstenarna hjälper oss att förtydliga ansvarsområden och begränsa komplexiteten i koden. Exempel på byggstenar är entitet, värdeobjekt och aggregat. 5

-Alltså, en faktura ska alltid specificera totalen... - Ah, jag förstår. Så om vi uppdaterar modellen så här? När vi utövar domändriven design skapar utvecklare och domänexperter modeller tillsammans med hjälp av enkla verktyg som blädderblock och witheboardtavlor. En viktig del är att också utforska problemet i källkod som använder det allestädes närvarande språket. 6

Tre vanliga frågor om domändriven design Fråga Är domänmodellen samma sak som de objekt vi sparar i databasen? Måste vi modellera vår hela affärsverksamhet i källkod? Det verkar svårt. Vi har en stor, komplicerad och gammal kodbas, hur kan vi använda DDD? Svar Den är mer än så. Domänmodellen är ett verktyg för att lösa problem, en reflektion av vår förståelse av domänen. Modellen representeras i källkod. En del, eller hela, domänmodellen kan komma att sparas i en databas men det är inte dess huvudfokus eller ett krav. Som tur är behöver du inte göra det! Domänmodell skapas för att hjälpa oss lösa specifika uppgifter inom domänen. Den innehåller bara det som behövs för att lösa just de uppgifter den är designad för att lösa. I en stökig kodbas baserad på otydliga, eller inga, modeller är det svårt att utföra sofistikerad design. Vi kan använda de strategiska delarna av DDD för att skapa förståelse för hur vår situation ser ut och hitta sätt för hur vi kan bedriva effektiv nyutveckling i närheten av existerande kod utan att kasta bort all funktionalitet som redan finns. 7

Citerus AB Barnhusgatan 16 111 23 Stockholm SWEDEN Developing people and software +46 (0)8-562 95 300 info@citerus.se www.citerus.se/ddd 8