embedded software quality

39
VIA University College ICT-Engineering Bring ideas to life VIA University College Embedded software kvalitet Udfordringer og muligheder 28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 1

Upload: infinit-innovationsnetvaerket-for-it

Post on 26-Jan-2017

360 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Embedded Software Quality

VIA University College

ICT-Engineering

Bring ideas to life VIA University College

Embedded software kvalitet Udfordringer og muligheder

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 1

Page 2: Embedded Software Quality

VIA University College

ICT-Engineering

Indhold

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 2

Infinit ESE Højniveau sprog Model baseret Statisk Analyse

Software Kvalitet Generelt Indlejrede Systemer 1. Indlejret Software Arktektur 2. Forbedring af kvalitet og forudsigelighed

Page 3: Embedded Software Quality

VIA University College

ICT-Engineering

Min baggrund

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 3

Master Computer Science (1998)

Ph.D. Embedded Programming (2013)

Embedded Programming Big Scale Programming

Page 4: Embedded Software Quality

VIA University College

ICT-Engineering

Hvorfor?

– For mig: • Interesse! • Samarbejdspartnere?

– For jer: • En stund hvor I kan tænke over - ikke hvad I arbejder med - men hvordan I

gør det • En inspiration (provokation) til at få gode ideer til at optimere jeres

processer • 2 simple, konkrete teknikker til forbedring af software kvalitet • Ca. 35 minutters oplæg, efterfølgende uformel diskussion

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 4

Page 5: Embedded Software Quality

VIA University College

ICT-Engineering

Einstein

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 5

E (energi)

V (hastighed)

V = c

Page 6: Embedded Software Quality

VIA University College

ICT-Engineering

Indlejret Software Profil (1)

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 6

E (effort)

V (funktionalitet)

Ustruktureret SW udvikling

Sammenbruddets rand

Page 7: Embedded Software Quality

VIA University College

ICT-Engineering

Indlejret Software Profil (2)

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 7

E (effort)

Tid

delvis struktureret SW udvikling

Debugging

Værdiskabende aktiviteter

Page 8: Embedded Software Quality

VIA University College

ICT-Engineering

Mål

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 8

E (effort)

Tid

Værdiskabende aktiviteter (A)

Andre aktiviteter (B) Debugging, testing,..

Page 9: Embedded Software Quality

VIA University College

ICT-Engineering

Mål

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 9

E (effort)

Tid

Værdiskabende aktiviteter (A)

Andre aktiviteter (B) Debugging, testing,..

Høj A, lav B! 2 vigtige teknikker træder frem

1) Adskillelse af hardwarenær software og forretningsbærende software

2) Test dreven udvikling af indlejrede systemer

Page 10: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 10

bits, bytes, arrays of data Customers, requirements Classes, types and data objects

Page 11: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 11

Hard real-time Devices drivers Functional APIs ISR Sensors and actuartors

Soft real-time Architecture Design patterns UI

Page 12: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 12

Tæt/uomgængeligt interface, både for

1. Menneskelige ressource/roller

2. Software

Page 13: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 13

Menneskellige ressourcer

1. Forskellige udviklere for hvert område 2. (eller) forskellige roller

Meget forskellige principper og traditioner hersker i de 2 områder

Page 14: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 14

Software

"Boardet" PC Et kabel

Page 15: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 15

Software

Det forretningsbærende SW skal være 100% adskilt fra det hardwarenær

Det forretningsbærende er portabelt og kan køre på en host PC

Båndbredden af data gennem interfacet skal være "håndterbart"

Page 16: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 16

"Optag" data gennem kablet Simulering (debugging) Statisk analyse (e.g. valgrind) Fejl rapportering

DECT

Radio

UI

Eksemple (Kirk Telecom)

Page 17: Embedded Software Quality

VIA University College

ICT-Engineering

Hardwarenær vs. forretningsbærende SW

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 17

Et HAL (Hardware Abstraktions Lag) er bare godt design, men

Det forretningsbærende lag kan nemmere analyseres (valgrind, UPPAAL, etc) Inddrage højniveau sprog til implementation af (dele af) det forretningsbærende lag

Page 18: Embedded Software Quality

VIA University College

ICT-Engineering

Mål

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 18

E (effort)

Tid

Værdiskabende aktiviteter (A)

Andre aktiviteter (B) Debugging, testing,..

Høj A, lav B! 2 vigtige teknikker træder frem

1) Adskillelse af hardwarenær software og forretningsbærende software

2) Test dreven udvikling af indlejrede systemer

Page 19: Embedded Software Quality

VIA University College

ICT-Engineering

Test dreven udvikling af indlejrede systemer

Typisk udviklingsforløb:

1) Programmer ny feature 2) Test den nye feature på dit eget bord 3) Få en kollega til at gøre det samme (hvis han har tid) 4) Fejl! Find fejlen og ret den. Gå til 2) 5) Test hele systemet så godt du kan 6) Fejl! Noget andet er gået i stykker. Find fejlen og ret den. Gå til 2) 7) Pyha! Det lykkedes....

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 19

Page 20: Embedded Software Quality

VIA University College

ICT-Engineering

Typisk udviklingskultur

Konsekvenser af den typiske udviklingskultur:

– Tiden går med fejlfinding – Uforudsigelig tidshorisont - nogle gange meget hurtig, oftest

langsommere end forventet – Dårligt arbejdsmiljø,

• Stress! Hvad har jeg mon nu ødelagt??? • Hvis skyld er det at det ikke virker? • Virker det? Hvad er definitionen på at det virker?

– Vi har slet ikke tid til at gøre det bedre - "snuden i sporet" på den dårlige måde

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 20

Page 21: Embedded Software Quality

VIA University College

ICT-Engineering

Automatiserede tests

Automatiserede Tests og Test Dreven Udvilking (TDD)!

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 21

Test Program

PC

Program under test

PC/MCU

Kontrol

Lad os se på 3 forskellige eksempler på et system for automatisere tests 1. Testing an embedded system 2. Testing a single user desktop system 3. Testing a distributed system

Og dernæst hvad det betyder for hvordan man bruger TDD

Page 22: Embedded Software Quality

VIA University College

ICT-Engineering

Testing an Embedded System

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 22

Page 23: Embedded Software Quality

VIA University College

ICT-Engineering

Testing a Single User Desktop System

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 23

Page 24: Embedded Software Quality

VIA University College

ICT-Engineering

Testing a Distributed System

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 24

C# test program Simulates scanner and floor software

Page 25: Embedded Software Quality

VIA University College

ICT-Engineering

Automatiserede tests

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 25

Test Program

PC

Program under test

PC/MCU

Kontrol

Det er svært at opbygge et automatiseret test system, og det er svært at vedligeholde. Mere om det senere.....

Page 26: Embedded Software Quality

VIA University College

ICT-Engineering

Automatiserede tests og TDD

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 26

Test dreven udviklingsforløb:

1) Udvid test program til at teste ny feature 2) Kør testen. Den skulle gerne fejle! 3) Programmer et lille skridt af den ny feature. Ikke det hele på een gang! 4) Kør alle test 5) Fejl? Smid det skridt væk du lige har lavet. Gå til 3) og prøv igen, denne

gang et mindre skridt 6) Gentag 3) til 5) indtil feature er færdig og den nye feature test også kører 7) Pyha! Det lykkedes....

Page 27: Embedded Software Quality

VIA University College

ICT-Engineering

Automatiserede tests

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 27

Fordele ved testbart software og automatiserede tests

– Meget mindre debugging, meget mere udvikling • Tid går fra debugging til test skrivning. Hvad er mest produktivt?

– Testbart software er pænt modulariseret • Features kan tages ud af kontekst og bruges i nye produkter • Moduler kender deres afhængigheder og kan nemt flyttes til nye

platforme (f.eks. fra MCU til PC, PC til Andorid, ...) – Tests er en nøjagtig kravspecifikation. Tests er en fremragende

dokumentation – Refaktoreringer bliver meget nemmere. Vi er ikke længere bange for vores

kode

Page 28: Embedded Software Quality

VIA University College

ICT-Engineering

Udfordringer "Vi kan ikke teste enkelte features. Det hele hænger sammen!"

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 28

Det er da et kæmpe problem! Det skal løses! At gøre software testbart forøger dets kvalitet på en række vigtige punkter...

Page 29: Embedded Software Quality

VIA University College

ICT-Engineering

Udfordringer

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 29

"Du skal ikke skrive test software! Du skal skrive produkt software!"

Nej!

Du skal ikke skrive produkt software! Du skal skrive test software! Produkt software, det kan vi autogenerere, eller få nogen andre til at skrive

Testen indeholder og udtrykker vores unikke domæne viden Testen er det primære

Testen er det vigtigste! Den må vi aldrig miste!

Test Program

PC

Program under test

PC/MCU

Kontrol

Page 30: Embedded Software Quality

VIA University College

ICT-Engineering

Udfordringer

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 30

"Ok, så! Vi sætter Benjamin til at lave test systemet. Torben må vi ikke forstyrre!"

Nej!

Torben, den dygtigste mand, kernemedarbejderen, det er ham som skal få test systemet op at køre

Benjamin skal bruge det når han laver produkt softwaren. Det er nemt hvis man har et ordentlig test system!

Det er meget svært at finde fejl - det er kun Torben der kan det - men vi skal ikke længere finde fejl

Debugging er forbudt!

Page 31: Embedded Software Quality

VIA University College

ICT-Engineering

Udfordringer

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 31

"Du skal springe testen over! Kunden skal have det i morgen!"

Nej!

Kunden skal have at vide at han ikke kan få det i morgen, og hvis det ikke er acceptablet så er han ikke kunde her længere

I øvrigt opstår ovenstående situation ikke mere, for nu kan vi faktisk begynde at

forudsige hvor lang tid ting tager!

Page 32: Embedded Software Quality

VIA University College

ICT-Engineering

Udfordringer

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 32

"Vi kan ikke stoppe udviklingen og refaktorere det hele så det kan testes!"

Det er faktisk rigtig!

Det er nødvendig at massere og ændre eksisterende software og gøre det testbart i små, inkrementielle skridt

Det er ikke nemt!

Det er en stor udfordring!

Men man kan hvad man vil - især med hjælp fra Torben og en ledelse som bakker

op om det!

Page 33: Embedded Software Quality

VIA University College

ICT-Engineering

Automatiserede tests

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 33

Flere fordele ved testbart software og automatiserede tests

– Vi ved hvornår noget virker - der er en fast definition på dette! – Markant forbedring af arbejdsmiljøet! Udvikleren kender konsekvenserne

af sine handlinger – Den skridtvise introduktion af features sikrer hyppige kode

synkroniseringer. Benjamin sidder ikke længere med sin egen udgave af koden i ugevis. Han er ikke bange for at synkronisere

– Outsourcing bliver meget nemmere – 3rd party contributions bliver meget nemmere

Page 34: Embedded Software Quality

VIA University College

ICT-Engineering

TDD opsummering

– Opbyg et system til automatiserede tests af jeres software – Sæt den dygtigste mand til at lave og vedligeholde testsystemet – Skriv testen først - derefter produkt softwaren – Implementer en feature i små skridt – Synkroniser og test mellem hver skridt - flere gange om dagen – Smid kode ud og start forfra med et skridt, hvis det ikke virker. Lad være med

at lede efter fejlen – Gå aldrig på kompromis! Aldrig!

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 34

Page 35: Embedded Software Quality

VIA University College

ICT-Engineering

Forbedring af software kvalitet

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 35

Græsrødderne

Mellemlederne

Cheferne

Virksomhedskultur

Page 36: Embedded Software Quality

VIA University College

ICT-Engineering

Forbedring af software kvalitet

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 36

Græsrødderne

Mellemlederne

Cheferne

Virksomhedskultur Strategi

– Det starter med "Torben" – En ildsjæl laver den første prototype på sit eget bord – Flere og flere kolleger inspireres og deltager – Projektlederen opdager at softwaren bliver meget bedre og

ting går hurtigere – "Hvad er der sket?" – De andre grupper opdager at "det går rigtig godt inde ved siden af" – "Hvad er der sket?" – Cheferne opdager at projekterne kører bedre, hurtigere og mere

forudsigeligt – Nu er virksomhedskulturen ændret! Det er det svære!

Page 37: Embedded Software Quality

VIA University College

ICT-Engineering

Forbedring af software kvalitet

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 37

Græsrødderne

Mellemlederne

Cheferne

Virksomhedskultur Gode råd

– Software kvalitet er ikke et "work item" – E.g. Test skrivning og vedligehold af automatiseret test system

skal ikke optræde som en aktivitet i planlægningen – Spørger udviklere normalt om de må få lov at bruge

tid på at indrykke deres kode? – Software kvalitets tiltag skal ikke italesættes - hverken internt eller

eksternt

Page 38: Embedded Software Quality

VIA University College

ICT-Engineering

Konklusion (1)

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 38

E (effort)

Tid

Værdiskabende aktiviteter (A)

Andre aktiviteter (B) Debugging, testing,..

Høj A, lav B! 2 vigtige teknikker træder frem

1) Adskillelse af hardwarenær software og forretningsbærende software

2) Test dreven udvikling af indlejrede systemer

Software kvalitet er en forudsætning for alt andet (højniveau sprog, statisk analyse, ...)

Page 39: Embedded Software Quality

VIA University College

ICT-Engineering

Konklusion (2)

28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 39

Inden for "intelligente" industri produkter i DK: – Der ligger et stort uudnyttet potential i mange virksomheder inden for

forbedring af software kvalitet – Dernæst ligger der et stort uudnyttet potentiale for yderligere forbedringer

ved at inddrage højniveau sprog, modelbaseret udvikling og værktøjer til statisk analyse

– Med dette vil man kunne lave mere kompliceret software til en lavere pris og med højere grad af forudsigelighed

– Vi kan i DK sagtens konkurere med og overgå udlandet hvis vi fokuserer på ovenstående