Secure Software Design

A.Y. 2024/2025
6
Max ECTS
48
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 cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.

Course syllabus and organization

Single session

Lesson period
Second four month period
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. The Java sandbox case study.

3. DESIGN OF SECURE SOFTWARE. Properties of secure software models. Specification methods: UML state machines. Design by contract. 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. Program-based testing. Program flow chart. Statement coverage, branch coverage, decision and condition coverage. MCC and MCDC methods. Tools Emma and JUnit.
Prerequisites for admission
Prerequisites of this course are the knowledge and concepts learned in the courses of Programming and Security in web and mobile systems. Passing these exams is therefore strongly recommended.
Teaching methods
Lessons and lab activities
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.
· G. Pighizzini, M. Ferrari. Dai fondamenti agli oggetti - Corso di Programmazione Java. Terza Edizione. Pearson Education, 2008.

Web Site: http://ericcobenepss.ariel.ctu.unimi.it/
Assessment methods and Criteria
The exam consists of a written test, mandatory and lasting two hours. It aims to verify, through open-ended questions and exercises, the student's knowledge of the theoretical aspects of the course and the student's skills in some software tools for the definition of contracts and the validation of Java code.
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Shifts:
Turno
Professor: Riccobene Elvinia Maria
Professor(s)
Reception:
on appointment
Dept. of Computer Science