domenica 11 agosto 2013

Design con il C++ II

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