Konstruksjon. Kap. 13 Konstruksjonsmodeller og prinsipper. Design Concepts and Principles

Størrelse: px
Begynne med side:

Download "Konstruksjon. Kap. 13 Konstruksjonsmodeller og prinsipper. Design Concepts and Principles"

Transkript

1 Kap. 13 Konstruksjonsmodeller og prinsipper. Design Concepts and Principles Konstruksjon Def av design [TAY59]: Prosess med å anvende forskjellige teknikker og prinsipper for å definere et device (enhet), en prosess eller et system tilstrekkelig detaljert til å gjennomføre en fysisk realisering. Målet for konstruktøren er å lage en modell eller representasjon av en enhet som senere skal bygges. Systemutvikling Kap 13 Konstruksjon 1 Systemutvikling Kap 13 Konstruksjon Programvare konstruksjon og utvikling Software Design and Software Engineering Konstruksjon inngår i alle utviklingsmodeller. Den er den første av tre tekniske aktiviteter: 1. Konstruksjon 2. Koding 3. Testing Fig viser infoflyten i konstruksjonsfasen. Systemutvikling Kap 13 Konstruksjon 3 Systemutvikling Kap 13 Konstruksjon Programvare konstruksjon og utvikling -2 Konstruksjonen produserer: 1. Datakonstruksjon - datamodellering, datastrukturer 2. Arkitektur konstruksjon - Definerer forholdet mellom hovedkomponentene i programmet. 3. Grensesnitt konstruksjon - mellom moduler (internt), mot andre programmer og mot brukere (info-flyt: data/kontroll) 4. Prosedyrekonstruksjon - Overfører de strukturelle komponentene til prosedyrebeskrivelser Konstruksjonsprosessen Konstruksjon er en iterativ prosessen som skal overføre kravspesifikasjonen til en representasjon av programvaren. Konstruksjon er viktig for kvaliteten og vedlikeholdbarheten av programvaren. Konstruksjonen er grunnlaget for alle senere utviklingsaktiviteter. Systemutvikling Kap 13 Konstruksjon 5 Systemutvikling Kap 13 Konstruksjon 6

2 Konstruksjon og programvarekvalitet Gjennom konstruksjonsprosessen sikres kvaliteten med formelle tekniske presentasjoner (reviews) eller konstruksjonsgjennomganger (Walkthroughs) Vi kan bruke 3 kriterier for å evaluere god konstruksjon: Konstruksjonen må implementere alle eksplisitte krav i analysemodellen, og oppfylle kundens implisitte ønsker. Konstruksjonen må være en lesbar og forståelig veiledning for de som skriver kode, utfører tester og vedlikeholder programmet. Konstruksjonen må gi et komplett bilde av programvaren innenfor data-, funksjons- og virkeområdet Konstruksjon av programvarekvalitet-2 Vi kan sette opp følgende retningslinjer (kriterier) for god design kvalitet: 1. Hierarkisk organisering. Intelligent kontroll mellom programkomponentene. 2. Modulær oppbygging. Logiske komponenter som utfører spesifikke funksjoner/subfunksjoner. 3. Data- og prosedyreabstraksjoner. 4. Moduler som har uavhengig funksjonell karakteristikk. 5. Grensesnitt som reduserer kompleksiteten av forbindelsen mellom modulene og med eksterne omgivelser. 6. Utføres med repeterbare metoder som drives frem av info fra kravanalysen. Systemutvikling Kap 13 Konstruksjon 7 Systemutvikling Kap 13 Konstruksjon Evolusjon av programkonstruksjon Historie: Modullære programmer Top-down.. Strukturert programmering Dataflyt og datastrukturer Konstruksjon def.. Objektorientert konstruksjon Metodene har følgende fellestrekk: 1. En mekanisme for overføring fra representasjon av infodomene til konstruksjonsrepresentasjon. 2. En notasjon for å representere funksjonelle komponenter og deres grensesnitt. 3. Heuristikk (regler for) forbedring og oppdeling 4. Retningslinjer for kvalitetssikring Konstruksjonsprinsipper Vi kan sett opp en liste av konstruksjonsprinsipper: Konstruksjonsprosessen må ikke lide av tunnelsyn vi må vurdere flere alternativer i forhold til problemet, tilgjengelige ressurser og konstruksjonsmodell. Konstruksjonen må kunne spores tilbake til analysemodellen. Konstruksjonen skal ikke finne opp hjulet på nytt. (Gjenbruk) Konstruksjonen bør være slik at strukturen i programmet reflekterer strukturen i problemområdet. Konstruksjonen må være enhetlig og integrerende. Alle som utfører konstruksjonen må følge de samme reglene, og det må defineres grensesnitt mellom modulene. Systemutvikling Kap 13 Konstruksjon 9 Systemutvikling Kap 13 Konstruksjon Konstruksjonsprinsipper Konstruksjonen må struktureres slik at det er lett å utføre endringer. Konstruksjonen må struktureres slik at systemet stopper kontrollert, selv med unormale data, hendelser, eller feil bruk. (Robust program). Konstruksjon er ikke koding (programmering), programmering er ikke konstruksjon. Konstruksjon er på et høyere abstraksjonsnivå. Bare små detaljer i konstruksjonen kan utsettes til kodingen. Konstruksjonen må kvalitetssikres mens den utføres, ikke etter at den er laget. Konstruksjonen må gjennomgås (reviewed) for å minimalisere logiske feil. Hvis disse prinsippene anvendes, får vi en konstruksjon som har både ekstern og intern kvalitet Konstruksjonsprinsipper Eksterne kvalitetsfaktorer er egenskaper ved programvaren som observeres av brukerne (hastighet, pålitelighet, korrekt, brukervennlig). Interne kvalitetsfaktorer er viktige for systemutviklerne, og gir høy kvalitet på konstruksjonen, sett fra et teknisk perspektiv. Systemutvikling Kap 13 Konstruksjon 11 Systemutvikling Kap 13 Konstruksjon 12

3 13.4 Konstruksjonsmodeller Vi skal her se på prinsipper og konsepter for konstruksjon. De skal hjelpe oss til å besvare følgende spørsmål: 1. Hvilke kriterier kan brukes til å dele opp programvaren i individuelle komponenter (moduler)? 2. Hvordan er funksjoner og datastruktur-detaljer adskilt fra en konseptuell representasjon av programvaren? 3. Er det ensartede kriterier som definerer teknisk kvalitet for programkonstruksjon? Abstraksjon Når vi skal lage en modulær løsning av et problem, må vi se problemet på flere abstraksjonsnivå: Høyeste nivå: Må beskrives i et brukerforståelig språk Laveste nivå: Problemorientert språk Problemorientert koples også med implementasjonsorientert, d.v.s. at vi på laveste nivå bruker en form som kan implementeres direkte. Hvert trinn (fase ) i utviklingsprosessen er en detaljering av abstraksjonsnivå. Tilsvarende når vi går mot detaljert konstruksjon reduseres abstraksjonsnivået. Det laveste nivå er koden. Systemutvikling Kap 13 Konstruksjon 13 Systemutvikling Kap 13 Konstruksjon Abstraksjon - 1 Prosedyremessig abstraksjon - navngitt prosedyre Dataabstraksjon - navngitt samling av data som beskriver et dataobjekt. Flere programmeringsspråk har mekanismer for å lage abstrakte datatyper (ADT). En ADT inneholder datastrukturer og operasjoner (prosedyrer) som opererer på data. Kontrollabstraksjon - omfatter en programkontrollmekanisme uten å spesifisere interne detaljer. Eksempel på en slik er semaforer for synkronisering som brukes i operativsystem Detaljering (Refinement) Stegvis forfining eller detaljering (stepwise refinement) er en topdown (fra høyeste til laveste nivå) kostruksjonsstategi (Nikolaus Wirth): Vi starter med en overordnet beskrivelse av funksjoner som dekomponeres til subfunksjoner osv. til vi har et detaljeringsnivå som tilsvarer setninger i programmeringsspråk. Data deles opp (detaljeres) på tilsvarende måte. Metoden innebærer også at vi starter på et abstrakt nivå og går nedover mot et mer og mer detaljert nivå og en konkret beskrivelse. Tilsvarende i programmering: Vi starter med å skrive hovedprogrammet og alle prosedyrehoder på øverste nivå (evt. med stubs som gjør at vi kan kalle prosedyrene og se at de kalles i riktig rekkefølge). Deretter skrives koden for Prosedyrene på øverste nivå og prosedyrehoder for nivået under osv... Systemutvikling Kap 13 Konstruksjon 15 Systemutvikling Kap 13 Konstruksjon Modularitet I arkitekturkonstruksjon deles systemet opp i separate, navngitte og adresserbare komponenter kalt moduler som integreres for å tilfredsstille problemkravene. Men hvor mange moduler skal vi dele systemet opp i? La C(x) - funksjon som definerer kompleksiteten til problem x E(x) - funksjon som definerer innsatsen (tidsforbruket) for å løse problem x For to problem p 1 og p 2 gjelder at (13-1 a,b) C(p 1 ) > C(p 2 ) => E (p 1 ) > E(p 2 ) Det tar altså mer tid å løse et komplisert problem! Modularitet - 2 En annen erfaring fra problemløsning er at: (13.2) C(p 1 + p 2 ) > C(p 1 ) + C(p 2 ) Kompleksiteten av et problem som inkluderer både p 1 og p 2 er større enn summen av kompleksiteten til hvert problem. Av (13.1) følger at (13.3) E (p 1 + p 2 ) > E(p 1 ) + E(p 2 ) Konklusjon: Det er lettere å løse et komplisert problem når det deles opp i mindre problem! Men: For et gitt problem vil oppdeling føre til mange små moduler som det kreves innsats for å lage grensesnitt mellom, og å integrere modulene. Systemutvikling Kap 13 Konstruksjon 17 Systemutvikling Kap 13 Konstruksjon 18

4 Modularitet Modularitet - 4 Innsatskostnad Minimum kostnad M Totale kostnader Kostnad grensesnitt Kostnad pr. modul Det er altså et tall M for antall moduler som gir minimale utviklingskostnader, men M kan ikke forutsies eksakt. Størrelsen på hver modul bestemmes av funksjonen og applikasjonen. Det kan være tilfeller der flere funksjoner må integreres i en modul av plass- og ytelseshensyn, men filosofien om modularitet må vises! Antall moduler Fig viser kurven for kostnad pr. modul, og for interfacing som til sammen gir totale kostnader. Systemutvikling Kap 13 Konstruksjon 19 Systemutvikling Kap 13 Konstruksjon Modularitet - 5 Hvordan lager vi en modul med en gitt størrelse? Dette avhenger av metoden som brukes. Vi har 5 kriterier som kan være til hjelp ved vurderingen av en konstruksjonsmetodes muligheter til å definere et effektivt modulært system: 1. Modulær nedbrytbarhet Hvis metoden har en systematisk mekanisme for dekomponering av problemet i delproblemer, vil kompleksiteten av hele problemet reduseres, og vi får en effektiv modulær løsning. 2. Modulær sammensettbarhet (oppbyggbarhet) Hvis metoden gjør det mulig å sette sammen (gjenbrukte) moduler til et nytt system, gir det en modulær løsning (ikke finn opp hulet på nytt!) Modularitet Modulær forståelighet Hvis en modul kan forstås som en selvstendig enhet (uten referanse til andre moduler), vil det være lettere å bygge og vedlikeholde modulen. 4. Modulær kontinuitet Hvis små endringer i systemkrav resulterer i endringer i individuelle moduler, og ikke spredt over hele systemet, vil virkningen av sideeffekter introdusert av endringene bli minimalisert. 5. Modulær beskyttelse Hvis en avvikende situasjon (feil) oppstår i en modul, og dens effekter er begrenset til denne modulen, vil virkningen av feilinduserte sideeffekter minimaliseres. Systemutvikling Kap 13 Konstruksjon 21 Systemutvikling Kap 13 Konstruksjon Programarkitektur Arkitekturen til et program viser den hierarkiske strukturen av programkomponentene (modulene), hvordan de kommuniserer og datastrukturene de bruker. Arkitekturen utvikles gjennom en oppdelingsprosess. Vi tar utgangspunkt i kravspesifikasjonen og ender opp med en oppdeling der hver funksjon vises. Forskjellige metoder gir forskjellige strukturer. Hvilken som er best kan ikke avgjøres, men vi skal senere se på karakteristikker for god kvalitet Programarkitektur -2 Følgende egenskaper bør spesifiseres som del av arkitekturkonstruksjonen: Strukturelle egenskaper definerer komponentene i systemet (moduler, objekter..), hvordan de er pakket (sammensatt), og hvordan de kommuniserer. For eksempel er objekter pakket slik at både data og prosedyrer som opererer på disse er innkapslet Ekstrafunksjonelle egenskaper viser hvordan arkitekturen oppfyller krav om ytelse, kapasitet, pålitelighet, sikkerhet, tilpasningsevne og andre systemkarakteristikker. Familie av relaterte (tilsvarende) systemer arkitekturkonstruksjonen skal dra nytte av konstruksjon av tilsvarende system (gjenbruk). Systemutvikling Kap 13 Konstruksjon 23 Systemutvikling Kap 13 Konstruksjon 24

5 Programarkitektur -3 Arkitekturkonstruksjonen kan representeres av en eller flere modeller: Strukturelle modeller representerer arkitekturen som en organisert samling av programkomponenter. Rammeverk modeller øker abstraksjonsnivået ved å identifisere fellestrekk i konstruksjon for tilsvarende applikasjoner. Dynamiske modeller viser hvordan programmet virker, og hvordan strukturen eller systemkonfigurering kan forandre seg som følge av eksterne hendelser (events). Prosessmodeller fokuserer på konstruksjon av forretnings eller tekniske prosesser som systemet må oppfylle. Funksjonelle modeller kan brukes til å representere det funksjonelle hierarkiet til systemet Kontrollhierarki - Control Hierarchy Fig viser trestruktur for programhierarki for programstrukturen. Vi kan også bruke såkalt Warnier-Orr eller Jackson diagram Mål og terminologi: Dybde og bredde gir en indikasjon på antall kontrollnivå og det totale kontrollspenn. Dybde - antall kontrollnivå. Bredde - totalt kontrollspenn. Fan-out (vifte ut) - er et mål på antall moduler som er direkte kontrollert av en annen modul. Fan-in (vifte inn) - indikerer hvor mange moduler som kontrollerer en gitt modul. Systemutvikling Kap 13 Konstruksjon 25 Systemutvikling Kap 13 Konstruksjon Kontrollhierarki -2 En modul som kontrollerer en annen er overordnet (superordinate) til denne. En modul som kontrolleres av en annen er underordnet (subordinate) til kontrollmodulen. Eks. fig 13.3 Modul M M Fan-out er overordnet til a, b og Dybde c, og modul h er underordnet e (og a b c M). d e k l m Systemutvikling Kap 13 Konstruksjon 27 f g i h j Bredde n Fan-in o r p q Kontrollhierarki -3 Breddeorienterte relasjoner har ingen spesiell terminologi. Synlighet (visability) indikerer mengden av programkomponenter som kan startes/kalles eller bli brukt som data av en gitt komponent (selv om dette skjer indirekte). I objektorienterte systemer er dette alle dataobjekter som en modul har arvet, men den bruker (aksesserer) nødvendigvis ikke alle. Alle objekter er synlige for modulen. Binding (connectivity) indikerer mengden av komponenter som kalles/startes direkte eller brukes som data av en gitt komponent. F.eks. En modul som direkte får en annen modul til å starte eksekvering er bundet til den. Systemutvikling Kap 13 Konstruksjon Strukturell oppdeling Programstrukturen må deles opp både horisontalt og vertikalt. Fig. 13.4a viser horisontal oppdeling, der det er ei hovedgrein for hver funksjon. Kontrollmoduler (øverst, mørkere) koordinerer kommunikasjonen mellom, og utføring av funksjonene. Den enkleste form for horisontal oppdeling definerer tre (under)moduler: Input, prosessering og output. Fordeler ved horisontal oppdeling: Lettere å teste programmene Lettere å vedlikeholde programmene. Færre og mindre spredning av sideeffekter. Lettere å utvide programmene. Systemutvikling Kap 13 Konstruksjon 29 Systemutvikling Kap 13 Konstruksjon 30

6 Strukturell oppdeling -2 En ulempe ved horisontal oppdeling er at det ofte fører til at store mengder data overføres (gjennom grensesnittene) mellom modulene, og dette kompliserer kontrollen av programflyten. Vertikal oppdeling (Fig 13.4b), også kalt faktorisering deler kontroll (beslutninger) og arbeid top-down: Topp-nivå moduler utfører kontrollfunksjoner. Moduler på lavere nivå er arbeidere som utfører all input, beregninger og outputoppgaver. Endringer i arkitekturen gjør at vertikal dekomponering er fordelaktig Datastrukturer Datastrukturer er representasjon av de logiske forhold mellom de individuelle dataelementer. Datastrukturene styrer organisering, aksessmetoder, assosiativitet (kopling) og prosesseringsalternativ for informasjonen. Data bør organiseres i et informasjonshierarki. Den enkleste datastrukturen er et skalart felt (item) som er et enkelt informasjonselement som kan adresseres gjennom en identifikator (variabelnavn) Systemutvikling Kap 13 Konstruksjon 31 Systemutvikling Kap 13 Konstruksjon Datastrukturer -2 Matriser (n-dimmensjonale rom) implementeres som flerdimmensjonale array. Lenkede lister organiserer ikke-kontinuerlige skalare felt, vektorer eller rom på en måte som tillater at de behandles som lister. Hver node har pekere som indikerer adressen i lagret til neste node. Nye noder kan legges til dynamisk (new..). Andre datastrukturer inneholder eller er konstruert ved å bruke de fundamentale datastrukturene, f.eks: Hierarkiske datastrukturer kan implementeres som multilenkede lister som inneholder skalare elementer, vektorer, og eventuelt n-dimmensjonale rom. (array) Datastrukturer -3 Hierarkiske strukturer der det er nødvendig å kategorisere og assosiere informasjon. Kategorisering er gruppering av informasjon etter generelle kategorier (sortering). Assosiativitet gir mulighet til å assosiere (kople) informasjon fra forskjellige kategorier. Datastrukturer (akkurat som program) kan ha forskjellig abstraksjonsnivå. Systemutvikling Kap 13 Konstruksjon 33 Systemutvikling Kap 13 Konstruksjon Prosedyrer Software Procedure Prosedyrer fokuserer på prosesseringsdetaljer til hver individuelle modul. Dokumentasjonen må vise presis spesifikasjon av prosessering, inkludert sekvensen av hendelser, beslutningspunkt, repeterte operasjoner og dataorganisering og -strukturer. Programbeskrivelsen for hver modul må inkludere referanser til alle underordnede moduler. Fig viser at prosedyrerepresentasjonen av programvare er lagdelt. Systemutvikling Kap 13 Konstruksjon 35 Systemutvikling Kap 13 Konstruksjon 36

7 Informasjonsskjuling Information hiding Information hiding (abstrakte datatyper, ADT innkapsling i OOP). Informasjon i en modul kan ikke aksesseres av andre moduler enn de som har behov for denne informasjonen. Innkapsling medfører at effektiv modularitet kan oppnås ved å definere et sett moduler som kommuniserer med hverandre. Bare den informasjon som er nødvendig for å utføre funksjonene utveksles. Den største fordelen med innkapsling er når en modul skal endres, og senere under vedlikehold. Feil som introduseres under endring sprer seg ikke til andre moduler Effektiv modulær konstruksjon Modularitet er anerkjent i alle ingeniørdisipliner. Fordeler med modulær konstruksjon: Reduserer kompleksiteten Lettere å gjøre endringer (viktig for vedlikehold) Lettere implementasjon ved at forskjellige systemdeler kan implementeres parallelt. Systemutvikling Kap 13 Konstruksjon 37 Systemutvikling Kap 13 Konstruksjon Funksjonell uavhengighet Funksjonell uavhengighet oppnås ved å utvikle funksjoner med enkel (en eneste) funksjon, og unngå overdreven interaksjon (kommunikasjon) med andre moduler. Hver modul utfører en spesifikk subfunksjon i kravspesifikasjonen, og har et enkelt grensesnitt når den ses fra andre deler av programstrukturen. Hvorfor er uavhengighet viktig? Svar: Lettere utvikling Enklere grensesnitt Parallell utvikling i grupper Lettere å vedlikeholde fordi sideeffekter ved endringer reduseres, feilforplantning (spredning) reduseres. Gjenbrukbare moduler Funksjonell uavhengighet -2 Til å måle uavhengighet brukes to kvalitative kriterier: 1. Sammenheng (cohesion) er et mål for relativ funksjonell styrke til en modul. 2. Kobling (coupling) er et mål for den relative uavhengighet mellom modulene. Vi skal se nærmere på de to kriteriene i de to følgende avsnitt. Systemutvikling Kap 13 Konstruksjon 39 Systemutvikling Kap 13 Konstruksjon Sammenheng (Cohesion) En sammenhengende modul utfører en enkelt oppgave. Skalaen er ikke lineær. Lav sammenheng er mye verre enn middels, mens middels er nesten like godt som høy sammenheng. Tilfeldig - Flere oppgaver som har liten sammenheng i samme modul Logisk - Oppgavene har logisk sammenheng, f.eks. all output. Temporær - Flere oppgaver som utføres i samme tidsperiode. Prosedyremessig (prosedural) - Oppgavene har forbindelse med hverandre og må utføres i en bestemt rekkefølge. Kommunikasjonsmessig - Alle prosesseringselementer behandler et område av en datastruktur. Funksjonell (høy) - Modulen utfører en oppgave. Vi trenger ikke bestemme presist hvilken sammenheng vi har, men vi må gjenkjenne lav sammenheng slik at konstruksjonen kan endres for å oppnå større funksjonell uavhengighet Kopling Kopling er et mål for forbindelsen mellom moduler i en programstruktur. Kopling avhenger av kompleksiteten til grensesnittet mellom modulene, entrypunkt (inngangspunkt) eller referanse til modulen, og hvilke data som passerer gjennom grensesnittet. Vi vil ha lavest mulig kopling! Lav kopling gjør at programmene er lettere å forstå, og mindre muligheter for at feil i en modul skal spre seg til andre. Kontrollkopling (moderat kopling) - Kontroll utveksles mellom modulene som den andre modulen (over eller under) brukes til å ta beslutninger. I enkleste tilfelle er det et flagg. Ekstern kopling (høy kopling) - En modul er koplet til eksterne enheter, f.eks. I/O-enheter, protokoller osv. Dette bør isoleres til noen få moduler. Systemutvikling Kap 13 Konstruksjon 41 Systemutvikling Kap 13 Konstruksjon 42

8 Kopling -2 Common kopling - Flere moduler bruker globale data. På fig 13.7 aksesserer modulene c, g og h felles data. Globale data må brukes med forsiktighet! Innholdsmessig (content) kopling - En modul bruker data eller kontroll informasjon som vedlikeholdes inni en annen modul, eller har forgreining inn i en annen modul (bruker kode). Dette bør unngås! Men under utvikling vil vi alltid ha ekstern kopling, f.eks. i operativsystem: Drivere, kommunikasjon, protokoller osv Konstruksjonsregler for effektiv modularisering De følgende regler brukes til å forbedre konstruksjonen når den første versjonen er laget: 1. Evaluer første versjon av programstrukturen slik at kopling reduseres og sammenheng (cohesion) økes. 2. Forsøk å minimalisere strukturer med høy ut-vifte (fan-out), og arbeid for innsnevring når dybden øker. 3. Hold virkeområde (scope of effect) innenfor kontrollområdet (scope of control) for modulen. 4. Vurder modulgrensesnittene for å redusere kompleksitet og redundans, og forbedre konsistensen. 5. Definer moduler hvis funksjon er forutsigbar (svart boks), men unngå moduler som er altfor innskrenkende. 6. Streb etter kontrollerte innganger i moduler, og unngå innhopp i moduler (mulig i assembler og enkelte språk). 7. Pakk programvaren ut fra rammebetingelsene fra konstruksjon og portabilitetskrav. Systemutvikling Kap 13 Konstruksjon 43 Systemutvikling Kap 13 Konstruksjon Konstruksjonsmodell Pyramidemodellen i fig skal symbolisere at god konstruksjon er stabil. Detaljer om konstruksjonsmodeller i kap. 14 og 21 (objektorientert konstruksjon) Konstruksjonsdokumentasjon (fra 4. utgave) I. Scope A. System objectives B. Major software requirements C. Design constraints, limitations II. Data Design A. Data objects and resultant data structures B. File and database structures 1. external file structure a. logical structure b. logical record description c. access method 2. global data 3. file and data cross reference III. Architectural Design A. Review of data and control flow B. Derived program structure Systemutvikling Kap 13 Konstruksjon 45 Systemutvikling Kap 13 Konstruksjon 46 IV.Interface Design A. Human-machine interface specification B. Human-machine interface design rules C. External interface design 1. Interfaces to external data 2. Interfaces to external systems or devices D. Internal interface design rules (' V. Procedural Design For each module: A. Processing narrative B. Interface description C. Design language (or other) description D. Modules used E. Internal data structures F. Comments/restrictions/limitations VI. Requirements Cross-Reference VII. Test Provisions 1. Test guidelines 2. Integration strategy 3. Special considerations VIII. Special Notes IX. Appendices Systemutvikling Kap 13 Konstruksjon 47

Kap. 2 Prosessen. Utviklingsmodeller -2. Utviklingsmodeller. Utviklingsmodeller -4. Utviklingsmodeller - 3. Software Engineering - definisjoner

Kap. 2 Prosessen. Utviklingsmodeller -2. Utviklingsmodeller. Utviklingsmodeller -4. Utviklingsmodeller - 3. Software Engineering - definisjoner Software Engineering - definisjoner Kap. 2 Prosessen Utviklingsprosessen Modeller for utvikling Bauer: Etablering og bruk av gode ingeniørmessige prinsipper for å fremskaffe økonomisk programvare som er

Detaljer

Oppsummering. Thomas Lohne Aanes Thomas Amble

Oppsummering. Thomas Lohne Aanes Thomas Amble Oppsummering Thomas Lohne Aanes Thomas Amble 14.11.04 Kapittel 2: Data Modell Mål: Data som skal brukes av applikasjonen blir spesifisert på en formell og likevel intuitiv måte. Resultat: Vi får et konseptuelt

Detaljer

Characteristics of a good design

Characteristics of a good design Characteristics of a good design (PPT. side 1) Innledning Høykvalitetsdesign bør ha visse karakteristikker for å oppnå kvalitetsprodukter, dvs.: enkelt å forstå enkelt å implementere enkelt å teste enkelt

Detaljer

AlgDat 12. Forelesning 2. Gunnar Misund

AlgDat 12. Forelesning 2. Gunnar Misund AlgDat 12 Forelesning 2 Forrige forelesning Følg med på hiof.no/algdat, ikke minst beskjedsida! Algdat: Fundamentalt, klassisk, morsomt,...krevende :) Pensum: Forelesningene, oppgavene (pluss deler av

Detaljer

Kap. 12 Analysemodellering (Analysis Modeling)

Kap. 12 Analysemodellering (Analysis Modeling) Kap. 12 Analysemodellering (Analysis Modeling) Strukturert analyse er en av de mest brukte brukte modelleringsmetoder i analysen. Den andre er objektorientert analyse. 12.1 Kort historikk Strukturert analyse

Detaljer

AlgDat 10. Forelesning 2. Gunnar Misund

AlgDat 10. Forelesning 2. Gunnar Misund AlgDat 10 Forelesning 2 Oversikt Java repetisjon IDE eller teksteditor + kommandolinje? Java Collections and Generics Programvareutvikling En mengde mer eller mindre veldefinerte metoder (software engineering):

Detaljer

Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process

Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process INF 329 Web-teknologier Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process Navn: Bjørnar Pettersen bjornarp.ii.uib.no Daniel Lundekvam daniell.ii.uib.no Presentasjonsdato:

Detaljer

Kap. 10 Systemutvikling System Engineering

Kap. 10 Systemutvikling System Engineering Kap. 10 Systemutvikling System Engineering - Utvikling og integrering av både maskin- og programvare. - Hvordan oppstår behov for programvare? - Hvordan inngår programvare i en sammenheng med andre (del)systemer,

Detaljer

21. Objektorientert Analyse (OOA) Kap. 21 Objektorientert Analyse (OOA)

21. Objektorientert Analyse (OOA) Kap. 21 Objektorientert Analyse (OOA) 21. Objektorientert Analyse (OOA) Kap. 21 Objektorientert Analyse (OOA) Når vi skal lage en OO analysemodell, bruker vi 5 hovedprinsipper: 1. Lag en modell av informasjonsdomenet. 2. Beskriv modul-funksjonene

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer

Detaljer

Model Driven Architecture (MDA) Interpretasjon og kritikk

Model Driven Architecture (MDA) Interpretasjon og kritikk Model Driven Architecture (MDA) Interpretasjon og kritikk Ragnhild Kobro Runde (Ifi, UiO) Veileder: Ketil Stølen (Ifi/SINTEF) Stuntlunsj SINTEF Oversikt Bakgrunn/utgangspunkt for presentasjonen MDA stuntlunsj

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer

Detaljer

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF2810: Funksjonell Programmering. Lokale variabler. Og trær. INF2810: Funksjonell Programmering Lokale variabler. Og trær. Erik Velldal Universitetet i Oslo 11. september 2019 Tema forrige uke 2 Lister som datastruktur quote Rekursjon på lister Høyereordens prosedyrer

Detaljer

Innholdsfortegnelse: Resymé: Denne leksjon gir en kort og enkelt oversikt over hvilke oppgaver som skal utføres i design- og programmeringsfasen.

Innholdsfortegnelse: Resymé: Denne leksjon gir en kort og enkelt oversikt over hvilke oppgaver som skal utføres i design- og programmeringsfasen. Kort innføring i design og programmeringsfasen Jarle Larsen/Tore Berg Hansen 2.11.04 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO314 Prosjektrettet systemarbeid Resymé:

Detaljer

GJENNOMGANG UKESOPPGAVER 9 TESTING

GJENNOMGANG UKESOPPGAVER 9 TESTING GJENNOMGANG UKESOPPGAVER 9 TESTING INF1050 V16 KRISTIN BRÆNDEN 1 A) Testing viser feil som du oppdager under kjøring av testen. Forklar hvorfor testing ikke kan vise at det ikke er flere gjenstående feil.

Detaljer

Livsløpstesting av IT-systemer

Livsløpstesting av IT-systemer Livsløpstesting av IT-systemer Testing, validering og evaluering Teste Undersøke ved hjelp av tester om systemet fungerer slik det er beskrevet Validere Bekrefte hvordan systemet virkelig fungerer, om

Detaljer

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF2810: Funksjonell Programmering. Lokale variabler. Og trær. INF2810: Funksjonell Programmering Lokale variabler. Og trær. Erik Velldal Universitetet i Oslo 11. september 2019 Tema forrige uke 2 Lister som datastruktur quote Rekursjon på lister Høyereordens prosedyrer

Detaljer

Presentasjon 1, Requirement engineering process

Presentasjon 1, Requirement engineering process Presentasjon 1, Requirement ing process Prosessodeller Hvorfor bruke prosessmodeller? En prosessmodell er en forenklet beskrivelse av en prosess En prosessmodell er vanligvis lagd ut fra et bestemt perspektiv

Detaljer

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop Læringsmål uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2018 uke 7 Siri Moe Jensen Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,

Detaljer

Evaluering av It-systemer i et forvaltningsperspektiv. Drift, vedlikehold og videreutvikling av IT-systemet

Evaluering av It-systemer i et forvaltningsperspektiv. Drift, vedlikehold og videreutvikling av IT-systemet Evaluering av It-systemer i et forvaltningsperspektiv Drift, vedlikehold og videreutvikling av IT-systemet Bakgrunnen IT-systemer har ofte lenger levetid enn forventet er ofte forretningskritiske utvikler

Detaljer

Forelesningsnotat. Kapittel 9 Designing and Constructing Software Code related Issues. Design og utvikling av programvare

Forelesningsnotat. Kapittel 9 Designing and Constructing Software Code related Issues. Design og utvikling av programvare Forelesningsnotat Kapittel 9 Designing and Constructing Software Code related Issues 1 Design og utvikling av programvare Grunnleggende metoder (Kap 9.1) Utvikling av kode (Kap 9.2) Programmeringsspråk

Detaljer

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer INF2810: Funksjonell Programmering Lister og høyereordens prosedyrer Erik Velldal Universitetet i Oslo 2. februar 2017 Agenda 2 Forrige uke Substitusjonsmodellen og evalueringsstrategier. Blokkstruktur

Detaljer

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring

Detaljer

Tom Røise 2/28/2007. IMT2243 : Systemutvikling 1. Forelesning IMT2243 1. mars 2007. Tema : Litteratur : Strukturert analyse. Strukturert analyse

Tom Røise 2/28/2007. IMT2243 : Systemutvikling 1. Forelesning IMT2243 1. mars 2007. Tema : Litteratur : Strukturert analyse. Strukturert analyse Forelesning IMT2243 1. mars 2007 Tema : Litteratur : Art.saml. Punkt 9 : Kap. 9. SASD - modellen, E. Andersen Metoden går ut på å anvende et sett teknikker i arbeidet med å lage gode systemmodeller /beskrivelser

Detaljer

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

Hvorfor objektorientert programmering?

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon IN1000 Høst 2019 uke 7 Siri Moe Jensen Læringsmål uke 7 Kjenne til motivasjon og bakgrunn for objektorientert programmering Kunne definere en klasse,

Detaljer

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Lister og høyereordens prosedyrer Erik Velldal Universitetet i Oslo 5. februar 2015 Agenda Forrige uke Substitusjonsmodellen og evalueringsstrategier.

Detaljer

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG INF1050 V16 HVA ER EN SYSTEMUTVIKLINGSPROSESS? De aktivitetene som utføres for å utvikle et IT-system Eksempler på aktiviteter:

Detaljer

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner Etter uke 9 skal du Introduksjon til objektorientert programmering INF1001 Høst 2016 Uke 9 Kunne designe og implementere en programstruktur med flere klasser Kunne etablere og manipulere objekter i (sammensatte)

Detaljer

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen Hensikten med denne delen av kurset Objektorientert systemutvikling Rational Unified Process (RUP) Gurholt og Hasle kap. 6 UML Distilled kap. 2 Å lære modellerings- og designprinsipper og øve opp teknikker

Detaljer

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted.

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted. Presentasjon nummer 5 The changing system and the nature of maintenance Silde 1 Gruppen introduseres Slide 2 The changing system and the nature of maintenance The Changing system Systemutviklingen er ferdig

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

STE6221 Sanntidssystemer LØSNINGSFORSLAG TIL EKSAMEN

STE6221 Sanntidssystemer LØSNINGSFORSLAG TIL EKSAMEN HØGSKOLEN I NARVIK Avdeling for teknologi MSc.-studiet EL/RT Side 1 av 3 STE6221 Sanntidssystemer LØSNINGSFORSLAG TIL EKSAMEN Tid: Torsdag 09.03.2006, kl: 09:00-12:00 Tillatte hjelpemidler: Godkjent programmerbar

Detaljer

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling 21.1.2009 Rune Steinberg International Development Manager ERP INF1050 Systemutvikling Vår 2009 - Copyright Rune Steinberg 2009 1 Innledning

Detaljer

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling Innledning Læringsmål Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling 21.1.2009 Forstå hvorfor systemutviklingsprosessen er viktig Forstå de viktigste prinsippene for ulike prosesser

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Tilstand og verditilordning Erik Velldal Universitetet i Oslo 26. februar 2015 Forrige gang 2 I dag Vi blar om til kapittel 3 i SICP.

Detaljer

Innlevering 2b i INF2810, vår 2017

Innlevering 2b i INF2810, vår 2017 Innlevering 2b i INF2810, vår 2017 Dette er del to av den andre obligatoriske oppgaven i INF2810. Man kan oppnå 10 poeng for oppgavene i 2b, og man må ha minst 12 poeng tilsammen for 2a + 2b for å få godkjent.

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Hva er problemet? Styring av maskinvare og ressurser tilknyttet en datamaskin er komplisert, detaljert og vanskelig Maskinvare, komponenter og programvare endres og forbedres

Detaljer

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer.

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer. INF2810: Funksjonell Programmering Mer om verditilordning. Tabeller. Og strømmer. Erik Velldal Universitetet i Oslo 29. mars 2016 De siste ukene: destruktive operasjoner 2 set! endrer verditilordningen

Detaljer

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer.

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer. INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Mer om verditilordning. Tabeller. Og strømmer. Erik Velldal Universitetet i Oslo 29. mars 2016 De siste ukene: destruktive operasjoner

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Stephan Oepen Universitetet i Oslo 2. mars 2017 Forrige gang 2 I dag 3 Vi blar om til kapittel 3 i SICP. Tilstand og verditilordning. Destruktive

Detaljer

Tom Røise IMT 2243 : Systemutvikling 1. Forelesning IMT Mars Designfasen i SU-prosjekter : Generelle steg i Designprosessen

Tom Røise IMT 2243 : Systemutvikling 1. Forelesning IMT Mars Designfasen i SU-prosjekter : Generelle steg i Designprosessen Forelesning IMT2243 12. Mars 2007 Tema : Design av programvare Hva ønsker vi å oppnå i designfasen? Generelle steg ved design av programvare Softwarearkitektur Struktur og organisering Dekomponering Kontrollmekanismer

Detaljer

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon INF2810: Funksjonell Programmering Dataabstraksjon og Trerekursjon Stephan Oepen & Erik Velldal Universitetet i Oslo 15. februar, 2013 Tema 2 Forrige uke Høyere-ordens prosedyrer: Prosedyrer som argumenter

Detaljer

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

Detaljer

INF3430/4431. VHDL byggeblokker og testbenker

INF3430/4431. VHDL byggeblokker og testbenker INF3430/4431 VHDL byggeblokker og testbenker Entity/architecture Innhold Strukturelle design (nettliste) Generics Configurations Operatorer-Operator prioritet (precedence) Datatyper Bit / IEEE1164 std_ulogic

Detaljer

Kirsten Ribu - Høgskolen i Oslo 05.05.04

Kirsten Ribu - Høgskolen i Oslo 05.05.04 Prosessmodellering Strukturert analyse og design et overblikk Gurholt & Hasle, kapittel 10 Kirsten Ribu - Høgskolen i Oslo 05.05.04 1 Perspektiver på modellering Datamodellering var lenge den mest brukte

Detaljer

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12)

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12) ADDML Archival Data Description Markup Language Generell del Versjon PA 0.07 Sist oppdatert: 2010-09-16 TPD ADDML_8_2.doc 03/03/2011 1(12) Innledning... 4 Mål... 4 Historie... 4 Hvordan benytte ADDML...

Detaljer

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)! Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre

Detaljer

PR362009 24. november 2009 Programvare, pc-basert kontroll Side 1 av 5

PR362009 24. november 2009 Programvare, pc-basert kontroll Side 1 av 5 Programvare, pc-basert kontroll Side 1 av 5 IT-standarder: TwinCAT-programmeringsmiljø integreres i Microsoft Visual Studio TwinCAT 3 extended Automation Med TwinCAT 3 introduserer Beckhoff sin nye generasjon

Detaljer

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen A study of different matching heuristics Hovedfagspresentasjon Jan Kasper Martinsen (janma@ifi.uio.no) Terminologi: Graf teori En graf består av et sett med noder Nodene er tilknyttet hverandre ved hjelp

Detaljer

Statisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere

Statisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere Statisk testing Testing uten datamaskin, men med vår egen evne til å vurdere og analysere Hva er statisk testing Analyser som utføres på skrevne dokumenter Hensikten er å finne avvik fra spesifikasjonene

Detaljer

Datastrukturer og Algoritmer

Datastrukturer og Algoritmer TOD 063 Datastrukturer og Algoritmer Forside fra lærebokens Nord Amerikanske utgave Tar for seg praktisk problemstilling: Hvordan håndtere containere som blir lastet fra containerskip i en travel havn

Detaljer

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Funksjonalitet og oppbygning av et OS (og litt mer om Linux) Funksjonalitet og oppbygning av et OS (og litt mer om Linux) Hovedfunksjoner i et OS OS skal sørge for: Styring av maskinvaren Deling av maskinens ressurser Abstraksjon vekk fra detaljer om maskinvaren

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Stephan Oepen Universitetet i Oslo 8. mars 2016 Forrige gang 2 I dag 3 Vi blar om til kapittel 3 i SICP. Tilstand og verditilordning. Destruktive

Detaljer

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering Etter uke 6 skal du Kjenne til motivasjonen for objektorientert programmering Introduksjon til objektorientert programmering INF1001 Høst 2016 Forstå hva en klasse er, og forskjellen på klasse og objekt

Detaljer

Informasjonsorganisering. Information Architecture Peter Morville & Jorge Arango Kapittel 4, 5 & 6

Informasjonsorganisering. Information Architecture Peter Morville & Jorge Arango Kapittel 4, 5 & 6 Informasjonsorganisering Information Architecture Peter Morville & Jorge Arango Kapittel 4, 5 & 6 Bevissthet om sted, omgivelser og tingenes plassering Ting er noe vi forstår i relasjon til noe annet Informasjonsomgivelsenes

Detaljer

STE6221 Sanntidssystemer Løsningsforslag

STE6221 Sanntidssystemer Løsningsforslag HØGSKOLEN I NARVIK Avdeling for teknologi MSc.-studiet EL/RT Side 1 av 3 STE6221 Sanntidssystemer Løsningsforslag Tid: Fredag 02.03.2007, kl: 09:00-12:00 Tillatte hjelpemidler: Godkjent programmerbar kalkulator,

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Operativsystemet: Hva og hvorfor Styring av prosessorer (CPU), elektronikk, nettverk og andre ressurser i en datamaskin er komplisert, detaljert og vanskelig. Maskinvare og

Detaljer

Objektorientert programmering i Python

Objektorientert programmering i Python Objektorientert programmering i Python IN1000 Høst 2019 uke 8 Siri Moe Jensen Læringsmål uke 8 Repetisjon fra forrige uke Definere en klasse, opprette og arbeide med objekter: How-to

Detaljer

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise 30.04.2007. IMT2243 : Systemutvikling 1

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise 30.04.2007. IMT2243 : Systemutvikling 1 Oppsummering : IMT2243 Systemutvikling Målformuleringen i emnebeskrivelsens : Studentene skal ha forståelse for grunnleggende administrative og teknologiske aspekter ved spesifisering, utvikling, innføring

Detaljer

Kap3: Klassemodellering

Kap3: Klassemodellering Kap3: Klassemodellering I dag: Litt repetisjon fra sist (innledende om klassemodellen) Deretter egentlig litt mer repetisjon, men nå fra intro- Felt-/Instansvariabler og kurset i Java: Klasser og Objekt,

Detaljer

CORBA Component Model (CCM)

CORBA Component Model (CCM) CORBA Component Model (CCM) INF5040 Høst 2005 Erlend Birkedal Jan Erik Johnsen Tore Ottersen Løkkeberg Denne presentasjonen CORBA Svakheter ved CORBA Object Model Komponenter CORBA Component Model Hva

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2810 Eksamensdag: Fredag 5. juni 2015 Tid for eksamen: 14:30 (4 timer) Oppgavesettet er på 4 sider (ikke medregnet denne siden)

Detaljer

IN1020. Datamaskinarkitektur

IN1020. Datamaskinarkitektur IN1020 Datamaskinarkitektur Hovedpunkter Von Neumann Arkitektur BUS Pipeline Hazarder Intel Core i7 Omid Mirmotahari 4 Von Neumann Arkitektur John von Neumann publiserte i 1945 en model for datamaskin

Detaljer

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon Jini Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong Definisjon Et distribuert system bygd opp som et forbund av brukergrupper og ressurser som brukerne trenger, der ressursene tilbyr brukere

Detaljer

Systemutvikling (Software Engineering) Professor Alf Inge Wang

Systemutvikling (Software Engineering) Professor Alf Inge Wang 1 Systemutvikling (Software Engineering) Professor Alf Inge Wang 2 Undervisningsmål og henvisning Målet med timen er: Få kunnskap om hva systemutvikling er Forstå hva en utviklingsprosess består av Få

Detaljer

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme Erik Velldal Universitetet i Oslo 19. april 2016 Tema 2 Forrige uke Strømmer og utsatt evaluering Kort om makroer I dag Kap. 4 Metasirkulær

Detaljer

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen Innhold uke 10 Hva bruker vi klasser til? Objektorientert programmering i Python IN1000 Høst 2018 uke 10 Siri Moe Jensen Noen sentrale datastrukturer for programmering lenkede lister trær grafer Eksempler:

Detaljer

YouTube-kanal ITGK. Læringsmål og pensum

YouTube-kanal ITGK.  Læringsmål og pensum 1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner - 3rd edition: Kapittel 5.1-5.6 Professor Alf Inge Wang 2 YouTube-kanal ITGK Professor Guttorm Sindre (foreleser den andre Python-parallellen

Detaljer

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering INF2810: Funksjonell Programmering Strømmer og utsatt evaluering Stephan Oepen Universitetet i Oslo 30. mars 2017 Forrige forelesning 2 Mer om (prosedyre)navn, bindinger, og verditilordning Nok en ny abstrakt

Detaljer

INF2810: Funksjonell Programmering. Mengder og lokal tilstand

INF2810: Funksjonell Programmering. Mengder og lokal tilstand INF2810: Funksjonell Programmering Mengder og lokal tilstand Stephan Oepen & Erik Velldal Universitetet i Oslo Kvinnedagen, 2013 Forrige gang 2 Dagens dont 3 Del 1 Litt mer om hierarkisk data. Representasjon

Detaljer

Pensum: fra boken (H-03)+ forelesninger

Pensum: fra boken (H-03)+ forelesninger Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.

Detaljer

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000 Drosjesentralen I-120: Obligatorisk oppgave 2, 2000 Frist Mandag 20. November 2000 kl.10:00, i skuff merket I120 på UA. Krav Se seksjon 4 for kravene til innlevering. Merk krav om generisk løsning for

Detaljer

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Læringsmål og pensum Mål Vite hva et

Detaljer

STE6221 Sanntidssystemer Løsningsforslag kontinuasjonseksamen

STE6221 Sanntidssystemer Løsningsforslag kontinuasjonseksamen HØGSKOLEN I NARVIK Avdeling for teknologi MSc.-studiet EL/RT Side 1 av 3 STE6221 Sanntidssystemer Løsningsforslag kontinuasjonseksamen Tid: Mandag 06.08.2007, kl: 09:00-12:00 Tillatte hjelpemidler: Godkjent

Detaljer

Arkitektur. Kirsten Ribu Høgskolen i Oslo 10.02.04 10.02.2004 1

Arkitektur. Kirsten Ribu Høgskolen i Oslo 10.02.04 10.02.2004 1 Arkitektur Kirsten Ribu Høgskolen i Oslo 10.02.04 10.02.2004 1 I dag Generelt om arkitektur N-lags arkitektur MVC Model View Controller mønsteret 10.02.2004 2 Hva er arkitektur? Oppdelingen av et system

Detaljer

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy Kapittel 13 Advanced Hypertext Implementation Martin Lie Ole Kristian Heggøy 08.11.04 Forbedring av arkitektur Problem med alt i ett -løsning: Spredning av forretningslogikk. Avhengighet mellom presentasjonssider

Detaljer

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. Stephan Oepen & Erik Velldal Universitetet i Oslo 25. januar, 2013 På blokka 2 Forrige uke Introduksjon og oversikt Funksjonell

Detaljer

INF3430. VHDL byggeblokker og testbenker

INF3430. VHDL byggeblokker og testbenker INF3430 VHDL byggeblokker og Innhold Entity/architecture Strukturelle design (nettliste) Generics Configurations Operatorer-Operator prioritet (precedence) Datatyper Bit / IEEE1164 std_ulogic /std_logic

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang 1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner - 3rd edition: Kapittel 5.1-5.6 Professor Alf Inge Wang 2 YouTube-kanal ITGK Professor Guttorm Sindre (foreleser den andre Python-parallellen

Detaljer

Tom Røise 24.Mars 2009

Tom Røise 24.Mars 2009 Forelesning IMT2243 24. Mars 2009 Tema : Design av programvare Offshore Software Development (se foiler for sist) Hva er målet i designfasen? Generelle steg ved design av programvare Softwarearkitektur

Detaljer

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering 1 2 Læringsmål og pensum TDT4110 Informasjonsteknologi grunnkurs: Uke 38 Utvikling av informasjonssystemer Læringsmål Kunne seks faser for systemanalyse og design Kunne femstegs prosedyre for programmering

Detaljer

Distributed object architecture

Distributed object architecture Forelesning IMT2243 6. April 2010 Tema: forts. arkitektur og design av programvare Prosjektstatus Programvarearkitektur Oppsummering fra før påske Distribuerte objektarkitektur MDA - Model Driven Architecture

Detaljer

Kravspesifikasjon med UML use case modellering. Erik Arisholm 25.02.2009

Kravspesifikasjon med UML use case modellering. Erik Arisholm 25.02.2009 Kravspesifikasjon med UML use case modellering Erik Arisholm 25.02.2009 Unified Modeling Language (UML) Notasjon som støtter opp under modellbasert systemutvikling objektorientert analyse ( hva systemet

Detaljer

PG 4200 Algoritmer og datastrukturer Innlevering 2

PG 4200 Algoritmer og datastrukturer Innlevering 2 PG 4200 Algoritmer og datastrukturer Innlevering 2 Frist: Mandag 21.april 2014 kl 23.55 Utdelt materiale: Se zip-filen innlevering2.zip. Innlevering: Lever en zip-fil som inneholder følgende: PG4200_innlevering_2.pdf:

Detaljer

Kort om evaluering og testing av It-systemer. Hvordan vurdere, verdsette, velge og teste?

Kort om evaluering og testing av It-systemer. Hvordan vurdere, verdsette, velge og teste? Kort om evaluering og testing av It-systemer Hvordan vurdere, verdsette, velge og teste? Evaluere - Bokmålsordboka Evaluere Vurdere, verdsette, gi karakter for. Vurdere Bedømme, verdsette. Bedømme Dømme

Detaljer

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20 Kapittel 7 & 8 p.1/20 Kapittel 7 & 8 Kravspesifikasjoner & Data design Thomas Tjøstheim og Thomas Edvinsen 20 September 2004 Kapittel 7 & 8 p.2/20 Introduksjon Kravspesifikasjoner består av to underdeler:

Detaljer

Software installasjon og andre ettertanker

Software installasjon og andre ettertanker Software installasjon og andre ettertanker Stein Jørgen Ryan 25feb05 Software installasjon Alle software produsenter gjør det. Høyst varierende forståelse av hva det er. Hvordan gjøres det i dag (på Windows)?

Detaljer

Tom Røise 9. Februar 2010

Tom Røise 9. Februar 2010 Forelesning IMT2243 9. Februar 2010 Tema : Kravspesifisering : prosessen og produktet Viewpoint en myk tilnærming Pensum : Kap. 6 og 7 i Sommerville, Kravspesifisering Kravspesifisering = arbeidet med

Detaljer

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett Oblig 2, SLI250 Et kortfattet analyse og designdokument for register på nett Harald Askestad haraldas@uio-pop.uio.no 2. oktober 2000 Innhold Innledning 2 2 Systemdefinisjon 2 3 Objektmodell 2 4 Funksjoner

Detaljer

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning INF2810: Funksjonell Programmering Tilstand og verditilordning Erik Velldal Universitetet i Oslo 1. mars 2018 Forrige gang 2 Kode som trær 3 Ved evaluering oversettes kildekoden i et språk først til et

Detaljer

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo INF2810: Funksjonell programmering Rekursjon og lister Stephan Oepen & Erik Velldal Universitetet i Oslo 1. februar, 2013 Agenda 2 Forrige uke Scheme Substitusjonsmodellen Blokkstruktur Predikater Kondisjonale

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

Programvare arkitekturer

Programvare arkitekturer Programvare arkitekturer 14. oktober 2001, Tore Berg Hansen, TISIP Kursleksjonene er forfatters eiendom. Som kursdeltaker kan du fritt bruke leksjonene til eget personlig bruk. Kursdeltakere som ønsker

Detaljer