SOFTWARE ENGINEERING M - Z

Academic Year 2018/2019 - 2° Year
Teaching Staff: Emiliano Alessio TRAMONTANA
Credit Value: 9
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, and will be able to recognise the developer roles.

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.


Detailed Course Content

Software development processes, such as waterfall, evolutive and agile (spiral, XP). Projects management: planning. Requirement engineering: gathering and organising requirements. UML notation: use cases, activities, states, classes, sequences and collaboration diagrams.

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.