SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
Continuous Integration e High Quality Code 
Daniele Mondello
2 Chi Sono 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
3 1986 
Diego!
4 Prodotto Industriale 
An. Normative An. Rischi Ric. Mercato 
Sc. Prodotto 
Req. Sistema 
Cond. Utilizzo 
Man. Utente 
Pr. Esecutivo 
SOUP 
An. Requisiti CONTINUOUS INTEGRATION 
-Test Responsive 
-Test Javascript 
-Ottimizzazione 
-Test Usability 
-Test Sicurezza 
-Test C&P 
-Test Style 
-Test PHP 
-Test DB 
-TestW3C 
Casi D’uso Wireframes 
REGOLE DI SVILUPPO 
[Regole di Stile] 
[Regole DB] 
[Regole Documentazione Codice] 
[Regole di Sviluppo] 
[Regole di Sistema] 
Server CI CVS 
Project 
Management 
BETA 
SPERIMENTAZIONE 
RILASCIO V. 1 
Progettazione 
Sviluppo
Cosa è la Continuous 5 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.” 
CVS 
CI 
SERVER 
IDE 
Continuous Integration 
PM 
TOOL
Cosa è 6 un Control Version System? 
E' un tool che permette il controllo di versione (versioning), cioè la 
gestione di versioni multiple di un insieme di informazioni. 
CVS
7 CVS: GIT 
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
8 Funzionamento GIT 
Version 1 Version 2 Version 3 Version 4 Version 5 
File A 
File B 
File C 
File A 
File C 
File A1 
File A1 
File File B1 B 
File B 
File C1 
File B1 
File C2 
File A2 
File B1 
File B 
File C3 
File B1 
CVS
9 FLUSSO DI LAVORO 
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 CI a c c o r t o s i d e l 
cambiamento scarica i l 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
10 MOTORE CI e BUILD 
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 
Differenti tipi di BUILD 
Pubblica 
Test Integrazione 
Prod. Documentazione 
Test Sicurezza
11 JENKINS: I PROGETTI
12 JENKINS: LA BUILD 1/2
13 JENKINS: LA BUILD 2/2
14 Metriche del software 
Le metriche software sono degli standard per misurare alcune proprietà del 
software. 
Le metriche del software permettono di valutare funzionalità e il rapporto 
costi/efficacia, così da realizzare software di qualità. 
Affidabilità 
Efficienza Sicurezza Manutenibilità 
High Quality Code
15 Tools: PHPLOC 
Permette di misurare le dimensioni di un progetto PHP, ottenendo informazioni utili riguardanti il numero di elementi presenti. 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
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
16 Tools: PHP DEPEND 
Software che esegue l'analisi statica del codice sorgente. 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
Analizza il codice sorgente di 
un applicativo PHP e ne 
produce un albero sintattico 
astratto (AST) 
In output genera: 
due grafici
17 Tools: PHP DEPEND 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
Inheritance 
Coupling 
Size & Complexity 
Number Of Packages 
Number of Classes 
Number Of Methods 
Lines Of Code 
Cyclomatic Complexy 
Coupling 
CALLS 
FANOUT 
Inheritance 
Average Num of Derived Classes 
Average Hierarchy Height 
Size & 
Complexity 
Software che esegue l'analisi statica del codice sorgente.
18 Tools: PHP DEPEND 
Software che esegue l'analisi statica del codice sorgente. 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector
19 Tools: PHP Mess Detector 
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. 
PHPLOC 
PHP Lines of Code Regole sulle 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
Dimensioni 
Regole su 
Codice 
inutilizzato 
Regole 
Design 
Regole 
attribuzione 
nomi
20 Tools: PHP Mess Detector 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
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.
21 Tools: PHP Code Sniffer 
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. 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector
22 Tools: PHP Code Sniffer 
PHP Framework Interoperability Group 
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 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
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
23 Tools: PHP Code Sniffer 
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. 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector 
PSR-1 Garantisce un elevato livello 
di interoperabilità tecnica tra 
codice PHP condiviso. 
PSR 1 
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 
.
24 Tools: PHPCPD 
Strumento che rivela la presenza di codice duplicato all’interno del codice sorgente 
PHPLOC 
PHP Lines of Code 
PHP DEPEND 
PHPMD 
PHP Mass Detector 
PHPCS 
PHP Code Sniffer 
PHPCPD 
Copy/Paste Detector
Daniele Mondello 
Continuous Integration e High Quality Code 
GRAZIE! 
info@danielemondello.it 
@dmondello 
Daniele.Mondello

Más contenido relacionado

Destacado

QUALICOPC (Giorgio Visentin)
QUALICOPC (Giorgio Visentin)QUALICOPC (Giorgio Visentin)
QUALICOPC (Giorgio Visentin)csermeg
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integrationdrluckyspin
 
Continuous integration
Continuous integrationContinuous integration
Continuous integrationamscanne
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryVirendra Bhalothia
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Dennys Hsieh
 
Total Quality Management (TQM)
Total Quality Management (TQM)Total Quality Management (TQM)
Total Quality Management (TQM)Mudassar Salman
 

Destacado (8)

QUALICOPC (Giorgio Visentin)
QUALICOPC (Giorgio Visentin)QUALICOPC (Giorgio Visentin)
QUALICOPC (Giorgio Visentin)
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 
Jenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous DeliveryJenkins - From Continuous Integration to Continuous Delivery
Jenkins - From Continuous Integration to Continuous Delivery
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Tqm Final Ppt
Tqm Final PptTqm Final Ppt
Tqm Final Ppt
 
Total Quality Management (TQM)
Total Quality Management (TQM)Total Quality Management (TQM)
Total Quality Management (TQM)
 

Similar a Continuous Integration e High Quality 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
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!Matteo Emili
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)jampslide
 
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
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewFrancesco Sciuti
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreManuel Scapolan
 
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
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyGiacomo Russo
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
#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
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
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
 
L'impatto dei Servizi Applicativi
L'impatto dei Servizi ApplicativiL'impatto dei Servizi Applicativi
L'impatto dei Servizi Applicativimichelemanzotti
 
.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018Fabrizio Bernabei
 

Similar a Continuous Integration e High Quality Code (20)

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
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Il computer dice no!
Il computer dice no!Il computer dice no!
Il computer dice no!
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Introduzione ros
Introduzione rosIntroduzione ros
Introduzione ros
 
JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)JAMP DAY 2010 - ROMA (1)
JAMP DAY 2010 - ROMA (1)
 
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
 
Acadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code OverviewAcadevmy - Visual Studio Code Overview
Acadevmy - Visual Studio Code Overview
 
AntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatoreAntiPatterns: i vizi del programmatore
AntiPatterns: i vizi del programmatore
 
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
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
#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
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
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
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
L'impatto dei Servizi Applicativi
L'impatto dei Servizi ApplicativiL'impatto dei Servizi Applicativi
L'impatto dei Servizi Applicativi
 
.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018
 

Más de 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
 

Más de 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
 
Git in 5 minuti
Git in 5 minutiGit in 5 minuti
Git in 5 minuti
 
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
 

Continuous Integration e High Quality Code

  • 1. Continuous Integration e High Quality Code Daniele Mondello
  • 2. 2 Chi Sono 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. 4 Prodotto Industriale An. Normative An. Rischi Ric. Mercato Sc. Prodotto Req. Sistema Cond. Utilizzo Man. Utente Pr. Esecutivo SOUP An. Requisiti CONTINUOUS INTEGRATION -Test Responsive -Test Javascript -Ottimizzazione -Test Usability -Test Sicurezza -Test C&P -Test Style -Test PHP -Test DB -TestW3C Casi D’uso Wireframes REGOLE DI SVILUPPO [Regole di Stile] [Regole DB] [Regole Documentazione Codice] [Regole di Sviluppo] [Regole di Sistema] Server CI CVS Project Management BETA SPERIMENTAZIONE RILASCIO V. 1 Progettazione Sviluppo
  • 5. Cosa è la Continuous 5 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.” CVS CI SERVER IDE Continuous Integration PM TOOL
  • 6. Cosa è 6 un Control Version System? E' un tool che permette il controllo di versione (versioning), cioè la gestione di versioni multiple di un insieme di informazioni. CVS
  • 7. 7 CVS: GIT 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
  • 8. 8 Funzionamento GIT Version 1 Version 2 Version 3 Version 4 Version 5 File A File B File C File A File C File A1 File A1 File File B1 B File B File C1 File B1 File C2 File A2 File B1 File B File C3 File B1 CVS
  • 9. 9 FLUSSO DI LAVORO 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 CI a c c o r t o s i d e l cambiamento scarica i l 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
  • 10. 10 MOTORE CI e BUILD 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 Differenti tipi di BUILD Pubblica Test Integrazione Prod. Documentazione Test Sicurezza
  • 11. 11 JENKINS: I PROGETTI
  • 12. 12 JENKINS: LA BUILD 1/2
  • 13. 13 JENKINS: LA BUILD 2/2
  • 14. 14 Metriche del software Le metriche software sono degli standard per misurare alcune proprietà del software. Le metriche del software permettono di valutare funzionalità e il rapporto costi/efficacia, così da realizzare software di qualità. Affidabilità Efficienza Sicurezza Manutenibilità High Quality Code
  • 15. 15 Tools: PHPLOC Permette di misurare le dimensioni di un progetto PHP, ottenendo informazioni utili riguardanti il numero di elementi presenti. PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector 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
  • 16. 16 Tools: PHP DEPEND Software che esegue l'analisi statica del codice sorgente. PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector Analizza il codice sorgente di un applicativo PHP e ne produce un albero sintattico astratto (AST) In output genera: due grafici
  • 17. 17 Tools: PHP DEPEND PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector Inheritance Coupling Size & Complexity Number Of Packages Number of Classes Number Of Methods Lines Of Code Cyclomatic Complexy Coupling CALLS FANOUT Inheritance Average Num of Derived Classes Average Hierarchy Height Size & Complexity Software che esegue l'analisi statica del codice sorgente.
  • 18. 18 Tools: PHP DEPEND Software che esegue l'analisi statica del codice sorgente. PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector
  • 19. 19 Tools: PHP Mess Detector 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. PHPLOC PHP Lines of Code Regole sulle PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector Dimensioni Regole su Codice inutilizzato Regole Design Regole attribuzione nomi
  • 20. 20 Tools: PHP Mess Detector PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector 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.
  • 21. 21 Tools: PHP Code Sniffer 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. PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector
  • 22. 22 Tools: PHP Code Sniffer PHP Framework Interoperability Group 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 PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector 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
  • 23. 23 Tools: PHP Code Sniffer 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. PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector PSR-1 Garantisce un elevato livello di interoperabilità tecnica tra codice PHP condiviso. PSR 1 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 .
  • 24. 24 Tools: PHPCPD Strumento che rivela la presenza di codice duplicato all’interno del codice sorgente PHPLOC PHP Lines of Code PHP DEPEND PHPMD PHP Mass Detector PHPCS PHP Code Sniffer PHPCPD Copy/Paste Detector
  • 25. Daniele Mondello Continuous Integration e High Quality Code GRAZIE! info@danielemondello.it @dmondello Daniele.Mondello