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

Relevanta dokument
Software Engineering

RUP - Rational Unified Process

Symptom på problemen vid programvaruutveckling

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)

Metoder och verktyg för funktionssäkerhet

Praktikum i programvaruproduktion

Agil programutveckling

Regressionstestning teori och praktik

Objektorientering. Grunderna i OO

Kurser och seminarier från AddQ Consulting

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

Användarcentrerad systemdesign

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

Enhetstester på.netplattformen

Kurser och seminarier från AddQ Consulting

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

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?)

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

SKOLFS. beslutade den XXX 2017.

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

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

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

FÖRELÄSNING 8 DSV2PVT

LIPS Kravspecifikation. Institutionen för systemteknik Mattias Krysander

Curriculum Vitae - Anders Persson. Anders Persson

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

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

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

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

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

Dokumentation och presentation av ert arbete

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

Användarcentrerad systemdesign

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

Testplanering, test-first, testverktyg

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.

Användarcentrerad systemdesign

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

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Transkript:

Kort presentation Software Engineering Kristian Sandahl Niklas Lanzén Kristian Sandahl, 58 å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 KORT PRESENTATION 3 Mål med föreläsningen Niklas Lanzén, 47 å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, projektledare, produktledare, chef,... Anställd på Combitech sedan oktober 2016 Fortfarande uppdrag på Ericsson Mina erfarenhet bygger på 19 år på Ericsson Sitter med i den nämnd som bla ansvarar för U och D Motivera er att bli intresserade av alla perspektiv av ett programmeringsprojekt Motivera er att bli stolta mjukvaruutvecklare 1

OCTOBER 2, 2017 5 2 OKTOBER 2017 6 Definition av Software Engineering Många bitar skall fogas till en helhet 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) Blandningen av: Programmering Datalogi Matematik Människor Ledarskap Är det sköna med Software Engineering Program språk Metriker Versions hantering Inspektioner Integration projekt Krav Design Metoder licenser Teambuilding Inredning Hårdvara Leverans Testfall Kod modeller Verktyg processer Kompetens Förväntningar Lönsamhet Samarbete Affärsplan Underhåll OCTOBER 2, 2017 7 OCTOBER 2, 2017 8 Programvara kan användas till mycket Kravhantering specificerar förväntningar och ramar Pong Therac-25 Utmaningar: Finna verkliga behov Finna alla intressenter Välja och schemalägga Tolka och testa 2

OCTOBER 2, 2017 9 OCTOBER 2, 2017 10 Krav på väl organiserad textform Krav som användningsfall 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 2, 2017 11 OCTOBER 2, 2017 12 Arkitektur beskriver komponenter och gränssnitt Koppling och kohesion Utmaningar: Känna till vad som finns Balansera kvalitetskrav Definiera stabila gränssnitt Förbereda för ändringar 3

VAD GÖR ERICSSON I LINKÖPING? INTERNET Research & Development inom (mjukvaruutveckling) GSM LTE Plattform för basstation Underhåller och bygger globalt labb Licenshantering för mjukvara S-GW PDN- GW MME HSS GGSN SGSN HLR MGW PSTN MSC RNC BSC enodeb enodeb NodeB NodeB BTS BTS 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++ Title/Lecturer Detaljerad design Utmaningar: Realisera funktion Förbered för ändringar Begripligt system Bidrag till kvalitet Behöver ofta en förklarande text OCTOBER 2, 2017 16 4

OCTOBER 2, 2017 17 OCTOBER 2, 2017 18 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 Dynamisk modell med UML sekvensdiagram Härstammar från telekommunikation Viktig för realtidssystem Kan bli hur komplicerad som helst. EXEMPEL PÅ MODELLERING IENBASSTATION1 (2) EXEMPEL PÅ MODELLERING I EN BASSTATION 2 (2) 5

Implementation Programmering Kodstandard Enhetstest Läsbarhet! OCTOBER 2, 2017 21 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! TESTNING VARFÖR? Varför? Omfattning? 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! En bra utvecklare kan testa sin kod 6

TESTNING - OMFATTNING INTERNET 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 S-GW PDN- GW MME HSS GGSN SGSN RNC HLR MGW PSTN MSC BSC enodeb enodeb NodeB NodeB BTS BTS OCTOBER 2, 2017 27 OCTOBER 2, 2017 28 Vattenfallsmodellen Iterativ modell Krav Arkitektur Design Implementation Testning Leverans Å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 7

OCTOBER 2, 2017 29 OCTOBER 2, 2017 30 Följsamma (en. Agile) metoder Underhåll står för ca 70% av kostnaderna Mycket korta iterationer Fokuserar på team Fokuserar på synliga resultat Undvik onödiga investeringar Hantera ändringar Ändring Påverkan Design Implementation Version 1.0 Testning Leverans 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! 8

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 Forskning: Bug localization with ML OCTOBER 2, 2017 34 Alla behöver kunna jobba i team OCTOBER 2, 2017 35 EN STOLT UTVECKLARE Kurser inom SE Testning, Design, Komponenter Storskalig programutveckling Specialkurser: UX, AI, spel, säkerhet, parallelprogrammering, realtidssystem, 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! SE teori, kandidatprojekt Programmering, datalogi, matematik, teknik 9

Questions? 10