Objektorienterad Realtidsprogrammering 2000 Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion previous next Utvecklingsmetoder. Introduktion till OCTOPUS och UML Utvecklingsmetoder ... • Problem Svårt att utveckla system kostnad – Svårt att utveckla system – 80% underhåll – Vi vill ha formalism fast enkel och användbar – Kommunikation mellan inblandade – Många anser att kostnaden för krav design test förändring av ett system ökar implemproduktion analys exponentiellt över tiden. entation Fast inte säkert sant med dagens metoder. • 70-talet Strukturerad programmering – Flödesdiagram – Strukturerad programmering – Top-down, bottom-up och middle-out • Flera objektorienterade metoder blev populära på 80-talet och dominerar idag Flera metoder previous – OMT, ObjectOry, Booch, Shlaer-Mellor, Coad-Yourdon – ... next 2 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … UML ... • Unified Modeling Language UML – 90-talet – Förening av tre dominerande metoder UML är de facto standard • Booch • OMT • Objectory – ”Standard”, OMG (Object Management Group) med fler än 600 intressenter – Mer notation än metod (än så länge) – Ej (för) stringent = användbart • Det finns möjligheter till vissa egna utvidgningar, bla via så kallade stereotyper previous next 3 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Design och utveckling • Vilken typ av projekt kan vara avgörande för hur man går tillväga – Programmera i det lilla Få utvecklare • kod skapas av en eller få programmerare. En enskild person kan ha överblick och vara insatt i alla delar av projektet. • huvudproblem (mjukvara): designa och utveckla algoritmer – Programmera i det stora Många utvecklare previous next • mjukvaran tas fram av ett stort team. Vissa personer kan specificera eller designa andra kan koda vissa komponenter, slutintegration/applikationen görs kanske av en tredje grupp, osv. Ingen person har möjlighet att sätta sig in alla delar av projektet. 4 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Utvecklingsprocess typiskt tillvägangångsätt Krav • Kravanalys - beskriv och validera vad systemet skall göra Analys • Analys - identifiera systemets struktur så att systemet är enkelt att modifiera om kraven förändras Design • Design - beskriv hur systemet skall realiseras Implementation Test previous • Implementation - implementera systemet och utför enhetstester • Testning - verifiera systemet next 5 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Proceduren • Hitta potentiella aktörer – Namnge och gör kortfattad beskrivning av varje aktör – Begränsa systemet • Sammanställ gloslista (så att vi kan enas om vokabulär) • För varje aktör: Hitta nödvändiga användningsfall – Namnge och gör kortfattad beskrivning av varje användningsfall • Granska aktörer och användningsfall och iterera – Missade aktörer eller användningsfall? Duplikat? • Identifiera gemensamma delar, strukturera modellen, iterera • Beskriv varje användningsfall • Granska beskrivningarna och iterera – Missad eller felaktig funktionalitet? • Granska, validera och godkänn modellen previous next 6 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Vad är (objektorienterad) analys? • Den tidiga fasen i systemutvecklingen då en abstrakt modell av systemet skapas, utan att gå in på detaljer i den tekniska implementationen • En modell av centrala objekt och relationer mellan objekten • Analysen utförs utan hänsyn till tekniska lösningar eller begränsningar • Syftet är att skapa en förståelse för den verksamhet systemet skall hantera • Används som grund för att i en designfas konstruera systemet i detalj och välja teknisk lösning previous next 7 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Analys: vanliga aktiviteter • Insamla underlag – kravspecifikationer, önskemål, beskrivningar av verksamheten eller befintligt system, intervjuver. Problemdomän definieras • Definiera användningsfall – dvs hur systemet kommer användas • Sök objektkandidater – tex mha CRC-kort eller annan brainstormingliknande teknik • Klassificera objekt – klassnamn, ansvarsområde och eventuellt karaktäristiska attribut och metoder • Relationer mellan objekt – mha klass- och objektdiagram • Slutdokumentation av analysfasen – skrivbordstest där olika användningsfall gås igenom, relationer mellan klasser och objekt testas. Valda namn på klasser värderas. Dokumenteras mha grafiska diagram med kompletterande text. previous next 8 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Perspektiv • Konceptuellt – I detta perspektiv ritar man diagram över koncept i domänen. Dessa koncept avbildas ofta på klasser som implementerar dem, men ofta är så inte fallet. – En konceptuell modell ritas med liten eller ingen hänsyn till den mjukvara som skall användas vid implementationen • Specifikations – I detta perspektiv tittar vi i första hand på gränssnitten för mjukvaran, inte implementationen. Vi tittar snarare på typer än klasser • Implementations – I detta perspektiv har vi verkligen klasser och implementationen görs tydlig previous next 9 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Processen • bestäm strategi och mål med projektet • kalkylera kostnader Påbörjande konstruera systemet i en serie av iterationer Utformande • samla detaljerade krav och gör analys och design på en hög nivå för att konstruera en grundarkitektur och planera konstruktionen. • analysera risker (krav, teknik, skicklighet och politiska) previous next Konstruktion Överföring testa, prestandaoptimera, träna användare 10 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Vattenfallsmodellen Traditionell idealiserad modell av utvecklingsprocessen Analys Design Implementation Testning Underhåll previous next 11 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Boehms spiralmodell previous next 12 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Utvecklingsprocessen, olika konfigurationer Implementation Kravanalys Design Implementation Testning Kravanalys Analys previous next Design Implementation Testning 13 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Nyare (kontroversiell?) metod för systemutveckling • eXtreme Programming (XP), av Kent Beck, inne och hett • Tillvägagångsätt (12 grundpelare) • Planeringsspel planera snabbt förutsättningarna för nästa release; prioritera, teknikkrav • Små releaser släpp nya versioner ofta • Metafor hitta en enkel bra metafor • Enkel design gör designen så enkel som möjligt • Testa next två programmerare per maskin • Kollektivt ägande av koden alla äger och kan ändra i koden • Kontinuerlig integration integrera och bygg systemet flera gånger per dag • 40-timmarsvecka jobba som regel inte mer än 40 timmar per vecka testa koden kontinuerligt. Måste lyckas innan utvecklingen går vidare • Inkludera en "kund" i teamet strukturera om ofta; ta bort onödig kod, förenkla osv • Följ kodstandard • Omstrukturera ("refactoring") previous • Parprogrammering inkludera en "riktig användare" på full tid vilket förenklar kommunikation 14 Utvecklingsmetoder. Introduktion till OCTOPUS och UML UML (en kort introducerande översikt) • Unified Modeling Language • UML är de facto standard – används i bla • utvecklingsmetoder • designmönster • Massor av litteratur – se tex "standardverken" av Booch, Rumbaugh och Jacobson • börja förslagsvis med "The Unified Modeling Language User's Guide" previous next 15 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Vi bryter ner systemet och ser på det på olika sätt Användningsfallsdiagram: Uppdatera konto Sätt gränser Chefsförhandlare Analysera risker Prisförhandla Handlare aktör previous next «uses» «uses» Värdera Slut avtal «extends» användningsfall Redovisningssystem Försäljare Gränserna överskridna 16 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Klassdiagram (Enheter och relationer) multiplicitet association klassnamn Person name : String address : String Company * employee employer name : String address : String attribut rollnamn previous next 17 Utvecklingsmetoder. Introduktion till OCTOPUS och UML ...Klassdiagram (med arv, dvs bla specialiseringar och generaliseringar) * Shape position : Point operationer bounds() :Rectangle draw() : void extent() : Point return new Rectangle(position, extent()); arv Shape1 Shape2 extent : Point extent : Point draw() : void draw() : void metod/pseudokod previous next ComposedShape bounds() :Rectangle draw() : void parts aggregat b = new Rectangle(); for all p in parts do b = b.merge(p.bounds()); return b; 18 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Sekvensdiagram (samarbete mellan delar) previous next 19 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Tillståndsdiagram: previous next 20 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Aktivitetsdiagram (beskriver parallella förlopp) Exempel: "Person::ordna dryck" [inget kaffe] Hitta dryck [kaffe hittat] Kaffe i filtret Häll i vatten [ingen cola] [cola hittad] Hämta koppar Filtret i bryggaren Hämta cola Slå på bryggaren ^kaffepanna.slåPå Brygg slå av lampan Häll upp kaffe previous next Drick 21 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Samarbetsdiagram previous next 22 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Hello world-exempel Javakod för en applet import java.awt.Graphics; class Hello extends java.applet.Applet { public void paint(Graphics g) { g.drawString(”Hallå!”, 10, 10); } } previous next 23 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello klassdiagram ... Hello paint() previous next g.drawString(”Hallå!”, 10, 10); 24 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello ... Applet Hello paint() previous next Graphics 25 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello ... Object Component ImageObserver Container Panel Applet Hello previous next 26 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello paketering ... java Hello applet awt lang previous next 27 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello sekvensdiagram ... :Thread :Toolkit :ComponentPeer target:Hello run run callbackLoop handleExpose previous next paint 28 Utvecklingsmetoder. Introduktion till OCTOPUS och UML … Hello komponenter Hello.java Hello.class Hello.html -------------------- previous next -------------------- Hello.jpg -------------------- 29 Utvecklingsmetoder. Introduktion till OCTOPUS och UML OCTOPUS-metoden en översikt • Objektorienterad • Hanterar viktiga problem i realtidssystem som – – – – – parallellitet synkronisering kommunikation avbrottshantering ASICs (Application-Specific Integrated Circuit), kundanpassad hårdvara på chip – hårdvarugränssnitt – responstider • I huvudsak för icke hårda realtidssystem • Utgår från OMT och Fusion previous next 30 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Olika faser, en översikt • Faser – systemkravfas • struktur via kontextdiagram • funktionalitet och dynamiskt beteende mha användingsfallsdiagram och användningsfall • kan kompletteras med scenarier – systemarkitekturfas • systemstruktur via delsystemdiagram – delsystem analysfas • görs för varje delsystem – delsystem designfas – delsystem implementationsfas previous next 31 Utvecklingsmetoder. Introduktion till OCTOPUS och UML Utvecklingsprocessen: mjukvarusystem Systemkravsfas Användningsfall och kontextdiagram Systemarkitektur Delssystem och gränssnitt Delsystem Delsystem analys analys Delsystem Delsystem design design Delsystem Delsystem implementation implementation Delsystem program previous next Delsystem program Systemprogram Hårdvaruwrapper Wrapper program 32