Newsgroup: it.comp.lang.visual-basic
Titolo: analisi di un programma

Prendendo spunto da un recente post sulla retribuzione di un software mi
domando in che modo, voi programmatori esperti, effettuiate l'analisi di un
problema da informatizzare in VB.
Io ho abbastanza esperienza sulla strutturazione di database (le tabelle e
le relazioni tra di esse), ma questa è solo una parte di un lavoro in VB che
utilizzi un database.
Quindi, per poter determinare il giusto prezzo di un software è necessaria
l'analisi del problema che esso risolve, ma quali sono i punti di un'analisi
accurata?
Come vi schematizzate il problema in modo da avere tutto sotto controllo
istante per istante?
Nella progettazione di database si realizza un diagramma E/R (o meglio, si
realizzava, adesso ci si fa lo schemino delle tabelle e dele relazioni come
in access) e in VB???
grazie mille, spero di essere stato chiaro.

troppo complicato o non ci sono suggerimenti utili per il mio problema?

 problema?
Vale, tendenzialmente, la prima. Ci scrivono libri sopra, ben più lunghi di
un post.
Nè i suggerimenti sarebbero esaustivi in ogni situazione. Al massimo può
valere, giusto come cronaca altrui, un riassunto:
Vale molto l'esperienza, nel senso che raramente hai modo (anche per
questioni di costi e di disponibilità di pagamento) di analizzare per filo e
per segno, dall'inizio alla fine (e, soprattutto, per le parti intermedie),
un progetto, anzi, di una proposta. L'esperienza, dicevo, ti consente di
immaginare quel che viene tralasciato/dimenticato(/persino nascosto) e,
quindi, di fare una domanda in più o di ... semplificare meno.
In sintesi, comunque, io generalmente faccio due analisi: la macro e, se il
preventivo di massima passa, quella più approfondita.
La prima (sempre IMHO, chiaro?!!!) si risolve in una "chiacchierata" di
mezza giornata (alla fine, se consideriamo anche un caffè, un intervallo e
una telefonata, 2/3 ore) e serve esclusivamente (sempre se va bene) a
stabilire i titoli dei "capitoli del libro". Il preventivo li citerà, magari
introducendo ipotesi non discusse, mica "tanto per", ma "solo per"
approfondirli meglio e dare la sensazione di "aver capito la problematica",
cosa non sempre immediata e scontata.
La seconda, dopo l'approvazione della prima e uno pseudo-accettazione del
tutto, è più approfondita, generalmente su più incontri, magari (se c'è
tempo, modo e ... rimborso) dedicata ad ogni "capitolo" o a piccoli gruppi
degli stessi. Questa seconda parte a volte si svolge, per specifici
argomenti, anche in corso d'opera. Non lo ritengo affatto scandaloso.
La terza e spesso ignorata parte è quella che riguarda le "cose dimenticate"
(pur senza mala fede), ovvero agli interventi, magari dopo qualche fornitura
(più o meno parziale), effettuati in funzione delle "Nuove richieste". Se
l'analisi è buona, raramente presumono interventi strutturali, ma, spesso e
volentieri, hanno tempi sensibili.
In sintesi: Traccio lo schema di massima, i titoli delle macro-procedure, e,
per ciascuna, le varie funzioni, sempre di massima. Poi, incrocio le dita e
penso agli "ammnicoli" di ciascuna funzione.
Infine, sempre se c'è tempo/modo/disponibilità, una buona e veramente
analitica analisi para il sederino da obiezioni importanti dopo. Sempre
massima disponibilità, ma si può tranquillamente dire "questo non l'avevamo
previsto". Sottolineo _avevamo_. Un'analisi "a grandi linee", come
realisticamente troppo spesso avviene, si basa bolto sulla fiducia reciproca
e sulla reciproca elasticità. Se una delle due parti (o, peggio, entrambe) è
troppo rigida, si finirà per spaccare tavoli a forza di pugni. E a farsi
male le mani.

Beh, la persona che mi ha commissionato il progetto è un amico (e per questo
gli ho fatto proprio un prezzo di favore)...
Mi ha preparato un blocco con varie schede e ognuna riportava in dettaglio
le informazioni che lui necessita di conservare.
Diciamo che io ho dovuto fare il lavoro di organizzare tutti questi dati,
lui, da ignorante in materia, aveva logicamente pensato ad una struttura
completamente inefficiente.
Cmq gli ho presentato un preventivo in cui gli spiegavo le funzioni del mio
programma:
"...dopo un'attenta analisi delle esigenze esposte, si realizzerà un
software su misura suddiviso in 2 macro sezioni: amministrazione e gestione
magazzino.
Sezione Amministrazione:
In questa sezione il programma mette a disposizione del cliente gli
strumenti necessari per il trattamento e l'archiviazione di:
·   Informazioni sui clienti (con ricerca degli stessi per numero,
indirizzo, comune, amministratore, nome del condominio), tipo di contratto,
importo ecc.
·   Informazioni sugli impianti installati per ogni singolo cliente:
tipologia (gas o gasolio) dati tecnici delle caldaie, delle pompe, dei
bruciatori, delle rampe gas ecc.
·   Archivio storico delle analisi di combustione di ogni singola caldaia.
·   Archivio storico delle riparazioni pompe e motori bruciatori di ogni
singolo impianto.
·   Archivio storico delle uscite delle squadre (cartellini) con immagini
scannerizzate dei cartellini originali.
·   Informazioni su tutte le fatture emesse, relative ad ogni cliente.
·   Registro chiamate ricevute.
·   Funzionalità di allarme: segnalazione chiamate da evadere nella giornata
odierna e delle imminenti scadenze.
·   Elenco dei lavori in sospeso con relativo ultimo cartellino emesso.
·   Elenco fatture fornitori.
·   Gestione dei preventivi.
·   Stampa computerizzata delle fatture..."
La parte di gestione magazzino non la vuole ancora. Cosa ne pensate del
programma che dovrà venir fuori?
Cmq lui ha firmato il preventivo, io ho scritto "Nel prezzo sono compresi i
primi 6 mesi di assistenza gratuita per eventuali conflitti software. Da
vagliare eventuali successive forme di assistenza mirata" Sempre perchè è un
amico...
Beh, ora il mio problema è ricevere un consiglio proprio su queste forme di
assistenza mirata... Di solito voi come fate?
Inoltre come faccio a determinare quando è assistenza e quando è ancora il
lavoro commissionato?
Avevo pensato di fare in questo modo: finito il programma lo chiamo e glielo
faccio esaminare, tutti i piccoli dettagli che rileva io li considero
facenti parte ancora del lavoro commissionato. Avvertendolo di ciò, quando
ha finito di elencarmi i dettagli (e sottolineo dettagli, mica mi può
aggiungere una nuova sezione...) io li aggiungo al programma e da qui in poi
considero il lavoro finito.
Poi come vi fate pagare l'assistenza?
grazie mille!