Redigerer
Skille mellom oppgaver
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
[[Fil:Non-encapsulated-tasks-NS.svg|høyre|miniatyr|Diagram som illustrerer prinsippet om skille mellom oppgaver, som sier at en utførende entitet bare kan inneholde en enkelt type oppgaver]] Innen [[informatikk]] er '''skille mellom oppgaver'''<ref>{{Kilde www|url=https://www.uio.no/studier/emner/matnat/ifi/INF3510/v14/docs/is-glossary-dnb-2013.pdf|tittel=ITIL-ordliste og forkortelser på norsk|forfattere=Stig Ellingsen, Signe-Marie Hernes Bjerke, David English, Jon Iden|forlag=AXELOS Limited, 2011|sitat=skille mellom oppgaver (separation of concerns, SoC): En tilnærming til å utvikle en løsning eller en IT-tjeneste som deler problemet inn i deler som kan løses uavhengig av hverandre. Denne tilnærmingen skiller ”hva” som skal gjøres fra ”hvordan” det skal gjøres.|besøksdato=2023-12-22|arkiv-dato=2023-12-22|arkiv-url=https://web.archive.org/web/20231222201328/https://www.uio.no/studier/emner/matnat/ifi/INF3510/v14/docs/is-glossary-dnb-2013.pdf|url-status=yes}}</ref> et designprinsipp for å dele et [[dataprogram]] i forskjellige deler. Hver del fokuserer på et særskilt [[Oppgaveområde (informatikk)|oppgaveområde]], som vil en mengde informasjon som påvirker koden til et dataprogram. En oppgave kan være så generell som "[[Maskinvare|maskinvaredetaljene]] for en applikasjon", eller så spesifikk som "navnet på hvilken klasse som skal [[Instans (informatikk)|instansieres]]". Et program som skiller bra mellom oppgave kalles et [[Modulær programmering|modulært]]<ref name="laplante">{{Kilde bok|url=https://books.google.com/books?id=pFHYk0KWAEgC&q=%22separation+of+concerns%22&pg=PA85|tittel=What Every Engineer Should Know About Software Engineering|etternavn=Laplante|fornavn=Phillip|utgiver=CRC Press|isbn=978-0-8493-7228-5}}</ref> program. Modularitet, og dermed godt oppgaveskille, oppnås ved å [[Innkapsling (informatikk)|innkapsle]] informasjon i en del av koden som har et godt definert [[grensesnitt]]. Innkapsling er et middel for å [[Informasjonskjuling|skjule informasjon]].<ref name="mitchell">{{Kilde bok|url=https://books.google.com/books?id=uXtHeZt8ZowC&q=%22separation+of+concerns%22&pg=PA5|tittel=Managing Complexity in Software Engineering|etternavn=Mitchell|fornavn=R. J.|utgiver=IEE|isbn=0-86341-171-1|side=5}}</ref> [[OSI-modellen|Lagvise]] design i informasjonssystemer er et annet eksempel på skille mellom oppgaver (for eksempel oppdeling i presentasjonslag, forretningslogikklag, datatilgangsslag, persistenslag).<ref name="microsoft">{{Kilde bok|url=https://books.google.com/books?id=D9on897Ep7AC&q=%22separation+of+concerns%22+%22layered+design%22&pg=PT54|tittel=Microsoft Application Architecture Guide|utgiver=Microsoft Press|isbn=978-0-7356-2710-9}}</ref> Skille mellom oppgaver resulterer flere [[Frihetsgrad (statistikk)|frihetsgrader]] for noen aspekter av et programmet sitt design, utbredelse eller bruk. Dette resulterer i økt frihet for forenkling og vedlikehold av kode. Når oppgavene er godt skilte vil det være flere muligheter for oppgraderinger, gjenbruk og uavhengig utvikling av moduler. Skjuling av implementeringsdetaljer til moduler bak et grensesnitt gjør det mulig å forbedre eller endre enkeltoppgaver uten å kjenne til detaljene til andre deler, og uten å måtte gjøre tilsvarende endringer i de andre delene. Moduler kan også eksponere ulike versjoner av et grensesnitt, hvilket som øker friheten til å oppgradere et [[komplekst system]] i små steg uten midlertidig tap av funksjonalitet. Skille mellom oppgaver er en form form for [[Abstraksjon (informatikk)|abstraksjon]]. Som med de fleste abstraksjoner betyr skille mellom oppgaver å legge til ekstra kodegrensesnitt, hvilket generelt skaper mer kode som må kjøres. Den ekstra koden for adskillelse kan føre til høyere beregningskostnad, men kan på den andre siden også føre til gjenbruk av mer optimalisert kode == Anvendelse == Mekanismer for [[Modulær programmering|modulær]] eller [[objektorientert programmering]] i [[programmeringsspråk]] er mekanismer som gjør det mulig for utviklere å implementere skille mellom oppgaver. For eksempel kan objektorienterte språk som [[C Sharp|C#]], [[C++]], [[Delphi]] og [[Java (programmeringsspråk)|Java]] skille mellom ooogaver ved hjelp av objekter, og [[Designmønster|arkitekturmønstre]] som [[modell–visning–kontroller]] (MVC) eller [[modell–visning–presentatør]] (MVP) kan [[skille mellom presentasjon og databehandling]]. [[Tjenesteorientert arkitektur|Tjenesteorientert design]] kan skille oppgaver ut til ulike [[Tjeneste (systemarkitektur)|tjenester]]. [[Prosedyrisk programmering|Prosedyriske]] programmeringsspråk som [[C (programmeringsspråk)|C]] og [[Pascal (programmeringsspråk)|Pascal]] kan skille ut oppgaver i [[Underrutine|prosedyrer]] eller [[Underrutine|funksjoner]]. [[Aspektorientert programmering|Aspektorienterte]] programmeringsspråk kan skille bekymringer i [[Aspekt (informatikk)|aspekter]] og objekter. Skille mellom oppgaverer også et viktig designprinsipp på mange andre områder, som for eksempel i [[byplanlegging]], [[arkitektur]] og [[informasjonsdesign]].<ref name="garofalo">{{Kilde bok|url=https://books.google.com/books?id=6WJ5oQT0dcUC&q=%22separation+of+concerns%22+%22urban+planning%22&pg=PA18|tittel=Building Enterprise Applications with Windows Presentation Foundation and the Model View ViewModel Pattern|etternavn=Garofalo|fornavn=Raffaele|utgiver=Microsoft Press|isbn=978-0-7356-5092-3|side=18}}</ref> Målet er å forstå, designe og administrere komplekse, gjensidig avhengige systemer mer effektivt slik at funksjoner kan gjenbrukes, optimeres uavhengig av andre funksjoner, og isoleres fra potensiell svikt hos andre funksjonaliteter. Vanlige eksempler er å skille et område i rom slik at aktiviteten i et rom ikke påvirker folk i andre rom, eller å koble en [[Stekeovn|elektrisk ovn]] på en annen [[Kurs (elektro)|kurs]] enn [[Belysning|belysningen]] slik ikke lyset går dersom [[Sikring (elektrisk)|sikring]] til ovnen ryker. Eksemplet med rom viser også innkapsling, hvor informasjon inni et rom (for eksempel hvor rotete det er) ikke er tilgjengelig for de andre rommene, bortsett fra gjennom grensesnittet (som er døren). Eksemplet med elektriske kurser viser at aktiviteten i en modul (som er en krets med påkoblede forbrukere av strøm) ikke påvirker aktiviteten i et annet modul, slik at hver modul ikke trenger å bry se med hva som skjer i den andre. == Se også == * [[Holisme]] * [[Modulær programmering]] * [[Ortogonalitet]] * [[Programvareavhengigheter]] == Referanser == <references/> [[Kategori:Vitenskapelig epistemologi]] [[Kategori:Metafysikk]] [[Kategori:Programmering]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:ISOtilNorskdato
(
rediger
)
Mal:Kilde bok
(
rediger
)
Mal:Kilde www
(
rediger
)
Modul:Citation/CS1
(
rediger
)
Modul:Citation/CS1/COinS
(
rediger
)
Modul:Citation/CS1/Configuration
(
rediger
)
Modul:Citation/CS1/Date validation
(
rediger
)
Modul:Citation/CS1/Identifiers
(
rediger
)
Modul:Citation/CS1/Utilities
(
rediger
)
Modul:Citation/CS1/Whitelist
(
rediger
)
Modul:ISOtilNorskdato
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon