SOFTWARE ENGINEERING (UNIT 1)
cod. 1010130

Academic year 2024/25
3° year of course - First semester
Professor
Agostino POGGI
Academic discipline
Sistemi di elaborazione delle informazioni (ING-INF/05)
Field
Ingegneria informatica
Type of training activity
Characterising
48 hours
of face-to-face activities
6 credits
hub:
course unit
in

Integrated course unit module: SOFTWARE ENGINEERING + INTERNET TECHNOLOGIES

Learning objectives

The goal of the course is to provide an in-depth knowledge on the methodologies and techniques for the development of the software, on the Java programming language, and on the tools that may simplify the development and management of software systems.
Moreover, the course has the goal of providing to the students the ability to use the acquired knowledge and the experience, gained during the lab activities, to identify the best solutions for the desigh of software systems and for developing some satisfying implementations for both the properties and the cost of the developed systems.

Prerequisites

Fundamental concepts of Informatics, Fundamental concepts of
Programming.

Course unit content

The course presents the main techniques and methodologies for the development of software systems, with particular reference to object-oriented systems, and introduces the Java programming language. In particular, the course addresses the following topics:
Introduction
Development processes and models
Requirements Engineering
Design
Implementation and testing
Installation and maintenance
Project management
Java

Full programme

Introduction
Development processes and models
- Software development processes
- Software development models
- UML
Requirement engineering
- Introduction
- UML e OCL for the requirement engineering
- Requirements elicitation
- Requirements analysis
- Requirements management and validation
Design
- Design process
- Design principles
- Architectural design
- User Interface Design
- Software Pattern
- Object-oriented design
Implementation and testing
- Software implementation
- Software testing
Installation and maintenance
- Software installation
- Software maintenance
Project management
Java
- General properties
- Exceptions
- Input/output
- Collections
- Graphical user interfaces
- Functional Programming
- Reflection and concurrent programming
- Techniques, tools and models for software systems

Bibliography

Ian Sommerville. Ingegneria del Software, 10/ed, Pearson Education, 2017.

Internet Technologies
M. Amoretti, handouts in English on the course topics.
J. Kurose, K. Ross, "Computer Networking: A Top Down Approach", ed. Addison-Wesley, 2016.
D. Flanagan, "JavaScript - The Definitive Guide", ed. O’Reilly, 2020.
W. Stallings, “Cryptography and Network Security: Principles and Practice,” 7th edition, 2017.

Teaching methods

The course is based on theoretical lessons and laboratory exercises. In particular, the laboratory activities will be dedicated to the development of some applications and software systems using the Java language and the tools presented during the course. In these activities, students will work individually or in pairs, under the guidance and support of the course teacher and without precluding positive interactions between students. The slides used to support the lessons will be uploaded to the Elly platform, before each lesson, and a handout will be provided for each lesson. To download the slides of a course, you must register for the course through Elly. The slides are considered an integral part of the teaching material. Therefore, non-attending students must check the teaching material and the instructions provided by the teacher available on the Elly platform.

Assessment methods and criteria

There are written tests and practical tests. The written tests are based on open-ended questions on theory that must be answered without the help of notes and books. These questions are intended to assess the knowledge acquired on the topics discussed during the course. The practical test consists of the development of a software system and can be done by students individually or in groups of up to 2 people. The main purpose of this test is to assess the ability to apply the knowledge acquired during the course. In addition, the evaluation of the test will depend on the quality of the applications and systems developed, and the related documentation. The duration of the written test is 1 hour and thirty minutes and the test is evaluated on a scale of 0-30. The exam is passed if the result of the tests is greater than or equal to 18. The final grade is equal to the arithmetic mean of the grades of the tests. Honors can be awarded in the case of achieving the maximum score on all the tests.

Internet Technologies

The learning assessment includes two moments:
1) a written test lasting 1 hour, structured on open questions related to the Cybersecurity part;
2) a software development project based on the technologies illustrated in part 1 of the program; a short report and an oral presentation of the work carried out are expected.
The written test is evaluated on a 0-30 scale. The project is evaluated on a 0-30 scale. The scores are averaged to form the final grade.
A written test in progress is expected equivalent to moment 1) of the learning assessment, therefore related to the cybersecurity part.

Other information

- - -