Ing Ind - Inf (Mag.)(ord. 270) - MI (473) AUTOMATION AND CONTROL ENGINEERING - INGEGNERIA DELL'AUTOMAZIONE
094124 - SOFTWARE ENGINEERING (FOR AUTOMATION)
Software development is more and more important in the realization of modern control systems. This course provides students in automation the basic concepts for a rigorous development of software systems. The course will introduce several specification notations and the most used methods for software verification and validation. Finally, it will present some examples of software development tool chains through a pair of case studies.
Risultati di apprendimento attesi
Expected learning outcomes
Knowledge and understanding
Students will learn how to:
identify the phases of software development and the specific activities associated with each phase
precisely model the behavior of software applications before they are implemented, in particular for what concerns their timing features
model the structure of software applications in terms of their modules and the interactions among them
test code to increase the confidence in its correctness
Applying knowledge and understanding
Given informal descriptions of specific software applications, students will be able to:
build precise models of their desired behavior, to better understand the involved problems
define test cases to verify that the implemented application works as desired
(for students who take the exam through a project) develop and test code that realizes the desired application
Students who take the exam through a project will learn to:
document the work they carried out
present their work to the teacher, explain and defend their design choices
Lifelong learning skills
Students who take the exam through a project will learn to find solutions – in full autonomy – to the unforeseen problems that arise in the development of new applications
1. General principles of software engineering.
1.1 The qualities of software. 1.2 Basic principles of software engineering. 1.3 A brief summary of the software lifecycle.
2. The modular design of software.
2.1 UML-based design. 2.2 General principles of object-oriented design and implementation.
The techniques presented during the course, and in particular those related to the precise modeling of requirements and to the testing of software systems help make software-based systems more reliable and resilient, also with respect to unexpected situations that might arise when the systems are deployed in the field.
Students are expected to know the basics of computer programming.
Modalità di valutazione
The assessment is based on a written exam at the end of the course. The written exam is open book, and it will assign up to 34 points. 30 cum laude will be assigned when the total score is higher than 31.
Students can also opt to pass the exam by developing a software project (from requirements, down to implementation and testing), in which they are expected to apply in practice the principles and techniques described during classes. The software development project must be carried out in a team of 2 or 3 people. Students who develop the software project are asked to produce documentation concerning the application developed, and must present their work in a final oral exam.
The following table provides a detailed overview of the elements that will be considered in the various assessment activities.
Type of assessment
Solution of numerical problems
Software testing and anlaysis exercises
Exercises focusing on design aspects
Definition of UML models from informal descriptions
Definition of formal models of behaviors informally described, using various formalisms
1, 2, 3, 4, 5
Assessment of laboratorial artefacts
Assessment of the design and implementation work carried out by students in groups
2, 3, 4, 5
Assessment of the presentation of the work carried out by students in groups during the software development project
2, 3, 4, 5
C. Ghezzi, M. Jazayeri, D. Mandrioli, Fundamentals of Software Engineering, Second Edition, Editore: Pearson Prentice Hall, Anno edizione: 2002 Note: