2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion previous next
Svårt att utveckla system Strukturerad programmering Flera metoder Utvecklingsmetoder... Problem 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 förändring av ett system ökar exponentiellt över tiden. Fast inte säkert sant med dagens metoder. 70-talet Flödesdiagram Strukturerad programmering Top-down, bottom-up och middle-out kostnad Flera objektorienterade metoder blev populära på 80-talet och dominerar idag OMT, ObjectOry, Booch, Shlaer-Mellor, Coad-Yourdon... previous next 2 krav design analys implementation test produktion
UML... Unified Modeling Language UML 90-talet UML är de facto standard Förening av tre dominerande metoder 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
Få utvecklare Design och utveckling Vilken typ av projekt kan vara avgörande för hur man går tillväga Programmera i det lilla 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 Många utvecklare Programmera i det stora 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. previous next 4
Krav Analys Design Implementation Test Utvecklingsprocess typiskt tillvägangångsätt Kravanalys - beskriv och validera vad systemet skall göra Analys - identifiera systemets struktur så att systemet är enkelt att modifiera om kraven förändras Design - beskriv hur systemet skall realiseras Implementation - implementera systemet och utför enhetstester Testning - verifiera systemet previous next 5
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
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
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
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
Processen bestäm strategi och mål med projektet kalkylera kostnader konstruera systemet i en serie av iterationer Påbörjande Utformande Konstruktion Överföring 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) testa, prestandaoptimera, träna användare previous next 10
Vattenfallsmodellen 7UDGLWLRQHOOLGHDOLVHUDGPRGHOODYXWYHFNOLQJVSURFHVVHQ Analys Design Implementation Testning Underhåll previous next 11
Boehms spiralmodell previous next 12
Utvecklingsprocessen, olika konfigurationer Implementation Kravanalys Design Implementation Testning Kravanalys Analys Design Implementation Testning previous next 13
Nyare (kontroversiell?) metod för systemutveckling extreme Programming (XP), av Kent Beck, inne och hett Tillvägagångsätt (12 grundpelare) 3ODQHULQJVVSHO SODQHUDVQDEEWI UXWVlWWQLQJDUQDI U QlVWDUHOHDVHSULRULWHUDWHNQLNNUDY 6PnUHOHDVHU VOlSSQ\DYHUVLRQHURIWD 0HWDIRU KLWWDHQHQNHOEUDPHWDIRU (QNHOGHVLJQ J UGHVLJQHQVnHQNHOVRPP MOLJW 7HVWD WHVWDNRGHQNRQWLQXHUOLJW0nVWH O\FNDVLQQDQXWYHFNOLQJHQJnUYLGDUH 2PVWUXNWXUHUDUHIDFWRULQJ VWUXNWXUHUDRPRIWDWDERUWRQ GLJ NRGI UHQNODRVY 3DUSURJUDPPHULQJ WYnSURJUDPPHUDUHSHUPDVNLQ.ROOHNWLYWlJDQGHDYNRGHQ DOODlJHURFKNDQlQGUDLNRGHQ.RQWLQXHUOLJLQWHJUDWLRQ LQWHJUHUDRFKE\JJV\VWHPHWIOHUD JnQJHUSHUGDJ WLPPDUVYHFND MREEDVRPUHJHOLQWHPHUlQ WLPPDUSHUYHFND,QNOXGHUDHQNXQGLWHDPHW LQNOXGHUDHQULNWLJDQYlQGDUHSn IXOOWLG ) OMNRGVWDQGDUG YLONHWI UHQNODUNRPPXQLNDWLRQ previous next 14
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
Vi bryter ner systemet och ser på det på olika sätt Användningsfallsdiagram: Sätt gränser Uppdatera konto Chefsförhandlare Analysera risker «uses» Redovisningssystem Prisförhandla «uses» Värdera aktör Handlare Slut avtal användningsfall «extends» Gränserna överskridna Försäljare previous next 16
Klassdiagram (Enheter och relationer) klassnamn multiplicitet association attribut Person name : String address : String * employee employer Company name : String address : String rollnamn previous next 17
...Klassdiagram (med arv, dvs bla specialiseringar och generaliseringar) Shape * operationer arv position : Point bounds() :Rectangle draw() : void extent() : Point return new Rectangle(position, extent()); Shape1 extent : Point Shape2 extent : Point ComposedShape parts draw() : void draw() : void bounds() :Rectangle draw() : void aggregat metod/pseudokod b = new Rectangle(); for all p in parts do b = b.merge(p.bounds()); return b; previous next 18
Sekvensdiagram (samarbete mellan delar) previous next 19
Tillståndsdiagram: previous next 20
Aktivitetsdiagram (beskriver parallella förlopp) Exempel: "Person::ordna dryck" Hitta dryck [kaffe hittat] [inget kaffe] [ingen cola] [cola hittad] Kaffe i filtret Häll i vatten Hämta koppar Filtret i bryggaren Hämta cola Slå på bryggaren ^kaffepanna.slåpå Brygg slå av lampan Häll upp kaffe Drick previous next 21
Samarbetsdiagram previous next 22
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
Hello klassdiagram... Hello paint() g.drawstring( Hallå!, 10, 10); previous next 24
Hello... Applet Hello paint() Graphics previous next 25
Hello... Object ImageObserver Container Component Panel Applet Hello previous next 26
Hello paketering... java Hello applet awt lang previous next 27
Hello sekvensdiagram... run :Thread :Toolkit :ComponentPeer target:hello run callbackloop handleexpose paint previous next 28
Hello komponenter Hello.java Hello.html Hello.class ----- ----- --- ----- ----- -- ----- ----- --- ----- ----- -- Hello.jpg ----- ----- --- ----- ----- -- previous next 29
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
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
Utvecklingsprocessen: mjukvarusystem Systemkravsfas Användningsfall och kontextdiagram Systemarkitektur Delssystem och gränssnitt Delsystem analys Delsystem design Delsystem implementation Delsystem analys Delsystem design Delsystem implementation Hårdvaruwrapper Delsystem program Delsystem program Wrapper program Systemprogram previous next 32