Ogni modulo equivale a 3 crediti ECTS. È possibile scegliere un totale di 10 moduli/30 ECTS nelle seguenti categorie:
- 12-15 crediti ECTS in moduli tecnico-scientifici (TSM)
I moduli TSM trasmettono competenze tecniche specifiche del profilo e si integrano ai moduli di approfondimento decentralizzati. - 9-12 crediti ECTS in basi teoriche ampliate (FTP)
I moduli FTP trattano principalmente basi teoriche come la matematica, la fisica, la teoria dell’informazione, la chimica ecc. I moduli ampliano la competenza scientifica dello studente e contribuiscono a creare un importante sinergia tra i concetti astratti e l’applicazione fondamentale per l’innovazione - 6-9 crediti ECTS in moduli di contesto (CM)
I moduli CM trasmettono competenze supplementari in settori quali gestione delle tecnologie, economia aziendale, comunicazione, gestione dei progetti, diritto dei brevetti, diritto contrattuale ecc.
La descrizione del modulo (scarica il pdf) riporta le informazioni linguistiche per ogni modulo, suddivise nelle seguenti categorie:
- Insegnamento
- Documentazione
- Esame
Software Engineering and Architectures (TSM_SoftwEng)
The module provides an in-depth view of selected topics of modern software engineering. These stem from the fields: modern software development processes, software architecture, and the principles of evolution of software systems.
Requisiti
- Object-oriented programming and design in more than one programming language
- Unified Modeling Language (UML)
- Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, Vlissides; ISBN 0-201-63361-2)
- Version and configuration management concepts
- Unit testing concepts and practice
- Basic knowledge of Scrum
Obiettivi di apprendimento
- The student applies and understands benefits and liabilities of agile and lean development
- The student knows about advanced architectural and design patterns and uses them to drive and reflect on design decisions
- The student has the awareness of software as a continuously evolving and complex system
- The student knows and can select maintenance and evolution techniques for continuous development of evolving and extension of legacy software systems while maintaining its quality
Contenuti del modulo
Modern Software Engineering (20%)
- Agile Development
- value creation and innovation
- risk and complexity in software development
- agile competence pyramid
- Principles and Practices
- effective communication among stakeholders
- project retrospectives, feedback techniques
- ongoing requirements, solicitation and management
- Modern Software Engineering Methodologies
- benefits/difficulties and comparison of different approaches (i.e. plan-driven, hybrid and agile)
- implications for project management
- incremental planning
- Research in Agile Development
Software Architectures (50%)
- Role of software architecture and software architects
- reference models, reference architectures
- architectural structures and views
- software architecture documentation
- Advanced design concepts
- the SOLID principles
- Attribute Driven Design
- design by contract
- Architectural patterns
- for distributed architectures
- architecture patterns vs design patterns
- pattern styles
- Selection, creation, and evaluation of software architectures
- quality attributes
- architecture analysis methods
- Research in Software Architecture
Software Evolution (30%)
- Principles of Software Evolution
- development, maintenance, evolution
- software aging
- Program comprehension
- Software Quality & Analysis
- software quality metrics
- software visualization
- continuous quality control
- Evolution of Legacy Code
- “Re”-Techniques: Reverse Engineering, Re-Engineering, Re-Factoring
- object-oriented re-engineering
- Testing legacy systems
- Research in Software Evolution
Metodologie di insegnamento e apprendimento
Self-study, homework assignments
Bibliografia
- Mary & Tom Poppendiek: Lean Software Development
- Kent Beck: eXtreme Programming Explained 2nd Ed.
- Ken Schwaber et al, Agile Software Development with Scrum, Prentice Hall, 2002
- Alistair Cockburn: Agile Software Development
- Robert C. Martin: Agile Software Development
- Tom Mens: Software Evolution
- Doug Schmidt et.al.: Pattern-oriented Software Architecture, Vol. 2
Frank Buschmann et al: Pattern-oriented Software Architecture, Vol. 4 - Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice 2nd Ed.
- Gernot Starke: Effektive Software Architekturen 2. Auflage
- Lehmann "Laws of Software Evolution Revisited"
- Martin Fowler et al, Refactoring
Joshua Kerievsky, Refactoring to Patterns - Michael Feathers, Working Effectively with Legacy Code
- Andreas Zeller: Why Programs Fail ISBN 1558608664
Scarica il descrittivo completo del modulo
Indietro