Si prega di ricordare la
straordinaria diversità delle aree di applicazione e degli ambienti
di sviluppo. Le osservazioni sono fatte su progetti reali e si
applicano ad un'ampia varietà di situazioni, ma non possono essere
considerate universali. Pertanto guardate a queste osservazioni con
un certo grado di scetticismo. C++ può essere utilizzato come un C
migliorato, tuttavia questo approccio lascia le tecniche più potenti
e caratteristiche del linguaggio inutilizzate, in modo da guadagnare
solo una piccola frazione dei benefici potenziali dall'uso del C++.
In questo capitolo ci si focalizza sugli approcci al design che
permettono di usare le astrazioni dati e la programmazione orientata
agli oggetti del C++; tali tecniche sono chiamate programmazione
orientata agli oggetti.
I maggiori
argomenti di questo capitolo sono:
- La cosa più importante da tenere a mente nello sviluppo del software è sapere chiaramente che cosa si vuole costruire.
- Lo sviluppo di software di successo è attività a lungo termine.
- I sistemi che costruiamo tendono ad essere limitati dalla complessità che noi o il nostro strumento può gestire.
- Non esiste un manuale che possa sostituire l'intelligenza, esperienza e il buon gusto nella programmazione e design.
- La sperimentazione è necessaria per lo sviluppo di software non triviali
- Programmazione e design non possono essere considerati senza tener conto della gestione pianificata di queste attività.
E' facile e costoso
sotto-stimare questi punti. E' difficile trasformare delle idee
astratte in qualcosa da mettere in pratica. Si noti il bisogno di
esperienza. Così come costruire mobili, biciclette, la
programmazione non è un'abilità che può essere dominata senza uno
studio teorico da solo. Spesso, noi umani dimentichiamo gli aspetti
della costruzione dei sistemi e consideriamo lo sviluppo del software
una serie di passi ben definiti, per ognuna delle quali vi sono delle
azioni specifiche e degli input, il quale produce in base ad una
serie di regole degli output. Design e programmazione sono attività
umane; dimenticare questo e si perde tutto. Questo capitola si
occupa della progettazione di vari sistemi che sono relativi
all'esperienza e alle risorse delle persone che costruiscono il
sistema. E' nella natura delle persone affrontare progetti che
raggiungono i limiti della loro abilità. Progetti che non offrono
sfide, non sono considerati come design. Solo quando qualcosa di
ambizioso viene tentato si sente il bisogno di creare nuovi strumenti
ed affrontare nuove tecniche. Ma c'è anche la tendenza ad assegnare
progetti peri quali “sappiamo come fare” a novizi che non lo
sanno. Chiaramente queste cose riguardano lo sviluppano di software
di grandi dimensioni; i lettori che non sono coinvolti in tale
sviluppo possono sedersi e godersi la descrizioni degli orrori da
evitare. In alternativa possono guardare un sottoinsieme delle
discussioni relative al lavoro individuale; non esiste un limite
inferiore nella dimensione dei programmi per il quale esiste un
particolare approccio alla documentazione e al design. Il problema
fondamentale nello sviluppo del software è la complessità, esiste
un solo modo per gestire la complessità: dividi et impera. Un
problema può essere separato in sotto-problemi che possono essere
maneggiati, questo semplice principio si applica in molti modi. In
particolare se si usa un modulo o una classe nel design di sistemi
separati del programma, che vengono connessi tramite una interfaccia
be definita. Questo approccio fondamentale nella gestione dei
problemi, in maniera simile viene fatto nella fase di progettazione
del programma, la quale può essere idealmente divisa in iterazioni
ben definite tra le persone coinvolte. Questo è l'approccio di base
per al gestione di problemi di complessità inerente al processo di
sviluppo e alla gente coinvolta.
Nessun commento:
Posta un commento