Academic Year 2020/2021 - 2° Year - Curriculum Elaborazione Dati e Applicazioni and Curriculum Sistemi e Applicazioni
Teaching Staff: Emiliano Alessio TRAMONTANA
Credit Value: 9
Scientific field: INF/01 - Informatics
Taught classes: 36 hours
Exercise: 36 hours
Term / Semester:

Learning Objectives

General goals described according to the expected learning results.

1. Knowledge and understanding: the student will have knowledge on object-oriented mechanisms, the modularity issues, the development process.

2. Applying knowledge and understanding: the student will be able to design, document, and implement object-oriented software systems, will be able to recognise the developer roles, and will be able to implement tests for assessing the code.

3. Making judgements: the student will be able to analyse the modularity of software systems.

4. Communication skills: the student will be able to describe software components using a proper technical language.

5. Learning skills: the student will be able to solve the typical problems faced during the design and implemntation, by studying, analysing and using novel object-oriented technologies, according to the general principles given.

Course Structure

Frontal lessons.

Should remote teaching be needed, then some adjustements to the above might be introduced, while honouring the programme outlined in the syllabus.

Detailed Course Content

Software development processes, such as waterfall, evolutive and agile (spiral, XP, Scrum), activities and their timing. Requirement engineering: gathering and organising requirements. UML notation: use cases, activities, states, classes, sequences and collaboration diagrams. Code repositories and versioning: Git.

Object oriented design, inheritance and polymorphism. Quality issues. Design Patterns are described by means of objectives, contexts, problems solved, examples, solution with diagrams and code: Singleton, Factory Method, Abstract Factory, Adapter, Bridge, Composite, Decorator, Facade, Chain of Responsibility, Mediator, Observer, State. Concurrency in Java.

Stream Java and parallelism.

Refactoring techniques.

Software metrics and software evolution.

Software validation by means of testing.

Textbook Information

  1. I. Sommerville. Ingegneria del Software. Pearson Addison-Wesley.
  2. E. Gamma, R. Helm, R. Johnson, J. Vlissiders. Design Patterns – Elements of Reusable Object-Oriented Software. Pearson Addison-Wesley.
  3. M. Fowler. UML Distilled. Pearson. 2010
  4. R.-G. Urma, M. Fusco, A. Mycroft. Java 8 in Action: Lambdas, streams, and functional-style programming. Manning. 2015
  5. K. Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley. 1999
  6. M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley.