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)