Software Engineering Många bitar skall fogas till en helhet 10/7/2015

advertisement
10/7/2015
7 OKTOBER 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
3
Många bitar skall fogas till en helhet
• Blandningen av:
– Programmering
Software Engineering
– Datalogi
Förväntningar
– Matematik
Kristian Sandahl, IDA
Niklas Lanzén, Ericsson
– Människor
– Ledarskap
• Är det sköna med
Software
Engineering
Software Engineering/Kristian Sandahl, Niklas Lanzén
Program
språk
OCTOBER 7, 2015
Definition av Software Engineering
2
Software Engineering/Kristian Sandahl, Niklas Lanzén
Metriker
Versions
hantering
SamIntegra- arbete
Affärsplan
tion
Underhåll
Design
projekt
Krav Lönsamhet
Metoder
licenser
processer
Kompetens
Inspektioner
Kod
modeller
Verktyg
Hårdvara
Team- Inredning
Leverans building
Testfall
OCTOBER 7, 2015
4
Programvara kan användas till mycket
• Software engineering is…
Therac-25
• …”the application of a systematic, disciplined,
quantifiable approach to the development, operation,
and maintenance of software; that is, the application
of engineering to software”.
Pong
(ISO/IEC/IEEE 24765:2010 Systems and
software engineering—Vocabulary)
1
10/7/2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
5
Kravhantering specificerar förväntningar och
ramar
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
7
OCTOBER 7, 2015
8
Krav som användningsfall
• Utmaningar:
• Finna verkliga
behov
• Finna alla
intressenter
• Välja och
schemalägga
• Tolka och testa
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
Krav på väl organiserad textform
•
3.2 Functional requirements
•
3.2.1 Show colors
– When the user enters type of T-shirt, the system shall show a
palette of available colours.
•
3.2.2 Add to shopping basket
•
3.3 Performance requirements
•
3.3.1 Response time
•
3.4 Design constraints
– The user shall be able to add an item to the shopping basket.
– The minimum response time is 2.0 seconds.
– The system shall be implemented in php.
6
Software Engineering/Kristian Sandahl, Niklas Lanzén
Arkitektur beskriver komponenter och
gränssnitt
• Utmaningar:
• Känna till vad som
finns
• Balansera
kvalitetskrav
• Definiera stabila
gränssnitt
• Förbereda för
ändringar
2
10/7/2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
9
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
11
Statisk beskrivning med UML klassdiagram
Koppling och kohesion
• Mycket vanligt
diagram
• Kan innehålla
detaljer om exakta
attribut och
funktioner
• Kan generera
kodskelett
• Kan genereras från
kod
Title/Lecturer
OCTOBER 7, 2015
10
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
Detaljerad design
Dynamisk modell med UML sekvensdiagram
• Utmaningar:
• Realisera funktion
• Härstammar från
telekommunikation
• Förbered för
ändringar
• Viktig för realtidssystem
• Begripligt system
• Kan bli hur
komplicerad som
helst.
• Bidrag till kvalitet
• Behöver ofta en
förklarande text
12
3
10/7/2015
OCTOBER 7, 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
13
Implementation
• Programmering
• Kodstandard
• Enhetstest
• Läsbarhet!
Software Engineering/Kristian Sandahl, Niklas Lanzén
OCTOBER 7, 2015
15
OCTOBER 7, 2015
16
Vattenfallsmodellen
class Ball(pygame.sprite.Sprite):
# Constructor. Pass in the color of the block, and its x and y position
def __init__(self):
# Call the parent class (Sprite) constructor
super().__init__()
Krav
Arkitektur
# Create the image of the ball
self.image = pygame.Surface([self.width, self.height])
Design
# Color the ball
self.image.fill((white))
# Get a rectangle object that shows where our image is
self.rect = self.image.get_rect()
Implementation
# Get attributes for the height/width of the screen
self.screenheight = pygame.display.get_surface().get_height()
self.screenwidth = pygame.display.get_surface().get_width()
Testning
# Speed in pixels per cycle
self.speed = 0
Leverans
# Floating point representation of where the ball is
self.x = 0
self.y = 0
Software Engineering/Kristian Sandahl, Niklas Lanzén
Testning
OCTOBER 7, 2015
14
Software Engineering/Kristian Sandahl, Niklas Lanzén
Iterativ modell
• Syfte: Hitta fel
• Man måste välja
sina testfall
• Olika nivåer av
testning i ett system
• Automatiserad
testning
t
Återkoppling från kund oftare
Alla krav måste inte vara kända i detalj i förväg
Delleveranser möjliga
Ett måste för användbara system?
4
10/7/2015
OCTOBER 7, 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
17
Följsamma (en. Agile) metoder
OCTOBER 7, 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
19
Forskning: Bug localization with ML
• Mycket korta
iterationer
• Undvik onödiga
investeringar
• Fokuserar på team
• Hantera ändringar
• Fokuserar på
synliga resultat
OCTOBER 7, 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
Underhåll står för ca 70% av kostnaderna
18
OCTOBER 7, 2015
Software Engineering/Kristian Sandahl, Niklas Lanzén
Kurser inom SE
Ändring
Testning, Design,
Komponenter
Påverkan
Storskalig
program‐
utveckling
Design
Specialkurser:
UX, AI, spel,
säkerhet,
parallel‐
programmering,
realtidssystem, …
SE‐teori, kandidatprojekt
Implementation
Version 1.0
20
Testning
Programmering, datalogi, matematik, teknik
Leverans
5
10/7/2015
www.liu.se
6
Download