Salta al contenuto principale della pagina

ELEMENTS OF SOFTWARE ENGINEERING

CODE 80305
ACADEMIC YEAR 2022/2023
CREDITS
  • 6 cfu during the 3nd year of 8759 INFORMATICA (L-31) - GENOVA
  • SCIENTIFIC DISCIPLINARY SECTOR INF/01
    LANGUAGE Italian
    TEACHING LOCATION
  • GENOVA
  • SEMESTER 1° Semester
    TEACHING MATERIALS AULAWEB

    OVERVIEW

    Software engineering is a discipline dealing with all aspects of software development
        - discipline = subject of study course
        - Software engineering = a set of theories, methods, techniques and 
          tools to develop quality software in a professional manner

     

    AIMS AND CONTENT

    LEARNING OUTCOMES

    The course aims to introduce the scientific and professional principles of software engineering basis, addressing the various stages of code development: planning, design, modeling, implementation, testing and verification, maintenance.

    After completing the course, the student will have acquired a basic knowledge of UML .

    AIMS AND LEARNING OUTCOMES

    The objective of the course is to provide an overview of Software Engineering necessary for the design and development of large modern software systems, as well as to introduce concepts, notations, methods and tools to follow the entire life cycle of the software.

    At the end of the course, the student will be able to:

    • understand and describe the basic elements of the discipline (development models, requirements, design, testing, maintenance, design patterns);
    • describe a software system with the UML formalism and understand the documentation of an existing system;
    • solve simple software design, refactoring and testing problems (at least at the unit testing level) also by working in a team;
    • use a CASE UML tool (e.g. Visual Paradigm) and an IDE (e.g. Eclipse) to perform simple tasks (e.g. create a UML class diagram or refactor a piece of code)

    PREREQUISITES

    To successfully follow this course it is necessary to have taken the exams of the Languages ​​and Object Oriented Programming courses.

    The course does not have specific prerequisites: everything that has been studied in previous years will be useful - but nothing indispensable. It will be useful:

    • Knowledge of the fundamentals of programming
    • Knowledge of an object-oriented programming language: in particular Java
    • Knowledge of OO concepts: Inheritance, Polymorphism, Encapsulation
    • Basic knowledge of databases
    • Basic knowledge of web applications

    TEACHING METHODS

    The course includes both lectures and laboratory activities

    • Traditional lecture
    • Labs and supplementary activities using AulaWeb

    AulaWeb will be used for three purposes: as a repository of course materials; as a channel for the bureaucratic communications, explanations, discussions related to the course etc .; and finally to facilitate teamwork

    SYLLABUS/CONTENT

    • Introduction to the course and to software engineering
    • Software development process models, agile methods (eg. Extreme programming)
    • Requirements Engineering. Scenarios and use cases
    • Design principles and design methods, coupling and cohesion, software architecture, design patterns, refactoring
    • The UML : Class diagram, Sequence diagram, State Machine diagram, Activity diagram
    • Software Testing : Testing functional / structural and coverage. Unit tests, integration, system, acceptance tests and regression tests
    • Software evolution and Maintenance

    RECOMMENDED READING/BIBLIOGRAPHY

    • Martin Fowler UML Distilled 4/Ed. Pearson-Addison Wesley.
    • Mike O'Docherty. Object-Oriented Analysis and Design: Understanding System Development with UML 2.0. John Wiley & Sons [some portions]
    • Sommerville I. Software Engineering 8th edition, Addison Wesley [some portions]
    • Shari Lawrence Pfleeger, Joanne M. Atlee. Software Engineering: Theory and Practice [some portions]

    TEACHERS AND EXAM BOARD

    Exam Board

    FILIPPO RICCA (President)

    MAURIZIO LEOTTA

    DARIO OLIANAS (Substitute)

    GIANNA REGGIO (Substitute)

    LESSONS

    Class schedule

    All class schedules are posted on the EasyAcademy portal.

    EXAMS

    EXAM DESCRIPTION

    The objective of the verification procedure consists in quantifying, for each student, the level of achievement of the previously indicated educational objectives. The verification procedure consists of the evaluation of the guided workshops and a written test.

    ASSESSMENT METHODS

    The exam consists of the following activities

    • Laboratory activities
    • Written examination

    Laboratory activities

    The teaching includes laboratory activities to be carried out in groups. For some of these activities, the delivery of the work performed will be required. For others, student participation will simply be monitored.
    Alternative activities to be delivered through AulaWeb will be offered to those (eg student workers) who are unable to attend the activities in the laboratory. The laboratory activity will be assessed as a whole (on an individual basis) with a score in the interval [0.4] to be added to the mark resulting from the written test.

    Written examination

    The written test will be divided into two parts:

    • First part: consisting of multiple choice questions, which constitutes a barrier to participation in the next part. The questions will be both theoretical and practical and will focus on the topics seen in class.
    • Second part: consisting of an open theoretical question and an exercise that must necessarily be carried out, each one, on a single side of A4 sheet. Question and exercise will focus on the topics seen in class.

    For the first part, the consultation of any material will not be allowed. In the second part, only the consultation of the UML summary that will be made available during the course will be allowed.

    If the first part is passed, the second part will be assessed and a maximum grade of 27 will be assigned (to which the laboratory grades will then be added).

    During the lessons some examples of possible questions and exercises for each topic will be discussed, so that at the end of the course the type of test is clear.

    Method of assessment

    The laboratory activity aims to ascertain collaborative skills in solving problems in the context of the topics addressed in the course, in particular the use of UML, refactoring and software testing.

    The written examination aims to verify the knowledge of the theoretical aspects of the discipline and assess the ability to perform exercises.

     

    Exam schedule

    Date Time Location Type Notes
    26/01/2023 09:30 GENOVA Scritto
    15/02/2023 09:30 GENOVA Scritto
    29/06/2023 09:30 GENOVA Scritto
    26/07/2023 09:30 GENOVA Scritto
    13/09/2023 09:30 GENOVA Scritto