Salta ai contenuti. | Salta alla navigazione

Strumenti personali

ADVANCED SOFTWARE ENGINEERING

Academic year and teacher
If you can't find the course description that you're looking for in the above list, please see the following instructions >>
Versione italiana
Academic year
2021/2022
Teacher
MARCO ALBERTI
Credits
6
Didactic period
Secondo Semestre
SSD
ING-INF/05

Training objectives

The course is the second Software Engineering course. It presents the main principles and methods in Software Engineering, together with tools useful in the various phases of software development. Beside recalling the basic principles of software engineering, it focusses, in particular, on the software process and on methods and techniques for various phases of:
- analysis
- specification
- design
- validation
- maintenance
- measurement
of software system development.
The acquired knowledge concerns methods and tools useful for all the above phases.
The main skills (the ability to apply acquired knowledge) will be:
- Ability to do requirement analysis and specification, software system design also with OOD techniques (UML), and software testing. Ability to measure the effort needed for software development. Ability of using cooperative work tools, UML modelling tools, versioning and software project management tools, testing tools.

Prerequisites

The course requires knowledge about at least one programming language (imperative and/or preferably object oriented), and programming skills.

Course programme

- Introduction: overview, software qualities, principles of software engineering.
- Software development models.
- Specification: qualities and styles, operational specifications, declarative specifications, practical uses.
- Design: modularization, object oriented design, architectures, UML, design patterns.
- Validation and verification: goals and requirements, testing, analysis, symbolic execution, model checking (just mentioned), system integration, debugging.
- Production: activities, software processes, maintenance (evolution).
- Management: project planning, software metrics, project control, organization, risk management.
- Tools: cooperative working, versioning and dependency control, software development. For this part, practical labs on tools for sharing, UML design, version control (Git), software project management (Maven), testing (JUnit, Mockito).

Didactic methods

Classroom lessons are interleaved by some practical activities in the laboratories of Computer Science Engineering, for the part concerning tools (cooperative work tools, UML tools, versioning and dependency management system tools, testing tools).

Learning assessment procedures

Learning is assessed at the end of the course, by means of a final exam.
The exam can be taken in english, notifying this to the teacher one week before.
The final exam consists of two parts:
- a written test, organized as open questions and a set of exercises about course program, whose aim is to check knowledge achievement about speficication formalism, testing theory, metrics, and software delevopment models. The mark for this part is up to 16 points, with a minimum threshold of 9/16. During the written test it is strictly forbidden to consult textbooks, personal notes or any other external source.
- the presentation and discussion of a software project, to be agreed with the teacher and eventually joined with other courses. The mark for this part is up to 16 points. Each student can work individually or in a group. The presentation – given jointly by all group members - will concern methods and tools used during the project development, and software documentation. Prior the discussion, students are required to send a brief summary or presentation slides to the teacher. The evaluation of the projects aims at verifying the achieved level in conducting a (small) software project, specifying, designing, implementing and documenting it.

The final grade is the sum of the marks achieved in the two parts; if the sum is equal or exceeds 31 points, the final grade will be "30 with honor / 30".

Reference texts

All the slides used during the lessons will be made available at the course web site.
Moreover, texts of written exams of previous academic years are also available, and the students are encouraged to use them to improve and test their preparation.All the slides used during the lessons will be made available at the course web site.
Moreover, texts of written exams of previous academic years are also available, and the students are encouraged to use them to improve and test their preparation.

Textbooks:

Ian Sommerville, Software Engineering, 10th Edition, Pearson

Ian Sommerville, Engineering Software Products: An Introduction to Modern Software Engineering, Pearson

Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli, Fundamentals of Software Engineering, 2nd Edition, Pearson

For reference on Java:

Horstmann Cay, Core Java SE 9 for the Impatient, Second Edition, Addison-Wesley, 2017