Progettazione e analisi orientate agli oggetti - Object Oriented Analysis and Design

Programma dell'insegnamento - Corso di laurea in Informatica Magistrale internazionale

 

Docente

Prof. Stefano Mizzaro

Indirizzo e-mail

stefano.mizzaro@uniud.it

Indirizzo Pagina Web Personale

Sito Web http://www.dimi.uniud.it/mizzaro/

Crediti

6 CFU

Finalità e obbiettivi formativi

Il corso, che presuppone la conoscenza di base della programmazione OO (Orientata agli Oggetti), mira ad introdurre i concetti e le tecniche avanzati di analisi e progetto del mondo OO. La trattazione non sarà né formale né eccessivamente pratica, ma soprattutto concettuale. Verranno descritti: il linguaggio di modellazione UML (Unified Modeling Language), i principi di costruzione di un buon software OO e i design pattern. Verranno anche discussi alcuni casi di studio di problemi reali.

Programma

* UML per il progetto. I diagrammi UML usati per la progettazione: diagrammi di classe, di collaborazione, di sequenza, degli stati, di attività, dei componenti e del dispiegamento (deployment).
* I principi della progettazione OO. I concetti e le tecniche che consentono di costruire progetti OO di buona qualità, ad esempio: domini, ingombro, coesione, spazio degli stati, comportamento, conformità di tipo, progetto per contratti, ecc.
* I design pattern. I design pattern stanno alla progettazione OO come la programmazione strutturata sta alla programmazione imperativa classica. I pattern sono schemi di soluzioni ricorrenti, la cui conoscenza semplifica il progetto di nuovo software OO. Vengono presentati e analizzati i pattern principali.
* UML per l’analisi. Viene completata la presentazione di UML, introducendo i diagrammi di classe concettuali e dei casi d’uso. Vengono discusse le principali tematiche dell’analisi OO con UML.
* Il Refactoring. Viene presentata l'attività del refactoring, volta a migliorare codice già esistente e funzionante.
* Casi di studio e approfondimenti. I concetti e le tecniche introdotti vengono esemplificati in situazioni reali, attraverso un’attività seminariale che può essere svolta, opzionalmente, anche dagli studenti.

 

Bibliografia

* M. Page-Jones. Progettazione a oggetti con UML, Apogeo, Milano, 2002. ISBN 88-7303803-4.
* E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison Wesley, 1997, ISBN: 0201634988.
* M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999, ISBN: 0201485672.
* A. Shalloway and J. Trott, Design Patterns Explained – A New Perspective on Object Oriented Design, 2a edizione, Addison Wesley, 2004, ISBN: 0321247140.
* Altri testi e materiale fornito a lezione.

Modalità d'esame

Orale su appuntamento ed attività extra opzionale (seminario, approfondimento, ecc.) su un argomento specifico da concordare con il docente. È possibile su richiesta sostenere l’esame con il programma di una delle annualità passate.

*****************************************************************************

Aims
To present the advanced concepts and techniques for Object Oriented (OO) analysis and design. Basic OO programming principles are supposed to be known. The course will be neither too formal nor too practical, but mainly conceptual. Focal topics are: UML (Unified Modeling Language), principles leading to good quality OO design, and design patterns. Also case studies from real world problems will be discussed.

Program
* UML for design. UML diagrams used for software design: class, collaboration, sequence, state, activity, component, and deployment diagrams.
* OO Design principles. Concepts and techniques leading to good OO design, for instance: domains, encumbrance, cohesion, state space, behavior, type conformance, design by contract, etc.
* Design patterns. Design patterns are for OO design what structured programming is for classical imperative programming. Patterns are recurrent solution schema and their knowledge simplifies the design of new software. Main patterns are presented and discussed.
* UML for analysis. The UML description is concluded by presenting conceptual class and case use diagrams. The main issues of OO analysis with UML are discussed.
* Refactoring. The refactoring activity, aimed at improving already existing and working code, is described.
* Case studies. The concepts and techniques introduced during the course are exemplified in real world cases, by means of seminars (by invited experts or, optionally, by students).


References
* M. Page-Jones. Fundamentals of Object-Oriented Design in UML, Addison-Wesley, 1999. ISBN 020169946X.
* E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison Wesley, 1997, ISBN: 0201634988.
* M. Fowler, K. Beck, J. Brant, W. Opdyke, D. Roberts, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999, ISBN: 0201485672.
* A. Shalloway and J. Trott, Design Patterns Explained – A New Perspective on Object Oriented Design, 2nd edition, Addison Wesley, 2004, ISBN: 0321247140.
* Other textbooks and papers provided during lectures.

Exams
Oral exam plus an extra small term project (talk, homework, etc.)

Additional notes

On request, the course can be taught in English and the exam can be in English as well. Alternative programs for Erasmus students are possible in principle and have to be discussed with the instructor.