Webriviste - Il portale italiano indipendente delle riviste di Internet e Pc

Home
19:17 > utenti collegati: 1
Entra nel forum di Webriviste Lascia il tuo messaggio nel guestbook Segnala ad un amico Webriviste Scrivi a Webriviste

Le riviste recensite
> Chip

> Computer Idea
> Dev
> Internet Magazine
> ISeries News
> Linux Journal Ita
> Linux&C
> Linux Pratico
> Linux Pro
> MacWorld
> Office Magazine
> Open Source
> Pc Magazine
> Pc Open
> Pc Pratico
> Pc Professionale
> Pc World
> VisualBasic&Journal
> Win Magazine
> Windows&net Magazine
EXTRA
> Chip
> Pc Professionale
__________________
> Forum
> F.A.Q. del Forum

__________________

Altri canali
> Archivio riviste

> Commercio elettronico
> Games Corner
> Il Punto
> Jurassic News
> Libri d'informatica
> Nastro rosa
> Sicurezza&Privacy
> Software
> Tips&Triks
> Wireless Lan




Ingegneria del codice

Ingegneria del codice
Titolo: Ingegneria del codice
Sotto-titolo: Manuale pratico per la costruzione di software completo
Autore: Steve McConnell
Editore: Mondadori Informatica
ISBN: 88-04-54034-6
Prima edizione, aprile 2005
Prezzo: 80,00 Euro
Pagine: 915

Finalmente un ottimo libro sull’ingegneria del software. Accanto ad una rigorosa presentazione dei concetti, esso si presta ad essere letto anche da chi non vuole troppa teoria, ma desidera indicazioni chiare, motivate e ben documentate su come creare “buoni” programmi (e siccome, spesso, la miglior documentazione è il codice stesso, il libro è pieno di listati nei principali linguaggi: C++, Java e Visual Basic; ma non mancano riferimenti al PHP, Python, C#, …).
Prima di affrontare la recensione vera e propria un invito: dalla pagina http://education.mondadori.it/Libri/SchedaLibro.asp?IdLibro=88-04-54034-6 potete scaricare dei capitoli del libro; FATELO! (tra l’altro se conoscete bene l’inglese, visitate anche il sito http://cc2e.com/; qui di capitoli scaricabili ce ne sono più d’uno!). La loro lettura vale più di mille commenti… che comunque vi fornisco ;-)
Il libro non è assolutamente per principianti; infatti chi inizia a programmare ha un’unica preoccupazione: che i programmi funzionino (e il più delle volte i programmi che scrive sono poco più che “esercizi”, più o meno sofisticati, piuttosto che veri e propri programmi utilizzabili in situazioni concrete).
Questo interesse muta nel tempo perché chiunque, con un minimo di esperienza, si rende conto del fatto che un programma funzionante è soggetto a mille richieste di modifica (da quelle di ottimizzazione a richiesta di cambiamento dei dati di ingresso, del suo comportamento e così via), spesso perché si iniziano a creare applicazioni sempre più sofisticate; in tutti questi casi è necessario imparare a “gestire” la complessità intrinseca dei programmi.
Il libro è una summa di ottimi consigli, indispensabili a chi si accinge a fare il salto di qualità sopraindicato, ma utilissimi anche a chi i programmi li crea da anni ma, di volta in volta, impara sui propri errori come migliorare le scelte con l’esperienza e non sempre ha trovato la “via migliore” per determinate problematiche.

Ottima anche la decisione di presentare degli esempi di codice da “non scrivere mai”: a parte la simpatica faccina orripilata che accompagna tali esempi, è interessante scoprire come spesso tali esempi infausti si ritrovino nel codice cosiddetto “di produzione” (ovvero installato presso il cliente e funzionante). Questo fa capire che numerose insidie si possono nascondere in maniera subdola e, a prima vista, difficilmente appaiono nella loro pericolosità (a meno che non facciano piantare il programma nel momento in cui lo si installa dal cliente!).
Non spaventi l’ampiezza del libro (quasi mille pagine): non è un romanzo che va letto da cima a fondo! Si possono benissimo affrontare subito i problemi che si sentono più “urgenti”, anche se l’intero libro merita un’attenta lettura per poterne apprezzare tutte le potenzialità.
Inoltre, come ogni buon libro che si rispetti, non pretende di essere “onnisciente”: per questo fornisce (al termine di ogni parte) utili riferimenti a risorse per approfondire i temi trattati (tra l’altro, in tutto il testo, ci sono link “interni” al già citato sito http://cc2e.com con approfondimenti mirati).
Inoltre non resta che sottoscrivere quanto detto dall’autore a proposito del libro “Gran parte di questo libro è una discussione delle pratiche di buona programmazione. Non è concepito per essere utilizzato per giustificare standard rigidi, e ancor meno per essere utilizzato come insieme di standard rigidi. Questo libro va usato come base per la discussione, come riferimento per le pratiche di buona programmazione, e per identificare le pratiche che possono essere vantaggiose nel proprio ambiente.” (pag 664)
Ma ecco le diverse parti, ciascuna commentata per le tematiche trattate:

Parte I: Gettare le basi
Dopo aver definito cosa comprende l’attività di “costruzione del software” (principalmente codifica e debugging, ma anche design di dettaglio, unit test, pianificazione e costruzione, integrazione e molto altro…) non si può non introdurre l’importanza dei pre-requisiti (che, nonostante alcune metodologie cosiddette “agili” tentino di sminuire, resta uno dei punti che tutti i libri di ingegneria del software continuano a indicare come fondamentali e che invece, puntualmente, sono trascurati in gran parte dei progetti reali!).

Parte II: Creare codice di alta qualità
Introduce dapprima i motivi per cui la costruzione del software è un’attività intrinsecamente complessa, per poi proporre delle strategie per gestire e, in certi casi, mitigare tale complessità. Inoltre vengono introdotte le tecniche di “programmazione difensiva”, quali le asserzioni, le politiche di gestione di errore (comprese le eccezioni) ed eventuali ausili per il debug del codice.

Parte III: Variabili
Può sembrare sorprendente come un’intera parte del libro si possa concentrare sulle variabili. Eppure è anche vero che esse permeano tutti i programmi in qualsivoglia linguaggio di programmazione. Ecco pertanto approfondite le problematiche relative alla loro dichiarazione (visibilità, o binding, problemi di inizializzazione) dalle convenzioni di naming ai suggerimenti sull’uso dei diversi tipi a disposizione.

Parte IV: Istruzioni
Accanto alle istruzioni onnipresenti (costrutti di selezione, cicli, uso della ricorsione,…) c’è un interessantissimo e impedibile capitolo su “Metodi basati su tabelle”, ovvero degli schemi per la ricerca di informazioni da poter usare invece degli usuali costrutti di controllo del linguaggio.

Parte V: Migliorie al codice
Vengono riprese e approfondite le diverse dimensioni che possono migliorare la “qualità” del software e le tecniche per ottenere questo miglioramento. Vengono illustrate le principali tecniche di test, debug, refactoring, ottimizzazione (con utili consigli su quando applicarle e quando evitarle!).

Parte VI: Considerazioni di sistema
Questa parte è dedicata ai progetti di grosse dimensioni e a come queste dimensioni influenzino vari aspetti dello sviluppo del software; aspetti che, se non vengono gestiti bene, portano inesorabilmente al fallimento del progetto.

Parte VII: Artigianato del software
La prima parte evidenzia come un codice che si “presenta bene” (ovvero ben indentato, ben strutturato) aiuti a capire la logica stessa del programma, ma poi vengono mostrati esempi di codice auto-documentante come ottimo supporto per chi “guardando” al codice ne comprende il significato (a diversi livelli di astrazione).


Pro: Un testo completo, ricco di esempi e scritto in maniera chiara e adatta a qualsiasi programmatore con buone basi di programmazione. Le tecniche descritte sono illustrate con numerosi esempi, ma sono tecniche così generali da essere valide per qualunque linguaggio di programmazione utilizzato.

Contro: nessuno da rilevare.


Parte I Gettare le basi
1 Benvenuti alla costruzione del software .... 3
2 Metafore per una migliore comprensione dello sviluppo del software. 9
3 Misura due volte, poi taglia: prerequisiti preliminari. 23
4 Principali decisioni nella costruzione.... 61

Parte II Creare codice di alta qualità
5 Design in costruzione 73
6 Classi al lavoro 125
7 Routine di alta qualità 161
8 Programmazione difensiva 187
9 Il processo di programmazione in pseudocodice (PPP) 215

Parte III Variabili
10 Aspetti generali di utilizzo delle variabili 237
11 La potenza dei nomi delle variabili 259
12 Tipi di dati fondamentali 291
13 Tipi di dati insoliti 319

Parte IV Istruzioni
14 Organizzazione sequenziale del codice 347
15 Utilizzo dei costrutti di selezione 355
16 Controllo dei cicli 367
17 Strutture di controllo insolite 391
18 Metodi basati su tabelle 411
19 Aspetti generali del controllo 431

Parte V Migliorie al codice
20 Lo scenario della qualità del software 463
21 Costruzione collaborativa 479
22 Testing dello sviluppatore 499
23 Debugging 535
24 Refactoring 563
25 Strategie di ottimizzazione del codice 587
26 Tecniche di ottimizzazione del codice 609

Parte VI Considerazioni di sistema
27 Come la dimensione del programma influenza la costruzione 649
28 Gestione della costruzione 661
29 Integrazione 689
30 Tool di programmazione 709

Parte VII Artigianato del software
31 Layout e stile 729
32 Codice auto-documentante 777
33 Carattere personale 819
34 Tematiche dell’artigianato del software 837
35 Dove reperire ulteriori informazioni 855

> Chi siamo
> Collabora
> Dicono di noi
> Scrivi a webriviste
> Forum
> Iscriviti al Forum
> F.A.Q. del Forum





Google


Web
Webriviste





torna su


Tutti i diritti delle immagini di copertina e dei marchi registrati contenuti in Webriviste sono di proprietà dei rispettivi editori
.
© WEBRIVISTE.COM 2000-2004 by Luigi Guardi, Maurizio Romano
[ Webriviste - il primo ed unico portale indipendente delle riviste informatiche ]