|
Ingegneria del Software Per informazioni communications@infomedia.it Prerequisiti: Esperienze di analisi e disegno di architetture software o comprovata esperienza di sviluppo con linguaggi di programmazione Object Oriented Livello: Avanzato Durata: 2 giorni Negli ultimi due anni si è andato affermando l'uso di soluzioni sperimentate a problemi di design ricorrenti: design pattern. Mentre gran parte delle metodologie sono guidate dai princìpi di progettazione, i pattern nascono dalla pratica e sono effettivamente molto utili per evitare di reinventare la ruota. L'uso dei pattern, tuttavia, oltre ad essere limitato all'impiego di soluzioni già sperimentate, richiede anche una visione molto acuta, che nuovamente si ottiene solo con l'esperienza. I pattern di design propongono soluzioni a macro-problemi che vanno identificati in anticipo: è molto difficile partire con un design semplice e migliorarlo gradualmente attraverso l'uso dei pattern. Infine, proprio perché affrontano macro-problemi, molti pattern sono difficili da capire a fondo: spesso pattern diversi sembrano essere varianti di un unico concetto, e non è affatto facile scegliere "il pattern giusto". Programma del corso:
Obiettivi del Design ad Oggetti. Nozione di Pattern e Pattern Language. Problema, Contesto e Soluzione. Ruolo dei Pattern nel ciclo di vita del software. Forma canonica dei Pattern (GoF). Notazioni di Design (UML Distilled).
Un Editor Vettoriale totalmente estendibile tramite componenti plug-in.
Systematic OOD. Derivazione di Observer.
Bibliografia tradizionale ed on-line. Systematic Object Oriented Design Prerequisiti: esperienze di analisi e disegno di architetture software o comprovata esperienza di sviluppo con linguaggi di programmazione Object Oriented. Livello: avanzato Durata: 3 giorni La tecnologia ad oggetti viene spesso
adottata per le sue grandi promesse: classi riusabili, applicazioni estendibili, migliore
qualità del prodotto finale. Tuttavia, per ottenere realmente tali benefici è necessaria
una notevole esperienza. Non è quindi raro che l'introduzione della tecnologia ad oggetti
non sia seguita dai tanto attesi miglioramenti nello sviluppo.
Dai principi di progettazione alle tecniche di trasformazione.
Note: UML: Analisi e Design ad Oggetti Prerequisiti: E' richiesta una buona familiarità con i concetti della programmazione ad oggetti. Per seguire al meglio gli argomenti, è consigliata una certa esperienza di programmazione in un linguaggio object oriented (C++, Java, Delphi, Eiffel, Ada95, ecc) o in alternativa la conoscenza di base dell'analisi o del design ad oggetti. Durata: 3 giorni Con la ratifica da parte di OMG, UML si appresta a
diventare lo standard di riferimento per la rappresentazione dei modelli di analisi e
design ad oggetti. Supportato dai principali produttori (Microsoft, IBM, Oracle, ecc), in
grado di interfacciarsi con i più diffusi linguaggi (C++, Java, Smalltalk, ecc) e di
integrarsi con i diversi object model (CORBA, COM, ecc.), UML è un elemento stategico
importante per ogni azienda che realizzi progetti non banali. La potenza di UML si
riflette, tuttavia, nella sua complessità.
Genesi di UML. Rapporto tra linguaggi e metodologie. Ruolo di UML nello sviluppo del software. Legami tra diagrammi e fasi di sviluppo.
Formulazione di Use Case. Use Case Diagram. Uses ed Extends. Use Case vs. System Interaction. Use Case in pratica. Use Case e OOP.
Domain Analysis vs. Requirements Analysis. Elementi fondamentali nei Class Diagram. Trovare classi ed associazioni. Aspetti approfonditi: dynamic classification, composition, constraint, ecc.
Associazioni e responsabilità. Navigabilità ed accoppiamenti. Stereotipi. Interfacce e Abstract class. Refinement. Dipendenze generiche. Qualified Associations. Classi parametriche.
Aspetti dinamici: Collaboration e Sequence Diagram. Lifetime, condizioni e iterazioni. Validazione e Verifica tra aspetti statici e dinamici. Modelli Concorrenti e oggetti attivi.
Stati, eventi, transizioni, guardie e attività. Super-stati. Stati Concorrenti ed ereditarietà. Quando usare uno state diagram.
Sequenze e gradi di libertà. Parallelismo e sincronizzazione. Condizionale. Rapporto con Use Case. Swimlanes.
Programming in the large ed organizzazione di librerie. Relazioni con costrutti language-level.
Componenti hardware e software. Aspetti fisici di distribuzione. |