SOFTWARE DEVELOPMENT METHODOLOGIES

Academic year
2022/2023 Syllabus of previous years
Official course title
SOFTWARE DEVELOPMENT METHODOLOGIES
Course code
CM0634 (AF:398325 AR:215020)
Modality
On campus classes
ECTS credits
6
Degree level
Master's Degree Programme (DM270)
Educational sector code
ING-INF/05
Period
1st Semester
Course year
1
Where
VENEZIA
Moodle
Go to Moodle page
This course aims at introducing advanced concepts in software development and operations methodologies and tools for improving software quality.
The first part of the course will cover advanced aspects of software development: multi-threaded programming, event-based and GUI programming, network service programming.
The second part will focus on the different methodologies and tools used before and during deployment with particular focus on testing: unit testing, black-box and white-box testing, integration testing, GUI testing, performance testing, security testing, DevOps tools for build and deployment automation.
The third part will provide an overview of alternative programming methodologies: reactive programming, rule-based programming, logic programming, model-driven development.
Most of the examples will be based on Java language, whose knowledge is taken for granted.
The goal of the course is to transfer knowledge of
- advanced topics in Java programming language,
- the importance of different types of testing,
- the use of software tools for build and deployment automation,
- the specific programming knowledge for different types of systems.
The labs will help experimenting with tools and acquiring practical knowledge of the topics.
It is necessary to have a good knowledge of Java programming language, and a basic knolwedge of networking, and software engineering.
It is advisable to attend all the lectures as the course has theoretical and practical components.
The learning of concepts is eased by the use of software tools in the labs and discussion of practical examples.
The course will present different topics:
- Advanced aspects of software development: multi-threaded programming, event-based and GUI programming, network programming and microservices.
- Software Testing: unit testing, integration testing, GUI testing, performance testing, security and penetration testing
- DevOps tools for build and deployment automation.
- Advanced topics in Software Development.
Lecture Notes from the Professor, mostly based on:
1. R. Urma, M. Fusco, A. Mycroft. "Modern Java in Action: Lambdas, streams, functional, and reactive programming." Manning, 2019.
2. J. Bloch. "Effective Java", Addison-Wesley, 2018.
3. M. Pezzè, M. Young, "Software Testing and Analysis: Process, Principles, and Techniques", Wiley, 2008, ISBN 8126517735.
4. G. Kim, P. Debois, J. Willis, J. Humble, "The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations", IT Revolution Press, 2016, ISBN 1942788002
5. C. Walls. "Spring Boot in Action", Manning, 2015, ISBN 9781617292545
The assessment is based on written exam, and an optional assignment.
The written exam aims at verifying the knowledge of the different topics of the course.
The assignment is not mandatory and consist of a problem to solve, or in making a presentation to the class of a research paper.
Solving assignments give extra score with respect to the the mark of the written exam.
Theoretical lectures and practical laboratory classes;
Audio and Video online resources;
Chat and forum;
Assignments on various topics that give extra score;
Practical labs
English
written

This subject deals with topics related to the macro-area "Cities, infrastructure and social capital" and contributes to the achievement of one or more goals of U. N. Agenda for Sustainable Development

Definitive programme.
Last update of the programme: 12/05/2022