mail unicampaniaunicampania webcerca

    Stefano MARRONE

    Insegnamento di METODI E TECNICHE PER LO SVILUPPO DEL SOFTWARE

    Corso di laurea magistrale in MATEMATICA

    SSD: INF/01

    CFU: 8,00

    ORE PER UNITÀ DIDATTICA: 72,00

    Periodo di Erogazione: Secondo Semestre

    Italiano

    Lingua di insegnamento

    Italiano

    Contenuti

    Modelli di processi di sviluppo software. Modellazione del software. Dalla progettazione alla realizzazione. Il versioning e l’assicurazione della qualità.

    Testi di riferimento

    Roger Pressman, Principi di ingegneria del software, McGrawhill, 5ed


    Obiettivi formativi

    Conoscenza e capacità di comprensione (knowledge and understanding):
    Conoscenze dei principali processi, metodi e tecnologie dello sviluppo del software. Conoscenze del linguaggio UML per la specifica di sistemi software. Metodi avanzati per la modellazione e la verifica di sistemi software.

    Capacità di applicare conoscenza e comprensione (applying knowledge and understanding):
    Capacità di costruire programmi di complessità crescente attraverso l’applicazione dei principi di modularità e attraverso l’uso di strumenti di larga diffusione (IDE, strumenti di version control).

    Abilità comunicative (communication skills):
    Capacità di motivare le scelte progettuali ed implementative effettuate in modo logico ed argomentato. Capacità di usare la terminologia propria dello sviluppo software

    Al termine dell'insegnamento lo studente dovrà dimostrare:
    di saper modellare semplici applicazioni software;
    di saper far uso delle principali tecniche di verifica del software;
    di avere compreso i meccanismi di base dello sviluppo del software e di esprimerne le proprietà teoriche nonché le tecniche, i metodi ed i linguaggi della progettazione.
    Capacità di apprendere (learnings skills):
    Capacità di integrare lo studio degli argomenti proposti con riferimenti esterni in grado di dettagliare quanto presentato a corso.


    Prerequisiti

    Fondamenti di Informatica (conoscenza di un linguaggio di programmazione procedurale). E’ fortemente raccomandata la conoscenza di un secondo linguaggio di programmazione.
    E’ fortemente raccomandato il superamento del corso di Programmazione orientata agli oggetti (conoscenza dei principi di object orientation).


    Metodologie didattiche

    48 ore di lezione, 24 ore di attività di laboratorio. Data la presenza di una prova d’esame pratica è consigliata la frequenza alle lezioni di laboratorio.


    Metodi di valutazione

    L’esame si compone di due prove: una pratica ed una prova orale.
    La prova pratica consiste nella definizione con lo studente di un project work, che miri ad accertarsi delle competenze pratiche legate alla modellazione e allo sviluppo di software.
    La prova orale mira a valutare le capacità di ragionamento sugli argomenti del corso la verifica delle conoscenze dello studente anche attraverso il collegamento di contenuti trasversali e la capacità espositiva. Gli studenti dovranno presentarsi alla prova muniti di documento di riconoscimento. Non sarà consentita la consultazione di materiale didattico e/o elettronico personale (smartphone, tablet, etc..)
    Il voto finale sarà espresso in trentesimi.


    Altre informazioni

    E’ previsto il caricamento on-line di materiale didattico, esercitazioni e programmi di esempio.


    Programma del corso

    Richiami di programmazione: il paradigma imperativo, il paradigma orientato agli oggetti. Altri paradigmi di programmazione.
    Modelli di processi di sviluppo software: modelli principali di sviluppo software: Waterfal, Evolutivo, Incrementale, a Spirale. Modello Prototipale. V-Model. Modello Agile.
    Modellazione del software: Introduzione a UML: cenni storici ed evoluzione del linguaggio. Elementi costitutivi di UML. Studio dei diagrammi principali
    Requisiti: definizione di requisito e caratteristiche. Tracciabilità di un requisito. Processi di Requirements Engineering.
    Progettazione del software: modularità del software. Architetture software.
    Il sistema di controllo della versione.
    Verifica del software: il testing nella verifica della qualità del software. Tecniche e processi di testing. Tecniche black-box: equivalence partitioning, bonduary analysis. Tecniche di verifica formale.

    English

    Teaching language

    Italian

    Contents

    Models of software development processes. Software modeling. From design to implementation. Versioning and quality assurance.

    Textbook and course materials

    Roger Pressman, Principi di ingegneria del software, McGrawhill, 5ed


    Course objectives

    Knowledge and understanding (knowledge and understanding):
    Knowledge of the main processes, methods and technologies of software development. Knowledge of the UML language for specifying software systems. Advanced methods for modeling and verification of software systems.

    Ability to apply knowledge and understanding (applying knowledge and understanding):
    Ability to build programs of increasing complexity through the application of modularity principles and through the use of widely used tools (IDEs, version control tools).

    Communication skills (communication skills):
    Ability to justify design and implementation choices made in a logical and argued manner. Ability to use terminology specific to software development.

    Upon completion of the course, the student should demonstrate:
    - Of knowing how to model simple software applications;
    - That he/she knows how to make use of the main techniques of software verification;
    - to have understood the basic mechanisms of software development and to express the theoretical properties as well as the techniques, methods and languages of design.
    Ability to learn (learnings skills):
    Ability to supplement the study of proposed topics with external references that can detail what is presented in course.


    Translated with DeepL.com (free version)

    Prerequisites

    Fundamentals of Computer Science (knowledge of a procedural programming language). Knowledge of a second programming language is strongly recommended.
    Passing the Object Oriented Programming course (knowledge of object orientation principles) is strongly recommended.

    Teaching methods

    48 hours of lecture, 24 hours of laboratory activities. Due to the presence of a practical examination, attendance at laboratory classes is recommended.

    Evaluation methods

    The examination consists of two tests: a practical and an oral test.
    The practical test consists of the definition with the student of a project work, aiming to ascertain practical skills related to modeling and software development.
    The oral test aims to assess reasoning skills on the topics of the course the verification of the student's knowledge also through the connection of transversal content and expository skills. Students should come to the test with identification. Consultation of personal educational and/or electronic materials (smartphones, tablets, etc..) will not be allowed.
    The final grade will be expressed in thirtieths.

    Other information

    Online uploading of teaching materials, tutorials and sample programs is provided.

    Course Syllabus

    Programming recalls: the imperative paradigm, the object-oriented paradigm. Other programming paradigms.
    Models of software development processes: main models of software development: Waterfal, Evolutionary, Incremental, Spiral. Prototypal Model. V-Model. Agile Model.
    Software modeling: Introduction to UML: historical background and evolution of the language. Constituent elements of UML. Study of major diagrams.
    Requirements: requirement definition and characteristics. Traceability of a requirement. Requirements Engineering processes.
    Software design: modularity of software. Software architectures.
    The version control system.
    Software verification: testing in software quality assurance. Testing techniques and processes. Black-box techniques: equivalence partitioning, bonduary analysis. Formal verification techniques.

    facebook logoinstagram buttonyoutube logotype