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à.