{"id":8004,"date":"2018-10-29T07:30:57","date_gmt":"2018-10-29T06:30:57","guid":{"rendered":"http:\/\/www.unilab.eu\/?p=8004"},"modified":"2021-04-17T18:13:14","modified_gmt":"2021-04-17T16:13:14","slug":"extreme-programming","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/extreme-programming\/","title":{"rendered":"Extreme programming: perch\u00e9 \u00e8 essenziale, in tutti i sensi"},"content":{"rendered":"<p>Nel mondo della programmazione, si sente molto spesso parlare di <strong>Extreme Programming<\/strong>. Conosciuto anche con l&#8217;abbreviazione XP, questo approccio si traduce in italiano con \u2018programmazione estrema\u2019. Altro non \u00e8 che una metodologia di sviluppo software che mette in primo piano la scrittura del codice.<\/p>\n<p>A svilupparlo in origine \u00e8 stato <strong>Kent Beck<\/strong>, tra le firme del celebre manifesto Agile oltre che coideatore del TDD. Grazie al suo lavoro e al prezioso aiuto di Ward Cunningham e Ron Jeffries, l&#8217;XP ha raggiunto una buona popolarit\u00e0 tra gli anni Novanta e i primi anni 2000.<\/p>\n<p>Il mantra della community \u00e8 stato fin da subito molto chiaro: per operare al meglio, i programmatori devono evitare di scrivere <strong>stringhe di codice<\/strong> non strettamente necessarie. Partendo da qui, si possono poi approfondire le 12 regole pratiche di sviluppo.<\/p>\n<p><strong>Le regole di sviluppo<\/strong><\/p>\n<p>Come appena ricordato, quando ci si muove nel campo dell\u2019Extreme Programming \u00e8 necessario considerare ben <strong>12 regole di sviluppo<\/strong>, che sono le seguenti.<\/p>\n<ol>\n<li>Pair Programming: due programmatori che lavorano assieme su una medesima workstation;<\/li>\n<li>Planning Game: riunione di pianificazione che avviene circa una volta a settimana;<\/li>\n<li>Test Driven Development: test automatici concretizzati prima di iniziare la scrittura del codice;<\/li>\n<li>Whole Team: presenza del cliente, ossia colui che utilizzer\u00e0 realmente il sistema, alle riunioni settimanali;<\/li>\n<li>Refactoring: riscrittura del codice senza alterazione delle sue funzionalit\u00e0 esterne;<\/li>\n<li>Continuous Integration: integrazione continua di cambiamenti al codice, cos\u00ec da evitare ritardi nel corso del progetto;<\/li>\n<li>Small Release: consegna del software tramite rilasci frequenti di funzionalit\u00e0;<\/li>\n<li>Coding Standard: scelta e utilizzo di un determinato standard di scrittura del codice;<\/li>\n<li>Collective Code Ownership: contributo alla scrittura del codice da parte di ogni membro del team di sviluppo;<\/li>\n<li>Simple Design: ricorso ad un approccio il pi\u00f9 semplice possibile in fase di sviluppo;<\/li>\n<li>System Metaphor: capacit\u00e0 di descrivere, anche in sede di illustrazione formale, il sistema intero con una metafora;<\/li>\n<li>Sustainable Pace: creazione di un ambiente di lavoro che permetta agli sviluppatori di lavorare massimo 40 ore a settimana.<\/li>\n<\/ol>\n<p>Oltre che di regole pratiche, \u00e8 necessario parlare anche di modelli. <strong>James Donovan Wells<\/strong>, uno degli autori di punta per chi vuole documentarsi sul mondo XP, ne ha individuati quattro. Il primo \u00e8 la comunicazione. Secondo il suo approccio, tutti possono parlare con tutti e anche il programmatore con meno esperienza ha diritto di interagire con il cliente.<\/p>\n<p>Il secondo punto riguarda invece la <strong>semplicit\u00e0<\/strong>, linea guida che deve governare qualsiasi descrizione formale di progetto. Il terzo modello riguarda invece la verifica fin dal primo giorno di partenza del progetto stesso, mentre il quarto ha a che fare con il coraggio di dare subito in uso il sistema e di farsi trovare pronti a cambiamenti e implementazione.<\/p>\n<p><strong>I valori<\/strong><\/p>\n<p>Accanto alle regole di sviluppo e ai modelli, quando si parla di Extreme Programming \u00e8 necessario discutere anche di <strong>valori<\/strong>, cominciando dalla qualit\u00e0 della comunicazione tra i membri del team e tra il team di sviluppo e il cliente finale.<\/p>\n<p>Si passa poi alla gi\u00e0 citata semplicit\u00e0, che deve essere messa in primo piano sia nei processi di sviluppo, sia in fase di interazione con il cliente finale e di spiegazione del progetto. Essenziale \u00e8 anche il <strong>feedback continuo<\/strong>, aspetto nodale in ottica di ottimizzazione tecnica e di miglior flessibilit\u00e0.<\/p>\n<p>Anche se ultimamente ha perso un po&#8217; di terreno rispetto ai decenni passati, l&#8217;Extreme Programming rimane comunque un metodo di sviluppo software molto diffuso e apprezzato. Basato sul <strong>TDD (Test Driven Development)<\/strong>, rappresenta ancora oggi un punto di riferimento basilare per quei team che necessitano di scrivere codice di qualit\u00e0.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-8004\" data-postid=\"8004\" class=\"themify_builder_content themify_builder_content-8004 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Nel mondo della programmazione, si sente molto spesso parlare di Extreme Programming. Conosciuto anche con l&#8217;abbreviazione XP, questo approccio si traduce in italiano con \u2018programmazione estrema\u2019.<\/p>\n","protected":false},"author":10,"featured_media":8006,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"%%title%% %%page%% %%sep%% %%sitename%%","_seopress_titles_desc":"Nel mondo della programmazione, si sente molto spesso parlare di Extreme Programming. Conosciuto anche con l'abbreviazione XP, questo approccio si traduce in italiano con \u2018programmazione estrema\u2019.","_seopress_robots_index":"","_seopress_analysis_target_kw":"extreme programming","footnotes":""},"categories":[46],"tags":[],"class_list":["post-8004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee-break-it","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/comments?post=8004"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/8004\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/8006"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=8004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=8004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=8004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}