Transcript pps

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
Många utvecklare
previous
– Programmera i det stora
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
användningsfall
previous
next
Redovisningssystem
«uses»
«uses»
Värdera
Slut
avtal
«extends»
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]
Häll i vatten
Kaffe i filtret
[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