- Structured and object-oriented software development
- Real-time and embedded systems
- Systems engineering
Learning Objectives - Part A
- Knowledge of the principles of structured and object-oriented software development.
- Knowledge of the general methods for studying an object-oriented programming language.
- Knowledge of the characteristics of real-time systems and real-time operating systems.
- Knowledge of fundamental scheduling algorithms for real-time systems.
- Knowledge of advanced methods and tools for design, analysis, and testing of real-time software systems.
- Practical experience in design and development of real-time software.
Prerequisites - Part A
This course assumes a good mastering of the C language. A good understanding of software engineering principles, prior knowledge on mathematics, and aptitude to the formalization of concepts will largely help the comprehension of the topics covered in the course, but they are not prerequisites.
Teaching Methods - Part A
Lectures are given by presenting the course topics mainly through slides.
Lab sessions on real-time programming and c++ exercises are carried out by a teaching assistant (Dr Imad Zaza).
Further information - Part A
Students are invited to view the course page on Moodle (https://e-l.unifi.it) for more information.
Type of Assessment - Part A
The exam is aimed at assessing the theoretical and practical skills acquired on the course topics.
In the case of 9 credits, the exam consists in: the discussion of a small individually developed self-assignment plus an oral test on the contents of the course, OR the discussion of an assignment developed by an individual student or by a group of (typically two or three) students (in the latter case, please ensure that personal contributions to the work are clearly identifiable).
- Oral test with discussion of a self-assignment: send a short report on the assignment at least one week before the exam
- Discussion of an assignment: send an email to agree on the topic of the assignment
In the case of 6 credits, the examination method is the same as in the case of 9 credits, but it covers a subset of the contents of the course.
- Oral test with discussion of a self-assignment: send an email to agree on the exam topics; send a short report on the assignment at least one week before the exam
- Discussion of an assignment: send an email to agree on the topic of the assignment
Course program - Part A
Structured and object-oriented software development
- References to the C language; structured analysis, design, and programming.
- Software testing (testing methodology, control flow testing, data flow testing, finite state testing).
- Elements of the C++ language.
- Elements of object-oriented analysis, design, and testing.
Real-time and embedded systems
- Real-time scheduling algorithms (rate monotonic, earliest deadline first, ...).
- Protocols for accessing shared resources (priority inheritance protocol, priority ceiling protocol, ...).
- Real-time operating systems and standards.
- The real-time operating system VxWorks.
- Development of applications on Rasberry Pi.
- Advanced topics on real-time scheduling (real-time calculus, time Petri nets, preemptive time Petri nets, timed automata, real-time testing, ...).
Systems engineering
- Software life cycle models and standards (VModel, MIL-STD-498,...).
- Elements of model-based system engineering (SysML).