Codice con le rughe - 3/4 (e resto mancia)



Quand'è che un programmatore considera un codice sorgente "Legacy" ???
Quando e come quel codice è diventato Legacy ???



Visti i link, letti i commenti, l'idea che mi convince sempre di più è questa.

Visto che non è una tecnologia superata a rendere un codice Legacy - visto che non è il fatto che il codice non è documentato e nessuno sa più cosa fa come e perché a renderlo Legacy  - visto che
non è il tempo che passa e non è l'uso che lo consuma a renderlo Legacy - vista la difficoltà di leggere il codice rispetto la facilità a scriverlo cioè non è facile valutare il codice altrui (specie quando non presente) allo stesso modo del proprio (ogni scarrafone è bello a mamma soja) ... :



Il codice quando è Legacy lo è dal momento stesso in cui viene scritto oppure non lo è per niente



E quanto il codice scritto è Legacy o non lo è varia in relazione degli skill di coding del team che lo produce


Dal punto di vista pratico sono 2 le cose che mi convincono in questo senso:

   - Mi è capitato di trovare nel codice di un sw rifatto da zero segni di difficoltà/ostacoli simili a quelli del codice "Legacy" che sostituiva

   - Leggendo   Working Effectively with legacy code di M.C.Feathers ci ho trovato tecniche di refactoring del codice valide e applicapili tanto a codice Legacy pre-esistente quanto a codice nuovo ancora da scrivere







Tags :   |  |  |  |

Print | posted @ giovedì 28 agosto 2008 22.19

Comments on this entry:

Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Pierre at 29/08/2008 3.03

Non mi trovo d'accordo con la conlusione "Il codice quando è Legacy lo è dal momento stesso in cui viene scritto oppure non lo è per niente". Il codice che segue al meglio i paradigmi della programmazione, best practices e design patterns soddisfando i requisiti funzionali del momento ed alcuni prevedibili ma non richiesti non nasce legacy. I requirements funzionali possono cambiare, ed anche di molto, rendendo potenzialmente il codice di prima legacy. Se non si segue alcuna regola allora e' legacy sin dalla nascita.
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by fabiobeta at 29/08/2008 11.33

@pierre
Immagina di scrivere questo codice "che segue al meglio i paradigmi della programmazione". Poi scappi ricco alle hawaii e il codice scritto 5 minuti fa viene passato a qualcuno meno skillato, che non sa ancora cos'è un iterator (amazon deve ancora consegnargli il libro sui design pattern). Per questa persona il codice, anche appena nato, è legacy.

IMO ovviamente :)
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by marco at 29/08/2008 13.52

scusa se dico castronerie ma l'essere legacy non è riferito al fatto che il codice si basava su dei prerequisiti non + disponibili? ad es. era basato su una particolare dll che nelle nuove versioni non ha mantenuto la retrocompatibilità, su certe api di sistema di non + disponibili o su formati di file non + utilizzabili?
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 29/08/2008 14.20

> il codice si basava ad es. era basato su una particolare dll che nelle nuove versioni non ha
>mantenuto la retrocompatibilità, su certe api di sistema di non + disponibili o su formati di file
>non + utilizzabili?

> I requirements funzionali possono cambiare, ed anche di
>molto, rendendo potenzialmente il codice di prima legacy

lavorando in un ambinte enterprise queste condizioni sono una realtà quotidiana anche per software di successo che sono ancora facili da manutenere ed evolvere


l'idea di legacy che più funziona imho è che un codice diventa legacy quando è difficile da capire, capire come modificare e verificare le modifiche

e dipende dagli skill di chi scrive il codice o ci fa manutenzione e lo lascia in uno stato più o meno legacy



  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Pierre at 30/08/2008 6.48

>> dipende dagli skill di chi scrive il codice o ci fa manutenzione e lo lascia in uno stato più o meno legacy <<

Si, un programmatore poco esperto e poco interessato alla qualità tende a creare codice legacy.

>> lavorando in un ambinte enterprise queste condizioni sono una realtà quotidiana anche per software di successo che sono ancora facili da manutenere ed evolvere <<

Anche qui dipende, molto spesso proprio in ambiente enterprise ci si affida a professionisti inesperti, tanti e di bassa qualità. Poi si chiede aiuto al 'guru' di turno quando la frittata è fatta e bisogna consegnare!


>>l'idea di legacy che più funziona imho è che un codice diventa legacy quando è difficile da capire, capire come modificare e verificare le modifiche <<

Non direi, secondo me diventa legacy quando le modifiche derogano da tutti i paradigmi, patterns e così via. In altre parole si riempie di pezze.
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by LudovicoVan at 30/08/2008 8.50

Luka:>> l'idea di legacy che più funziona imho è che un codice diventa legacy quando è difficile da capire, capire come modificare e verificare le modifiche

Pierre:> Non direi, secondo me diventa legacy quando le modifiche derogano da tutti i paradigmi, patterns e così via. In altre parole si riempie di pezze.

Secondo me entrambe le vostre definizioni peccano di non essere nemmeno vere definizioni da un punto di vista ingegneristico.

"Definizioni" basate su puri "secondo me questo codice e' buono/cattivo, deroga/non-deroga", ecc. -- dove l'accento e' su un in-qualificabile "secondo me" -- sono inutili a stabilire qualunque metrica. Quindi non sono affatto "definizioni" per quel che ci riguarderebbe.

Tant'e', considerato che gli assets pre-esistenti si gestiscono sotto il capitolo re-engineering, un capitolo appunto dell'ingegneria informatica, voi che termine usate per *questa* categoria se legacy lo dedicate in pratica a "scritto male"?

Poi e' normale che uno arriva al paradosso che tutto il codice e' legacy, compreso quello sviluppato ex-novo: una definizione del tipo "e' bello/brutto" e' una definizione con valore definitorio nullo.

Insomma, il punto che sollevo va oltre cosa voglia dire in particolare "legacy". Sollevo un punto generale sulla valenza delle "definizioni" in ingegneria e nella nostra ingnegneria.

-LV
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 31/08/2008 21.36

Pierre:>>Si, un programmatore poco esperto e poco interessato alla qualità tende a creare codice legacy.
Pierre:>>Anche qui dipende, molto spesso proprio in ambiente enterprise ci si affida a professionisti inesperti, tanti e di bassa qualità. Poi si chiede aiuto al 'guru' di turno quando la frittata è fatta e bisogna consegnare!
Concordo

Pierre:>>Non direi, secondo me diventa legacy quando le modifiche derogano da tutti i paradigmi, patterns e così via. In altre parole si riempie di pezze.
Credo stiamo dicendo la stessa cosa: qui descrivi _come_ succede mentre sopra ho descritto _cosa_ provoca (difficile da capire, capire come modificare e verificare le modifiche)

LV:>> Poi e' normale che uno arriva al paradosso che tutto il codice e' legacy, compreso quello sviluppato ex-novo: una definizione del tipo "e' bello/brutto" e' una definizione con valore definitorio nullo.
LV:>> Insomma, il punto che sollevo va oltre cosa voglia dire in particolare "legacy". Sollevo un punto generale sulla valenza delle "definizioni" in ingegneria e nella nostra ingnegneria.

una risposta può essere che i criteri sono stabiliti o validati dalla comunità di esperti riconosciuti quando concordano (come accade nella comunità scientifica per una scoperta). trovo cioè che non funzionano per scoprire o dimostrare un criterio invece le trovo utili per formalizzarlo una volta che è già stato scoperto e convalidato dagli esperti. cosa ne pensi ?Pierre:>>Si, un programmatore poco esperto e poco interessato alla qualità tende a creare codice legacy.
Pierre:>>Anche qui dipende, molto spesso proprio in ambiente enterprise ci si affida a professionisti inesperti, tanti e di bassa qualità. Poi si chiede aiuto al 'guru' di turno quando la frittata è fatta e bisogna consegnare!
Concordo

Pierre:>>Non direi, secondo me diventa legacy quando le modifiche derogano da tutti i paradigmi, patterns e così via. In altre parole si riempie di pezze.
Credo stiamo dicendo la stessa cosa: qui descrivi _come_ succede mentre sopra ho descritto _cosa_ provoca (difficile da capire, capire come modificare e verificare le modifiche)

LV:>> Poi e' normale che uno arriva al paradosso che tutto il codice e' legacy, compreso quello sviluppato ex-novo: una definizione del tipo "e' bello/brutto" e' una definizione con valore definitorio nullo.
LV:>> Insomma, il punto che sollevo va oltre cosa voglia dire in particolare "legacy". Sollevo un punto generale sulla valenza delle "definizioni" in ingegneria e nella nostra ingnegneria.

una risposta può essere che i criteri sono stabiliti o validati dalla comunità di esperti riconosciuti quando concordano (come accade nella comunità scientifica per una scoperta). trovo cioè che le metriche non funzionano per scoprire o dimostrare un criterio mentre le trovo utili solo per formalizzarlo una volta che è già stato scoperto e convalidato dagli esperti. cosa ne pensi ?
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by LudovicoVan at 01/09/2008 9.00

> una risposta può essere che i criteri sono stabiliti o validati dalla comunità di esperti riconosciuti quando concordano (come accade nella comunità scientifica per una scoperta). trovo cioè che le metriche non funzionano per scoprire o dimostrare un criterio mentre le trovo utili solo per formalizzarlo una volta che è già stato scoperto e convalidato dagli esperti. cosa ne pensi ?

Francamente, cio' che dici temo che semplicemente non abbia nulla a che fare con ingegneria o management. Misura, Metrica, Indice, sono nozioni precisi, e non hanno nulla a che fare con cio' di cui tu parli qui: se apri qualunque libro di ingegneria informatica o del software, al capitolo pianificazione e stime, trovi le definizioni e pratiche rilevanti. (Purtroppo il mio Pressman e' rimasto in Italia, altrimenti citerei direttamente da fonte autorevole.)

Sul concetto poi di "esperti riconosciuti", apri un capitolo di portata addirittura sociale, oppure mi prendi in giro come al solito... ;)

-LV
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 01/09/2008 20.04

LV: >>Sul concetto poi di "esperti riconosciuti", apri un capitolo di portata addirittura sociale, oppure mi prendi in giro come al solito... ;)

ti confesso che ci credo al modello della comunità scientifica , quello dell'accademia o del bazar che dir si voglia

ad esempio ho dei punti di riferimento che ritengo credibili/affidabili (per es. stroustrup, gamma, kent back, fowler) xkè riconosciuti e xKè con la mia testa e nella pratica quello che dicono mi è funzionato.

e ho delle persone che riconosco come esperte in un dato campo dell'informatica da cui ritengo di poter apprendere e da cui lasciarmi guidare come lo sono tati il maestro di Judo, ll'allenatore di rugby e l'istruttore di mountain bike

forse la riprova più tangibile che riesco a trovare è il fatto di imparare e riuscire a ottenere risultati migliori applicando le cose imparate
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 02/09/2008 0.54

p.s. ho ri-trovato anche questa precisazione sulla differenza tra informatica e ingegneria del sw - la riposto magari per aiutarmi a chiarirmi le idee:

l'ingegneria del sw si occupa dei problemi pratici della produzione del sw

fa uso di teorie, metodologie e tool dove sono appropriati e gli utilizza in modo selettivo, e cerca sempre di trovare la soluzione dei problemi anche in assenza di teorie applicabili e metodologie a supporto.

  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by LudovicoVan at 02/09/2008 22.27

> ti confesso che ci credo al modello della comunità scientifica , quello dell'accademia o del bazar che dir si voglia

Quello dell'accademia e quello del bazar sono modelli OPPOSTI.

> forse la riprova più tangibile che riesco a trovare è il fatto di imparare e riuscire a ottenere risultati migliori applicando le cose imparate

Ma va!

> l'ingegneria del sw si occupa dei problemi pratici della produzione del sw -- fa uso di teorie, metodologie e tool dove sono appropriati e gli utilizza in modo selettivo, e cerca sempre di trovare la soluzione dei problemi anche in assenza di teorie applicabili e metodologie a supporto.

E questo giustifica la TUA costruzione di teorie che non stanno ne' in cielo ne' in terra? Oppure e' solo la solita endemica questione di incompetenza e il fatto che non sai neanche di cosa stai parlando?

Oppure e' che piu' che il tecnico, dovresti buttarti in politica. IMHO, hai un talento naturale.

-LV
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 03/09/2008 1.00

Offendere le persone è segno di ignoranza

Contraddirle senza averne la cognizione è sintomo di incompetenza


Accademia e bazar opposti a monastero e cattedrale nel libro che ha trattato questo argomento: 'L'Etica Hacker' di Pekka Himanen con il contributo di Linus Torval

L'ingegneria del sw e le differenze con l'informatica, dal libro Software Engineering di Iann Sommerville uno dei maggiori divulgatori e studiosi contemporanei dell'ing. del sw.

Ora puoi scegliere di fare qualcosa di intelligente: chiedere scusa ;-)
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by LudovicoVan at 03/09/2008 3.26

N.B. Galateo paragrafo 42: o censuri tutto o non censuri niente.

Vedo che non ti smentisci nella tua falsita'. Ma anche questa me l'ero salvata. Quando vuoi ti rinfresco la memoria.

-LV
  
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Luca Minudel at 03/09/2008 9.41

riguardo gli insulti non è la prima volta , sei informato da tempo su come la penso

ora è il momento delle scuse
  

Your comment:

Title:
Name:
Email:
Website:
 
Italic Underline Blockquote Hyperlink
 
 
Please add 6 and 6 and type the answer here: