Skip to Main Content (Press Enter)

Logo UNIRC
  • ×
  • Home
  • Degrees
  • Courses
  • Jobs
  • People
  • Outputs
  • Organizations
  • Projects
  • Expertise & Skills

UNI-FIND
Logo UNIRC

|

UNI-FIND

unirc.it
  • ×
  • Home
  • Degrees
  • Courses
  • Jobs
  • People
  • Outputs
  • Organizations
  • Projects
  • Expertise & Skills
  1. Courses

1000135 - Ingegneria del software

courses
ID:
1000135
Duration (hours):
48
CFU:
6
SSD:
Data Processing Systems
Located in:
REGGIO DI CALABRIA
Url:
Course Details:
COMPUTER, ELECTRONIC AND TELECOMMUNICATIONS ENGINEERING/INTERNET E CYBERSECURITY Year: 3
COMPUTER, ELECTRONIC AND TELECOMMUNICATIONS ENGINEERING/GENERALE Year: 3
Year:
2025
  • Overview
  • Syllabus
  • Degrees
  • People
  • Other

Overview

Date/time interval

Secondo Ciclo Semestrale (23/02/2026 - 29/05/2026)

Syllabus

Course Objectives

The Software Engineering course aims to provide the principles, methodologies, and techniques underlying the various phases of software development and production: planning, modeling and specification, design, implementation, testing and verification, evaluation, and maintenance. Students will be enabled to carry out the main activities involved in the software life cycle, starting from the requirements or from the artifacts produced in earlier stages. The course provides theoretical tools and related guidelines to approach each phase of the life cycle. It also includes practical sessions aimed at providing students with hands-on experience in the design of complex software systems.



Course Prerequisites

Basic knowledge of the Java.



Teaching Methods

The course is organized according to the following structure:

Lectures (26 hours): presentation of the theoretical concepts with the support of slides and the whiteboard.

Classroom exercises (22 hours): guided problem-solving activities on software design through the use of UML diagrams, in particular use case diagrams, class diagrams, and sequence diagrams; practical activities on tools for source code management and sharing based on Git; exercises on code coverage criteria, carried out both on the whiteboard and in the Java environment through appropriate coverage analysis tools; exercises on the concepts of inheritance and polymorphism; introductory exercises on the formal analysis of security protocols using BAN Logic.



Assessment Methods

The assessment consists of:

  • a project, to be carried out individually or in groups, focused on the design of a software system according to the principles presented in the course;
  • a written exam (2.5 hours), including exercises and theoretical questions, aimed at assessing the ability to design and validate software systems and basic security protocols;
  • an oral exam, intended to discuss the project and the written test, and to verify the student's understanding of the theoretical topics covered in the course.

At the end of the oral exam, the student will be assigned a final grade on a scale of up to 30/30.

The final grade will be assigned according to the following evaluation criteria:

  • 30 with honors (cum laude): complete, in-depth, and critical knowledge of the topics, excellent use of technical language, full and original interpretative ability, and complete autonomy in applying knowledge to solve the proposed problems.
  • 28 – 30: comprehensive and in-depth understanding of the topics, excellent command of technical language, complete and effective interpretative skills, and ability to independently apply knowledge to solve the proposed problems.
  • 24 – 27: solid understanding of the topics, good technical language proficiency, accurate and confident interpretation skills, and good ability to apply most of the acquired knowledge correctly to problem-solving.
  • 20 – 23: adequate understanding of the topics, though with limited mastery, satisfactory use of technical language, correct interpretative skills, and more than sufficient ability to apply knowledge autonomously.
  • 18 – 19: basic knowledge of the main topics, basic use of technical language, sufficient interpretative skills, and sufficient ability to apply acquired knowledge at a basic level.
  • Fail: insufficient knowledge of the topics covered in the course.



Texts

  • I. Sommerville. Ingegneria del Software, decima edizione., Pearson 2017.
  • C. Larman, Applicare UML e i Pattern - Analisi e Progettazione orientata agli Oggetti, III ed. Prentice-Hall, 2005.
  • Applicare UML e i pattern. Analisi e progettazione orientata agli oggetti. Ediz. MyLab, Object-Oriented Software Engineering Using UML, Patterns, and Java: Pearson New International Edition
  • Bruegge, Bernd, and Allen A. Dutoit. Object-oriented software engineering; conquering complex and changing systems. Prentice Hall 
  • Usare UML. Ingegneria del software con oggetti e componenti
  • P. Amman, J. Offutt. Introduction to software testing, Cambrigde Univerisity Press
  • E. Gamma, R. Helm, R.Johnson, J.Vissides. Design patterns, Addison Wesley
  • SRC Research Report 39. A Logic of Authentication. Michael Burrows, Martin Abadi, and Roger Needham. February 28, 1989



Contents

Course Program

Introduction to Software Engineering (0.5 CFU)

Process and product. Software life cycle. Software development cost. External quality: Correctness, Reliability, Usability, Scalability, Efficiency, Robustness. Internal quality: Repairability, Maintainability, Reusability, Portability, Verifiability.

Requirements Engineering (0.5 CFU)

Concept of software product. Requirements analysis and specification. Software Requirements Specification (SRS) document. User and system requirements. Functional and non-functional requirements. Domain requirements. FURPS model. Completeness and consistency of requirements. Requirements elicitation, analysis, and validation. Use case modeling in UML. Use case diagram. Cockburn’s template.

Object-Oriented Modeling (1 CFU)

Modeling objectives. Traditional design vs. object-oriented design. Inheritance as a design and reuse tool. The design phase. Object-oriented modeling using UML. Class diagrams: attributes, operations, responsibilities, associations, multiplicity, aggregation, composition, associative classes, inheritance, interfaces. From UML design to Java implementation.

Creational, Structural, and Behavioral Patterns (1 CFU)

The DAO, Observer, Factory, Singleton, Façade, Adapter, Composite, Abstract Factory, Bridge, Builder, Strategy patterns.

Software Models and Architectures (0.5 CFU)

Partitions and layers. Architectural patterns. Repository architecture. Client/Server architecture. Peer-to-peer architecture. Model/View/Controller. N-tier architectures.

Software Verification and Validation (V&V) (1 CFU)

Static analysis. Testing goals and planning. Black-box and white-box testing techniques. Unit, integration, system, acceptance, and regression testing. Structural testing, coverage criteria. Cyclomatic complexity. Combinatorial testing. Model-based testing. Robustness testing.

Formal Verification of Security Protocols (1.5 CFU)

Introductory concepts in cybersecurity: symmetric encryption, asymmetric encryption, freshness, authentication. BAN Logic: notations and postulates (message meaning rule, nonce verification, jurisdiction rule). Formal analysis of security protocols: Otway-Rees, Needham-Schroeder (shared key), Needham-Schroeder (public key).


Expected results

Knowledge and understanding

Upon successful completion of the exam, the student will know the fundamental principles of Software Engineering, with particular reference to processes, methods, techniques, and supporting tools for the various phases of the software life cycle, as well as the main software architectures, development frameworks, and the essential security concepts that are useful for designing and analysing software systems.

Applying knowledge and understanding

Upon successful completion of the exam, the student will be able to apply Software Engineering methodologies, techniques, and tools to the analysis, design, development, verification, and maintenance of software systems, making choices consistent with the functional and non-functional requirements of the application context and taking into account, at an introductory level, security aspects and the correctness of interactions among components and protocols.

Making judgements

To pass the exam, the student must be able to autonomously evaluate different alternatives during the analysis, design, and verification phases of software, taking into account system requirements, maintainability, performance, reliability, and the overall quality of the proposed solution.

Communication skills

The course and the exam help the student develop appropriate communication skills, enabling them to present, using suitable technical language, the theoretical and design motivations underlying the adopted solutions, and to describe clearly and effectively the structure, behaviour, quality, and relevant properties of a software system.

Learning skills

Upon successful completion of the exam, the student will be able to independently learn new techniques, methodologies, technologies, and tools arising from the ongoing evolution of Software Engineering, and to apply them critically to the development and evaluation of new software systems.


More information

Teams code: o0w4e3c


The Teams group contains the course materials (slides, notes, and solved exercises) used during the lessons


Degrees

Degrees

COMPUTER, ELECTRONIC AND TELECOMMUNICATIONS ENGINEERING 
Bachelor's Degrees
3 years
No Results Found

People

People

De Angelis Vincenzo
Teaching staff
No Results Found

Other

Main module

Software Engineering
  • Use of cookies

Powered by VIVO | Designed by Cineca | 26.4.3.0