Ing - Civ (Mag.)(ord. 270) - MI (495) GEOINFORMATICS ENGINEERING - INGEGNERIA GEOINFORMATICA
*
A
ZZZZ
052423 - SOFTWARE ENGINEERING FOR GEOINFORMATICS
Obiettivi dell'insegnamento
The goal of the course is to enable students to learn how to conceive, design and develop software applications for the geographical domain. Python will be used as programming language because of its flexibility and its integration with relevant software libraries.
Risultati di apprendimento attesi
Dublin Descriptors
Expected learning outcomes
Knowledge and understanding
Students will learn how to:
· Identify the phases of software development and the specific activities associated to each phase
· Analyze software code written by others
· Identify architectural styles and patterns
· Understand the main elements of a programming language
Applying knowledge and understanding
Given specific project cases, students will be able to:
· Detail the corresponding requirements
· Define the architecture of the system
· Develop and test code fulfilling the design specification document.
Making judgements
Given a relatively complex problem, students will be able to:
· Analyze and understand the goals, assumptions and requirements associated with that problem and model them
· Define the architecture of the corresponding software system using proper styles and patterns
· Identify and define the needed verification and validation activities
Communication
Students will learn to:
· Write a requirement specification document
· Write a design specification document
· Present their work in front of their colleagues during project labs
Lifelong learning skills
· Students will learn how to develop a realistic project in the geoinformatics domain.
Argomenti trattati
Programming
Introduction to programming
Python as a general purpose language
Overview
Variables and constants
Instructions
Types and objects
Collections
Files
Functions
Classes and objects
Exception handling
Introduction to the development of web apps in Python
Introduction to geographical packages in Python
Software development process
Software lifecycle
Problem definition: requirements engineering
Importance of requirements
How to define a requirement specification document
Software design
Design patterns and architectural styles
Verification and validation
The verification process
Unit testing in Python
System testing of functional and non-functional properties
Process support tools
Software configuration management
Issue tracking tools
Integrated Development Environments
Exercise sessions and a project laboratory are integral part of the course. They will focus on the usage of geographical packages in Python to build a simple application and will help students in applying the approaches and principles we teach in class.
A project will be assigned at the beginning of the semester and will be developed through the course. Project artifacts (requirement analysis, design document, test report, code) are expected to be released at fixed deadlines that will be defined by the time the project will be assigned. The evaluation of projects will be based on the produced artifacts and on a presentation.
Prerequisiti
Knowledge of the basic principles of programming and operating systems is very useful even if not strictly required.
Modalità di valutazione
The assessment will be based on a written exam at the end of the course and on the projects developed in the laboratory part of the course. These projects will be presented to the instructor at the end of the course. The scores of the written exam and of the project part will be summed to compute the total score. The written exam will assign up to 16 points and will be considered sufficient when the score will be equal of higher than 10. The project part will assign up to 16 points and will be considered sufficient when the score is at least equal to 7. Students can take the written part at any exam session during the year. 30 cum laude will be assigned when the total score is equal or higher than 31.
Type of assessment
Description
Dublin descriptor
Written test
Solution of numerical problems
· Software testing exercises concerning the identification of test cases
Exercises focusing on design aspects
· Formulation of requirements
· Definition of code fragments in Python to fulfill specific requirements
· Definition of the high level architecture for a software system
1,2
1, 2, 3, 4, 5
Assessment of laboratorial artefacts
· Assessment of the design and experimental work developed by students, either individually or in groups, as part of the project
Note: If for any reason you are not included in the official list of course students, you may not been able to access the course material. In this case, the course instructor can grant you access if you request it through the site.
Forme didattiche
Tipo Forma Didattica
Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lezione
30:00
45:00
Esercitazione
10:00
15:00
Laboratorio Informatico
0:00
0:00
Laboratorio Sperimentale
0:00
0:00
Laboratorio Di Progetto
10:00
15:00
Totale
50:00
75:00
Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua
Inglese
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese