Visualizzazione post con etichetta Recensioni. Mostra tutti i post
Visualizzazione post con etichetta Recensioni. Mostra tutti i post

giovedì 29 gennaio 2009

Best Practices: Thinking in C++ di Bruce Eckel


Tra le letture che consigliamo vi è Thinking in C++ di Bruce Eckel. La prima edizione è del 2000 ma i concetti espressi sono ancor oggi molto moderni. Vi sono elencate una serie di best practices fondamentali per chi scrive codice e ciò indipendentemente dalla piattaforma tecnologica utilizzata.
Di seguito una serie di spunti di riflessione tratti e tradotti (molto!) liberamente dal testo originale... e per non prenderci troppo sul serio lasceremo la parola a Dilbert, mitico personaggio di Scott Adams che tutti i developer per la loro sopravvivenza tecnica e non solo (altra lettura consigliata è The Career Programmer: Guerilla Tactics for an Imperfect World) dovrebbero tener in gran conto... forse ancor più di Bruce Eckel!!!


1. Prima fatelo funzionare, poi rendetelo veloce! Questo è vero anche se siete certi che un qualsiasi frammento di codice sia realmente importante e che diverrà esso il collo di bottiglia principale del vostro sistema. Non toccate quel frammento per ottimizzarlo. Prima di tutto cercate di ottenere un sistema funzionante con un progetto il più semplice possibile. Soltanto dopo, se non è abbastanza veloce, lo analizzerete. Quasi sempre scoprirete che il vero problema non è il "vostro" collo di bottiglia. Risparmiate tempo per le cose veramente utili.

2. L'eleganza nella scrittura del codice paga sempre. Non è un'attività frivola. Avrete in mano un programma non solo più facile da compilare e testare, ma anche più semplice da comprendere e da manutenere: ed è qui che si ritrova il valore economico del vostro lavoro. Potrebbe servire un po' di esperienza prima di comprendere questo dato, in quanto potrebbe apparire che, mentre cercate di rendere elegante un frammento di codice, non siete in realtà produttivi. La produttività emergerà poi quando il codice si integrerà perfettamente nel vostro sistema, ed ancor più quando il codice o il sistema verrà modificato.

3. Ricordatevi del principio "divide et impera". Se il problema che state affrontando è troppo complesso, cercate di immaginare quali potrebbero essere le operazioni basilari del programma. Magari immaginando un "qualcosa" che si occupi delle parti più difficili!
Questo qualcosa è un oggetto e quindi scrivete il codice che utilizza quell'oggetto. Successivamente analizzate l'oggetto ed incapsulate le sue parti complicate all'interno di altri oggetti, e così via.

4. Se avete un grosso blocco di codice che ha bisogno di modifiche, cominciate ad isolarne le parti che non verranno modificate, eventualmente inglobandole in una"classe API" come metodi statici. Successivamente, focalizzate la vostra attenzione sul codice che verrà modificato, ristrutturandolo in classi. In tal modo renderete agevoli le modifiche man mano che la vostra attività di manutenzione procederà.

5. Tenete ben distinti il creatore della classe dal suo utilizzatore (il programmatore client). Chi utilizza la classe è il "cliente", e non ha bisogno né vuole sapere cosa accade dietro le quinte. Chi crea la classe dev'essere l'esperto di progettazione di classi e deve scriverla in modo che possa essere usata anche dal più principiante dei programmatori, continuando a comportarsi in maniera robusta nell'applicazione. L'utilizzo di una qualsiasi libreria è semplice soltanto se è trasparente.

6. Quando create una classe, usate una nomenclatura il più chiara possibile. Il vostro obiettivo è quello di rendere l'interfaccia di programmazione concettualmente semplice. Cercate di rendere i vostri nomi talmente chiari da rendere superflui i commenti. A tal fine, sfruttate l'overloading delle funzioni e gli argomenti di default per creare un'interfaccia intuitiva e facile da usare.

7. Il controllo dell'accesso consente a voi (creatori della classe) di fare in futuro estese modifiche che saranno quindi possibili senza danneggiare il codice client nel quale la classe è utilizzata. In questa prospettiva, mantenete tutto il più private possibile, e rendete public solo l'interfaccia della classe, utilizzando sempre le funzioni anziché i dati. Rendete i dati public solo quando siete costretti. Se gli utilizzatori di una classe non hanno bisogno di richiamare una funzione, dichiaratela private. Se una parte della vostra classe deve restare visibile alle classi eventualmente ereditate come protected, fornite un'interfaccia a funzioni piuttosto che esporre direttamente i dati. In questo modo, le modifiche di implementazione avranno un impatto minimo sulle classi derivate.

8. Prima di tutto e se possibile scrivete il codice di test. Ancor prima di scrivere la classe e poi tenetelo in evoluzione insieme alla classe. Rendete automatica l'esecuzione dei vostri test magari tramite un makefile oppure mediante uno strumento similare. In questo modo, qualunque modifica potrà essere controllata automaticamente lanciando il codice di test, e gli errori verranno immediatamente scoperti. Sapendo di avere la rete di sicurezza dell'ambiente di test, sarete più propensi ad effettuare modifiche consistenti quando ne sentirete il bisogno. Ricordate che i maggiori miglioramenti nei linguaggi di programmazione vengono dai controlli interni forniti da controllo del tipo, gestione delle eccezioni e così via, ma queste caratteristiche servono fino ad un certo punto. Dovete arrivare in fondo alla strada che porta alla creazione di sistemi robusti introducendo i test che verificano le caratteristiche specifiche della vostra classe o del vostro programma.

9. Ricordate una regola fondamentale dell'Ingegneria del Software: tutti i problemi di progetto del software possono essere semplificati introducendo un ulteriore livello di dereferenziamento concettuale. Quest'idea sta alla base dell'astrazione, la caratteristica primaria della programmazione orientata agli oggetti.

10. Rendete le classi le più atomiche possibile; in altri termini, date ad ogni classe un unico scopo chiaro. Se le vostre classi o il vostro progetto del sistema diventano troppo complicati, suddividete le classi complesse in classi più semplici. Il segnale più ovvio di questo fatto è proprio la stessa dimensione: se una classe è grande, c'è la possibilità che stia facendo troppo e che quindi è necessario scomporla.

11. Guardatevi dalle definizioni dei metodi lunghe. Una funzione lunga e complicata è difficile e costosa da mantenere, e probabilmente sta cercando di fare troppo da sola. Se vi trovate a maneggiare una funzione del genere, significa che, quanto meno, andrebbe suddivisa in alcune funzioni più piccole. Potrebbe anche suggerire la creazione di una nuova classe.

12. Guardatevi dalle liste di argomenti lunghe. Le chiamate di funzione diventano difficili da scrivere, leggere e manutenere. Piuttosto, cercate di spostare il metodo in una classe nella quale sia più adatto, e/o a passargli un oggetto come parametro.

13. Non ripetetevi. Se un pezzo di codice compare in molte funzioni nelle classi derivate, spostate quel codice in un'unica funzione nella classe base e chiamatelo dalle funzioni delle classi derivate. Non solo risparmierete spazio, ma consentirete un'agevole propagazione delle modifiche. Potete utilizzare una funzione inline perl'efficienza. Talvolta, la scoperta di questo codice comune porta considerevoli benefici alla funzionalità della vostra interfaccia.

14. Guardatevi dalle istruzioni switch o dagli if-else concatenati. Tipicamente, questo è un chiaro indicatore della programmazione di tipo type-check.
Programmazione type - check significa che state scegliendo quale codice eseguire in base ad un qualche genere di informazione sul tipo (il tipo esatto potrebbe non esservi immediatamente chiaro). Solitamente, potete rimpiazzare questo genere di codice sfruttando ereditarietà e polimorfismo; la chiamata ad una funzione polimorfica eseguirà il controllo di tipo per voi, e consentirà un estensibilità più affidabile e semplice. [N.d.T. - In realtà il controllo sui tipi è caratteristico del C++ che è un linguaggio fortemente tipizzato, ma il principio è comunque valido come punto di attenzione di ordine generale, nel senso che un eccesso di if-else nidificati è sicuramente indice di entropia elevata che state inserendo nel codice.]

15. Guardatevi dalle limitazioni nell'ereditarietà. I progetti più puliti aggiungono nuove funzionalità a quelle ereditate. Diffidate di un progetto che rimuove le vecchie funzionalità (mentre state ereditando) senza aggiungerne altre. Ma le regole sono fatte per essere infrante, e se state lavorando con una vecchia libreria di classi potrebbe essere più efficiente restringere una classe esistente nelle sue sottoclassi, piuttosto che ristrutturare la gerarchia in modo che la vostra nuova classe si vada ad inserire dove dovrebbe, al di sopra della vecchia classe.

16. Non estendete le funzionalità fondamentali nelle sottoclassi. Se un elemento dell'interfaccia è fondamentale per una classe si dovrebbe trovare nella classe base, e non essere aggiunto nel corso delle derivazioni. Se state aggiungendo dei metodi tramite l'ereditarietà, forse dovreste ripensare il progetto.

17. Meno è più. Iniziate da un'interfaccia minimale per la classe, semplice e piccola quanto basta per risolvere il vostro problema corrente, ma non cercate di anticipare tutti i modi nei quali la vostra classe potrebbe essere usata. Al momento del suo utilizzo, scoprirete il modo nel quale dovrete espandere l'interfaccia. Comunque, una volta che la classe è in uso, non potete modificarne l'interfaccia senza disturbare il codice client. Se avete bisogno di aggiungere più funzioni, va bene; non creerà problemi al codice, se non la necessità di una ricompilazione. Ma anche se i nuovi metodi rimpiazzano le funzionalità di quelle vecchie, lasciate da sola l'interfaccia già esistente (se volete, potete combinare le funzionalità nell'implementazione sottostante). Se avete bisogno di espandere l'interfaccia di una funzione esistente aggiungendo nuovi argomenti, lasciate gli argomenti già esistenti nel loro ordine, ed assegnate dei valori di default a tutti quelli nuovi; in questo modo, non creerete problemi a nessuna chiamata già esistente a quella funzione.

18. L'overloading degli operatori è soltanto "zucchero sintattico": un modo diverso per chiamare una funzione. Se l'overloading di un operatore non rende l'interfaccia della classe più chiara e semplice da usare, non fatelo. Per una classe create solo un operatore per la conversione automatica di tipo.

19. Non preoccupatevi di un'ottimizzazione prematura. È pura follia. In particolare, non preoccupatevi di forzare il codice ad essere efficiente quando state appena costruendo il sistema. Il vostro scopo principale è di verificare il progetto, a meno che lo stesso richieda una certa efficienza.

20. Mantenete gli scope più piccoli possibile, in modo che la visibilità e la vita dei vostri oggetti siano le più ridotte possibile. In questo modo, si diminuisce la possibilità di utilizzare un oggetto in un contesto sbagliato e di nascondere un bug difficile da trovare.

21. Evitate, evitate, evitate il più possibile... non ci stancheremo mai di ribadirlo, le variabili globali. Cercate sempre di inserire i dati all'interno delle classi. È più probabile imbattersi in funzioni globali piuttosto che in variabili globali, sebbene potreste rendervi conto in seguito che una funzione globale troverebbe una collocazione più consona come metodo static di una classe.

22. Sfruttate a vostro vantaggio il controllo degli errori effettuato dal compilatore. Compilate il vostro codice abilitando tutti i warning, e correggete il vostro codice inmodo da eliminarli tutti. Scrivete codice che utilizza gli errori ed i warning al momento della compilazione, piuttosto che codice che provochi errori di runtime. Utilizzate assert per il debug, ma a runtime usate le eccezioni.

23. Preferite gli errori di compilazione agli errori di runtime. Cercate di gestire un errore il più vicino possibile al punto in cui si è verificato. È preferibile gestire l’errore in quel punto piuttosto che lanciare un eccezione. Catturate le eccezioni nel gestore più vicino che abbia informazioni sufficienti per gestirle. Fate il possibile con l’eccezione al livello corrente; se in questo modo non risolvete il problema, rilanciatela nuovamente.

24. Non create una vostra notazione “personalizzata” per i nomi delle variabili membro (underscore, prefissi, variazioni fantasiose della notazione ungherese e così via), a meno che non abbiate una gran quantità di variabili globali preesistenti; se così non è, lasciate che le classi ed i namespace svolgano il lavoro per voi.

martedì 5 agosto 2008

Recensione: Wikinomics 2.0 - La collaborazione di massa che sta cambiando il mondo - Don Tapscott e Anthony D. Williams

Di solito, quando leggo un un manuale tecnico, mi capita di fissare mentalmente i concetti chiave, riflettendo con attenzione su quali siano i "connector" logici verso cui quella particolare lettura mi sta conducendo.
E' un processo di associazione mentale che spesso può portare su sentieri talvolta lontani da quelli specifici della lettura in corso.
E' la parte creativa del processo di lettura e questa particolare dimensione logico-associativa fa si che essa sia una attività umana, per così dire, "open"... nel senso che non è necessariamente guidata ed "incardinata" come può essere, ad esempio, la visione di un film dove sono coinvolti vari processi sensoriali (vista, udito etc. etc.).
Per abitudine poi, per rivedere a posteriori quanto mi ha particolarmente colpito durante la lettura di un testo, compio un gesto che di solito, nei confronti del libro, non è molto gentile...e cioè ripiego le estremità del foglio per segnalare la pagina!!!
Normalmente, anche perchè cerco di limitare la "brutalizzazione" del libro, sono circa una quindicina le pagine che "marco" perchè c'è una frase oppure un concetto che mi ha particolarmente colpito...

Su "Wikinomics 2.0" le pagine sono state quasi un centinaio sulle circa 400 del libro!!!
La forza dirompente e nello stesso tempo "concreta" dei concetti esposti in questo manuale è proprio qui, nei possibili, e per tutti siano esse aziende oppure singoli addetti del settore IT, spunti operativi !!!
Questo manuale, quindi, è stata forse la mia lettura tecnica-organizzativa più importante degli ultimi anni.
Tutto parte dal concetto (ovviamente concetto "manifesto" perchè non ci si ferma solo alle tecniche di "social computing") di Wiki come esemplificativo del cambiamento dei processi lavorativi da sequenziali (workflow di singole attività mono-thread secondo la tecnica del "passaggio del testimone") a collaborativi e concorrenti (thread paralleli) mediante i potentissimi strumenti (wiki, blog, feed etc. etc.) di vero e proprio "social computing integrato".
Gli esempi ed i documenti che gli autori portano a dimostrazione delle loro tesi sulla rivoluzione in atto sono innumerevoli e ne cito solo alcuni:
- "Jonathan Schwartz, CEO di Sun Microsystems, ha stabilito che ciascun dipendente tenesse un blog ... ciò ha aiutato l'azienda a riconquistare la propria forza competitiva nel settore IT"

- "Gli editori che pubblicano opere letterarie, film, software e programmi televisivi sono le prime vittime di una rivoluzione che sta attraversando a passo spedito tutti i settori... attraverso la peer production (produzione tra pari) possiamo realizzare un sistema operativo, una enciclopedia, e persino oggetti materiali come una motocicletta... "

- "Mentre la vecchia Rete era fatta di siti web, di click, e di occhi puntati sul monitor, la nuova Rete è fatta di comunità, di partecipazione e di peering..."

- "Il peering - collaborazione tra pari - funziona perchè fa leva sull'organizzazione autonoma, uno stile di produzione molto più efficace della gestione gererchica ai fini dello svolgimento di alcune attività. Il suo maggiore impatto si verifica nella produzione di beni informativi ed i suoi primi effetti si possono riscontrare soprattutto nella produzione di software, contenuto mediatico, intrattenimento e cultura... ma non c'è ragione per cui la peer production debba fermarsi a questo!!!"

Si potrebbe continuare con ulteriori citazioni ma la realtà del cambiamento, che molte aziende ed anche Corporation illuminate stanno realizzando, è strabiliante!!!


Si veda, ad esempio, il caso descritto di Procter & Gamble che ha adottato criteri di creazione ed ideazione dei prodotti guidati da tecniche di social computing ed è passata, nel corso degli ultimi 5 anni, dal quasi fallimento a redditività mai realizzate prima ... e tutto questo ricorrendo a software e criteri di collaborazione dei propri R&D con la Rete esterna che hanno riportato questa corporation ad essere leader indiscussa nel proprio settore.

Questo manuale descrive un cambiamento in atto ... un mutamento che attraverserà le aziende ed il modo di lavorare di tutti noi con la stessa importanza e virulenza che ha avuto per l'umanità, in passato, la Rivoluzione Industriale...

mercoledì 9 luglio 2008

Recensione: Il coraggio e la visione. Il lato segreto dei creatori di successo

E' impressionante, leggendo questo libro di Jessica Livingston, rilevare le differenze tra le modalità con cui nasce il tipico imprenditore nel settore IT negli Stati Uniti ed invece come e cosa sia l'imprenditore e l'imprenditoria IT in Italia.
I casi che l'autrice prende in esame sono delle vere e proprie avventure, in cui lo spirito di sacrificio personale è unito però alla possibilità, che solo il meccanismo tipicamente americano dei Venture Capitalist consente, di vedersi riconosciuta (e finanziata!!!) nel caso ci sia, la qualità di un prodotto.
Il libro è sostanzialmente una raccolta di interviste ai soci fondatori di alcune aziende leggendarie in campo tecnologico che raccontano come hanno realizzato il loro sogno.
Sogno che il più delle volte, è bene notarlo come costante, non era legato alla possibilità di immediati guadagni ma era invece, sin dall'inizio, legato fondamentalmente ad una idea ed alla fortissima volontà di realizzarla.
Citiamo solo alcune delle persone intervistate: Steve Wozniak (Apple), Caterina Fake (Flickr), Mitch Kapor (Lotus) e Sabeer Bhatia (Hotmail) ...
L'intervista a Steve Wozniak varrebbe da sola l'acquisto di tutto il libro. Woz, come venne soprannominato dal suo altrettanto leggendario compagno Steve Jobs, appare nella intervista come quel personaggio che ci siamo sempre immaginati che fosse... un creativo geniale ed una persona trasparente... un tecnico che dal nulla creava una macchina che è stata la storia dell'informatica, l'Apple 1.



Titolo: Il coraggio e la visione. Il lato segreto dei creatori di successo
Autore: Livingston Jessica
Editore: Mondadori Informatica
Data di Pubblicazione: 2008
Collana: Argomenti generali
ISBN: 8861140920
ISBN-13: 9788861140929
Pagine: 302

martedì 8 luglio 2008

Recensione: Code Complete di Steve McConnell


Spesso capita di leggere qualcosa una prima volta, in momenti o periodi in cui magari, per varie motivazioni, non siamo pronti a comprendere in profondità ciò che abbiamo tra le mani. E poi capita di rileggere e scoprire che quel qualcosa è veramente un'incredibile fonte di apprendimento e crescita. Questa è la mia attuale esperienza con Code Complete (di Steve McConnell) che avevo già letto anni fa, di corsa ed in inglese, ed oggi sto rileggendo nella sua recente edizione italiana (MS Press) con il (solito) brutto titolo, che i traduttori italiani purtroppo non ci risparmiano mai, di "Ingegneria del Codice". Cito solo una frase, a proposito di questo testo, di Peter Wright (Program now) e poi chiudo: "Questo libro merita di diventare un classico e dovrebbe essere una lettura obbligatoria per tutti gli sviluppatori e per chi è responsabile della loro gestione".

Recensione: Web Usability - J. Nielsen

[Premessa necessaria... si tratta di recensione già pubblicata qualche anno fa dal sottoscritto sulla rivista Computer Programming... ma i principi esposti in questo manuale sono pur sempre attuali...]
L'autore di questo testo Jacob Nielsen è, attualmente, uno dei massimi guru del Web design. I suoi principi di progettazione web si possono riassumere fondamentalmente in tre parole: semplicità, semplicità, semplicità!!!E' un paradosso ovviamente ma la semplicità, o meglio la pratica della semplicità, come Nielsen definisce il cuore della propria metodologia di progettazione, è quasi un'ossessione per un Nielsen contrariato per la enorme quantità di siti inutilmente complessi e con contenuti informativi nulli. Ed in effetti, se si verifica sul campo l'applicazione alla lettera di tale pricipio proprio sul suo sito http://www.useit.com/ si può, sulle prime, rimanere paradossalmente sconcertati dalla grafica estremamente spartana, quasi monacale!!! Del resto anche il testo Web usability si presenta con una grafica semplice ma evidentemente, dati anche i numerosi esempi presenti riguardanti, purtroppo, principalmente ciò che non si deve fare sul web pittosto che, invece, esempi in positivo, i grafici della casa editrice non devono aver lasciato completamente mano libera a Nielsen!!!Comunque, ad ogni buon conto, è utile sottolineare che Web usability non è né un manuale di tecniche di programmazione né un testo destinato esclusivamente a grafici del web. E' piuttosto un utilissimo compendio di principi generali di project-design che tutti coloro che hanno in qualche modo a che fare con la progettazione di sistemi informatici, dal foglio elettronico alle intranet di grandi aziende, dovrebbero leggere con estrema attenzione. Se, infatti, l'importanza che Nielsen attribuisce all'usabilità da parte dell'utente di pagine web si diffondesse tra i progettisti di tutte le interfacce utente di qualsivoglia prodotto informatico tutto il mondo dell'IT ne trarrebbe gran giovamento. Gli utenti non avrebbero più scuse, data la buona qualità dei prodotti, relativamente alle difficoltà d'apprendimento nell'utilizzazione dei loro programmi!!!Nielsen sottolinea, come filosofia di fondo, che se i processi che conducono alla progettazione di interfacce utente sono inutilmente complessi anche la relativa implementazione del motore software sottostante ne soffrirà inevitabilmente. In conclusione Nielsen, da perfetto appartenente al pragmatico mondo americano, definisce un acronimo (H.O.M.E.) per riassumere i cardini fondamentali dei suoi principi di progettazione affichè gli utenti tornino in certi siti anzichè in altri.Il significato di tale acronimo, riassuntivo di ciò che Nielsen tende a comunicarci con questo testo, è: High quality (contenuti di alta qualità), Often (aggiornamenti frequenti), Minimal (tempi di scaricamento minimi), Ease (facilità d'uso).
Pro:
Oltre a principi generali vi sono, ampiamente documentati, suggerimenti relativi a page design, content-design, intranet design, e da ultimo ma non per importanza, per il doveroso rispetto che il mondo anglosassone, a differenza di noi italiani, ha sempre avuto per tali problematiche, criteri di progettazione web per utenti con disabilità.
Contro:
Forse Nielsen può essere considerato un pò troppo integralista e ci si chiede come sarebbe il web se tutti i web-designer applicassero alla lettera i suoi criteri di progettazione!!!

Autore: Jacob Nielsen
Titolo: Web Usability
Editore: Apogeo
ISBN: 8873036864
Lingua: Italiano
Anno: 2000
Prezzo: € 40,28
Pagine: 418
Allegati: nessuno

Recensione: Sistemi Informativi e aziende in rete - C. Francalanci ed altri

[Premessa necessaria... si tratta di recensione già pubblicata qualche anno fa dal sottoscritto sulla rivista Computer Programming... ma i principi esposti in questo manuale sono pur sempre attuali...]

L’Ingegneria del software è una disciplina relativamente recente, in continua evoluzione e senza un patrimonio di esperienze consolidate come le altre Ingegnerie. Negli ultimi anni si è cercato di porre rimedio con la quantità di metodologie (L’UML ed il RUP saranno la soluzione?) alla scarsa maturità delle stesse. Il libro ci informa che, anche per questa evidente immaturità, l’atteso impatto rivoluzionario dell’Information Technology è stato notevolmente inferiore alle attese. Ma come? L’IT, che appare oggi essere il traino indispensabile dell’economia mondiale, non ha determinato alcuna crescita della produttività del sistema economico? La Rivoluzione Informatica non regge il paragone con la Rivoluzione Industriale? La risposta potrà apparire un paradosso ed, in effetti, gli studiosi di economia lo definiscono, in letteratura, come paradosso di produttività, ma la dura realtà, principalmente per i professionisti del settore, è proprio questa: non vi è nessuna automatica correlazione tra investimenti in informatica ed accelerazioni positive della produttività nelle aziende che li effettuano. Gli Autori, che sono docenti presso il Politecnico di Milano, partendo da questo presupposto, che rappresenta comunque un dato di fatto, descrivono le principali teorie sul rapporto tra le strutture aziendali ed i processi di elaborazione dell’informazione. Il testo pone quindi l’attenzione su due aspetti di solito poco considerati dagli sviluppatori e che, tuttavia, rappresentano spesso la differenza tra un progetto software riuscito ed uno fallito: l’efficacia delle stesse regole di business implementate dal software e le metodologie utilizzate per catturarle (estremamente interessante l’appendice dedicata dagli Autori all’analisi delle procedure aziendali e la conseguente descrizione del metodo AD - Analisi del Dettaglio). In sostanza il testo sottolinea che l’efficienza e l’efficacia di un software si misurano dalla capacità d’introdurre una nuova tecnologia unitamente al cambiamento organizzativo al quale essa si accompagna. Attraverso un percorso diviso, a grandi linee, in tre parti il libro ci descrive, nella prima parte, la differenza tra le tecnologie informatiche e le tradizionali tecnologie di produzione indicando, tra l’altro, alcune regole e criteri operativi di orientamento generale per la progettazione di sistemi informatici. Nella seconda parte vi è la descrizione dell’architettura complessiva dei sistemi di supporto operativo (ERP, CRM, SEM) e delle regole di business ad essi sottesi (Controllo di gestione, ad esempio). La terza parte si propone come ponte tra i metodi dell’Ingegneria Gestionale e l’Ingegneria del Software descrivendo i criteri di passaggio dall’Analisi del Dettaglio (analisi delle procedure aziendali) al modello Entità – Relazioni.

Pro:
Le tecnologie informatiche sono importanti almeno quanto i principi che costituiscono le basi dell’informazione trattata delle tecnologie stesse. Gli sviluppatori che desiderano approfondire il tema della comunicazione tra l’IT e la complessa realtà dei processi da informatizzare possono trovare in questo testo uno strumento di indiscutibile valore.
Contro:
Nessuno

Scheda
Autore: G. Bracchi; C. Francalanci; G. Motta
Titolo: Sistemi informativi e aziende in rete
Editore: McGraw-Hill Libri Italia srl
ISBN: 8838608849
Lingua: Italiano
Anno: 2001
Prezzo: € 33,50
Pagine: 448
Allegati: nessuno
 
Extension Factory Builder