Programming II and Software Engineering - INGEGNERIA DEL SOFTWARE (2016/2017)

Course code
Other available courses
Other available courses
Other available courses
    Academic sector
    Language of instruction
    Teaching is organised as follows:
    Activity Credits Period Academic staff Timetable
    Teoria ed esercitazioni 5 II sem. Carlo Combi, Barbara Oliboni
    Laboratorio 1 II sem. Roberto Posenato

    Lesson timetable

    II sem.
    Activity Day Time Type Place Note
    Teoria ed esercitazioni Monday 2:30 PM - 4:30 PM lesson Lecture Hall Gino Tessari  
    Teoria ed esercitazioni Wednesday 2:30 PM - 5:30 PM lesson Lecture Hall Gino Tessari  
    Laboratorio Tuesday 11:30 AM - 1:30 PM laboratorio Laboratory Delta from May 8, 2017  to Jun 9, 2017

    Learning outcomes

    MM: Teoria ed esercitazioni
    The course introduces the basic scientific and professional notions of software engineering, addressing in particular the different phases of the software development process: planning, design, modeling and specification, implementation, testing and validation, evaluation, maintenance. The programming projects carried out in the lab complement the theory lectures with the design, documentation and realization of a software. At the end of the course, the student will have acquired all the basic knowledge related to software engineering and will be able to apply it in the design and implementation of software systems. He will also be able to interact with all the stakeholders, from the requirement elicitation to the software maintenance.
    MM: Laboratorio
    The aim of this module is to support the student during the planning, documentation, and implementation of a software application using the techniques introduces during the theory course.


    MM: Teoria ed esercitazioni
    * Introduction to Software Engineering
    - Definition of Software Engineering
    - Professional software development
    - Software engineering ethics

    * Software Processes
    - Software process models
    - Process activities
    - Coping with change

    * Agile Software Development
    - Agile methods
    - Agile development techniques
    - The SCRUM methodology

    * Requirements Engineering
    - Functional and non-functional requirements
    - Requirements engineering processes
    - Requirements Engineering and UML Use Cases

    * Architectural Design
    - Architectural design decisions
    - Architectural views
    - Architectural patterns
    -- MVC
    -- Repository
    -- Client server
    -- Pipe and filter

    * OO Design and Implementation
    - OO basic concepts
    - The standard language UML 2 for software modeling
    -- Use Case diagrams
    -- Class diagrams
    -- Activity Diagrams
    -- Sequence diagrams
    - Design patterns
    -- Introduction
    -- Singleton
    -- Observer
    -- Template
    -- Iterator
    -- Factory
    -- Abstract factory
    -- Proxy
    -- Facade
    -- Decorator

    * Verification and Validation
    - Introduction
    - Inspection and test
    - Testing: unit test, integration test, user acceptance test

    * Software evolution and maintenance
    - Change Management
    - Legacy Systems
    - Software maintenance
    MM: Laboratorio
    - Introduction to Swing library for the development of graphical user interfaces in Java.
    - Introduction to TkInter, wxPython, pyGTK/PyGobject, and PyQt/PySide libraries for the development of graphical user interfaces in Python.
    - Introduction to Eclipse-Papyrus and StarUML tools for the development of UML projects.

    Teaching methods
    - Lecturing and practicing in computer laboratory.
    Didactical material (slides) and further exercise texts are available on the eLearning platform.
    The teacher is available for individual meeting in office hours.

    Assessment methods and criteria

    MM: Teoria ed esercitazioni
    The examination, for students both attending and not attending classes, consists of a project related to lab activities and of an oral examination. Such exam will allow one to show both his communication skills and his knowledge about Software Engineering. Student will also demonstrate their skills in applying their knowledge in "practical" software engineering tasks.
    MM: Laboratorio
    The examination consists of a project related to lab activities. The project has to be presented and discussed during the oral exam.

    Reference books
    Activity Author Title Publisher Year ISBN Note
    Teoria ed esercitazioni Ian Sommerville Ingegneria del software - 10/Ed. (Edizione 10) Pearson 2017 9788891902245
    Laboratorio Martin Fowler UML DISTILLED (Edizione 4) Pearson Italia 2010 978-88-7192-598-1 In Italiano.