SlideShare uma empresa Scribd logo
1 de 27
#DOH19
2
Il computer dice no!
Qualitá in un processo di
Continuous Delivery
Matteo Emili
Microsoft MVP – Azure DevOps
matteo.emili@live.com
https://mattvsts.github.io || http://twitter.com/MattVSTS
#DOH19 3
Organizer & sponsors
GetLatestVersion.it
4
“Il mio codice é perfetto
va benissimo!”
Non saprei…
5
“Ma funziona!”
Sicuramente, ma come?
6
DevOps é basato sul concetto di
qualitá
Anche il migliore artigiano ha bisogno di un aiuto.
7
L’automazione é essenziale
Serve automazione per ottenere il massimo valore
possible
8
La qualitá deve essere ovunque
Ogni passo ha margine di miglioramento
9
‘Qualitá’ o ‘Qualitá del codice’?
Sono due cose differenti…
#DOH19
Definiamo qualitá del codice
Standard industriali
Misure della complessitá di Halstead
Complessitá ciclomatica
Indice di manutenibilitá
CERT Secure Coding Standards
Lista di CWE
…
Scelte specifiche
Standard di documentazione
Regole di stile
Ri-uso di pattern
Copertura del codice
Percentuale massima di variabilitá
…
11
Gli standard industriali…
…sono standard. Sono in giro da tanto tempo.
#DOH19
Alcuni da prima che nascessi!
Matteo Emili
Nato nel 1990
Standard industriali
Complessitá ciclomatica (1976)
Misure della complessitá di Halstead
(1977)
Metriche di struttra del software (1981)
ISO/IEC 9126 Product Quality (1991)
…
13
Le scelte di un team sono variegate
Diversi fattori non-tecnici da considerare
14
E la qualitá?
La Qualitá sta nell’applicare pratiche e processi per
garantire che il risultato finale corrisponda alle
aspettative
15
Strumenti ed automazione
Ridurre le interazioni manuali al minimo possibile
#DOH19
Qual é il nostro standard qualitativo?
Strumenti
Un controllo di codice sorgente moderno
Continuous Integration
Script ed estensioni per il server di CI
Scanner della qualitá del codice
Strumenti di analisi delle vulnerabilitá
…
Pratiche
Review del codice
Iterazioni dedicate ad un fine
TDD
Ancora piú test!
Secure Development Lifecycle
…
17
C’é solo un pre-requisito
É l’unica regola della moderna ingegneria del software
18
Gli strumenti devono essere integrati
nella piattaforma CI/CD scelta
Fare altrimenti causa frizioni non necessarie, riducendo
l’adozione
19
Ora, strumenti…
Di cosa c’é realmente bisogno per aumentare la qualitá
del codice?
20
Misurare (con contesto)
Con cosa abbiamo a che fare?
#DOH19
Come e cosa misurare?
Metrica o disciplina
Analisi qualitativa del codice
Rischio di sicurezza diretto
Rischio indotto dale dipendenze (indiretto)
Analisi infrastrutturale preventiva
Strumenti raccomandati
SonarQube, Kiuwan, …
Checkmarx, BinSkim, Fortify, …
WhiteSource
AzSK, Azure Scanner, …
22
DEMO
La cavia: PartsUnlimited
https://github.com/microsoft/PartsUnlimited
23
Ogni strumento va applicato ad uno
stadio differente
Una build da 30 secondi non puó durare un’ora…
#DOH19
Esempi di quando fare cosa?
Cosa?
Analisi qualitativa del codice
Rischio di sicurezza diretto
Rischio indotto dale dipendenze (indiretto)
Analisi infrastrutturale preventiva
Quando?
Build di CI (branch principali e PR)
Ad-hoc per branch master, develop
Tutte le build senza eccezioni
Dopo il deployment in sviluppo, prima di
UAT
25
É DevSecOps?
Potrebbe (ci sono diverse definizioni), ma secondo me
é solo buon senso...
#DOH19
Grazie!
https://mattvsts.github.io/slideshare
27
Qualcosa di piú?
GetLatestVersion On-Air ogni secondo martedí!

Mais conteúdo relacionado

Semelhante a Il computer dice no!

Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...IBM Italia Web Team
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorsando.it
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Lo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTLo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTMatteo Gentile
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Giulio Roggero
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)Roberto Bettazzoni
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using EsterelAlberto Minetti
 
Software Engineering Introduction in Italian
Software Engineering Introduction in ItalianSoftware Engineering Introduction in Italian
Software Engineering Introduction in ItalianPierpaoloCaricato
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017Giulio Vian
 
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoWebinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoPar-Tec S.p.A.
 
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015Redazione InnovaPuglia
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeDeveler S.r.l.
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxGiuliano Latini
 

Semelhante a Il computer dice no! (20)

Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
05 sicurezza delle applicazioni per le aziende nel settore della pubblica uti...
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Owasp parte1-rel1.1
Owasp parte1-rel1.1Owasp parte1-rel1.1
Owasp parte1-rel1.1
 
Concorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca DatiConcorso Informatici C3 INPS 2007 - Banca Dati
Concorso Informatici C3 INPS 2007 - Banca Dati
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Lo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTLo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICT
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
 
Stop Meeting, Start Coding!
Stop Meeting, Start Coding!Stop Meeting, Start Coding!
Stop Meeting, Start Coding!
 
Produzione software
Produzione softwareProduzione software
Produzione software
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Una fugace occhiata al Test Driven Development (2006)
Una fugace occhiata al Test Driven Development  (2006)Una fugace occhiata al Test Driven Development  (2006)
Una fugace occhiata al Test Driven Development (2006)
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using Esterel
 
Software Engineering Introduction in Italian
Software Engineering Introduction in ItalianSoftware Engineering Introduction in Italian
Software Engineering Introduction in Italian
 
DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017DevOps by examples - Agile O'Day 2017
DevOps by examples - Agile O'Day 2017
 
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo modernoWebinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
Webinar 2 marzo 2021 - DevSecOps: la cybersecurity sposa lo sviluppo moderno
 
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
PERCHE' E COME SI VALUTA LA QUALITA' DEL SOFTWARE19 06_2015
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
 

Mais de Matteo Emili

Transforming the impossible
Transforming the impossibleTransforming the impossible
Transforming the impossibleMatteo Emili
 
É ora di passare a Pipeline as code
É ora di passare a Pipeline as codeÉ ora di passare a Pipeline as code
É ora di passare a Pipeline as codeMatteo Emili
 
How not to fall into the DevSecOps trap
How not to fall into the DevSecOps trapHow not to fall into the DevSecOps trap
How not to fall into the DevSecOps trapMatteo Emili
 
The computer says no v2
The computer says no v2The computer says no v2
The computer says no v2Matteo Emili
 
A selection of short stories where Azure DevOps saved the bacon
A selection of short stories where Azure DevOps saved the baconA selection of short stories where Azure DevOps saved the bacon
A selection of short stories where Azure DevOps saved the baconMatteo Emili
 
The computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps worldThe computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps worldMatteo Emili
 
Strategie di migrazione da Team Foundation Server ad Azure DevOps Services
Strategie di migrazione da Team Foundation Server ad Azure DevOps ServicesStrategie di migrazione da Team Foundation Server ad Azure DevOps Services
Strategie di migrazione da Team Foundation Server ad Azure DevOps ServicesMatteo Emili
 
What did i learn trying to migrate teams from legacy to modern?
What did i learn trying to migrate teams from legacy to modern?What did i learn trying to migrate teams from legacy to modern?
What did i learn trying to migrate teams from legacy to modern?Matteo Emili
 
Cosa ho imparato trasformando software factory?
Cosa ho imparato trasformando software factory?Cosa ho imparato trasformando software factory?
Cosa ho imparato trasformando software factory?Matteo Emili
 
PowerShell and Azure DevOps
PowerShell and Azure DevOpsPowerShell and Azure DevOps
PowerShell and Azure DevOpsMatteo Emili
 
Am i doing deployments right v2
Am i doing deployments right v2Am i doing deployments right v2
Am i doing deployments right v2Matteo Emili
 
Am i doing deployments right?
Am i doing deployments right?Am i doing deployments right?
Am i doing deployments right?Matteo Emili
 
How telemetry can be your best friend
How telemetry can be your best friendHow telemetry can be your best friend
How telemetry can be your best friendMatteo Emili
 
Containers jumpstart from a DevOps perspective
Containers jumpstart from a DevOps perspectiveContainers jumpstart from a DevOps perspective
Containers jumpstart from a DevOps perspectiveMatteo Emili
 
Far scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementFar scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementMatteo Emili
 
Development and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsDevelopment and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsMatteo Emili
 
Tools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineTools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineMatteo Emili
 
Uno sguardo a Team Foundation Server 2017
Uno sguardo a Team Foundation Server 2017Uno sguardo a Team Foundation Server 2017
Uno sguardo a Team Foundation Server 2017Matteo Emili
 
A year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTSA year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTSMatteo Emili
 
Packages as the first choice when deploying - how?
Packages as the first choice when deploying - how?Packages as the first choice when deploying - how?
Packages as the first choice when deploying - how?Matteo Emili
 

Mais de Matteo Emili (20)

Transforming the impossible
Transforming the impossibleTransforming the impossible
Transforming the impossible
 
É ora di passare a Pipeline as code
É ora di passare a Pipeline as codeÉ ora di passare a Pipeline as code
É ora di passare a Pipeline as code
 
How not to fall into the DevSecOps trap
How not to fall into the DevSecOps trapHow not to fall into the DevSecOps trap
How not to fall into the DevSecOps trap
 
The computer says no v2
The computer says no v2The computer says no v2
The computer says no v2
 
A selection of short stories where Azure DevOps saved the bacon
A selection of short stories where Azure DevOps saved the baconA selection of short stories where Azure DevOps saved the bacon
A selection of short stories where Azure DevOps saved the bacon
 
The computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps worldThe computer says no! Software Quality in the DevOps world
The computer says no! Software Quality in the DevOps world
 
Strategie di migrazione da Team Foundation Server ad Azure DevOps Services
Strategie di migrazione da Team Foundation Server ad Azure DevOps ServicesStrategie di migrazione da Team Foundation Server ad Azure DevOps Services
Strategie di migrazione da Team Foundation Server ad Azure DevOps Services
 
What did i learn trying to migrate teams from legacy to modern?
What did i learn trying to migrate teams from legacy to modern?What did i learn trying to migrate teams from legacy to modern?
What did i learn trying to migrate teams from legacy to modern?
 
Cosa ho imparato trasformando software factory?
Cosa ho imparato trasformando software factory?Cosa ho imparato trasformando software factory?
Cosa ho imparato trasformando software factory?
 
PowerShell and Azure DevOps
PowerShell and Azure DevOpsPowerShell and Azure DevOps
PowerShell and Azure DevOps
 
Am i doing deployments right v2
Am i doing deployments right v2Am i doing deployments right v2
Am i doing deployments right v2
 
Am i doing deployments right?
Am i doing deployments right?Am i doing deployments right?
Am i doing deployments right?
 
How telemetry can be your best friend
How telemetry can be your best friendHow telemetry can be your best friend
How telemetry can be your best friend
 
Containers jumpstart from a DevOps perspective
Containers jumpstart from a DevOps perspectiveContainers jumpstart from a DevOps perspective
Containers jumpstart from a DevOps perspective
 
Far scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementFar scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle management
 
Development and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsDevelopment and QA dilemmas in DevOps
Development and QA dilemmas in DevOps
 
Tools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineTools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipeline
 
Uno sguardo a Team Foundation Server 2017
Uno sguardo a Team Foundation Server 2017Uno sguardo a Team Foundation Server 2017
Uno sguardo a Team Foundation Server 2017
 
A year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTSA year of SonarQube and TFS/VSTS
A year of SonarQube and TFS/VSTS
 
Packages as the first choice when deploying - how?
Packages as the first choice when deploying - how?Packages as the first choice when deploying - how?
Packages as the first choice when deploying - how?
 

Il computer dice no!