Refactoring

Transcript

Refactoring
La Nostra Missione: costruire la comunità leader di
professionisti del software.
La rivista IEEE Software offre idee pionieristiche, analisi di
esperti, suggerimenti fondati e riflessioni interessanti per
sviluppatori o manager riflessivi che vogliono mantenere
attualizzata la loro conoscenza ed esperienza con il cambiamento
rapidissimo del panorama tecnologico moderno. IEEE Software è
l’autorità primaria nel tradurre la ricerca software in pratica.
Siamo lieti di inviarvi la Tabella di Contenuti e gli Abstract dell’edizione
Novembre/Dicembre(Vol. 32, No. 6) di IEEE Software. Ogni numero offre un insieme
selezionatissimo di articoli gratuiti accompagnati da Podcasts in inglese, disponibili
navigando i collegamenti ipertestuali sotto la descrizione. Per ottenere gli articoli tecnici
rimanenti
vi
invitiamo
a
sottoscrivere
l’edizione
digitale
in
Inglese[www.qMags.com/ISW/pg]. Per ulteriori informazioni potete contattare il
direttore incaricato Brian Brannon scrivendo una mail a [email protected].
Scelti Dall’Editore
Estendendo il Nostro Campo Visivo
Diomidis Spinellis
Il Capo-Redattore Diomidis Spinellis discute le tecniche e i processi che gli
ingegneri software hanno perfezionato per manipolare la complessità dei
progetti software, il loro versioning, la collaborazione sottesa a tali progetti da
molteplici campi della ricerca e della tecnica.
Sulla Computazione
Io, fra tutti, do il benvenuto agli Overlord della computazione
Grady Booch
Molti sembrano spaventati dalle intelligenze artificiali superiori di questi giorni. Tali paure
sono infondate e malriposte.
Riflessioni
La macchina connessa alla nube
Tobias Häberle, Lambros Charissis, Christoph Fehling, Jens Nahm, and Frank Leymann
La piattaforma di prototipazione per automobili connesse fornisce un’infrastruttura completa
per tutte le applicazioni che vogliono interagire con macchine interconnesse. La piattaforma
fornisce anche servizi comuni come la manipolazione delle identità e la pervasività dei dati.
La nostra piattaforma è stata ideata per lo studio e l’ideazione di prototipi con lo scopo ultimo
di ridurne il time-to-market e accelerarne il successo.
Contributi Su Invito
Editor: Steve Counsell, Brunel University, Uxbridge, UK
Prospettive sul possesso del codice
Nel suo saggio “Code Ownership—a Quality Issue,” Sigrid Eldh arguisce sulla necessità di
adattare l’ownership ed il possesso del codice sorgente in situazioni specifiche come la
valutazione della qualità o il possesso sul corrispettivo codice di test. In un saggio simile,
“Code Ownership—More Complex to Understand Than Research Implies,” Brendan Murphy
arguisce per una analisi più dettagliata e profonda del possesso del codice.
La voce dell’evidenza
La bussola Agile: uno strumento per identificare gli
stadi di maturità nei team di sviluppo software Agili
Rafaela Mantovani Fontana, Sheila Reinehr, and Andreia Malucelli
Investighiamo l’evoluzione dei team di sviluppo software agili. Tramite l’analisi di nove teams
di sviluppo, elaborano le idiosincrasie del processo sotteso. Ogni team adottava pratiche sulla
base delle circostanze e adattava tali pratiche in base alle sfide incontrate sulla strada.
Basandosi su questa ricerca, gli autori propongono un questionario che agisce come una
sorta di bussola che riflette valori e decisioni e principi applicati in precedenza nella pratica
industriale.
Codice Affidabile
“Out of Bounds” – Fuori Dai Limiti
Gerard J. Holzmann
Scrivere codice affidabile significa essenzialmente comprendere e combinare limiti.
Solo un numero finite di memoria è disponibile per la computazione, solo un
ammontare finito di tempo esiste per completare la computazione, e ogni oggetto che
catturiamo e manipoliamo deve essere finito e ben confinato. Gli stack hanno limiti, le
code hanno limiti, il file-system e la sua capacità sono finite e persino i numerimacchina sono finiti. Questi sono i confini del mondo dei computer, estremamente
diverso dal mondo della matematica ma troppo esiguo è il numero di persone che
considerano questi confini quando scrivono codice.
Introduzione Dei Guest Editor
Refactoring
Emerson Murphy-Hill, North Carolina State University
Don Roberts, University of Evansville
Peter Sommerlad, Fachhochschule Ostschweiz / Hochschule für Technik Rapperswil
Bill Opdyke, JPMorgan Chase
Il refactoring significa essenzialmente cambiare il codice sorgente senza cambiarne il
comportamento generale, tipicamente per migliorare il design del software. Gli articoli
selezionati per questa issue si stagliano su una vasta gamma di settori, dal racconto storico,
ad un ritorno alle origini, alle esperienze piu’ pratiche nell’industria fino alla teoria pura che
esplora nuove frontiere del refactoring e delle tecniche in questo mondo che ancora non sono
apparse o applicate.
Focus: Refactoring
La Nascita Del Refactoring
Una retrospettiva nella natura dell’ingegneria del software di grande impatto
William G. Griswold, University of California, San Diego
William F. Opdyke, JPMorgan Chase
Questo articolo riflette su come l’idea del refactoring è emersa puramente da due
dissertazioni di dottorato. L’analisi condotta fornisce nuove osservazioni utili per i praticanti ed
i ricercatori delle piu moderne tecniche di refactoring.
Focus: Refactoring
I Miti del Refactoring
Munawar Hafiz and Jeffrey Overbey
Auburn University
I miti del refactoring sono misinterpretazioni popolari a proposito del refactoring basato su tool
– soprattutto concernenti gli intenti dei tool, i loro principi di funzionamento, la loro robustezza
ed il supporto concreto che offrono.
Feature: Refactoring
Sfide e Soluzioni per l’adozione di Refactoring
Una Prospettiva Industriale
Tushar Sharma and Girish Suryanarayana, Siemens Technology and Services Private Limited
Ganesh Samarthyam, independent consultant e corporate trainer
Ci sono diverse sfide pratiche che ogni industria deve affrontare per
abbracciare la tecnica del refactoring. Risultati osservati presso il
Siemens Corporate Development Center in India sembrano condurre
a un insieme ristretto di tali sfide pratiche, insieme con le metodologie
tipiche con le quali Siemens è riuscita ad oltrepassare l’ostacolo.
Focus: Refactoring
Refactoring per l’Esecuzione Asincrona su
Device Mobili
Danny Dig, Oregon State University
Refactoring che cambia il codice sincrono in asincrono può migliorare
la responsiveness delle app mobili. Ciononostante, usando
l’asincronia presenta diversi ostacoli. Dei ricercatori hanno sviluppato
delle risorse educative e degli strumenti che possono aiutare.
Refactoring
Refactoring—Un buco nell’acqua?
Marko Leppänen, Tampere University of Technology
Simo Mäkinen, University of Helsinki
Samuel Lahtinen and Outi Sievi-Korte, Tampere University of Technology
Antti-Pekka Tuovinen and Tomi Männistö, University of Helsinki
Un gruppo di architetti software e sviluppatori considerano il
refactoring come una pratica di valore ma hanno difficoltà a spiegarne
e giustificarne l’utilizzo al management ed ai client. Non è sempre
facile usare misurazioni per quantificare l’impatto ed il bisogno di
refactoring.
Database Refactoring
Lezioni dalle Trincee
Gregory Vial, HEC Montreal
Una grossa ditta di sviluppo software ha applicator refactoring ad un
grande database per applicazioni logistiche. Il progetto ha utilizzato
chiare pratiche di database development e ha impacchettato il
manuale e la documentazione necessaria nel database stesso. Gli
autori discutono le lezioni chiave in questo scenario, discutendo
l’approccio di sviluppo e l’elaborazione di un tool per guidare le
operazioni di refactoring.
Punto/Contrappunto
I tool per refactoring meritano la nostra fiducia
John Brant
I tool di refactoring non sono necessariamente costretti a garantire la
correttezza per essere utili, a volte, tool imperfetti possono essere
particolarmente utili.
Punto/Contrappunto
Trust Must Be Earned
Friedrich Steimann
Creare tool di refactoring che sono privy di bachi è una sfida per molti.
Ciononostante, gli sviluppatori di tool dovranno affrontare e superare
questa sfida per rendere I loro strumenti accettabili.
Articolo Scelto: Ingegneria Dei Requisiti
Affrontando Requisiti di Qualità in Grandi
Progetti a Contratto
Maya Daneva, University of Twente
Andrea Herrmann, Herrmann & Ehrlich
Luigi Buglione, Engineering Ingegneria Informatica
I contratti che guidano lo sviluppo di grandi sistemi software devono
contenere anche problematiche quali aspetti di qualità, scadenze,
costo di delivery e spese umane di sviluppo/operazione oltre ai
service-level agreements (SLA). Uno studio con 20 architetti software
rivela come hanno affrontato problematiche inerenti a requisiti di
qualità in contesti di grande sviluppo a contratto.
Tecnologie Software
Uno Sguardo al Futuro
Christof Ebert
Ricerche ed interviste con leader mondiali del business software, puntano a
fattori chiave del successo software che detteranno legge nei prossimi 30
anni. Ciononostante, rimangono aperte domande chiave concernenti un
nostro eventuale sviluppo evolutivo verso una Umanità 2.0 – cioè una società
post-umana basata sulla convivenza assoluta col software.
Aggiornamenti Dalla Pratica Industriale
Software Quality, Energy Awareness, and More
Jeffrey Carver, Aiko Yamashita, Leandro Minku, Mayy Habayeb, and Sedef Akinli Kocak
L’articolo discute sei lavori presentati in eventi connessi con l’edizione 2015 della
conferenza internazionale nell’ingegneria del software. I lavori coprono fattori
organizzativi e la qualità del software oltre ai microcloni di codice, le piattaforme bigdata, I commit energy-aware, l’architettura software open-source ed I moderni
avanzamenti nell’ingegneria dei requisiti.
Ingegneria del Software
Barry O’Reilly racconta le Lean Enterprises
Johannes Thönes
La Software Engineering Radio di Johannes Thönes ospita Barry O’Reilly,
coautore di “Lean Enterprise: How High Performance Organizations Innovate
at Scale” e si discute di lean enterprises. Una lean enterprise è una grossa
organizzazione il cui management deve innovare mentre continua a
mantenere I suoi prodotti sul mercato con estrema competitività.