[Tech] Gestionali, Mysql e altre domande

Christian Surchi csurchi@mclink.it
Mer 12 Feb 2003 16:42:36 CET


On Wed, Feb 12, 2003 at 02:37:36PM +0100, Marco Ermini wrote:
> Allora, come (quasi) tutti dicono i professori universitari, "grazie per
> avermi posto la domanda" ;-)

Non l'ho fatto a caso, appunto. :)
 
> Anche se francamente credevo di sfondare una porta aperta...

E dai, siamo qui per imparare, altrimenti avremmo chiamato la lista
"guru", invece che "tech"!
 
> > Riferimenti esplicativi sui termini usati:
> > 
> > 
> > http://www.dict.org/bin/Dict?Form=Dict2&Database=*&Query=client-server
> > 
> > http://www.dict.org/bin/Dict?Form=Dict2&Database=*&Query=three-tier
> 
> Innanzitutto inviterei a non prendere definizioni da dizionari, tanto piu'
> online ;-) 

Scrivendo una mail ho riportato qualche definizione "accessibile", non
potevo fotocopiare libri o chissa' cos'altro... :)
Per la risposta comunque mi basavo sulle mia conoscenze.

> comunque, a parte le battute, immagino che si tratti piu' che altro
> di capire quale significato si danno alle parole. Io sto per riportare quello
> che generalmente si intende nel poco popoloso mondo degli analisi e degli
> architetti di sistema di cui da relativamente poco mi onoro di appartenere;
> uno sviluppatore, magari piu' incentrato sui dettagli, potra' ritenere i
> concetti forse logicamente piu' simili o sfumati di come non li veda io.

lungi da me essere uno sviluppatore!

> Questo, per dire che non pretendo di riportare una definizione da dizionario,
> ma solo di dire cosa "la maggioranza" in genere intende, ma ovviamente possono
> essere punti di vista.

per questo ho voluto precisare, visto che hai usato definizioni ben
precise che potevano non essere chiare e lampanti a tutti
 
> Innanzitutto, chiariamo che quando si parla di client/server e di three-tier
> si sta parlando ovviamente di analisi architetturale, ma soprattutto da un
> punto di vista logico ("logical architecture") e, se siamo gia' al three-tier,
> siamo nell'ambito della decomposizione del problema tramite la metodologia
> dell'analisi object oriented. Three-tier, come dice la parola stessa, e' un
> modello di analisi e progettazione di applicazioni che propaganda la
> separazione tra tre "livelli di business" come dicono i "dotti" dell'analisi,

lo dice pure il foldoc che citavo io, per la precisione :)

> ovvero la parte di presentation, quella di backend e l'RDBMS. Ripeto si sta
> parlando di analisi al fine dell'implementazione architetturale (casomai
> rimanderei a http://www.rational.com/products/whitepapers/461.jsp).

sssh, non farti sentire da Claudio... stai citando addirittura un testo
del '95 e lui ti dara' dell'obsoleto! ;)
 
> Quando si parla di client/server si sta parlando di un vecchio paradigma, in
> auge soprattutto in epoca "pre-web revolution", se mi passate il linguaggio da
>  hippie ;-), che significa in genere GUI + RDBMS (mi si potra' obbiettare che
> e' molto di piu'. Sono d'accordo nel senso che, in applicazioni abbastanza
> grandi e che subiscono variazioni spesso nel giro di una settimana, come
> quelle MIS, le scelte architetturali e di object-orientation si e' costretti
> comunque a farle; si veda l'eccellente whitepaper in proposito di Grady Booch
> "Objectifying Information Technology", che mi pare sia disponibile anche sul
> sito Rational).

Se lo trovo' lo leggero'! :)

> Parlando invece di three-tier si parla, *in genere*, di una frammentazione
> dell'architettura diversa. Intanto, siamo in un'epoca e in un contesto
> completamente differenti. C'e' stato il "boom" del web, e sono sorte nuove
> esigenze. In una applicazione client/server, il numero di utenti e'
> controllato (quantificabile in genere in centinaia o migliaia), la "distanza
> concettuale" tra l'RDBMS e il client e' poca, le applicazioni sono in genere
> modellate sul database (o sui database) che sono al "centro" del sistema, e
> consistono lato client in un applicativo installato localmente che puo' essere
> ragionevolmente cambiato ma e' sostanzialmente stabile, e su cui si pongono
> notevoli problematiche di software redistribution (per fare un esempio tecnico
> che forse mi fa comprendere di piu': il locking sull'RDBMS e' affrontato con
> nei modi piu' disparati, lato client, lato RDBMS o misto...). In caso di
> three-tier, si presuppone un contesto totalmente diverso: il numero degli
> utenti e' a volte imprevedibile (e puo' essere anche nell'ordine dei milioni),
> la composizione del backend e' estremamente variegata e composta di molte
> parti diverse che cambiano ed evolvono in continuazione. Infine, gli attori
> (nella terminologia di "attore" UML) in gioco sono in genere molto pochi in
> una applicazione client/server, in una three-tier possono essere molti (giusto
> per dire i primi che vengono in mente, i content provider, o i graphic
> designer).

Benissimo.
 
> Questo cosa implica dal punto di vista dello sviluppo? implica un fork
> abbastanza deciso nelle metodologie del processo di ideazione, progettazione,
> realizzazione, test e deploy delle applicazioni, che come e' facile intuire e'
> completamente diverso nei due casi - mi risultano ben pochi *casi reali* dove,
> per esempio, il paradigma MVC sia applicato ad una GUI di una applicazione
> client/server... ovviamente cio' e' teoricamente possibile, ma l'unico
> tentativo che ho visto fare e' stato in un progetto di IBM per Trenitalia a
> cui ho partecipato e che dopo un anno di giri a vuoto e' stato sospeso...
> mentre nel mondo web e' una prassi a dir poco abitudinaria, praticamente.

Non ti seguo adesso e non capisco dove tu voglia arrivare. :)
 
> Posso altresi' capire che, nell'ambito di applicazioni relativamente piccole,
> o comunque dove non c'e' stato un processo di razionalizzazione degli
> strumenti utilizzati per lo sviluppo, e da parte di programmatori che non
> hanno una particolare formazione sull'argomento (cosa assolutamente normale e
> giusta, non preoccupatevi, anche perche' in genere non e' il programmatore che
> si occupa di queste cose ;-) la percezione della differenza tra le due
> architetture sia relativamente poca (prima facevo una GUI e mi collegavo ad un
> DB, ora faccio delle pagine PHP e mi collego ad un DB: per lo sviluppatore si
> puo' quasi dire che siano cambiati solo il linguaggio e qualche altro
> strumento di sviluppo!!!). Questo magari succede a livello degli sviluppatori,
> oppure in realta' "limitate" da molti punti di vista o locali, che se gli
> parli di non dico di RUP, ma anche solo di UML, metodologie di analisi o
> architettura del software ti guardano a bocca aperta (o ti sputano nel viso
> ;-)

si, ma questo non mi pare che cambi la sostanza...
puoi aggiungere livelli di astrazione o mettere sistemi e modalita' di
comunicazione diverse (e quante ne vuoi) tra l'utente e i dati, pero'
non mi pare che questo "escluda" la presenza di client e server in senso
esteso.
 
> Ora, tornando allo scopo originale del thread, cosa significa questo in
> pratica ed in particolare per Umberto? che la sua applicazione non e' non
> sara' mai grande e complessa come il sistema demografico della Protezione
> civile o il servizio di raccolta dati elettorali della Prefettura e quindi
> sicuramente non servira' una analisi Vision 2000 per portarla da Access a PHP,
> pero' significa che personalmente preferisco *tenere in mente* che esistono
> architetture e paradigmi diversi, e preferisco rimanere in un ambito in cui io
> possa modularizzare il piu' possibile l'applicazione, in modo eventualmente da
> poterla facilmente rendere piu' generica o utile anche ad altri - a maggior
> ragione perche' potrebbe essere distribuita come GPL.

benissimo, "fai" come credi, appunto, ma la sostanza e la teoria che ci
stanno dietro secondo me non cambiano
 
> PS. scusate la prolissita', sara' la digestione dell'arancino che mi sono
> appena pappato :-P

mangia piu' leggero! :D

-- 
Christian Surchi, csurchi@debian.org, christian@firenze.linux.it |   ICQ     
www.debian.org - www.softwarelibero.it - www.firenze.linux.it    | 38374818
I'd like to meet the guy who invented beer and see what he's working on now.



Maggiori informazioni sulla lista flug-tech