SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Daniele Mondello
Palermo 29/04/2013
Chi Sono2 About me
Nasco nel 1971 a Palermo e dopo un’ infanzia fatta di cartoni
animati, Super Santos, libri e Coin-Up nell’estate dell’86 ricevo in
dono un COMMODORE 64 che mi cambia la vita.
Daniele Mondello
• Management
• Team Leader
• Quality Manager
• Web Architect
• Healthcare IT Consultant
• UX Expert
• Ubuntu, CentOS
• Mac OSX
• Windows
• IOS
• Android
• Embedded OS: Raspbian,Pidora
• PHP (5 years)
• Javascript (10 years)
• ASP(12 years)
• MySQL (5 years)
• HTML, CSS3 (14 years)
• Ruby, Rails (1 year)
Developer
O.S.
General
Skill
19863
Diego!
Prodotto Industriale4
Ric. MercatoAn. Normative An. Rischi
Cond. Utilizzo
Sc. Prodotto
Req. Sistema
Man. Utente
An. Requisiti CONTINUOUS INTEGRATION
-Test Responsive
-Test Javascript
-Ottimizzazione
-Test Usability
-Test Sicurezza
-Test C&P
-Test Style
-Test PHP
-Test DB
-TestW3C
REGOLE DI SVILUPPO
[Regole di Stile]
[Regole DB]
[Regole Documentazione Codice]
[Regole di Sviluppo]
[Regole di Sistema]
Casi D’uso Wireframes
Pr. Esecutivo
SOUP
CVSServer CI
Project
Management
BETA
SPERIMENTAZIONE
RILASCIO V. 1
Progettazione
Sviluppo
Cosa è la Continuous Integration?5
CVS
CI
SERVER
IDE
Continuous Integration
”E’ una pratica di sviluppo software dove i membri di un team integrano il loro lavoro frequentemente, almeno una
volta al giorno. Ogni integrazione è verificata da una build automatica (inclusi i test) per individuare gli errori
d’integrazione il più rapidamente possibile.”
PM
TOOL
…..e la Continuous Delivery?6
SVILUPPO INTEGRAZIONE BUILD QA Code DEPLOY
Continuous Integration
Continuous Delivery
Cosa è un Control Version System?7
E' un tool che permette il controllo di versione (versioning), cioè la
gestione di versioni multiple di un insieme di informazioni.
CVS
CVS: GIT8
02
Dividere lo sviluppo del
progetto in più linee
indipendenti , chiamati
"rami ", che possono
evolvere separatamente
03
Periodicamente ricombinare i rami
in un processo per riconciliare le
modifiche apportate in due o più
ram
01
Esaminare lo stato di un progetto
nel più breve tempo possibile
04
Mostrare le differenze tra le varie versioni
del progetto
CVS
Funzionamento GIT9
File A
Version 1 Version 2 Version 3 Version 4 Version 5
File B
File C
File A
File C
File A1
File B
File C1
File B1 File B
File C2
File B1
File A1
File B
File C3
File B1
File A2
File B1
CVS
FLUSSO DI LAVORO10
Build Privata
Server CI
Lancio di una build privata
Lo sviluppatore effettua una Build
Privata sulla propria postazione così da
integrare eventuali cambiamenti
effettuati dagli altri membri del team e
verificato che l’integrazione dia un
sistema funzionante.
Commit sul CVS del codice
Lo sviluppatore conclusa l’attività
effettua un commit sul repository del
sistema di controllo di versione. 5
Lancio SCRIPT su server CI
I l s e r v e r d i C I a c c o r t o s i d e l
cambiamento scarica il codice
aggiornato e lancia uno script di build
così da integrare questi cambiamenti e
da ricostruire il sistema e ri-testarlo ed a
seguito del risultato della build, genera
un feedback (es: email) visibile al team
CVS
DELIVERY
MOTORE CI e BUILD11
Il sistema di CI viene utilizzato per:
- collezionare il codice dai repository remoti
- lanciare i test automatici
- lanciare test statici sul codice
- generare report più o meno complessi
- effettuare delle misurazioni rispetto a delle metriche
- notificare a chi di dovere
Privata
Test sul codice
Test PHP
Test Javascript
Deploy
Minifizzazione
Cambio URL
Disattivazione Warning
Pubblica
Test Integrazione
Prod. Documentazione
Test Sicurezza
Differenti tipi di BUILD
CI
SERVER
JENKINS: I PROGETTI12
CI
SERVER
JENKINS: LA BUILD 1/213
CI
SERVER
JENKINS: LA BUILD 2/214
CI
SERVER
Metriche del software15
Affidabilità
Le metriche software sono degli standard per misurare alcune proprietà del
software permettendo di valutare funzionalità e il rapporto costi/efficacia, così
da realizzare software di qualità.
Efficienza Sicurezza Manutenibilità
High Quality Code
CI
SERVER
PHPCS
PHP Code Sniffer
Tools: PHPLOC16
Permette di misurare le dimensioni di un progetto PHP, ottenendo informazioni utili riguardanti il numero di elementi presenti.
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Informazioni sulle dimensioni di un progetto
linee di codice, linee di codice commentate e non commentate, numero di
classi,dimensione media delle classi, media di funzioni nelle classi.
Informazioni sulle complessità di un progetto
Complessità ciclomatica rispetto alle linee di codice.
Informazioni sulle struttura
Numero di Namespace, Interfacce, Classi( Astratte e Concrete), Numero di metodi
(pubblici e Non), Numero Funzioni e Numero Costanti.
Autore: S. Bergmann
PHPCS
PHP Code Sniffer
Tools: PHP DEPEND17
Software che esegue l'analisi statica del codice sorgente.
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Analizza il codice sorgente di
un applicativo PHP e ne
produce un albero sintattico
astratto (AST)
In output genera:
due grafici
PHPCS
PHP Code Sniffer
Tools: PHP DEPEND18
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Coupling
Inheritance
Number Of Methods
Number Of Packages
Size & Complexity
Number of Classes
Lines Of Code
Cyclomatic Complexy
CALLS
FANOUT
Coupling
Average Num of Derived Classes
Inheritance
Average Hierarchy Height
Size &
Complexity
Software che esegue l'analisi statica del codice sorgente.
PHPCS
PHP Code Sniffer
Tools: PHP DEPEND19
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Software che esegue l'analisi statica del codice sorgente.
PHPCS
PHP Code Sniffer
Tools: PHP Mess Detector20
Analizza il codice sorgente di un progetto PHP e cerca di estrarne i potenziali problemi, applicando un
insieme predefinito di regole per l’analisi del codice.
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code Regole sulle
Dimensioni
Regole su
Codice
inutilizzato
Regole
Design
Regole
attribuzione
nomi
PHPCS
PHP Code Sniffer
Tools: PHP Mess Detector21
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Regole sulle
Dimensioni
Regole su
Codice
inutilizzato
Regole
Design
Cyclomatic Complexity
NPath Complexity
ExcessiveMethodLength
ExcessiveClassLength
ExcessivePublicCount
TooManyFields
ExcessiveClassComplexity
TooManyFields
UnusedPrivateField
UnusedLocalVariable
ExitExpression
EvalExpression
GotoStatement
NumberOfChildren
DepthOfInheritance
CouplingBetweenObjects
Regole
attribuzione
nomi
ShortVariable
LongVariable
ShortMethodName
ConstructorWithName
ConstantNaming.
BooleanGetMethod.
PHPCS
PHP Code Sniffer
Tools: PHP Code Sniffer22
Tool per l’analisi del codice che rileva violazioni delle convenzioni di scrittura (coding standard), così da aiutare a mantenere il
codice pulito, consistente e manutenibile.
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Agavi
AWS SDK for PHP (Amazon Web Services)
Apache log4php
Assetic and Buzz
Aura Project and Solar Framework
CakePHP
Composer and Packagist
Contao Open Source CMS
Doctrine
Drupal
eZ Publish
TYPO3 Flow
Jackalope
Joomla
Laravel
PEAR
Phalcon
PHPCS
PHP Code Sniffer
Tools: PHP Code Sniffer23
PHP Framework Interoperability Group
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
Phing
phpBB
phpDocumentor
PPI Framework
PrestaShop
Propel
PyroCMS
SabreDAV
Sculpin
Stash
SugarCRM
Symfony2
The community at large
Wikibase and Semantic MediaWiki
Yii framework
Zend Framework 2
Zikula
PHPCS
PHP Code Sniffer
Tools: PHP Code Sniffer24
Tool per l’analisi del codice che rileva violazioni delle convenzioni di scrittura (coding standard), così da
aiutare a mantenere il codice pulito, consistente e manutenibile.
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
PSR 1
PSR-1 Garantisce un elevato livello
di interoperabilità tecnica tra
codice PHP condiviso.
PSR-2 Fornisce una guida dello
stile di codifica da adottare nella
scrittura codice estendendo il
PSR-1
PSR-3 Descrive una interfaccia
comune per le librerie di log.
PSR 2
PSR 0
PSR 3 PSR 4
PSR-4 Descrive un nuovo
standard per l’autoloading
FPSR-0 descrive i requisiti necessari ai
quali ci si deve uniformare per garantire
l''interoperabilità tra gli autoloader
.
PHPCS
PHP Code Sniffer
Tools: PHPCPD25
Strumento che rivela la presenza di codice duplicato all’interno del codice sorgente
PHP DEPEND
PHPCPD
Copy/Paste Detector
PHPMD
PHP Mass Detector
PHPLOC
PHP Lines of Code
PHP User Group
PALERMO
http://olomedia.it
GRAZIE!
info@danielemondello.it
@dmondello
daniele.mondello

Weitere ähnliche Inhalte

Ähnlich wie Continous Delivery & HQ Code

Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Fullone
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!Matteo Emili
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using EsterelAlberto Minetti
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewFrancesco Sciuti
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoProfesia Srl, Lynx Group
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2Bkino2k
 
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
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 

Ähnlich wie Continous Delivery & HQ Code (20)

Kotlin hexagonal-architecture
Kotlin hexagonal-architectureKotlin hexagonal-architecture
Kotlin hexagonal-architecture
 
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open SourceFrancesco Trucchia: Rapid Application Developement con strumenti Open Source
Francesco Trucchia: Rapid Application Developement con strumenti Open Source
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using Esterel
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code Overview
 
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successoWSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
WSO2 MASTER CLASS ITALIA #9 - Come creare API di successo
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
#LRIS2014 - MessageBus, Cluster communication and Caching on B2B
 
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
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Software libero e open source a costo zero per la grafica
Software libero e open source a costo zero per la graficaSoftware libero e open source a costo zero per la grafica
Software libero e open source a costo zero per la grafica
 
Hexagonal architecture ita
Hexagonal architecture itaHexagonal architecture ita
Hexagonal architecture ita
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Introduzione ros
Introduzione rosIntroduzione ros
Introduzione ros
 

Mehr von Daniele Mondello

Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoImpatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoDaniele Mondello
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...Daniele Mondello
 
Linux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciLinux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciDaniele Mondello
 
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoGdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoDaniele Mondello
 
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Daniele Mondello
 
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Daniele Mondello
 
Caminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaCaminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaDaniele Mondello
 
Po Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataPo Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataDaniele Mondello
 
Evoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesEvoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesDaniele Mondello
 
#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016Daniele Mondello
 
Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Daniele Mondello
 
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Daniele Mondello
 
Flussi sanitari privacy big data
Flussi sanitari privacy big dataFlussi sanitari privacy big data
Flussi sanitari privacy big dataDaniele Mondello
 
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazionepagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazioneDaniele Mondello
 
Cartella Clinica Elettronica: Un modello applicativo
Cartella Clinica Elettronica:  Un modello applicativoCartella Clinica Elettronica:  Un modello applicativo
Cartella Clinica Elettronica: Un modello applicativoDaniele Mondello
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceDaniele Mondello
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziareDaniele Mondello
 
Azienda- lavoratori in remoto e Iso 9000
Azienda- lavoratori in remoto  e Iso 9000Azienda- lavoratori in remoto  e Iso 9000
Azienda- lavoratori in remoto e Iso 9000Daniele Mondello
 

Mehr von Daniele Mondello (20)

Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'AzzardoImpatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
Impatto dell'Intelligenza Artificiale sul Gioco d'Azzardo
 
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
IaC - Infrastructure as Code, gestire infrastrutture cloud tramite file di co...
 
Linux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemiciLinux day 2021 Analisi Open Source dei dati pandemici
Linux day 2021 Analisi Open Source dei dati pandemici
 
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del giocoGdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
Gdg 2019 artificial intelligence, sviluppo web... le nuove regole del gioco
 
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
Wiad 2018 - CREARE, GESTIRE E TROVARE INFORMAZIONI ALL'INTERNO DI UN AMBIENTE...
 
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
Tutto quello che avreste voluto chiedere sui social network (ma non avete ami...
 
Caminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informaticaCaminetto Rotariano sulla sicurezza informatica
Caminetto Rotariano sulla sicurezza informatica
 
Linux day 2017
Linux day 2017Linux day 2017
Linux day 2017
 
Po Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open DataPo Fesr 2014-2020 e gli Open Data
Po Fesr 2014-2020 e gli Open Data
 
Evoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservicesEvoluzione del web development dalle cgi ai microservices
Evoluzione del web development dalle cgi ai microservices
 
Open data day 2017
Open data day 2017Open data day 2017
Open data day 2017
 
#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016#openamat Giornata trasparenza 2016
#openamat Giornata trasparenza 2016
 
Osservatorio startup innovative 2016
Osservatorio startup innovative 2016Osservatorio startup innovative 2016
Osservatorio startup innovative 2016
 
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
Fascicolo sanitario & Dossier sanitario vantaggi nell’adozione di open source...
 
Flussi sanitari privacy big data
Flussi sanitari privacy big dataFlussi sanitari privacy big data
Flussi sanitari privacy big data
 
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica AmministrazionepagoPa, i pagamenti elettronici nella Pubblica Amministrazione
pagoPa, i pagamenti elettronici nella Pubblica Amministrazione
 
Cartella Clinica Elettronica: Un modello applicativo
Cartella Clinica Elettronica:  Un modello applicativoCartella Clinica Elettronica:  Un modello applicativo
Cartella Clinica Elettronica: Un modello applicativo
 
Approccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per MicroserviceApproccio ad una infrastruttura per Microservice
Approccio ad una infrastruttura per Microservice
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Azienda- lavoratori in remoto e Iso 9000
Azienda- lavoratori in remoto  e Iso 9000Azienda- lavoratori in remoto  e Iso 9000
Azienda- lavoratori in remoto e Iso 9000
 

Continous Delivery & HQ Code

  • 2. Chi Sono2 About me Nasco nel 1971 a Palermo e dopo un’ infanzia fatta di cartoni animati, Super Santos, libri e Coin-Up nell’estate dell’86 ricevo in dono un COMMODORE 64 che mi cambia la vita. Daniele Mondello • Management • Team Leader • Quality Manager • Web Architect • Healthcare IT Consultant • UX Expert • Ubuntu, CentOS • Mac OSX • Windows • IOS • Android • Embedded OS: Raspbian,Pidora • PHP (5 years) • Javascript (10 years) • ASP(12 years) • MySQL (5 years) • HTML, CSS3 (14 years) • Ruby, Rails (1 year) Developer O.S. General Skill
  • 4. Prodotto Industriale4 Ric. MercatoAn. Normative An. Rischi Cond. Utilizzo Sc. Prodotto Req. Sistema Man. Utente An. Requisiti CONTINUOUS INTEGRATION -Test Responsive -Test Javascript -Ottimizzazione -Test Usability -Test Sicurezza -Test C&P -Test Style -Test PHP -Test DB -TestW3C REGOLE DI SVILUPPO [Regole di Stile] [Regole DB] [Regole Documentazione Codice] [Regole di Sviluppo] [Regole di Sistema] Casi D’uso Wireframes Pr. Esecutivo SOUP CVSServer CI Project Management BETA SPERIMENTAZIONE RILASCIO V. 1 Progettazione Sviluppo
  • 5. Cosa è la Continuous Integration?5 CVS CI SERVER IDE Continuous Integration ”E’ una pratica di sviluppo software dove i membri di un team integrano il loro lavoro frequentemente, almeno una volta al giorno. Ogni integrazione è verificata da una build automatica (inclusi i test) per individuare gli errori d’integrazione il più rapidamente possibile.” PM TOOL
  • 6. …..e la Continuous Delivery?6 SVILUPPO INTEGRAZIONE BUILD QA Code DEPLOY Continuous Integration Continuous Delivery
  • 7. Cosa è un Control Version System?7 E' un tool che permette il controllo di versione (versioning), cioè la gestione di versioni multiple di un insieme di informazioni. CVS
  • 8. CVS: GIT8 02 Dividere lo sviluppo del progetto in più linee indipendenti , chiamati "rami ", che possono evolvere separatamente 03 Periodicamente ricombinare i rami in un processo per riconciliare le modifiche apportate in due o più ram 01 Esaminare lo stato di un progetto nel più breve tempo possibile 04 Mostrare le differenze tra le varie versioni del progetto CVS
  • 9. Funzionamento GIT9 File A Version 1 Version 2 Version 3 Version 4 Version 5 File B File C File A File C File A1 File B File C1 File B1 File B File C2 File B1 File A1 File B File C3 File B1 File A2 File B1 CVS
  • 10. FLUSSO DI LAVORO10 Build Privata Server CI Lancio di una build privata Lo sviluppatore effettua una Build Privata sulla propria postazione così da integrare eventuali cambiamenti effettuati dagli altri membri del team e verificato che l’integrazione dia un sistema funzionante. Commit sul CVS del codice Lo sviluppatore conclusa l’attività effettua un commit sul repository del sistema di controllo di versione. 5 Lancio SCRIPT su server CI I l s e r v e r d i C I a c c o r t o s i d e l cambiamento scarica il codice aggiornato e lancia uno script di build così da integrare questi cambiamenti e da ricostruire il sistema e ri-testarlo ed a seguito del risultato della build, genera un feedback (es: email) visibile al team CVS DELIVERY
  • 11. MOTORE CI e BUILD11 Il sistema di CI viene utilizzato per: - collezionare il codice dai repository remoti - lanciare i test automatici - lanciare test statici sul codice - generare report più o meno complessi - effettuare delle misurazioni rispetto a delle metriche - notificare a chi di dovere Privata Test sul codice Test PHP Test Javascript Deploy Minifizzazione Cambio URL Disattivazione Warning Pubblica Test Integrazione Prod. Documentazione Test Sicurezza Differenti tipi di BUILD CI SERVER
  • 13. JENKINS: LA BUILD 1/213 CI SERVER
  • 14. JENKINS: LA BUILD 2/214 CI SERVER
  • 15. Metriche del software15 Affidabilità Le metriche software sono degli standard per misurare alcune proprietà del software permettendo di valutare funzionalità e il rapporto costi/efficacia, così da realizzare software di qualità. Efficienza Sicurezza Manutenibilità High Quality Code CI SERVER
  • 16. PHPCS PHP Code Sniffer Tools: PHPLOC16 Permette di misurare le dimensioni di un progetto PHP, ottenendo informazioni utili riguardanti il numero di elementi presenti. PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Informazioni sulle dimensioni di un progetto linee di codice, linee di codice commentate e non commentate, numero di classi,dimensione media delle classi, media di funzioni nelle classi. Informazioni sulle complessità di un progetto Complessità ciclomatica rispetto alle linee di codice. Informazioni sulle struttura Numero di Namespace, Interfacce, Classi( Astratte e Concrete), Numero di metodi (pubblici e Non), Numero Funzioni e Numero Costanti. Autore: S. Bergmann
  • 17. PHPCS PHP Code Sniffer Tools: PHP DEPEND17 Software che esegue l'analisi statica del codice sorgente. PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Analizza il codice sorgente di un applicativo PHP e ne produce un albero sintattico astratto (AST) In output genera: due grafici
  • 18. PHPCS PHP Code Sniffer Tools: PHP DEPEND18 PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Coupling Inheritance Number Of Methods Number Of Packages Size & Complexity Number of Classes Lines Of Code Cyclomatic Complexy CALLS FANOUT Coupling Average Num of Derived Classes Inheritance Average Hierarchy Height Size & Complexity Software che esegue l'analisi statica del codice sorgente.
  • 19. PHPCS PHP Code Sniffer Tools: PHP DEPEND19 PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Software che esegue l'analisi statica del codice sorgente.
  • 20. PHPCS PHP Code Sniffer Tools: PHP Mess Detector20 Analizza il codice sorgente di un progetto PHP e cerca di estrarne i potenziali problemi, applicando un insieme predefinito di regole per l’analisi del codice. PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Regole sulle Dimensioni Regole su Codice inutilizzato Regole Design Regole attribuzione nomi
  • 21. PHPCS PHP Code Sniffer Tools: PHP Mess Detector21 PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Regole sulle Dimensioni Regole su Codice inutilizzato Regole Design Cyclomatic Complexity NPath Complexity ExcessiveMethodLength ExcessiveClassLength ExcessivePublicCount TooManyFields ExcessiveClassComplexity TooManyFields UnusedPrivateField UnusedLocalVariable ExitExpression EvalExpression GotoStatement NumberOfChildren DepthOfInheritance CouplingBetweenObjects Regole attribuzione nomi ShortVariable LongVariable ShortMethodName ConstructorWithName ConstantNaming. BooleanGetMethod.
  • 22. PHPCS PHP Code Sniffer Tools: PHP Code Sniffer22 Tool per l’analisi del codice che rileva violazioni delle convenzioni di scrittura (coding standard), così da aiutare a mantenere il codice pulito, consistente e manutenibile. PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code
  • 23. Agavi AWS SDK for PHP (Amazon Web Services) Apache log4php Assetic and Buzz Aura Project and Solar Framework CakePHP Composer and Packagist Contao Open Source CMS Doctrine Drupal eZ Publish TYPO3 Flow Jackalope Joomla Laravel PEAR Phalcon PHPCS PHP Code Sniffer Tools: PHP Code Sniffer23 PHP Framework Interoperability Group PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code Phing phpBB phpDocumentor PPI Framework PrestaShop Propel PyroCMS SabreDAV Sculpin Stash SugarCRM Symfony2 The community at large Wikibase and Semantic MediaWiki Yii framework Zend Framework 2 Zikula
  • 24. PHPCS PHP Code Sniffer Tools: PHP Code Sniffer24 Tool per l’analisi del codice che rileva violazioni delle convenzioni di scrittura (coding standard), così da aiutare a mantenere il codice pulito, consistente e manutenibile. PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code PSR 1 PSR-1 Garantisce un elevato livello di interoperabilità tecnica tra codice PHP condiviso. PSR-2 Fornisce una guida dello stile di codifica da adottare nella scrittura codice estendendo il PSR-1 PSR-3 Descrive una interfaccia comune per le librerie di log. PSR 2 PSR 0 PSR 3 PSR 4 PSR-4 Descrive un nuovo standard per l’autoloading FPSR-0 descrive i requisiti necessari ai quali ci si deve uniformare per garantire l''interoperabilità tra gli autoloader .
  • 25. PHPCS PHP Code Sniffer Tools: PHPCPD25 Strumento che rivela la presenza di codice duplicato all’interno del codice sorgente PHP DEPEND PHPCPD Copy/Paste Detector PHPMD PHP Mass Detector PHPLOC PHP Lines of Code