{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/vecka4-implementation/arkitektur",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV613"}},"mdx":{"fields":{"id":"dbb0600c-b1f1-5e15-a5f9-e22785e9d0e9","title":"Introduktion till mjukvaruarkitektur","slug":"/vecka4-implementation/arkitektur"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Introduktion till mjukvaruarkitektur\",\n  \"metaTitle\": \"1dv613 | vecka3 | arkitektur\",\n  \"metaDescription\": \"metaDescription\",\n  \"order\": 6\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Introduktion till mjukvaruarkitektur\"), mdx(\"p\", null, \"Mjukvaruarkitektur \\xE4r som att rita en ritning f\\xF6r ett hus innan du b\\xF6rjar bygga det. Det handlar om att planera och strukturera ett program eller system p\\xE5 ett s\\xE4tt som g\\xF6r det enkelt att underh\\xE5lla, uppdatera och bygga vidare p\\xE5 i framtiden. T\\xE4nk dig att du bygger en webbapplikation \\u2013 mjukvaruarkitekturen \\xE4r den \\xF6vergripande designen som h\\xE5ller ihop alla delar, fr\\xE5n databasen till anv\\xE4ndargr\\xE4nssnittet.\"), mdx(\"h2\", null, \"Varf\\xF6r \\xE4r mjukvaruarkitektur viktigt?\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"H\\xE5llbarhet\"), \": En bra arkitektur g\\xF6r det l\\xE4ttare att f\\xF6rst\\xE5 och \\xE4ndra i koden, \\xE4ven efter att projektet vuxit och fler utvecklare \\xE4r inblandade.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Skalbarhet\"), \": Om din webbapplikation blir popul\\xE4r och f\\xE5r m\\xE5nga anv\\xE4ndare, ser arkitekturen till att systemet kan hantera den \\xF6kade belastningen utan att krascha.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Flexibilitet\"), \": En v\\xE4ldesignad arkitektur g\\xF6r det enklare att l\\xE4gga till nya funktioner eller byta ut gamla delar av systemet.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\xC5teranv\\xE4ndning\"), \": Genom att f\\xF6lja vissa designm\\xF6nster kan du \\xE5teranv\\xE4nda kod och komponenter i flera projekt, vilket sparar tid och resurser.\")), mdx(\"h2\", null, \"Designm\\xF6nster \\u2013 Byggstenarna i mjukvaruarkitektur\"), mdx(\"p\", null, \"Designm\\xF6nster \\xE4r som f\\xE4rdiga l\\xF6sningar p\\xE5 vanliga problem inom mjukvaruutveckling. De \\xE4r bepr\\xF6vade metoder f\\xF6r att strukturera och organisera koden. H\\xE4r \\xE4r n\\xE5gra vanliga designm\\xF6nster inom webbutveckling:\"), mdx(\"h3\", null, \"Klient-server-arkitektur\"), mdx(\"p\", null, \"Detta \\xE4r den grundl\\xE4ggande modellen f\\xF6r hur webben fungerar. Klienten (t.ex. webbl\\xE4saren) skickar en f\\xF6rfr\\xE5gan till servern (d\\xE4r webbapplikationen finns), och servern skickar tillbaka ett svar (t.ex. en webbsida).\"), mdx(\"h3\", null, \"MVC (Model-View-Controller)\"), mdx(\"p\", null, \"MVC \\xE4r ett popul\\xE4rt m\\xF6nster f\\xF6r att dela upp webbapplikationen i tre delar:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Model\"), \": Hanterar data och logik (t.ex. databasen).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"View\"), \": Visar informationen f\\xF6r anv\\xE4ndaren (t.ex. webbsidan).\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Controller\"), \": Styr hur anv\\xE4ndaren interagerar med applikationen och uppdaterar modellen och vyn.\")), mdx(\"h2\", null, \"Referensarkitektur \\u2013 Mallar f\\xF6r vanliga scenarier\"), mdx(\"p\", null, \"Referensarkitektur \\xE4r som en mall eller en \\\"blueprint\\\" f\\xF6r hur man bygger en viss typ av system. De ger v\\xE4gledning om vilka komponenter som beh\\xF6vs och hur de ska samverka. Det finns referensarkitekturer f\\xF6r olika typer av webbapplikationer, t.ex. e-handel, bloggar eller sociala medier.\"), mdx(\"h2\", null, \"Skissverktyg \\u2013 Rita upp din arkitektur\"), mdx(\"p\", null, \"Innan du b\\xF6rjar koda \\xE4r det bra att rita upp en skiss \\xF6ver din mjukvaruarkitektur. Det finns m\\xE5nga verktyg du kan anv\\xE4nda f\\xF6r att g\\xF6ra detta, b\\xE5de online och offline. N\\xE5gra popul\\xE4ra alternativ \\xE4r:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Diagrams.net (draw.io)\"), \": Ett gratis och l\\xE4ttanv\\xE4nt verktyg f\\xF6r att skapa diagram av olika slag.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Lucidchart\"), \": Ett molnbaserat verktyg med m\\xE5nga funktioner f\\xF6r att rita upp komplexa arkitekturer.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Excalidraw\"), \": Ett enkelt och intuitivt verktyg f\\xF6r att skapa handritade skisser.\")), mdx(\"h2\", null, \"Mjukvaruarkitektur i praktiken\"), mdx(\"p\", null, \"Mjukvaruarkitektur \\xE4r inte bara teori \\u2013 det \\xE4r n\\xE5got du kommer att jobba med i varje webbprojekt. Genom att f\\xF6rst\\xE5 de grundl\\xE4ggande principerna och designm\\xF6nstren kan du bygga mer h\\xE5llbara, skalbara och flexibla webbapplikationer.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Kom ih\\xE5g:\"), \" Mjukvaruarkitektur \\xE4r en process, inte en eng\\xE5ngsh\\xE4ndelse. Det \\xE4r viktigt att t\\xE4nka p\\xE5 arkitekturen under hela utvecklingsprocessen, fr\\xE5n planering till underh\\xE5ll.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#introduktion-till-mjukvaruarkitektur","title":"Introduktion till mjukvaruarkitektur","items":[{"url":"#varför-är-mjukvaruarkitektur-viktigt","title":"Varför är mjukvaruarkitektur viktigt?"},{"url":"#designmönster--byggstenarna-i-mjukvaruarkitektur","title":"Designmönster – Byggstenarna i mjukvaruarkitektur","items":[{"url":"#klient-server-arkitektur","title":"Klient-server-arkitektur"},{"url":"#mvc-model-view-controller","title":"MVC (Model-View-Controller)"}]},{"url":"#referensarkitektur--mallar-för-vanliga-scenarier","title":"Referensarkitektur – Mallar för vanliga scenarier"},{"url":"#skissverktyg--rita-upp-din-arkitektur","title":"Skissverktyg – Rita upp din arkitektur"},{"url":"#mjukvaruarkitektur-i-praktiken","title":"Mjukvaruarkitektur i praktiken"}]}]},"parent":{"relativePath":"vecka4-implementation/arkitektur.md"},"frontmatter":{"metaTitle":"1dv613 | vecka3 | arkitektur","metaDescription":"metaDescription","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/","title":"🎉 Välkommen till Mjukvaruutvecklingsprojekt (1DV613)"}}},{"node":{"fields":{"slug":"/video-loggar","title":"Videologgar"}}},{"node":{"fields":{"slug":"/studieguiden","title":"Studieguiden"}}},{"node":{"fields":{"slug":"/studieguiden/kommunikationsstrategi","title":"Kommunikationsstrategi"}}},{"node":{"fields":{"slug":"/studieguiden/kursledning","title":"Kursledning"}}},{"node":{"fields":{"slug":"/studieguiden/kursplan","title":"Kursplan och betyg"}}},{"node":{"fields":{"slug":"/studieguiden/litteratur","title":"Kurslitteratur"}}},{"node":{"fields":{"slug":"/studieguiden/schema","title":"Schema och deadlines"}}},{"node":{"fields":{"slug":"/studieguiden/studieanvisningar","title":"Studieanvisningar"}}},{"node":{"fields":{"slug":"/studieguiden/utvarderingar","title":"Kursvärderingar"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/dokumentation","title":"Dokumentation"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision","title":"Vecka 1/2 - Planering och vision"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/todo","title":"📅 Att göra-lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/vision","title":"Projektvision"}}},{"node":{"fields":{"slug":"/vecka10-etik","title":"Vecka 10 - Etik & överlämning"}}},{"node":{"fields":{"slug":"/vecka10-etik/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/arbeta-i-projekt","title":"Att arbeta i projekt"}}},{"node":{"fields":{"slug":"/vecka3-krav-test","title":"Vecka 3 - Krav och testning"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/testning","title":"Testning"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka3-krav-test/vecka3-krav-test","title":"Kravhantering"}}},{"node":{"fields":{"slug":"/vecka4-implementation/arkitektur","title":"Introduktion till mjukvaruarkitektur"}}},{"node":{"fields":{"slug":"/vecka4-implementation/docker-teori","title":"Introduktion till containers"}}},{"node":{"fields":{"slug":"/vecka4-implementation","title":"Vecka 4 - Implementation"}}},{"node":{"fields":{"slug":"/vecka4-implementation/just-task-it-docker","title":"Introduktion till Docker"}}},{"node":{"fields":{"slug":"/vecka4-implementation/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering","title":"Vecka 5 - Versionshantering"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/jobba-med-git","title":"Jobba med Git"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka5-versionshantering/versionshantering","title":"Versionshantering"}}},{"node":{"fields":{"slug":"/vecka6-drift/docker-compose-teori","title":"Introduktion till Docker compose"}}},{"node":{"fields":{"slug":"/vecka6-drift","title":"Vecka 6 - Driftsättning"}}},{"node":{"fields":{"slug":"/vecka6-drift/just-task-it-docker-compose","title":"JTI - Docker Compose"}}},{"node":{"fields":{"slug":"/vecka6-drift/just-task-it-production","title":"JTI - Production"}}},{"node":{"fields":{"slug":"/vecka6-drift/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/ci-cd","title":"CI/CD"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd","title":"Vecka 7 - CI/CD"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/just-task-it-deploy-pipeline","title":"JTI - Deploy through a pipeline"}}},{"node":{"fields":{"slug":"/vecka7-ci-cd/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test/automatiska-tester","title":"Automatiserad testning"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test","title":"Vecka 8 - Automatiserad testning"}}},{"node":{"fields":{"slug":"/vecka8-automatiska-test/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare","title":"Extern uppdragsgivare"}}},{"node":{"fields":{"slug":"/vecka9-leverans","title":"Vecka 9 - Slutleverans"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare/extern-uppdragsgivare-samverkan","title":"Samverkansinformation: studentprojekt med extern uppdragsgivare"}}},{"node":{"fields":{"slug":"/vecka9-leverans/todo","title":"Att göra lista"}}},{"node":{"fields":{"slug":"/vecka1-2-planering-vision/extern-updragsgivare/vagledning","title":"Vägledning för arbete med extern uppdragsgivare"}}}]}},"pageContext":{"id":"dbb0600c-b1f1-5e15-a5f9-e22785e9d0e9"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}