Software Engineering

Relevanta dokument
Software Engineering. Mål med föreläsningen 10/2/2017. Kort presentation

Symptom på problemen vid programvaruutveckling

RUP - Rational Unified Process

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Objektorienterad programmering

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Presentation. Fredrik Runnsjö 1996 Utvecklare 2004 Testare ~2006 Scrum/Canban

RUP Rational Unified Process. 17 november 2004

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

Classes och Interfaces, Objects och References, Initialization

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Objektorienterad analys och design

12 principer of agile practice (rörlig)

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Inkapsling (encapsulation)

Praktikum i programvaruproduktion

Metoder och verktyg för funktionssäkerhet

Agil programutveckling

Regressionstestning teori och praktik

Objektorientering. Grunderna i OO

Kurser och seminarier från AddQ Consulting

Användarcentrerad systemdesign

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

Dokumentation och presentation av ert arbete

Föreläsning 15: Repetition DVGA02

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Kurs-PM fo r HI1028, Projektkurs inom programvaruutveckling, VT16

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

Grundkurs i programmering - intro

Dokumentation och presentation av ert arbete

Diagnos och design av Verksamhet och IT, 7, 5 HP. Föreläsning 2 Sofie Pilemalm

Agil utveckling ställer nya krav på upphandling. Roland Bäcklin, Jaybis Konsult AB

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Kurser och seminarier från AddQ Consulting

Enhetstester på.netplattformen

Agil testning i SCRUM

QC i en organisation SAST

Datavetenskap. Therese Sundström. Utveckling av ett affärssystem med. Unified Process. Examensarbete, D-nivå 30 ECTS 2005:05

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Yanting Larsen. Mjukvaruutvecklare. Cybercom Group

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Kursinformation. Metodik för programvaruutveckling. Utvecklingsprocessen för programvara. Innehåll. Processmodell. Exempel

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Therese Hansson & Magnus Jonsson. Motivationsfaktorer - Test inom Agila utvecklingsprojekt

Objektorienterad konstruktion

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

När? Varför? För vem? Resultat? (Artefakter?)

Testplanering, test-first, testverktyg

UML use cases. Mikael Söderström Institutionen för informatik Umeå universitet

Arkitektur Michael Åhs

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Användarcentrerad systemdesign

SKOLFS. beslutade den XXX 2017.

Deluppgift 2 Kravhantering a) (2p) När man diskuterar krav brukar man ange två olika typer av krav. Beskriv dessa och ge exempel.

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

IPv6 i Mobilnät. Mattias Karlsson. mattias.karlsson@telenor.com

Laboration 1: Design av applikation för uthyrning av maskeradkläder

FÖRELÄSNING 8 DSV2PVT

Curriculum Vitae - Anders Persson. Anders Persson

LIPS Kravspecifikation. Institutionen för systemteknik Mattias Krysander

Copyright Syntell AB 1

ENIMEOS ΣOEMINE. Krav och trender. Praktisk kravhantering och annat nyttigt från industrin. Christian Ehrenborg

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

LIPs Martin Lindfors ChrKr Projdir2017_sbd.doc CKr

Objektorienterad analys och design

Test av Metria Maps avseende Användbarhet och prestanda

Programinformation för. Webb, internet och programvaruteknik, 180 högskolepoäng

Semantic and Physical Modeling and Simulation of Multi-Domain Energy Systems: Gas Turbines and Electrical Power Networks

Projektdirektiv Oskar Ljungqvist Sida 1. Kund/Examinator: Daniel Axehill, Reglerteknik/LiU

Idag. EDAA35: Utvärdering av programvarusystem. Mål. Innehåll. Kursmoment. Lärare

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

Dokumentation och presentation av ert arbete

Användarcentrerad systemdesign

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Agile-metoder, XP och ACSD

SAST Q1. Som att börja arbeta på ett nytt jobb. Testautomatisera med Modell-baserad testning

TDDI02. Programmeringsprojekt, Föreläsning 2. Filip Strömbäck. Med utgångspunkt i tidigare slides av Jonas Lindgren

Alla rättigheter till materialet reserverade Easec

Linköpings universitet 1

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Programmering. Hur, var, när och varför. 22 November. Lars Ohlén Tieto

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers

Föreläsning 4: Designprocessen

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Robert Grannerud. Sammanfattning

Java Programmer for JDK Developer for Java 2 Platform 2002

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Transkript:

Software Engineering Kristian Sandahl Niklas Lanzén Kort presentation Kristian Sandahl, 57 år Började Datateknik 1978 Första arbetsgivaren efter examen var LiU Konsult 1986-1987 Ericsson 1995-2001 olika roller: forskning, utbildning, mjukvaruutvecklare, projektledare, Åter på LiU sedan 2001 Forskar inom industriell programvaruutveckling Undervisar i projektkurser Samverkanskoordinator Koordinerar profilen storskalig mjukvaruutveckling 1

Kort presentation Niklas Lanzén, 46 år Började Datateknik 1992 Första arbetsgivaren efter examen var ett konsultbolag Första uppdraget var på Ericsson Många olika roller: mjukvaruutvecklare, testare, projektledare, Anställd på Ericsson sedan 2008 Många olika roller: designer, produktledare, chef,... Jobbar som projektledare Anställd på Combitech sedan oktober 2016 Sitter med i den nämnd som bla ansvarar för U och D Mål med föreläsningen Motivera er att bli intresserade av alla perspektiv av ett programmeringsprojekt Motivera er att bli stolta mjukvaruutvecklare 2

OCTOBER 3, 2016 5 Definition av Software Engineering Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (ISO/IEC/IEEE 24765:2010 Systems and software engineering Vocabulary) 3 OKTOBER 2016 6 Många bitar skall fogas till en helhet Blandningen av: Programmering Datalogi Matematik Människor Ledarskap Är det sköna med Software Engineering Program språk Metriker Versions hantering modeller Inspektioner Integration projekt Krav Design Metoder licenser Underhåll Kod Affärsplan Teambuilding Inredning Hårdvara Leverans Testfall Verktyg processer Kompetens Förväntningar Lönsamhet Samarbete 3

OCTOBER 3, 2016 7 Programvara kan användas till mycket Therac-25 Pong OCTOBER 3, 2016 8 Kravhantering specificerar förväntningar och ramar Utmaningar: Finna verkliga behov Finna alla intressenter Välja och schemalägga Tolka och testa 4

OCTOBER 3, 2016 9 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 The user shall be able to add an item to the shopping basket. 3.3 Performance requirements 3.3.1 Response time The minimum response time is 2.0 seconds. 3.4 Design constraints The system shall be implemented in php. OCTOBER 3, 2016 10 Krav som användningsfall 5

OCTOBER 3, 2016 11 Arkitektur beskriver komponenter och gränssnitt Utmaningar: Känna till vad som finns Balansera kvalitetskrav Definiera stabila gränssnitt Förbereda för ändringar OCTOBER 3, 2016 12 Koppling och kohesion 6

Vad gör Ericsson i Linköping? Research & Development inom (mjukvaruutveckling) GSM LTE Plattform för basstation Underhåller och bygger globalt labb Licenshantering för mjukvara Ericsson Internal Ericsson AB 2015 2015-10-09 Page 13 INTERNET PDN- GW HSS GGSN HLR PSTN SGSN S-GW MME MGW MSC RNC BSC enodeb enodeb NodeB NodeB BTS BTS Ericsson Internal Ericsson AB 2015 2015-10-09 Page 14 7

Mjukvaruutveckling på en basstation En beräkningstung del Hårdvara: DSP-kluster med många kärnor Språk: C En kontrolldel Hårdvara: vanlig CPU med få kärnor Språk: Modellering / C++ Ericsson Internal Ericsson AB 2015 2015-10-09 Page 15 Title/Lecturer OCTOBER 3, 2016 16 Detaljerad design Utmaningar: Realisera funktion Förbered för ändringar Begripligt system Bidrag till kvalitet Behöver ofta en förklarande text 8

OCTOBER 3, 2016 17 Statisk beskrivning med UML klassdiagram Mycket vanligt diagram Kan innehålla detaljer om exakta attribut och funktioner Kan generera kodskelett Kan genereras från kod OCTOBER 3, 2016 18 Dynamisk modell med UML sekvensdiagram Härstammar från telekommunikation Viktig för realtidssystem Kan bli hur komplicerad som helst. 9

Exempel på modellering i en basstation 1 (2) Exempel på modellering i en basstation 2 (2) 10

OCTOBER 3, 2016 21 Implementation Programmering Kodstandard Enhetstest Läsbarhet! 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 () # Create the image of the ball self.image = pygame.surface([self.width, self.height]) # Color the ball self.image.fill((white)) # Get a rectangle object that shows where our image is self.rect = self.image.get_rect() # 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() # Speed in pixels per cycle self.speed = 0 # Floating point representation of where the ball is self.x = 0 self.y = 0 Programmeringstekniker VS Domänkunskap Tekniker Språk C/C++, Java, Python, Algoritmer/mönster Modellering Domäner Ericsson telekom Saab flyg Apputveckling på Android Konsekvenserna skiljer sig om man gör fel Hur? En stolt utvecklare försöker förstå både teknikerna och domänen som används för att kunna utveckla bra kod! Ericsson Internal Ericsson AB 2015 2015-10-09 Page 22 11

Varför? Omfattning? En bra utvecklare kan testa sin kod Ericsson Internal Ericsson AB 2015 2015-10-09 Page 23 Testning Varför? Varje användare som råkar ut för en bugg blir besviken Konsekvensen blir dock olika beroende på vilken mjukvara som drabbas business drabbas på olika sätt Svårt att prediktera hur lång tid det tar att utveckla mjukvara utan tester När är du klar om du inte kan visa att kraven är uppfyllda? Svårt att lägga till funktionalitet i mjukvara utan tester Hur vet du att du inte gör sönder tidigare funktioner? En stolt utvecklare lämnar inte ifrån sig otestad mjukvara! Ericsson Internal Ericsson AB 2015 2015-10-09 Page 24 12

Testning - omfattning Olika nivåer av tester Basic-/modul-test tex testning av funktioner Funktionstest tex testning av delsystem Systemtest tester på hela systemet, tex av prestanda, stabilitet Testkoden kan vara lika omfattande som själva produkten Viktigt att stor del av testningen är automatisk Kostsamt att köra tester manuellt Med continuous integration kan varje litet funktionstillägg testat var för sig => enklare att hitta vad som introducerade ett ev fel Ericsson Internal Ericsson AB 2015 2015-10-09 Page 25 INTERNET PDN- GW HSS GGSN HLR PSTN SGSN S-GW MME MGW MSC RNC BSC enodeb enodeb NodeB NodeB BTS BTS Ericsson Internal Ericsson AB 2015 2015-10-09 Page 26 13

OCTOBER 3, 2016 27 Vattenfallsmodellen Krav Arkitektur Design Implementation Testning Leverans OCTOBER 3, 2016 28 Iterativ modell Å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? t 14

OCTOBER 3, 2016 29 Följsamma (en. Agile) metoder Mycket korta iterationer Fokuserar på team Fokuserar på synliga resultat Undvik onödiga investeringar Hantera ändringar OCTOBER 3, 2016 30 Underhåll står för ca 70% av kostnaderna Ändring Påverkan Design Implementation Version 1.0 Testning Leverans 15

Ericsson Internal Ericsson AB 2015 2015-10-09 Page 31 Hur jobbar vi i team på Ericsson? 7-9 personer XFT Cross Functional team Alla discipliner i samma team (design, implementation, test) Ett team kan ta ett antal krav och designa, implementera och testa dem så att de nya kraven kan levereras till kund Bestående team som lär sig jobba ihop Nästan alla team jobbar agilt Alla utvecklare jobbar i team! Ericsson Internal Ericsson AB 2015 2015-10-09 Page 32 16

Hur jobbar vi mellan team på Ericsson? Alla team levererar kod till samma kodbibliotek Ställer stora krav på testning innan leverens Helst en funktion som implementeras av ett team Implementera funktionen iterativt så att det alltid går att leverera något som skapar värde En stor men viktigt ny funktion kan behöva delas mellan flera team Många team jobbar med stora produkter Finns produkter med > 100 team utspridda över världen Alla behöver kunna jobba i team Ericsson Internal Ericsson AB 2015 2015-10-09 Page 33 OCTOBER 3, 2016 34 Forskning: Bug localization with ML 17

OCTOBER 3, 2016 35 Kurser inom SE Testning, Design, Komponenter Storskalig programutveckling Specialkurser: UX, AI, spel, säkerhet, parallelprogrammering, realtidssystem, SE teori, kandidatprojekt Programmering, datalogi, matematik, teknik En stolt utvecklare Lämnar inte ifrån sig otestad mjukvara! Försöker förstå både teknikerna och domänen som används för att kunna utveckla bra kod! Bidrar till teamet! Ericsson Internal Ericsson AB 2015 2015-10-09 Page 36 18

Questions? 19