|
|
Prodotto ESAURITO/FUORI CATALOGO
Ingegneria del codice
|
| Editore | Mondadori Informatica |
| Autore | Mc Connell Steve |
| Titolo originale | Code complete second edition |
| Editore originale | Microsoft Press |
| Pagine | 915 |
| Volumi | 1 |
| Livello | Intermedio-Avanzato |
| Lingua | Italiano |
| Data pubblicazione | 05 - 2005 |
| ISBN | 8804540346 |
|
|
| Prezzo di copertina |
| Euro 80,00 |
|
Prefazione
Ringraziamenti
Elenco delle liste di controllo
Elenco delle tabelle
Elenco delle figure
Parte 1 Gettare le basi
1 Benvenuti alla costruzione del software
1.1 Cos’è la costruzione del software?
1.2 Perché è importante la costruzione del software?
1.3 Come leggere questo libro
2 Metafore per una migliore comprensione dello sviluppo del software
2.1 L’importanza delle metafore
2.2 Come utilizzare le metafore software
2.3 Comuni metafore software
3 Misura due volte, poi taglia: prerequisiti preliminari
3.1 Importanza dei prerequisiti
3.2 Determinare il tipo di software a cui si sta lavorando
3.3 Prerequisito di definizione del problema
3.4 Prerequisito dei prerequisiti
3.5 Prerequisito di architettura
3.6 Quantità di tempo da investire sui prerequisiti preliminari
4 Principali decisioni nella costruzione
4.1 Scelta del linguaggio di programmazione
4.2 Convenzioni di programmazione
4.3 La propria posizione sull’onda tecnologica
4.4 Selezione delle principali pratiche di costruzione
Parte II Creare codice di alta qualità
5 Design in costruzione
5.1 Problematiche di design
5.2 Concetti chiave del design
5.3 I blocchi componenti del design: le euristiche
5.4 Pratiche di design
5.5 Commenti su metodologie diffuse
6 Classi al lavoro
6.1 Fondamenti delle classi: tipi di dati astratti (ADT)
6.2 Buone interfacce di classe
6.3 Aspetti di design e implementazione
6.4 Motivi per creare una classe
6.5 Aspetti specifici del linguaggio
6.6 Al di là delle classi: i package
7 Routine di alta qualità
7.1 Motivi validi per creare una routine
7.2 Design a livello di routine
7.3 Buoni nomi di routine
7.4 Quando può essere lunga una routine?
7.5 Come utilizzare i parametri delle routine
7.6 Considerazioni particolari nell’utilizzo delle funzioni
7.7 Routine macro e routine inline
8 Programmazione difensiva
8.1 Proteggere il programma da input non validi
8.2 Asserzioni
8.3 Tecniche di gestione degli errori
8.4 Eccezioni
8.5 Barricare il programma per contenere il danno causato dagli errori
8.6 Ausili al debugging
8.7 Determinare quanta programmazione difensiva lasciare nel codice di produzione
8.8 Difendersi dalla programmazione difensiva
9 Il processo di programmazione in pseudocodice (PPP)
9.1 Riepilogo dei passi per realizzare classi e routine
9.2 Pseudocodice per professionisti
9.3 Costruzione di routine utilizzando il PPP
9.4 Alternative al PPP
Parte III Variabili
10 Aspetti generali di utilizzo delle variabili
10.1 Cognizione dei dati
10.2 Semplificare le dichiarazioni delle variabili
10.3 Principi per inizializzare le variabili
10.4 Ambito di visibilità
10.5 Persistenza
10.6 Tempo di binding
10.7 Relazione tra tipi di dati e strutture di controllo
10.8 Utilizzare ciascuna variabile esattamente per uno scopo
11 La potenza dei nomi delle variabili
11.1 Considerazioni nella scelta di un buon nome
11.2 Denominazione di tipi di dati specifici
11.3 La potenza delle convenzioni di denominazione
11.4 Convenzioni informali di denominazione
11.5 Prefissi standardizzati
11.6 Creazione di nomi brevi che siano leggibili
11.7 Tipi di nomi da evitare
12 Tipi di dati fondamentali
12.1 Numeri in generale
12.2 Interi
12.3 Numeri floating-point
12.4 Caratteri e stringhe
12.5 Variabili booleane
12.6 Tipi enumerati
12.7 Costanti denominate
12.8 Array
12.9 Creazione di tipi personalizzati (aliasing del tipo)
13 Tipi di dati insoliti
13.1 Strutture
13.2 Puntatori
13.3 Dati globali
Parte IV Istruzioni
14 Organizzazione sequenziale del codice
14.1 Istruzioni che devono essere in ordine specifico
14.2 Istruzioni il cui ordine non importa
15 Utilizzo dei costruttori di selezione
15.1 Istruzione if
15.2 Istruzioni case
16 Cicli di controllo
16.1 Selezionare il tipo di ciclo
16.2 Controllo del ciclo
16.3 Creare cicli facilmente: dall’interno all’esterno
16.4 Corrispondenza tra cicli e array
17 Strutture di controllo insolite
17.1 Più return da una routine
17.2 Ricorsione
17.3 goto
17.4 Prospettiva sulle strutture di controllo insolite
18 Metodi basati su tabelle
18.1 Considerazioni generali nell’utilizzo di metodi basati su tabelle
18.2 Tabelle ad accesso diretto
18.3 Tabelle ad accesso indicizzato
18.4 Tabelle con accesso a scala
18.5 Altri esempi di ricerche in tabella
19 Aspetti generali del controllo
19.1 Espressioni booleane
19.2 Istruzioni composte(blocchi)
19.3 Istruzioni nulle
19.4 Domare la nidificazione pericolosamente profonda
19.5 Basi della programmazione: Programmazione Strutturata
19.6 Strutture di controllo e complessità
Parte V Migliorie al codice
20 Lo scenario della qualità del software
20.1 Caratteristiche della qualità del software
20.2 Tecniche per migliorare la qualità del software
20.3 Efficacia delle tecniche di qualità
20.4 Quando effettuare il controllo di qualità
20.5 Il Principio Generale della Qualità del Software
21 Costruzione collaborativa
21.1 Panoramica delle pratiche di sviluppo collaborativo
21.2 Programmazione in coppia
21.3 Ispezioni formali
21.4 Altri tipi di pratiche di sviluppo collaborativo
22 Testing dello sviluppatore
22.1 Ruolo del testing dello sviluppatore nella qualità del software
22.2 Approccio raccomandato al testing dello sviluppatore
22.3 La borsa dei trucchi di testing
22.4 Errori tipici
22.5 Tool di supporto al test
22.6 Migliorare il proprio testing
22.7 Mantenere le registrazioni dei test
23 Debugging
23.1 Panoramica dei problemi di debugging
23.2 Individuare un difetto
23.3 Correggere un difetto
23.4 Considerazioni psicologiche nel debugging
23.5 Tool di debugging: ovvi e meno ovvi
24 Refactoring
24.1 Tipi di evoluzione del software
24.2 Introduzione al refactoring
24.3 Refactoring specifici
24.4 Refactoring con sicurezza
24.5 Strategie di refactoring
25 Strategie di ottimizzazione del codice
25.1 Panoramica sulle prestazioni
25.2 Introduzione alla ottimizzazione del codice
25.3 Tipi di grasso e di melassa
25.4 Misurazione
25.5 Iterazione
25.6 Riepilogo dell’approccio all’ottimizzazione del codice
26 Tecniche di ottimizzazione del codice
26.1 Logica
26.2 Cicli
26.3 Trasformazione dei dati
26.4 Espressioni
26.5 Routine
26.6 Ricodifica in un linguaggio di basso rilievo
26.7 Più le cose cambiano, più restano immutate
Parte VI Considerazioni di sistema
27 Come la dimensione del programma influenza la costruzione
27.1 Comunicazione e dimensione
27.2 Intervallo di dimensione di progetto
27.3 Effetto della dimensione di progetto sugli errori
27.4 Effetto della dimensione di progetto sulla produttività
27.5 Effetto della dimensione di progetto sulle attività di sviluppo
28 Gestione della costruzione
28.1 Incoraggiare la buona codifica
28.2 Gestione della configurazione
28.3 Stimare una tempificazione della costruzione
28.4 Misurazione
28.5 Trattare i programmatori come persone
28.6 Gestione del proprio manager
29 Integrazione
29.1 Importanza dell’approccio di integrazione
29.2 Frequenza di integrazione: a fasi o incrementale?
29.3 Strategie di integrazione incrementale
29.4 Build giornaliero e test “smoke”
30 Tool di programmazione
30.1 Tool di design
30.2 Tool per il codice sorgente
30.3 Tool per il codice eseguibile
30.4 Ambienti orientati ai tool
30.5 Realizzare i propri tool di programmazione
30.6 La Fantasilandia dei tool
Parte VII Artigianato del software
31 Layout e stile
31.1 Fondamenti di layout
31.2 Tecniche di layout
31.3 Stili di layout
31.4 Layout delle strutture di controllo
31.5 Layout di singole istruzioni
31.6 Layout dei commenti
31.7 Layout delle routine
31.8 Layout delle classi
32 Codice auto-documentazione
32.1 Documentazione esterna
32.2 Stile di programmazione come documentazione
32.3 “To Comment or Not to Comment”
32.4 Aspetti chiave per commenti efficaci
32.5 Tecniche di commento
32.6 Standard IEEE
33 Carattere personale
33.1 Il carattere personale è “off topic”?
33.2 Intelligenza e umiltà
33.3 Curiosità
33.4 Onestà intellettuale
33.5 Comunicazione e cooperazione
33.6 Creatività e disciplina
33.7 Pigrizia
33.8 Caratteristiche pressoché trascurabili, checché se ne parli
33.9 Abitudini
34 Tematiche di artigianato del software
34.1 Vincere la complessità
34.2 Scegliere il proprio processo
34.3 Scrivere i programmi prima per le persone, poi per i computer
34.4 Programmare con il proprio linguaggio, non nel linguaggio
34.5 Concentrare la propria attenzione con l’aiuto delle convenzioni
34.6 Programmare in termini del dominio del problema
34.7 Attenzione, caduta massi
34.8 Iterare, ripetutamente, all’infinito
34.9 Ti lascerei il software e diatribe religiose
35 Dove reperire ulteriori informazioni
35.1 Informazioni sulle costruzione del software
35.2 Argomenti al di là della costruzione
35.3 Periodici
35.4 Un percorso di lettura per lo sviluppatore software
35.5 Partecipare a una organizzazione professionale
Bibliografia
Indice
|
|
|
|