330 likes | 492 Views
Viderebearbeiding / Elaboration (del 2). Arne Maus, Inst. for informatikk, UiO. Viderebearbeiding / Elaboration – kap 8. Vi skal nå: bygge kjerne-arkitekturen løse alle høy-risk (vanskelige) deler definere mesteparten av kravene estimere en overordnet prosjektplan og kost (ressursbruk)
E N D
Viderebearbeiding / Elaboration (del 2) Arne Maus,Inst. for informatikk, UiO
Viderebearbeiding / Elaboration – kap 8 • Vi skal nå: • bygge kjerne-arkitekturen • løse alle høy-risk (vanskelige) deler • definere mesteparten av kravene • estimere en overordnet prosjektplan og kost (ressursbruk) Dvs: ikke minst, starte å programmere
En tidlig (første) implementasjon av systemet • Identifisere prosesser, pakker (av klasser), subsystemer, implementere noen av disse • Mye ’stub’-kode • Definere systemets grensesnitt (metoder og parametre) mot andre systemer • Integrere innkjøpte moduler • Implementere enklest mulig versjon av hoved Use Case’t (eks: Salg uten feilsituasjoner) • Lage brukergrensenitt for dette • Lage og utføre tester for implementert kode • Stress-testing av forbindelse til andre systemer
Oversikt over Viderebearbeiding / Elaboration • Ikke mer enn noen få måneder (for de fleste prosjekter) • Har flere iterasjoner • Oppdager/utpensler minst halvparten av kravene • Høyrisiko-deler behandles og løses • Lager én kjørende versjon av systemet per iterasjon • Design og kravspek. revideres kontinuerlig • Virkelig testing utføres • Flere ’hjerneblæst’-møter om design, arkitektur,..
System Sekvens-Diagrammer (SSD) – kap 9 • Viser Interaksjonen med systemet (som helhet) for noen sentrale Use Case’er • både de sentrale vellykkede og komplekse feilsituasjoner • Systemet behandles som en (svart) boks • Dette definerer også systemets grenser • Mellom mennesker/andre systemer og vårt system • Bemerkning: I boka er ikke kunden i interaksjon med systemet, mens i Norge drar jo Kunden både kredittkort og gir PIN-kode
System Sekvens Diagrammene Brukes til: • Gi navn til operasjoner (begynn med et verb) • Gi navn som forteller hensikten (resultatet) med operasjonen • Få oversikt over komplekse / sentrale Use Case situasjoner • Definere også grensesnittet til systemet • Lages bare for de litt mer komplekse Use Case’ne
Domene Modeller – kap 10 • En Domenemodell er en representasjon av begreper/ klasser (konseptuelle klasser ) i den virkelige verden ikke en modell av program-komponenter. Det beskriver ikke nødvendigvis hvordan programmet blir - bare inspirerer hvordan program-designen blir. • Her er det noe uenighet mellom Craigh Larman og Ifi-miljøet (Maus, Skagestein, Normann). • Vi mener at Domenemodellen er direkte utgangspunktet for å lage modellen av programsystemet (en-til-en + tillegg for GUI, annen i/o, maskinvare mm) • Meningsforskjellen er ikke stor i praksis – men i teorien !!?. • Domene-modellen er det viktigste produktet fra analysen (begge)
En domenemodell består av konseptuelle klasser og forholdet mellom disse • En konseptuell klasse: • Har data (attributter) • Har ikke metoder • Utvikles og utvides hele tiden (man finner stadig nye begreper/klasser som skal være med)
Hva er en konseptuell klasse – og hva er bare et attributt • Hvis man tenker på det bare som en tekst eller et tall, så er det et attributt – ellers en klasse i domenemodellen • Hvis man er i tvil (attributt eller klasse) – lag en ny klasse • Vi noterer sammenhengen (assosiasjonene) mellom klassene • ’N.B Ikke alle, men der det er viktige sammenhenger
Hvorfor bør FlightDestination være en egen klasse i Domene-modellen
Hva gjør en spesifikasjonsklasse • Beskriver en gjenstand eller tjeneste uavhengig av enkeltobjektene • Hvis vi f.eks fjerner alle gjenstandene mister vi ikke informasjon om objektene • Reduserer duplisering av informasjon • Hvorfor kan dette ikke implementeres som static variable i Java ? (klasse-variable)
UML og klasser • UML klasser (i diagrammene) kan brukes til å lage bilder av: • Klasser i Domene-modellen (virkelige ting / begreper) • Klasser i Designmodellen (spesifikasjon av programkomponenter) • Klasser i en bestemt (Java) implementasjon (beskrivelse av eksisterende programkomponenter) • En tabell i en database ’Alt’ (hele betydningen) kan ikke leses ut av et UML diagram At vi bruker samme begrep og klassenavn i de ulike modellene, gjør at vi enklere kan lage neste modell
A bruker eller styrer B A kommuniserer med B A er etterfølger til B A eies av B A er en hendelse relatert til B A er en transaksjon relatert til B B A Registrerer- Salg Registeret 1 1:* Legge på assosiasjoner – kap. 11 • A er del av B • A er logisk del av B • A er inneholdt i B • A er beskrivelse av B • A er en del av en rapport B • A er loggført av B • A er medlem i B • A er en underavdeling av B
Retningslinjer • Ta bare med slike assosiasjoner vi trenger en viss tid (”må vite dette”) • Assosiasjoner er ikke så viktig som klassene • Ikke for mange assosiasjoner • Vis ikke slike som kan avledes av andre assosiasjoner
Rollenavn og antall på assosiasjoner • Leses fra venstre mot høyre • Sier også noe om hvilke retninger vi kan ’gå’ • Ha med antall i hver ende 3,5,7 * null- eller flere tre, fem eller syv 1..* en- eller flere 1..44 1 * en til 44 salg vare består av 6 eksakt seks Rollenavn
Domene-modeller med attributter (variable) – kap 12 • Viser essensiell informasjon i systemet – må tas vare på • bare enkle datatyper (int, String, boolean, Tidspunkt) • Modellerer konseptuelle klasser som egne klasser med assosiasjoner, ikke som attributter • Sammensatte gjenstander/begreper er klasser (telefonnummer, personnummer, dato, produkltkode,..) • N.B legg ikke inn fremmednøkler , men bruk assosiasjoner til den andre klassen • Ett attributt har: ett navn, en type og en verdi
Kontrakter for systemet – kap 13 • Beskriver hva som skjer med klassene i domenemodellen når man utfører operasjoner på systemet • Bruker for- og etterbetingelser og gir tilstandsforandringen til objektene (endring av verdier på variable) • Lage eller fjerne objekter • Endre enkle verdier • Endre assosiasjoner (fjerne/flytte/opprette,...) • Eks: Ved hvert salg av en Vare, lages et SalgsLinje objekt (ny fakturalinje) • Kontrakter brukes til å fange krav til systemet, men Use Case er viktigere
Å lage kontrakter • Finn system-operasjoner fra SSDene • For komplekse systemoperasjoner som ikke kommer klart ut av et UseCase,men som likevel skal gjøres, lag en kontrakt • For å beskrive etterbetingelksene (hva gjelder etter et slikt kall) se på: • Lage eller fjerne objekter • Endre enkle verdier • Endre assosiasjoner (fjerne/flytte/opprette,...)
UML-notasjon – kap. 14 & 15 • OO Analyse mye viktigere enn UMLnotasjons-detaljer • Viktig OO Analyse • Design patterns (design-mønstre) • Hvordan plassere metoder (tilordne ansvar)
Interaksjonsdiagrammer • Er fellsenavn på Sammarbeids- og Sekvensdiakrammer
Sekvensdiagram – uttrykker det samme som samarbeidsdiagrammet, , tar større plass, men er mest egnet til å vise samspill mellom klasser og objekter i tidsrekkefølge
Sammarbeidsdiagram – uttrykker det samme som sekvensdiagrammet, og er mer kompakt (mindre oversiktlig)
KlasseNavn Attributter (data) Metoder Klasser i UML Unntak
Klasser og objekter, notasjon • Klasse • Objekt • Navngitt objekt Salg :Salg s1:Salg
Meldinger • Meldinger langs assosiasjoner (begge veier) • Melding til seg selv