Metodologie di sviluppo http://blogs.ugidotnet.org/nettools/category/Metodologie di sviluppo.aspx Metodologie di sviluppo it-IT Davide Mauri Subtext Version 2.6.0.0 Mr. Hibernate sui Database Relazionali: un post di rara bellezza http://blogs.ugidotnet.org/nettools/archive/2007/05/25/mr-hibernate-sui-database-relazionali.aspx <p>Direttamente da Gavin King (Mr. Hibernate, l'amico di Janky <a title="" href="/nettools/admin/EditPosts.aspx#"><img alt="" border="0" src="http://www.davidemauri.it/emoticone/appagato.gif" /></a>) un post che la dice lunga, molto lunga:</p> <strong>"In Defence of RDBMS" <br /> </strong><a href="http://blog.hibernate.org/cgi-bin/blosxom.cgi/2007/05/23">http://blog.hibernate.org/cgi-bin/blosxom.cgi/2007/05/23</a> <p>Il post è piuttosto lungo, e quindi riporto solo due estratti di quanto scritto da Gavin. Li riporto perchè sono concetti che chi mi conosce sa che difendo da sempre....anche quando sembravano essere controcorrente, e venivano tacciati come "vecchi e superati", ma ora che è passata la moda si riscoprono e tornano alla luce del sole...Bene, meglio tardi che mai!</p> <p>Sulla centralità e sulla vita dei database:</p> <p>"<em>[...] data and data models last longer than applications, longer even than programming languages. Data is shared between many applications in an enterprise, and they are not all written in Java.</em>"</p> <p>Mi sembrano parole conosciute....;-); Sui database legacy:</p> <p>"<em>Data management professionals need to start treating their data models and database schemas as ongoing projects of real value to the organization, which need constant ongoing maintainence and evolution. They need to stop treating a legacy schema as some immutable holy text handed down by God.</em>"</p> <p>Che è qualcosa che continuo a dire da anni, in barba a chi sostiene (a torto) che un db "non si può toccare". Nulla è immutabile: certo modificare un db è molto più costoso che modificare un'applicazione - e quindi è bene disegnare lo schema correttamente fin dall'inizio, seguendo le regole di normalizzazione senza remore - ma è possibile!</p> <p>Per chiudere il post riporto anche un pezzo di un altro autorevole blog (<a href="http://sqlservercode.blogspot.com/2007/05/object-databases-suck-rdmbss-rock.html">http://sqlservercode.blogspot.com/2007/05/object-databases-suck-rdmbss-rock.html</a>):</p> <p>"<em>And remember the latest version of Nhibernate <strong>DOES</strong> support stored procedures! No more wizard generated SQL that is hard to debug because you don't know what it looks like.</em>"</p> <p>I due post sono semplicemente da stampare ed incorniciare.</p><img src="http://blogs.ugidotnet.org/nettools/aggbug/79256.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/05/25/mr-hibernate-sui-database-relazionali.aspx Fri, 25 May 2007 13:08:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/05/25/mr-hibernate-sui-database-relazionali.aspx#feedback 15 http://blogs.ugidotnet.org/nettools/comments/commentRss/79256.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/79256.aspx Articoli MSDN in italiano http://blogs.ugidotnet.org/nettools/archive/2007/04/11/75227.aspx <P>I vari articoli MSDN scritti in italiano dai vari MVP (e non) sono ora disponibili, oltre che nei rispettivi Developer Center, anche in questa comoda lista:</P> <P><A href="http://www.microsoft.com/italy/msdn/risorsemsdn/community/mvp/articles.mspx">http://www.microsoft.com/italy/msdn/risorsemsdn/community/mvp/articles.mspx</A></P><img src="http://blogs.ugidotnet.org/nettools/aggbug/75227.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/04/11/75227.aspx Wed, 11 Apr 2007 19:41:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/04/11/75227.aspx#feedback 2 http://blogs.ugidotnet.org/nettools/comments/commentRss/75227.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/75227.aspx Database Unit Test Whitepaper http://blogs.ugidotnet.org/nettools/archive/2007/03/19/73292.aspx <p>E' stato pubblicato un interessante documento sull'utilizzo degli Unit Test in un database:</p> <p><a title="http://msdn2.microsoft.com/en-us/library/bb381703(VS.80).aspx" href="http://msdn2.microsoft.com/en-us/library/bb381703(VS.80).aspx">http://msdn2.microsoft.com/en-us/library/bb381703(VS.80).aspx</a></p><img src="http://blogs.ugidotnet.org/nettools/aggbug/73292.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/03/19/73292.aspx Mon, 19 Mar 2007 21:55:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/03/19/73292.aspx#feedback 1 http://blogs.ugidotnet.org/nettools/comments/commentRss/73292.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/73292.aspx Sessione da non perdere! http://blogs.ugidotnet.org/nettools/archive/2007/03/08/72560.aspx <P>Finalmente &#232; arrivato il momento di vedere sul palco me e Gianky insieme!</P> <P>Come i pi&#249; veloci hanno gi&#224; notato il prossimo workshop <STRIKE>UGISS</STRIKE> UGIDotNet vedr&#224; me e Gianky tenere la sessione "<SPAN style="FONT-WEIGHT: bold">Data Access: strategie ed ottimizzazione</SPAN>":</P> <P><A href="http://www.ugidotnet.org/workshops/workshops_detail.aspx?ID=69540c2b-3ada-4191-90e3-2641f6ed9d05">http://www.ugidotnet.org/workshops/workshops_detail.aspx?ID=69540c2b-3ada-4191-90e3-2641f6ed9d05</A></P> <P>Non credo che vogliate perdervi un simile spettacolo <A title="" href="#"><IMG src="http://www.davidemauri.it/emoticone/wink.gif" border=0></A></P><img src="http://blogs.ugidotnet.org/nettools/aggbug/72560.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/03/08/72560.aspx Thu, 08 Mar 2007 12:50:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/03/08/72560.aspx#feedback 9 http://blogs.ugidotnet.org/nettools/comments/commentRss/72560.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/72560.aspx [Quasi-OT] Radio 24, il programma "Al Vostro Posto" e i Database http://blogs.ugidotnet.org/nettools/archive/2007/02/19/71163.aspx <P>Sto ascoltando in questo momento il programma "Al vostro posto" di Radio 24. Tralasciando il tema della puntata del programma, la cosa che mi preme sottolineare &#232; come il responsabile dell'ATM intervistato dalla Radio abbia ancora la concezione di idee che i dati scambiati dall'ATM ed i suoi partner siano su "dischetti" (testuali parole). Rabbrividisco. </P> <P>Ma la cosa che mi fa ancora pi&#249; rabbrividire &#232; che ogni volta che qualche responsabile di qualche societ&#224; viene intervistato riguardo a qualche disguido di comunicazione con il cliente finale (di qualsiasi tipo, dalla notifica del pagamento di un multa - come nel caso che sto ascoltando - alla produzione di bollette) il problema &#232; sempre "informatico"...i dati sono tanti...blah blah blah...il sistema &#232; complesso...blah blah blah...insomma, le solite scuse.</P> <P>E' davvero ridicolo che oggi, Anno di Grazia 2007, si sentano ancora queste cose. Dal 1970 &#232; possibile creare database che sono perfettamente in grado di assicurare l'impossibilit&#224; dell'accadimento di situazioni non coerenti, preservando <EM>l'integrit&#224; dei dati, </EM>che &#232; la cosa che viene puntualmente a mancare nelle situazioni in cui si trovano i suddetti "problemi informatici".</P> <P>Basterebbe avere dabatase <EM>decenti</EM> per avere un&nbsp;sistemi&nbsp;che non possono perdere dati, non possono dare e ricervere informazioni incoerenti n&#232; possono&nbsp;"dimenticarsi" di un cliente. Quando ci metteremo a sviluppare sistemi che non <EM>creano problemi</EM> ma<EM>&nbsp;li risolvono...</EM>anche<EM> imponendo </EM>rigide e ferree regole di integrit&#224; dei dati? Per applicazioni ancora non ci sono "regole", per i database si. Perch&#232; non iniziare ad applicare almeno quelle? I nostri dati saranno sicuramente pi&#249; al sicuro, e noi con essi.</P><img src="http://blogs.ugidotnet.org/nettools/aggbug/71163.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/02/19/71163.aspx Mon, 19 Feb 2007 20:17:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/02/19/71163.aspx#feedback 1 http://blogs.ugidotnet.org/nettools/comments/commentRss/71163.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/71163.aspx Technical Workshop dedicato a Visual Studio 2005 Team Edition for Database Professionals http://blogs.ugidotnet.org/nettools/archive/2007/01/16/67189.aspx <p>Come già anticipato da Lorenzo e da Simone il 21 Febbraio 2007 ci sarà un <a href="http://www.microsoft.com/italy/msdn/risorsemsdn/eventi/team_ws.mspx">Technical Workshop dedicato a Visual Studio 2005 Team Edition for Database Professionals</a>.</p> <p>Insieme a Lorenzo mostrerò come l'utilizzo di VS 2005 DBPro sia una reale manna dal cielo (non per fare pubblicità lo dico seriamente) per chi sviluppa / amministra un database.</p> <p>Non mancate!</p><img src="http://blogs.ugidotnet.org/nettools/aggbug/67189.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2007/01/16/67189.aspx Tue, 16 Jan 2007 16:13:00 GMT http://blogs.ugidotnet.org/nettools/archive/2007/01/16/67189.aspx#feedback http://blogs.ugidotnet.org/nettools/comments/commentRss/67189.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/67189.aspx Leggendo il transcript della "Agile chat"...pensieri sulle metodologie agili e l'OOD http://blogs.ugidotnet.org/nettools/archive/2006/12/20/60861.aspx <P>Leggendo <A href="http://blogs.ugidotnet.org/BlogEma/archive/2006/12/20/60837.aspx">l'interessante transcript della "Agile Chat" postata da Emanuele</A> mi sono venuti in mente una serie di considerazioni che vorrei condividere con tutti, in modo da poter avere un feedback su queste idee che tra poco andr&#242; a descrivere e che mi sembrano il "clou" della problematica.</P> <P>Per chi non volesse leggersi tutto il transcript, basta sapere che un dei punti fondamentali affrontati nella chat &#232; stato quello di "come far applicare le metodologie agili ai team e quindi farle capire ed apprezzare anche ai manager/boss/responsabili".</P> <P>Leggendo il transcript mi &#232; venuto in mente di partire dal presupposto contrario, e chiedermi <EM>perch&#232;</EM> &#232; tanto difficile introdurre tali metodologie. Se fossi un manager il mio timore sarebbe dovuto al fatto che la metodologia agile non mi da "sufficiente sicurezza" di poter portare a compimento un progetto entro tempi ragionevoli (notate che non sto dicendo entro i tempi <EM>prestabiliti</EM>, ma semplicemente <EM>ragionevoli</EM>, assumendo quindi che qualche rallettamento dovuto all'adozione di una nuova metodologia - diversa rispetto a quelle classiche - sia naturale).</P> <P>Partendo da questo assunto, il problema quindi si sposta sulla necessit&#224; di poter "provare" in modo inconfutabile che tale metodologia sia quantomeno in grado di portare a compimento il progetto in suddetti tempi ragionevoli. In pratica dobbiamo dimostrare che <EM>funziona ed &#232; applicabile</EM>.</P> <P>Oggi come possiamo fare questo? Semplicemente portando al responsabile che mostra una certa diffidenza una certa quantit&#224; di progetti che tramite l'utilizzo di metodologie agili hanno avuto successo. Anche facendo questo per&#242; non sempre si riescie...perch&#232; le metodologie agili, con il suo Refactoring, TDD e via dicendo danno una sensazione di "inconcludenza". Non di rado alcune persone mi hanno fatto osservare che secondo loro il refactoring &#232; paragonabile a un continuo fare-e-disfare che non &#232; produttivo. Capisco questo punto di vista: &#232; piuttosto naturale; il fatto di "vedere" i propri sviluppatori continuare a fare "continue correzioni" d&#224; sicuramente meno sicurezza al manager piuttosto che un progetto su carta dettagliato al millesimo. Certo poi magari il primo riescie ad essere portato a termine ed&nbsp;il secondo no, ma non &#232; questo il punto. Noi lo sappiamo, il problema &#232; farlo sapere a chi di dovere.</P> <P>Posto che secondo me questa "inerzia sociale" dovuta al fatto che i responsabili di progetto attuali (o superiori) sono (mediamente)&nbsp;di qualche generazione pi&#249; vecchi di noi avr&#224; una sua naturale fine...il problema che se ne delinea, dal mio punto di vista, &#232; che NON ESISTE UNO STRUMENTO FORMALE PER DIMOSTRARE CHE L'UTILIZZO DI OOD + METODOLOGIE AGILI SIA FUNZIONANTE! (Ok magari ho scoperto l'acqua calda...&#232; da un p&#242; che ci penso...oggi ho avuto il coraggio di scriverlo <a title="" href="#" ><img src="http://www.davidemauri.it/emoticone/appagato.gif" border="0"/></a>)</P> <P>L'unico "strumento" che attualmente abbiamo sono le nostre od altrui esperienze, ma non possono purtroppo essere definite "formali", ossia dimostrabili inconfutabilmente, in modo rigoroso e ripetibile. Da qui la mia considerazione: fino a quando qualcuno (magari qualcuno di questo UG <a title="" href="#" ><img src="http://www.davidemauri.it/emoticone/appagato.gif" border="0"/></a>) non riuscir&#224; a creare un metodo formale (e quindi matematico / logico) che ci permetter&#224; di dimostrare che il nostro progetto pu&#242; funzionare sulla carta (relativamente alla modellazione OO della nostra necessit&#224;) e creer&#224; una metodologia formale di applicazione delle regole che l'approcio agile definisce attualmente su quel progetto, non credo potremo mai risolvere il problema del dover convincere un responsabile che l'approcio agile sia quello corretto. A meno di non aspettare il ricambio generazionale completo del personale.</P> <P>A questo punto chiedo: non sentite anche voi questa "mancanza"?</P><img src="http://blogs.ugidotnet.org/nettools/aggbug/60861.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2006/12/20/60861.aspx Wed, 20 Dec 2006 15:33:00 GMT http://blogs.ugidotnet.org/nettools/archive/2006/12/20/60861.aspx#feedback 5 http://blogs.ugidotnet.org/nettools/comments/commentRss/60861.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/60861.aspx Riguardo l'uso delle stored procedure http://blogs.ugidotnet.org/nettools/archive/2006/11/12/54508.aspx <p>Sono contento che Mauro abbia <a href="http://blogs.ugidotnet.org/topics/archive/2006/11/11/54457.aspx">chiarito nel dettaglio</a> ciò che intendevano lui e Raf nei&nbsp;post che consigliavano di non utilizzare le stored procedure.</p> <p>Io rimango cmq della mia posizione. Non usare le stored procedure E' MALE.</p> <p>Onde evitare flame :-) mi spiego subito.</p> <p>Il caso descritto: "<em>L'uso di uno statement specifico che si preocupa di aggiornare i soli dati realmente modificati permette inoltre di gestire meglio la concorrenza ottimistica nel caso in cui, ad esempio, il client X modifichi la Ragione Sociale mentre il client Y modifichi l'indirizzo della ns entity, in un caso come questo potrebbe non avere senso gestire la concorrenza ma basterebbe semplicemente accettare le 2 modifiche che non sono "concorrenziali</em>"."&nbsp; sembra dimostrare che l'utilizzo di stored procedure è deleterio. </p> <p>Se pensiamo alle stored procedure come strumento per avere performance migliori è vero.</p> <p>Ma le stored procedure (così come le viste, come spiegherò proprio in <a href="http://wpc.education.mondadori.it/SchedaSessione.asp?IdSessione=SIS231">questa sessione a WPC</a>) NON SERVONO ASSOLUTAMENTE per migliorare le performance!</p> <p>I motivi per cui si usano sono essenzialmente 2 (in ugual ordine di importanza)</p> <ol> <li>Creare un livello di astrazione logica dal database model <li>Creare degli entry point verso i dati sulla qualè è possibile implementare tutta la sicurezza che si desidera</li></ol> <p>Se non si utilizzano stored procedure si lega in modo indivisibile il database all'applicazione (e viceversa); è bene ricordare, invece, che i vari strati applicativi dovrebbero essere il più&nbsp;disaccoppiati possibile. Oltre a questo fatto già di per se molto negativo ci si troverebbe a dover dare i permessi tabella per tabella (o, peggio, colonna per colonna). E' ovvio che quest'ultima opzione sarebbe un incubo da manutenere anche su db con poche decine di tabelle.</p> <p>&nbsp;</p> <p>Detto ciò, c'è un'altra cosa che bisogna ricordare SEMPRE, quando si parla di database e delle problematiche ad esso legate: è PROFONDAMENTE SBAGLIATO pernsare che ad ogni applicazione corrisponda uno ed un solo database. Un database è fatto per servire&nbsp;più applicazioni non solo ad una. Lasciare ad ogni sviluppatore di ogni applicazione il compito di scrivere query (o lasciarlo ad un ORM, la cosa non cambia) significa negarsi la possibilità di poter gestire correttamente la sicurezza del database, e&nbsp; - nel 99% dei casi - significa anche aver un proliferare di query di impossibile gestione che rendono davvero ardua (se non quasi impossibile) ogni ottimizzazione al livello di modello, di query e &nbsp;di indici. </p> <p>&nbsp;</p> <p>Altri articoli di approfondimento:</p> <p>Superfici di contatto:</p> <p><a title="http://blogs.ugidotnet.org/nettools/archive/2005/01/28/10041.aspx" href="http://blogs.ugidotnet.org/nettools/archive/2005/01/28/10041.aspx">http://blogs.ugidotnet.org/nettools/archive/2005/01/28/10041.aspx</a></p> <p>DAL vs Stored Procedure?</p> <p><a title="http://blogs.ugidotnet.org/nettools/archive/2005/02/01/10150.aspx" href="http://blogs.ugidotnet.org/nettools/archive/2005/02/01/10150.aspx">http://blogs.ugidotnet.org/nettools/archive/2005/02/01/10150.aspx</a></p><img src="http://blogs.ugidotnet.org/nettools/aggbug/54508.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2006/11/12/54508.aspx Sun, 12 Nov 2006 01:45:00 GMT http://blogs.ugidotnet.org/nettools/archive/2006/11/12/54508.aspx#feedback 9 http://blogs.ugidotnet.org/nettools/comments/commentRss/54508.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/54508.aspx Rockford Lhotka CLSA.NET Framework http://blogs.ugidotnet.org/nettools/archive/2006/04/11/38679.aspx <P>Il link alla homepage del guru della programmazione ad oggetti Rockford Lhotka </P> <P><A href="http://www.lhotka.net/Default.aspx">http://www.lhotka.net/Default.aspx</A></P> <P>Dal sito &#232; possibile scaricare il framework sviluppato dallo stesso Lhotka, aggiornato a .NET 2.0, e descritto nei suoi ormai famosi libri:</P> <P><A href="http://www.lhotka.net/Articles.aspx?id=1351540e-b941-446a-bacb-e0059cc82ee7">http://www.lhotka.net/Articles.aspx?id=1351540e-b941-446a-bacb-e0059cc82ee7</A></P><img src="http://blogs.ugidotnet.org/nettools/aggbug/38679.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2006/04/11/38679.aspx Tue, 11 Apr 2006 21:45:00 GMT http://blogs.ugidotnet.org/nettools/archive/2006/04/11/38679.aspx#feedback 1 http://blogs.ugidotnet.org/nettools/comments/commentRss/38679.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/38679.aspx ObjectiveView: un magazine sullo sviluppo OO e metodologie Agili FREE http://blogs.ugidotnet.org/nettools/archive/2006/03/29/38025.aspx <P>Ecco qui il link</P> <P><A href="http://www.ratio.co.uk/objectiveview.html">http://www.ratio.co.uk/objectiveview.html</A></P> <P>Gli articoli sono interessanti e gli autori sono di tutto rispetto (Johson, Vaughan, Ambler giusto per citarne alcuni...)</P><img src="http://blogs.ugidotnet.org/nettools/aggbug/38025.aspx" width="1" height="1" /> Davide Mauri http://blogs.ugidotnet.org/nettools/archive/2006/03/29/38025.aspx Wed, 29 Mar 2006 17:40:00 GMT http://blogs.ugidotnet.org/nettools/archive/2006/03/29/38025.aspx#feedback 1 http://blogs.ugidotnet.org/nettools/comments/commentRss/38025.aspx http://blogs.ugidotnet.org/nettools/services/trackbacks/38025.aspx