Salta ai contenuti. | Salta alla navigazione

Strumenti personali

SOFTWARE ENGINEERING (ADVANCED)

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
2017/2018
Teacher
EVELINA LAMMA
Credits
6
Didactic period
Primo 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.
Some thematic seminars, given by invited speakers coming from software companies, are hosted in the course.
Knowledge acquired concerns methods and tools useful for all the above phases.
The main skills (the ability to apply knowledge acquired) 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; Agile software development.
- 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 and guided laboratory experience of variouys tools (Slack and Trello, UML for NetBeans and easyUML plug-in, Git as versioning system, Maven for software project management, JUnit and Mockito for testing)
- Invited seminar lectures, by experts working in software companies.

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

The learning achievement is verified 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 weak before.
The final exam consists of two part:
- 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 – jointly done by all the member of a group - 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.

These textbooks are recommended:

Ghezzi Carlo, Jazayeri Mehdi, Mandrioli Dino: Ingegneria del software - Fondamenti e principi. Seconda edizione, Pearson Education Italia, 2004, ISBN: 88-7192-204-2.

Sommerville Ian: Ingegneria del Software. Decima Edizione, Pearson Education Italia, 2017, ISBN: 978-8891902245.