Secure Software Design

A.Y. 2024/2025
6
Max ECTS
60
Overall hours
SSD
INF/01
Language
Italian
Learning objectives
The course presents principles, processes and techniques for the design and the analysis of software applications, with specific emphasis on secure aspects.
Expected learning outcomes
Students will be able to plan the development of software projects having security aspects. They will have skills on modeling software requirements, developing code from models and performing code testing.
Single course

This course can be attended as a single course.

Course syllabus and organization

Single session

Lesson period
First semester
Course syllabus
1. SOFTWARE SECURITY. Software properties. Properties of secure software. Software life cycle: software development steps, life cycle models.
Security in the software life cycle. The vulnerability cycle. Design-level attacks. Implementation-level attacks. Operations-level attacks.
2. SECURITY ARCHITECTURE. Principles of security architecture. Security architecture guide lines. Criteria for selecting secure technologies The
Java sandbox case study.
3. DESIGN OF SECURE SOFTWARE. Properties of secure software models. Specification methods. Finite state machines. Communicating Machines.
UML state machines. Design by contract. Il Java Modeling Language tool.
4. IMPLEMENTATION. Good and bad implementation practices. Security level of programming languages. Security violations in C code. Secure C
code. An introduction to the Java Language. From models to code: finite state machines in Java.
5. TESTING. The testing activity within the software life cycle. Kinds of testing. Validation and verification techniques. Testing limits. Programbased
testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma
and JUnit.
Program of the lab actities:
- Design contract specification in Java Modeling Language.
- Unit Testing of Java code
- Code coverage
Prerequisites for admission
Skills acquired in the courses of Computer Programming and Security in web and mobile systems are fundamental for this course. Passing these exams is strongly recommended.
Teaching methods
Lessons and laboratory activities

Attending the teaching activities is strongly recommended
Teaching Resources
· Mark G. Graff, Kenneth R. van Wyk. Secure Coding: Principles and Practices. O'Reilly, 2003.
· Ghezzi Carlo, Jazayeri Mehdi, Mandrioli Dino. Ingegneria del software. Fondamenti e principi. Pearson Education Italia, 2004, 2ª ed.
· Glenford J. Myers, Corey Sandler, Tom Badgett, Todd M. Thomas. The Art of Software Testing. John Wiley & Sons; 2 edition, 2004.
Per la parte di laboratorio:
- G. Pighizzini, M. Ferrari. Dai fondamenti agli oggetti - Corso di Programmazione Java. Quarta Edizione. Pearson Education, 2015
- Cay S. Horstmann, ʺConcetti di informatica e fondamenti di Javaʺ, sesta edizione, Apogeo 2016

Web Site: http://ericcobenepss.ariel.ctu.unimi.it/
Assessment methods and Criteria
The exam consists of a written test, which aims to verify the student's knowledge of each aspect of the course (through open-ended questions and / or exercises). The written test is evaluated in thirtieths.
INF/01 - INFORMATICS - University credits: 6
Laboratories: 24 hours
Lessons: 36 hours
Shifts:
Professor(s)
Reception:
By appointment only
Dipartimento di Informatica - Via Celoria 18 - 20135 - Milano (MI)
Reception:
on appointment
Dept. of Computer Science