Uploaded by Shit Kid

sammanfattning-av-oos

advertisement
lOMoARcPSD|32560070
Sammanfattning av OOS
Objektorienterad analys och design (Stockholms Universitet)
Studocu is not sponsored or endorsed by any college or university
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
OBJEKTORIENTERAD ANALYS OCH DESIGN
SAMMANFATTNING
USE CASE
Vad är ett Use Case Diagram?
Ett use case diagram används för att fånga funktionella krav. Det är en beskrivning på hur
man ska använda ett system för att uppnå ett mål. Till Use Case Diagram finns det Use Case
Description som då förklarar de enskilda use casen och vad det är som skall genomföras.
➔ Extend: (Valfri) Ett use case ger ytterligare funktionalitet
➔ Include: (Alltid)
Här är olika delar av ett UCD samt vad de heter:
Är något ett use ?
➔ Boss test- är detta något man kan göra hela dagen?
➔ Value - tillför detta något värde?
➔ User interface ➔ Size - Är användningsfallet stort?
(Use case får inte vara manuella!)
Är majoriteten på svaren ja är det godkänt för att vara ett use case annars inte.
Vad är en Use Case Description?
En usecase description beskriver ett use case. Det finns olika sätt att göra på men i denna kurs
lär vi oss “fully dressed”. Då följer man en mall och fyller i alla rubriker.
Sidenote: I mainsuccess ska stegen vara skrivna stegvis. Extensionens måste koppla till steg i
main success och sedan även hänvisa till ett steg i main success. Varje extend eller include
måste speglas i beskrivningen men inte vice versa.
Vad är en Generalisering?
En generalisering innebär basically att en actor kan göra allt som en actor kan göra beroende
på vart pilen pekar. Det innebär även mer eller mindre att en actor “är” en annan actor. (UC)
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
KLASS/INSTANS DIAGRAM & DOMÄNMODELL
Vad är en Klass?
En klass är en abstraktion av något som ska representeras. Kan vara en design ritning kring
hur något ska vara uppbyggt eller hur något ska representeras.
En person kan ha egenskaper som vi behöver för att
beskriva och lagra dem i informationssystemet. Dessa
attribut väljs ut beroende vad systemet ska användas till.
Ex. namn, personnr, vikt etc. I en klass har man Namn,
Attribut och Operation. Vid design klassdiagram har
man med alla, vid domän/klass har man endast namn och
attribut eller bara namn.
Vad är en Instans?
När vi sedan skapar “verkliga” objekt utifrån denna klass säger vi att vi skapar en instans av
klassen. Objekt = instans av en klass (objekt kan även benämnas som instans).
Vad är en association (klass)?
En association representerar möjligheten av ett logiskt förhållande eller koppling mellan olika
objekt av en klass. Förhållandet mellan två klasser rep av en linje. Detta kan göras om dessa
klassers objekt kan länkas ihop på något vis.
Vad är en multiplicitet (klass)?
Beskriver hur många objekt av en klass som kan länkas ihop till andra objekt av en annan
klass. Association har multiplicitet på båda ändarna. De anges av ett min-max värde, min till
vänster och max till höger. När man läser associationer börjar man alltid med ordet varje!
➔ 0...1 = 0 eller 1 objekt av klassen
➔ 1...1 = endast ett objekt av klassen
➔ 0…* = 0 eller fler objekt av okänt antal, kan även skrivas: *
Vad är en link (instans)?
Linjerna kallas association, när vi hanterar instanser av ett klassdiagram, i ett instans diagram
kallas linjerna för link.
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad är komposition och aggregation?
Dessa är typer av associationer som båda ibland kallas för “hela-delar” eller “del av”.
Aggregation är vilken helhet-del relation som helst. Exempelvis:
Här menar man på att en reklam är en del av en kampanj.
Komposition är semantiskt starkare eftersom varje del bara kan tillhöra en helhet åt gången.
När helheten förstörs så förstörs även alla delar. Exempelvis:
Här menar man på att varje ingrediens tillhör och är beroende av en maträtt tappar man
maträtten. tappar vi även ingredienserna därför passar det här med komposition.
Ytterligare exempel på aggregation, en student är inte beroende av en klass då hen kan gå i
flera klasser. Om en klass ställs in raderas inte studenterna.
I komposition är multipliciteten alltid ett där den ifyllda romben är, annars är det inte
komposition. I aggregation finns ingen sådan regel.
Vad är generalisering?
Ibland vill man slippa modellera saker mer än en gång detta kan enkelt lösas med
generalisering. När två klasser är lika i de flesta detaljerna använder man sig av dessa
strukturer. När man använder sig av generalisering kallar man dem ofta för ISA relationer. Då
det man generaliserar blir det man generaliserar till. Ett exempel för att förtydliga:
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Här har vi två subklasser “MonthlyPaidEmployee” och “HourlyPaidEmployee. Deras
super klass är “Employee” detta innebär att subklasserna är superklassen vilket stämmer då
man är en employee oavsett om man får betalt i timmen eller månad. Detta innebär även att
subklasserna ärver superklassens attribut när de instansieras.
Vad är en associationsklass?
En klass som knyts till en association., är en del av den och inte en separat klass. Möjliggör
attribut och operationer till associationen. Används för attribut och operationer som inte
naturligt kan höra till någon av klasserna som deltar i associationen. Exempel:
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad är en domänmodell?
Här handlar det att man vill ha en representation av verkliga konceptuella klasser. Inga
operationer finns definierade i domänmodeller. Det är alltså inte ett design diagram. Det som
visas i en domänmodell är Domänobjekt eller konceptuella klasser, associationer mellan
konceptuella klasser och attribut för konceptuella klasser. Tips när det kommer till
domänmodellering:
★ Identifiera substantivfraser för att identifiera klasser.
★ Använd alltid singular ist för plural, dvs kund ist för kunder etc.
★ Använd de befintliga namnen i området.
★ Lägg aldrig till saker som inte finns där.
★ De mest centrala grejerna är oftast i mitten av modellen
Vad är en beskrivningsklass?
Detta är en klass som beskriver något annat, ofta en verklig händelse eller en sak. Används
för att separera information om en sak och kataloginformation om den saken. Detta är bra när
man har flera grejer som nästan är exakt lika i alla avseenden förutom när det kommer till
serienummer exempelvis (Leta efter of i klasserna):
ACTIVITY DIAGRAM / STATE MACHINE DIAGRAM
Vad är activity diagram?
Ett aktivitetsdiagram är ett diagram som visar på beteendet av ett system. Den porträtterar
kontrollflödet från en startpunkt till ett slut och visar olika besluts vägar som existerar när
aktiviteten utförs.
Vad är ett control flow?
Control flow används för att specificera ordern av handlingar och ritas ut med en linje och pil
åt den direktion där nästa handling utförs. Här är exempel på hur control flow och andra saker
ritas ut i activity diagrams:
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad är Fork och Join (Parallel behaviours)?
Dessa används när två actions utförs samtidigt eller när man inte vet i vilken ordning saker
händer eller när det ej är viktigt när saker sker. Fork representerar den första tjocka linjen
nedan och har ett inflöde och två eller fler utflöden som måste genomföras. Join representerar
den andra tjocka linjen och har två eller fler inflöden och ett utflöde. Alla inflöden måste
genomföras innan det utgående flödet kan påbörjas.
Vad är Decision och Merge (Conditional behaviours)?
Ibland kan olika saker utföras beroende på omständigheterna. När man modellerar detta
använder man sig av Decision och Merge. Decision har alltid ett inflöde och två eller flr
utflöden. Utflödena är länkade till varje condition som är specificerat i text. Man besvarar
alltså villkoret och tar den väg som passar ens svar. Merge har två eller fler inflöden och ett
utflöde. Här “möts” de två eller fler vägarna.
Vad är State Machine Diagram?
Beskriver beteendet och tillståndet av ett objekt eller instans genom dess livstid och hur den
responderar till event. Exempel objektet från order klassen:
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Enligt detta state machine diagram har detta objekt tre tillstånd. Received, Checked och
Delivered.
Vad är State, Transition och Event?
State är en condition av ett objekt under en viss tidpunkt som inkluderar tidsintervall mellan
event. Olika states reagerar olika på olika event som sker.
Transition är “en relation mellan två states som indikerar att när ett event sker flyttas
objektet från det statet till ett annat state”. Transitions påverkas inte av andra event
Event är som en trigger för en transition.
Vad är entry, exit, do och event?
Entry är en handling som utförs när statet påbörjas
Exit är en handling som utförs när statet avslutas
Do är handlingar som utförs under statet tills aktiviteten är klar
och state machinen kan ändra state.
Event beskriver hur ett state responderar till event. Detta
innebär att en state machine diagram kan respondera till event utan att ändra states.
MODELLKVALITET
Vad är syftet med modellerna?
Modeller används som affärsritningar, verksamhetsprocessorientering,
verksamhetsprocessdokumenation, delar av IS kravspecifikationer. De används även som
kvalitetssäkring och standardisering av affärsprocesser och som medel för att kommunicera
affärskunskap. De löser även organisatoriska eller utvecklingsproblem och fungerar främst
som dokumentation av diskussionen eller som ett tankeverktyg.
Vad är viktigt att tänka på när man modellerar?
Viktigt att tänka på är vad det är som ska göras med en modell och vad den ska användas till
samt vad omständigheterna är. I vissa fall kan det vara nödvändigt att ha fler klasser
exempelvis för att det är vad som krävs för det specifika systemet medans samma sak kan
modelleras med mycket färre klasser för att ett annat system kräver det. Precis om att det är
dåligt att inte ha med allt nödvändigt i en modell är det dåligt att ha med onödigt mycket i en
modell. En modell bör dessutom byggas på ett sånt sätt att mindre förändringar i
domänområdet inte tvingar fram större förändringar i modellen.
Vad är kännetecknar en bra kravspecifikation?
Den ska vara entydig – varje påstående har en tolkning.
Den ska vara komplett – alla krav inkluderade, inget utelämnas för framtida arbete
Den ska vara verifierbar – alla krav har genomarbetade tester
Den ska vara konsekvent – inga motstridiga termer eller konstruktioner
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Den ska vara modifierbar – lätt att modifiera, ingen redundans
Den ska vara spårbar – kraven är unikt identifierade
Den ska vara korrekt – varje krav speglar något som måste byggas
Vad är en Powertype?
Ibland har man väldigt många subklasser till en superklass vilket ibland kan bli och se rörigt
ut. För att fixa till detta kan man då applicera powertype.
Detta eftersom att subklasserna då saknar attribut. De har dessutom inga egna associationer.
Applicerar man en powertype skulle ovanstående figur bli till detta:
Funktionen är densamma, man kan dock inte applicera detta ifall subklasser har associationer
eller attribut.
INTERAKTIONS / SEKVENS / KOMMUNIKATIONS DIAGRAM
Vad är en Design?
En design är en plan eller specifikation för konstruktionen av ett objekt eller system
eller för implementeringen av en aktivitet eller process, eller resultatet av den
planen eller specifikationen i form av en prototyp, produkt eller process.
Verbet att designa uttrycker processen att utveckla en design.
Vad är ett interaktionsdiagram?
Objekt kommunicerar genom att skicka meddelanden detta visas genom interaktionsdiagram.
Detta visas med hjälp av sekvensdiagram eller kommunikationsdiagram.
Vad är ett sekvensdiagram?
Visar en interaktion mellan objekt ordnade i en tidssekvens. Kan ritas på olika detaljnivåer
och för att möta olika syften i flera steg i utvecklingscykeln. Används vanligtvis för att
representera den detaljerade objektinteraktion som sker för att användningsfall eller för en
åtgärd. När man exempelvis använder ett system i en butik. När kassören skriver in
produktens ID, kräver hen att något sker i POS systemet detta beskrivs då i
sekvensdiagrammet. Dessa diagram har relation till use cases genom att de visar system event
för ett scenario av ett use case.
Tid: Visas som vertikal dimension
Objekt: är involverade i interaktion visas horisontellt över sidan och representeras av livlinor
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Meddelanden: visas med en heldragen horisontell pil. Utförandet av en operation visas
genom en aktivering.
Vad är object destruction?
Innebär att adverten i detta fall slutar att existera. Markeras med ett kryss.
Vad är reflexiva meddelanden?
När meddelanden skickas till det egna objektet.
Vad innebär return?
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
För att markera att en meddelande skickar tillbaka ett svar. En return i sekvensdiagram är en
återgång till kontrollen till objektet som skickade meddelandet som påbörjade aktiveringen.
Returner visas med en streckad pil, men det är valfritt att visa dem, eftersom det kan antas att
kontrollen returneras till det ursprungliga objektet i slutet av aktiveringen.
Vad är kommunikationsdiagram?
Dessa diagram visar objekt interaktioner i en graf eller nätverksform, i vilket objekt kan bli
placerade. Samma information som finns i sekvensdiagram modelleras i detta:
DOMÄNMODELL OCH DESIGNKLASSDIAGRAM
Vad är en domänmodell?
Här handlar det att man vill ha en representation av verkliga konceptuella klasser. Inga
operationer finns definierade i domänmodeller. Det är alltså inte ett design diagram. Det som
visas i en domänmodell är Domänobjekt eller konceptuella klasser, associationer mellan
konceptuella klasser och attribut för konceptuella klasser. Tips när det kommer till
domänmodellering:
★ Identifiera substantivfraser för att identifiera klasser.
★ Använd alltid singular ist för plural, dvs kund ist för kunder etc.
★ Använd de befintliga namnen i området.
★ Lägg aldrig till saker som inte finns där.
★ De mest centrala grejerna är oftast i mitten av modellen
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad är en designklassdiagram?
Visar specifikationer för mjukvaru klasser och gränssnitten (interfaces) i en applikation.
Består av alla saker i domänmodellen plus metoder och typ information för attribut.
Vad innebär det att objekt har ansvar?
Inom OOS har objekt i vissa modeller ansvar som då oftast handlar om att exempelvis skapa
andra objekt . Ansvaret kommer i två typer:
Vad objekt kan göra:
➔ Att göra något själv, till exempel att skapa ett objekt eller göra en
beräkning
➔ Initiera åtgärd i andra objekt
➔ Styra och samordna aktiviteter i andra objekt.
Vad objekt kan veta:
➔ Att känna till privata inkapslade data
➔ Att känna till relaterade objekt
➔ Att veta om saker som det kan härleda eller beräkna
Denna bild visar på hur objekt och metoder är relaterade. I bilden har sale objektet ansvar för
att skapa payment objektet.
Vad är ansvarsstruktur?
Det finns två varianter av ansvarsstruktur, Gaffel och Trappa. Gaffelvarianten är inte
objektorienterad därför man i objektorientering vill att objekt liknar verkliga objekt.
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad innebär mönster?
Mönster är en lösning på problemet som handlar om att det ibland kan ta år att samla på sig
erfarenhet kring bra design, återanvändbara delar av modeller, bra modeller etc. För att slippa
detta och kunna fatta “bra” beslut direkt finns mönster som stöder återanvändning. Med hjälp
av mönster har vi en “mall” vi kan gå efter när vi designar och utvecklar modeller.
Exempel på ett enkelt mönster:
- Problem: Hur ska vi säkerställa att användare har behörighet
- Lösning: Kolla att användare är auktoriserad med rätt behörighet förre interaction
börjar.
Till mönster finns oftast mallar med diverse rubriker som beskriver mönstrets problem,
konteks, kraft, lösning, Motivering, konsekvens etc. Vanligast är dock att endast använda de
fyra första eller endast problem och lösning.
Fortfarande osäker, kan du ge ett till exempel?
Något som man ofta modellerar är ordrar. Och något som kan uppstå som problem när man
modellerar ordar är att man ska kunna få in flera olika produkter som säljs på en order. Detta
kan då lösas med hjälp av ett mönster som oftast används i såna sammanhang:
Vad menas med mönster språk?
Mönster är dock oftast meningsfulla endast i små triviala problem. När det kommer till större
problem måste vi titta på relationerna mellan mönstren för att ge en mer komplett lösning.
Olika mönster kan kombineras på olika alternativa sätt för att anta olika lösningsvägar till
olika aspekter av det övergripande problemet
Vad finns det för mönstertyper?
Analysmönster - Dessa används vanligtvis för att återanvända domänkunskap. Tex som
exemplet kring order ovan.
Designmönster - Dessa avnänds för att se hur man gör en bra informationssystemdesign.
Organisationsmönster - Dessa används för spridning av företagets bästa praxis av olika slag
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Programvarumönster - Dessa används för att visa återanvändbara kodfragment.
Anti-mönster - Dessa används för att dela gemensamma fallgropar och attraktiva men dåliga
lösningar.
(Finns något som heter GRASP Mönster där High cohesion och Low coupling tas upp som
mönster vilket är de som kommande två rubriker kommer handla om).
Vad menas med låg coupling?
Att en klass har hög koppling innebär kort och gott att den bygger på många andra klasser.
Såna klasser vill man absolut inte ha då de bidrar till tvingade lokala ändringar pga ändringar
i relaterade klasser. De blir även svårare att förstå för sig själv. De är även svårare att
återanvända för sig själv då dessa klasser kräver att man även har med de klasser som de är
beroende av. Därför vill man göra klasser så att de blir så “självständiga” som möjligt och
inte är alltför kopplade till varandra.
Låg coupling enligt mönstermallen:
Problem: Hur stödjer man lågt beroende. lågt förändringspåverkan och ökar
återanvändningen?
Solution: Genom att tilldela ett ansvar så att kopplingen förblir låg. Använd den här principen
för att utvärdera alternativ.
Exempel på bra respektive dålig klasskoppling:
Vad menas med hög cohesion?
Att en klass har låg cohesion innebär att den gör många orelaterade saker eller för mycket
arbete. Såna klasser vill man inte ha och de kan leda till att klassen blir svår att förstå, svår att
återanvända. svår att underhålla.
Hög cohesion enligt mönster mallen:
Problem: Hur håller man objekt fokuserade, förståeliga, hanterbara, och som ett sidostöd för
låg koppling?
Solution: Genom att tilldela ett ansvar så att sammanhållningen förblir hög. Använd detta för
att utvärdera alternativ.
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Exempel på låg respektive hög cohesion:
UTVECKLINGSPROCESSER OCH METODER
Vad är utvecklingsmetoder?
Ett arbetssätt där man säger vad som ska utföras i varje aktivitet och vad aktiviteterna har för
samband.
Varför behöver vi utvecklingsmetoder?
➔ Strukturerar arbetet, Man vet för varje aktivitet vad som ska göras, behöver it börja på
ett blankt sheet. Värdefullt för nya.
➔ Underlättar kommunikation, Alla arbetar på ett gemensamt och strukturerat sätt.
Förstå hur man bidrar till helheten och hur andra bidrar till helheten
➔ Stödjer planering och kontroll, när man har metoder blir det lättare att kontrollera att
saker utförts på det sätt som var avsett.
Exempel på (lite oviktigare) utvecklingsmetoder:
Vattenfallsmodellen(1970) , Här görs allt stegvis och man påbörjar nästa steg först när man
avlutat de steg man är på. Fått mycket kritik då det är svårt att gå tillbaka till föregående steg
om det nu skulle krävas. Finns dock versioner som tillåter fler iterationer till de föregående
stadierna.
V-modell (1991), Här gör man varje steg i förhållande till tester
USDP, UP(1999), Denna är användningsfalls driven och har iterativ, stegvis eller
inkrementell utveckling. Stöder UML.
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Iterationerna är tidsboxade och varje iteration har en längd som vanligtvis ligger på 2-6
veckor.
Olika fokus och metoder som stödjer dessa:
Vad är eXtreme Programming (XP)?
En agil metod som tidigt fick stöd tack vare konkreta tips om hur programmering kunde
förbättras, sett som hantverk, och hur man effektivt arbetar i team. Dessutom såg många XP
som en välbehövlig protest mot de tunga processer, exempelvis RUP, som påstod sig vara
iterativa, men som oftast havererade till smärtsamma vattenfallsprocesser.
Metdoen är känd för att den använder sig av parprogrammering där två sitter samtidigt och
programmerar vilket ska minimera risken för fel.
Vilka fyra saker grundar sig XP i?
1. Kommunikation - Det är viktigt med god kommunikation mellan utvecklare och
användare
2. Simplicity - Fokuserar på den enklaste lösningen för de omedelbart kända kraven
3. Feedback - Man ska få snabb och frekvent feedback från användare när det gäller test.
4. Courage - Uppmanar till att kasta bort kod som inte är helt korrekt och inte bli för
fäst.
Hur går kravhantering till i XP?
I XP baseras kravhantering på user stories där krav beskrivs av användaren och då blir grund
till planering och utveckling av tester. Liknar användningsfall, men skiljer sig då user stories
oftast handlar om tre meningar utan någon teknik angiven.
Downloaded by Melis Kocak (meliskocak033@gmail.com)
lOMoARcPSD|32560070
Vad är SCRUM?
Scrum är ett ramverk för att utveckla och underhålla komplexa produkter. Scrum är inte en
process, teknik eller definitiv metod. Viktiga Scrum värden är: commitment, courage, focus,
openness och respect. I ett Scrum team finns: Scrum master, Development team och Product
owner.
Vad innebär transparency, inspection och adaption i förhållande till Scrum?
Transparency - Viktiga delar av processen måste vara synlig för de som är ansvariga för
resultatet av det man skapar.
Inspection - Inspektioner måste utföras av skickliga inspektörer på arbetsplatsen för att
upptäcka oönskade varianser.
Adaption - Ifall man upptäcker att vissa processer inte görs som de ska och att det därför
leder till att produkten inte blir som tänkt ska man justera det som inte är som det ska.
Vilka fyra händelser finns?
Sprint Planning, Daily Scrum, Sprint Review och Sprint Retrospective
Vad är Model Driven Development?
Här går man direkt från modeller till ett fungerande system utan att behöva koda. Gör detta
genom diverse appar.
Punkter kring SD → CD!
➔ Man markerar alltid när meddelanden bara går till ett håll annars räcker det med rakt
sträck
➔ Har man flera klasser av samma namn ex C1, C2 etc:
- Blir det multiplicitet 0..*
- Och man ritar i detta fall endast ut C inte båda klasserna!
➔ Man ritar ut det som går till den egna “rektangeln”
➔ Man ritar i kronologisk ordning
➔ Ser man “create” ritar man inte ut då detta är en konstruktion
➔ Man tar även med klasser som inte får meddelanden till sig
Downloaded by Melis Kocak (meliskocak033@gmail.com)
Download