Skip to main content
CODE 80305
ACADEMIC YEAR 2024/2025
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INF/01
LANGUAGE Italian
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester
TEACHING MATERIALS AULAWEB

OVERVIEW

Software engineering is a discipline dealing with all aspects of software development
    - discipline = subject of study
    - Software engineering = a set of theories, methods, techniques and 
      tools to develop quality software in a professional manner

AIMS AND CONTENT

LEARNING OUTCOMES

Acquire the basic scientific and professional principles of software engineering in the different phases of code development: planning, design, modeling, implementation, testing, verification and maintenance.

AIMS AND LEARNING OUTCOMES

The objective of the course is to provide an overview of Software Engineering necessary for the design and development of large modern software systems, as well as to introduce concepts, notations, methods and tools to follow the entire life cycle of the software.

At the end of the course, the student will be able to:

  • understand and describe the basic elements of the discipline (development models, requirements, design, testing, maintenance, design patterns);
  • describe a software system with the UML formalism and understand the documentation of an existing system;
  • solve simple software design, refactoring and testing tasks (at least at the unit testing level) also by working in a team;
  • use a CASE UML tool (e.g. Visual Paradigm or VS Code) and an IDE (e.g. Eclipse) to perform simple tasks (e.g. create a UML class diagram or refactor a piece of code)

PREREQUISITES

To successfully follow this course, it is necessary to have passed the exams in Introduction to Programming and Object-Oriented Programming, and therefore to be familiar with the Imperative and Object-Oriented programming paradigms.

The following knowledge is assumed to have been acquired and constitutes the necessary basis for understanding the topics of the course:

  •     Knowledge of programming fundamentals
  •     Knowledge of an object-oriented programming language: in particular Java
  •     Knowledge of OO concepts: Inheritance, Polymorphism, Encapsulation
  •     Basic knowledge of Databases
  •     Basic knowledge of Web Applications

TEACHING METHODS

The course includes both lectures and laboratory activities

  • Traditional lecture
  • Labs and supplementary activities using AulaWeb

AulaWeb will be used for three purposes: as a repository of course materials; as a channel for the bureaucratic communications, explanations, discussions related to the course; and finally to facilitate teamwork

SYLLABUS/CONTENT

The course program includes the presentation and discussion of the following topics:

  • Introduction to the course and to software engineering
  • Software development process models, agile methods (eg. Extreme programming)
  • Requirements Engineering. Scenarios and use cases
  • Software Design principles and design methods, coupling and cohesion, software architecture, design patterns, refactoring
  • The UML: Class diagram, Sequence diagram, State Machine diagram, Activity diagram
  • Software Testing: Testing functional / structural and coverage. Unit tests, integration, system, acceptance tests and regression tests
  • Software evolution and Maintenance

RECOMMENDED READING/BIBLIOGRAPHY

  1. Martin Fowler UML Distilled 4/Ed. Pearson-Addison Wesley.
  2. Mike O'Docherty. Object-Oriented Analysis and Design: Understanding System Development with UML 2.0. John Wiley & Sons [some portions]
  3. Sommerville I. Software Engineering 8th edition, Addison Wesley [some portions]
  4. Shari Lawrence Pfleeger, Joanne M. Atlee. Software Engineering: Theory and Practice [some portions]

TEACHERS AND EXAM BOARD

Exam Board

FILIPPO RICCA (President)

GIANNA REGGIO

MAURIZIO LEOTTA (President Substitute)

LESSONS

LESSONS START

In accordance with the teaching calendar approved by the Council of Study Programs in Computer Science and Computer Science

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

The exam consists of the following activities

  •     Laboratory activities
  •     Written

Laboratory activities

The course includes laboratory activities to be carried out in groups. For some of these activities, the delivery of the work performed will be required. For others, student participation will simply be monitored. Alternative activities to be delivered via AulaWeb will be proposed to those (e.g. working students) who are unable to attend the laboratory activities.

Written

The written exam will consist of multiple-choice questions. The questions will be both theoretical and practical, covering the topics discussed in class.

During the lessons, some examples of possible questions will be discussed so that by the end of the course the type of exam will be clear

ASSESSMENT METHODS

The laboratory activity aims to ascertain the collaborative skills in solving problems within the topics covered in the course, in particular the use of UML, refactoring and software testing. The written test has the objective of verifying the knowledge of both theoretical and practical aspects of the discipline. The specific knowledge of the subject and the ability of critical reasoning will be considered.

 

 

 

Exam schedule

Data appello Orario Luogo Degree type Note
23/01/2025 09:30 GENOVA Scritto
12/02/2025 09:30 GENOVA Scritto
19/06/2025 09:30 GENOVA Scritto
11/07/2025 09:30 GENOVA Scritto
10/09/2025 09:30 GENOVA Scritto

Agenda 2030 - Sustainable Development Goals

Agenda 2030 - Sustainable Development Goals
Quality education
Quality education