1 OO systemutvikling, del 3  Nominalist eller realist ?  OO egenskaper  Generelt om OO Analyse & Design  En 8-stegs metode for OO Systemering (analyse.

Slides:



Advertisements
Liknende presentasjoner
Hvor stor er en fisk? Yggdrasil Hvor stor er en fisk?  Vanlige kundetyper og prosjekter  Faktorer som påvirker.
Advertisements

Trykk på mus eller tastatur for neste bilde…
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
22 tips for den faglitterære forfatteren
Praktisk info til prosjektkunder
Grafisk design Visuell kommunikasjon
Høgskolen i Oslo - GM Vær metodisk  Definer og forstå problemet  Spesifiser hva du har av hardware  Lag en prototyp av brukersnittet  Design.
Kontrollstrukturer (Kapittel 3)
Møre og Romsdal. 2 Ligger det et bedehus eller et kristelig forsamlingshus (ikke kirke) i nærheten av der du bor? (n=502) i prosent.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Seksjon psykoser, sykehuset Levanger
UML & object models av gruppe 8
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
ObjektOrientert Systemutvikling del I
Prototyping & Use Case Software Engineering Gruppe
IS-102 Klassedefinisjoner
Å overleve oppgaveskriving: Litteraturgjennomgang
Eiendomsregister - eksempel
Transformasjoner Men hva hvis relasjonen er kurvelinjær?
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
1 Oppgave gjennomgang Kap Oppgaver -Kap 12: 1, 2, 3, 5, 7, 8, 11, 18, 19.
Systemmodeller In 140 Sommerville kap. 7. Mål Forstå hensikten med kontekstmodell Forstå ideene bak –oppførselsmodellering –datamodellering –objektmodellering.
Introduksjon til systemutvikling
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Hovedprinsipper i Rational Unified Process
Bendik Bygstad Høgskolen i Vestfold RUP-prosjekt Sammenhengen med UML 1.Hovedstruktur i RUP-prosjekter 2.Faser og iterasjoner 3.Sammenhengen med.
Strukturerende elementer i UML
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 Norsk Finansbarometer 2012 TNS Gallup Oslo, 2012 Det norske skadeforsikrings- markedet og dets bevegelser.
Empiriske metoder Oppgaveanalyse, observasjon
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Hvordan uttrykke krav Kapittel 4.4. Innledning Målet er å samles rundt ett entydig språk som ikke kan misforståes eller feiltolkes. Gjør sporbarheten.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Post 4, sykehuset Levanger
Kapittel 1, oppgave b) å kaste loss å seile uvær (n) kuling (m)
Statistikk på 20 2 timer PSY-1002
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
VI LAGER EN PLATEBUTIKK
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
1 Oppgave gjennomgang Kap. 1 og 2. 2 Oppgaver -Kap 1: 5, 6, 7, 10, 12, 16, 22 og 25 -Kap 2: 2, 6, 10, 12, 13, 14 og 20.
Spørsmål og aktiviteter på ulike nivåer
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Objektorientert utforming In 140 Sommerville kap. 12.
Kapittel 1, oppgave i) Sett inn preposisjoner eller adverb som passer.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
Objektorientert design
Konstruksjon og Testing Torsdag 30. september 2004 Av Even Aasland Harald Ueland.
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Objektorientert design In 140 Sommerville kap 12 – del 1.
IN 265 Våren 2003 : Forelesning : Design av arkitektur og komponent 1 IN250 – Om komponent design Mål for forelesningen: l Se på prinsipper.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
RUP-prosjekt Sammenhengen med UML
Ting Forbindelser Ting og forbindelser blir til sammen et diagram
Dybdelæring – regneark B – Samarbeid
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

1 OO systemutvikling, del 3  Nominalist eller realist ?  OO egenskaper  Generelt om OO Analyse & Design  En 8-stegs metode for OO Systemering (analyse og design)

2 Forholdet mellom det generelle og det spesielle (klasser og objekter)  Det generelle, eksisterer det egentlig, eller er det noe vi har funnet på for å beskrive/snakke om verden på en enklere måte.  Vesentlig debatt på 1100-tallet for systemutviklere 1) Eksisterer slike fellesbegreper, eller er det ‘bare’ vår egen begrepsdannelse. 2) Hvis de eksisterer, er de av fysisk eller åndelig natur. 3) Eksisterer det generelle evt. fritt fra de enkelte individene, eller ‘bare’ som del av disse. Eks: kråker, mennesker

3 ‘nominalist’ eller ‘realist’  Nominalist Det som eksisterer er bare enkeltindividene. Generelle fellesbegreper er skapt av menneskene (for bedre å forstå/beskrive verden). (eks. Wilhelm av Occam og Charles Darwin):  Realist Slike fellesnavn (kråke, menneske) har en egen eksistens (og enkeltindividene er dannet etter disse) (eks: Platon og Thommas av Aquinas)

4 Konsekvenser for systemutvikleren  Nominalist: Vi lager selv våre begreper (våre klasser), det finnes ingen fasit/riktig svar. Det er vårt ansvar å gjøre dette. (men vi tar selvsagt ofte utgangspunkt i vanlige begreper vi ha lært oss på skolen og ellers).  Realist Det finnes alltid et gitt sett med generelle begreper for det vi skal systemere. Vårt systemer er avhengig av at vi greier å fange dette ‘egentlige’ ved de enkelt gjenstandene vi lager klasser for.

5 OO-begreper, oversikt  Klasser og objekter  generelle typer og enkeltforekomster  informasjonsskjuling, grensesnitt til systemet  Pekere  dynamiske datastrukturer  uttrykke forhold mellom objekter  Arv / subklasser  generalisering og spesialisering, klassifisering, deling av kode  forholdet mellom klasser  Virtuelle prosedyrer  redefinering av operasjoner  utsatt definering av operasjoner  kommunikasjon med klassebiblioteker

6 Analyse : Hva er objektene ?  Prinsipper for objekt - og klasse-definisjon og modellering:  Naturlig modellering - som datamodellering  Ser da særlig på problemdomenet  Klassers ansvar og kontrakter, klienter og tjenere.  Ser på klassenes funkjonalitet, sammenheng mellom klassene - også løsningens tilleggsklasser  Minimale snitt, informasjonsskjuling  Prøver å sette sammen det som naturlig hører sammen, få en løsning som blir enklest mulig.

7 Ytre egenskaper de essensielle data som beskriver gjenstanden + de logiske operasjonene andre (dvs. i hovedsak prosedyrer i andre klasser) skal få gjøre med et slikt objekt. Ytre egenskaper er grensesnittet: Minimalt og veldefinert eks.: Radio, TV Indre egenskaper 'hjelpevariable' har med implementasjonen alt fra enkle løkke-variable til f.eks kompliserte datastrukturer og prosedyrer for effektiv implementasjon Mekanismer (private, protected) til å skjule disse hjelpevariable. Bare ytre egenskaper tilgjengelig "utenfra”via grensesnittet. Grensesnittet skal (ideelt sett) bare bestå av bare funksjoner. Indre og ytre egenskaper informasjonsskjuling

8 Grensesnitt ved kall på funksjoner All skriving og lesing på variable fra andre klasser,prosedyrer og hoved- programmet skal bare skje via prosedyrekall Fordeler: Frihet i implementasjon, når noe endres, må ikke all annen kode som bruker klassen undersøkes/rettes. Endring av en egenskap er ofte en sammensatt operasjon, to eller flere variable skal endres, før data gir mening. Slik kode skal ikke spres til andre deler av koden Eks: class bil_1 {..... char eier_navn[30];.....} // implementasjonen eksporteres class bil_2 {..... char [ ] eier_navn( );.....}; // implementasjonen skjult, kan endres

9 OO-analyse, design & evolusjon  OO Analyse (kravspesifikasjon) Forståelse av problemområdet og brukerkrav, identifikasjon av de viktigste klassene og deres mer abstrakte/høynivå operasjoner  OO Design Konkret forslag til implementasjon av programstruktur ( klasser, prosedyrer og øvrige data - også klasser knyttet til løsningen som skjembilder), maskinplattform og manuelle rutiner tilknyttet systemet  OO Evolusjon, modifikasjon Koding, testing, integrasjon av stadig mer utbygde prototyper. Videreutvikling. Den klassiske fossefallsmetoden er død - iterasjoner er alltid påkervet. Viktig å ha en metode som oppdager feil/mangler tidlig - er klart billigst.

10 Videreutvikling som metode  Resten av systemer delvis skjermet ved utvidelse en klasse: Forandre implementasjonen til en klasse Forandre representasjonen av en klasse Reorganisere klassestrukturen Forandre grensesnitt til en klasse  OO Analyse &design og evolusjon er oftest en iterasjon via stadig mer utviklete systemer (prototyper)

11 Objekt-egenskaper Et objekt har:  Tilstand (verdi på egenskaper/ data)  Handling (ved kall på prosedyrene)  Identitet (ett objekt er alltid unikt, forskjellig fra alle andre objekter)  Aktivt/passivt (klient/tjener tjener - kan ha egen tråd)

12 OO ANALYSE: To viktige relasjoner mellom klasser 1) Er-en relasjon (IsA) = spesialisering, eks: En lønnskonto er-en konto En student er-en person Løsning: arv / subklasser 2) Har relasjoner (HasA) = oppdeling/dekomponering eks: En bil har fire hjul En Student har flere eksamener Løsning: pekere til andre objekter (eller et objekt inneholder de andre objektene).

13 Hva er objekter ?  Kandidater til klasser:  Håndfaste ting, andre (del)systemer  Mennesker, roller  Substantiver generelt  Organisasjoner  Hendelser, transaksjoner  Steder

14 Øvelsesoppgave: Finn klasser ved substantivmetoden Ledelsen for varehuskjeden Prima har i den siste tiden sett med bekymring på at alle de viktigste konkurrentene har skaffet seg rabattkort-ordninger. Derfor har de nå opprettet sitt eget poengkort, Ludokortet. Kortet deles ut gratis til alle kunder som ønsker det, mot at de oppgir navn og adresse og telefonnummer og underskriver på at er iorden at Prima lagrer informasjon om hva de kjøper. Prima opererer med to typer Ludokort, vanlige kort for privatpersoner og bedriftskort. Ditt oppdrag er å lage en første versjon av et system som kan lage fornuftige rapporter til ledelsen for Prima (og for salg til andre kunder) etter behov.

Utvid programmet fra de foregående oppgavene til å bli et komplett, kommandostyrt program som kan utføre følgende kommandoer: Skriver ut en liste med en linje for hver vare Prima fører, med varenummer, navn på varen, pris og antall Ludopoeng som gis for varen. Skriver ut en liste med en linje for hvert Ludokort som er tatt i bruk, med navn, adresse, telefon (og evt. faxnummer dersom dette finnes) på korteier og hvor mange poeng eieren har samlet opp. Skal føre til at det for det gjeldende kortnummeret blir laget en oversikt over kortet og bruken av det, med antall kjøpte varer av hvert slag, og antall poeng opparbeidet på hver vare for hver måned kortet har vært brukt. Oversikten skal plassere alle linjene som angår samme vare sammen og innbyrdes sortert på måned.

16 Til øvelsesoppgaven: 1. Hva er klassene - i problemområdet (det eksisterende system) - tillegg for løsningen 2. Hvor mange objekter er det (typisk) av hver klasse - hvilke 3. Kom med forslag til noen funksjoner til hver klasse Hvis du får tid : 4. Tenk deg alternativt at du utviklet et funksjonelt, top-down strukturert program for dette problemet, hvor ville da - data til de ulike klassene du har, være - hvor ville du finne igjen de funksjonene du har foreslått i pkt 3.

17 Objektene representerer viktige "begreper"eller "gjenstander" i den del av verden vi modellerer med vårt program Eks. Studentregister Klasser for: studenter kurs studieretninger eksamener (studentens og/eller kursets?) studieadministrasjonen institutter universitetet vinkling, hvilke spørsmål vi vil ha svar på

18 Klassers og objekters ansvar  En klasse skal representere en type av ting, en type logisk enhet, et begrep  Et objekt representerer ikke bare passivt en slik 'ting' man har også ansvar / tilbyr tjenester (funksjoner/metoder) overfor andre objekter. Objektet er en tjener.  Et objekt samarbeider ofte med andre objekter (av egen eller andre klasser) når det skal utføre en tjeneste. Dvs. objektet kaller funksjoner i andre objekter for å løse (deler) av oppgaven. Kalles ofte delegering.  En klasse kan selv definere alle sine egenskaper/sitt ansvar, eller arve deler av det.

19 Kontrakter og ansvar En klasse implementerer en rekke funksjoner/tjenester Disse lar seg naturlig gruppere En kontrakt består av en eller flere funksjoner som sammen danner et komplett tjenestetilbud:. eks: representere en fil (åpne, lukke, slette, lese, skrive..). eks: Generell datastruktur for å oppbevare objekter, som f.eks en kø (sett_inn, ta_ut, finn_første, fjern,...) En klasse implementerer oftest bare en, (eller et fåtall) kontrakter. I Java spesifiseres ofte en kontrakt som et grensesnitt (interface). Kontrakter er en gruppe av tjenester overfor samme klient.

20 Ønskemål for design av en klasse  Representerer noe som logisk hører sammen, ikke 'litt-av-hvert'.  Passe stor og-  Generell, dvs. gjenbrukbar i andre sammenhenger  Hvis den er en subklasse øker funksjonaliteten.  Hvis den er en superklasse har minst to subklasser.  Kan selv bruke generelle tjenester dvs. har fellesdeler med andre klasser slik at disses tjenestene kan utnyttes ved arv eller samarbeid.

21 Analyse og design, en generell metodikk 1. Analyser typisk bruk, vurder ulike brukeres systemkrav 2. Finn klassene 3. Bestem ansvarsområdet for de enkelte klassene 4. Bestem samarbeidspartnere for de enkelte klassene 5. Bestem arv (subklassene) 6. Lag samlinger av klassene (moduler og subsystemer) 7. Sett opp protokoller for kall fra hver klasse til dens samarbeidspartnere. 8. Lag funksjonelle krav til operasjonene (prosedyrene) i hver klasse Itereres flere ganger Kan noen ganger ta flere steg i ett Analyseog design-fasen har overlapp

22 1. Analyser brukerkrav og ulike synspunkter  Bestem ulike brukergrupper (aktører)  Tegn typiske brukssituasjoner med informasjonsflyt mellom tenkt system og bruker  Se på mulige konflikter mellom brukerkravene  Vurder ulike brukeres systemkrav og synsvinkler, interesser  Finn  Mest kritiske krav (implementeres først)  Grader kravene etter viktighet (må ha, viktig, greit å ha)  Få fastspikret hvilke krav som skal inn i versjon nr. 1  Få ledelsen interessert i prosjektet og med på beslutningene

23 Klassene finnest lettest via å se noen objekter i en typisk situasjon Problemområdets 'ting' Sentrale begreper Substantiver Objekter fra løsningen (dialogvinduer,..) Kategorier av objekter Sorter i tre grupper Lag et CRC 'kort' (class, responsability, collaboration) for hver klasse Rollespill for å fylle ut CRC ( ORC ??) klassenavn ansvar (operasjoner) samarbeider med (andre klasser) Student Meld_på Ta_eksamen Betal_sem-avg Stud-eksp Kurs Administrasj Kurs Registrer- påmelding Student Institutt Eksamen 2. Finn klassene

24 3. Bestem ansvarsområdet for klassene Data + operasjoner pr. klasse finn kontrakter som må tilbys av systemet gi funksjoner til alle klasser finn manglende funksjoner, fordel disse Vanskeligere å fordele funksjoner eks studentregisteret: Skal Studenten selv ‘skrive_ut_vitnemål’ eller skal instituttet / fakultetet / studentekspedisjonen / universitets objektet gjøre det ? Revider evt. klassene (skisse av klasse-diagrammer)

25 4. Bestem samarbeidspartnere Tegn opp klassene i systemet. Tegn kommunikasjonslinjer mellom klassene for hvert prosedyre-kall Flytt evt. funksjoner for å minimere kommunikasjonen

26 5. Bestem arvehierarkier  Finn felles funksjonalitet mellom klasser  Skill ut fellesdeler i 'abstrakte' klasser  Lag ikke objekter fra 'abstrakte klasser', disse brukes bare til å lage nye klasser ved 'sub'- klasse mekanismen  Vurder bruk av virtuelle prosedyrer

27 6. Lag samlinger av klasser (delsystemer) Se igjen på kommunikasjonen mellom klassene Finn grupper av klasser med lite trafikk utad, mye trafikk innad i gruppen Lag subsystemer (moduler) Navn egen fil (separatkompilering,...) arbeidsoppgave for en programmerer

28 7. Sett opp protokoller (mellom klassene)  Protokoll= klassens grensesnitt, det sett av funksjoner klassen tilbyr utad.  Navngi funksjonene (noe, ikke hele funksjonaliteten i navnet)  For alle aksessprosedyrer:  Krav til innparametre og (globale data)  + Krav til utparametre og (globale data)  Sammenhengen mellom disse f.eks i Z eller bruk en eller annen logisk notasjon (tilstandsdiagrammer, krav ved inngang og utgang av prosedyrer)

29 8. Sett funksjonelle krav til prosedyrene Velkjent, krav til handlingessekvensen i hver (aksess)prosedyre, eks.:  Valg av algoritme og hjelpedata  Spesifikasjon av bruk av skjerm, database  Effektivitetskrav osv.

30 Månedsverk Analyse Design Koding Testing Integrasjon Vedlikehold Normalt for funksjonell utvikling OO systemutvikling fordeler og forskjeller

31 Hovedpunkter ved OO systemutvikling Abstraksjon, begrepsdannelse på et høyere nivå, både data og operasjoner. Modellnærhet hele veien fra "virkelig" verden, gjennom analyse og design til programmeringen (samme språk) Vi har fått skjult implementasjons-detaljer Utviklingsprosessen er en stadig iterasjon (via analyse, design og implementasjon) av nye versjoner.

32 6 påstander om OO  OO er ikke valg av et bestemt progr. språk eller et bestemt CASE- vektøy  OO er en gjennomgripende endring  OO kan ikke (vellykket) gjennomføres delvis f.eks bare for programmeringen  OO vil endre hele systemutviklingsprosessen  Start med et lite, ikke tidskritisk prosjekt og en mindre gruppe motiverte medarbeidere  Det er betydelig lettere å omskolere de som kommer fra datamodellerings-verden (les: COBOL) enn de som kommer fra strukturert programmering (les: FORTRAN, Pascal, C)