View
360
Download
1
Embed Size (px)
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
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
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
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
VIA University College
ICT-Engineering
Einstein
28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 5
E (energi)
V (hastighed)
V = c
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
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
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,..
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
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
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
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
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
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
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"
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)
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
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
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
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
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
VIA University College
ICT-Engineering
Testing an Embedded System
28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 22
VIA University College
ICT-Engineering
Testing a Single User Desktop System
28/03/2016 Software Kvalitet - Stephan Korsholm, [email protected] 23
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
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.....
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....
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
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...
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
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!
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!
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!
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
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
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
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!
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
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, ...)
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