SOFTWARE ENGINEERING

Pasquale FOGGIA SOFTWARE ENGINEERING

0622700041
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
EQF7
COMPUTER ENGINEERING
2020/2021



OBBLIGATORIO
YEAR OF COURSE 1
YEAR OF DIDACTIC SYSTEM 2017
PRIMO SEMESTRE
CFUHOURSACTIVITY
432LESSONS
216EXERCISES
324LAB


Objectives
The course aims at learning models, methods and tools for the design and implementation of large size software systems, and of the main processes occurring during the software life cycle.

Knowledge and understanding
Knowledge of the software production process and of the related activities. Knowledge of the main Design Patterns. Knowledge of Agile Methods for software production. Understanding of the documents for the software analysis and the design written in a standard format.

Applying knowledge and understanding
Ability to participate in a project following a formal software production process. Ability to design a software system using the major Design Patterns; to express the requirements analysis and the design choices using a standard format; to adopt software tools for the testing and revision control.


Prerequisites
IN ORDER TO ACHIEVE THE GOALS OF THE COURSE, A KNOWLEDGE OF THE JAVA LANGUAGE AND OF OBJECT ORIENTED PROGRAMMING IS RECOMMENDED.
Contents
COURSE INTRODUCTION
INTRODUCTION TO THE SOFTWARE LIFE CYCLE. SOFTWARE QUALITIES: PRODUCT AND PROCESS CHARACTERISTICS.

SOFTWARE LIFE CYCLE: TRADITIONAL PROCESSES.
THE WATERFALL MODEL. REQUIREMENT ANALYSIS. DESIGN. IMPLEMENTATION. TEST. DEPLOYMENT AND MAINTENANCE. EVOLUTIONS OF THE WATERFALL MODEL. THE RUP FRAMEWORK. MODEL DRIVEN APPROACHES.

SOFTWARE LIFE CYCLE: AGILE METHODS.
LIMITATIONS OF TRADITIONAL PROCESSES. AGILE METHODS: FUNDAMENTAL PRINCIPLES. TEST-DRIVEN DEVELOPMENT. REFACTORING. THE XP AND SCRUM PROCESSES.

DESIGN PATTERNS
INTRODUCTION TO SOFTWARE DESIGN PATTERNS. CREATIONAL PATTERNS. STRUCTURAL PATTERNS. BEHAVIORAL PATTERNS

SOFTWARE TOOLS:
UNIT TESTING: JUNIT. REVISION CONTROL SYSTEMS: GIT.

Teaching Methods
THE COURSE CONTAINS THEORETICAL LECTURES, IN-CLASS EXERCITATIONS AND PRACTICAL LABORATORY EXERCITATIONS. DURING THE IN-CLASS EXERCITATIONS THE STUDENTS ARE DIVIDED IN TEAMS AND ARE ASSIGNED A PROJECT TO BE DEVELOPED ALONG THE DURATION OF THE COURSE. THE PROJECT INCLUDES ALL THE CONTENTS OF THE COURSE AND IS ESSENTIAL BOTH FOR THE ACQUISITION OF THE ABILITY TO DESIGN AND IMPLEMENT A SOFTWARE SYSTEM STARTING FROM A SPECIFICATION, AND FOR DEVELOPING AND REINFORCING THE ABILITY TO WORK IN A TEAM. IN THE LABORATORY EXERCITATIONS THE STUDENTS WILL USE SOFTWARE TOOLS FOR THE AUTOMATION OF TESTS, AND FOR REVISION CONTROL.

In order to participate to the final assessment and to gain the credits
corresponding to the course, the student must have attended at least 70%
of the hours of assisted teaching activities.
Verification of learning
THE EXAM AIMS AT EVALUATING, AS A WHOLE: THE KNOWLEDGE AND UNDERSTANDING OF THE CONCEPTS PRESENTED IN THE COURSE, THE ABILITY TO APPLY THAT KNOWLEDGE TO SOLVE PROBLEMS OF DESIGN AND IMPLEMENTATION OF SOFTWARE SYSTEMS, INDEPENDENCE OF JUDGMENT, COMMUNICATION SKILLS AND THE ABILITY TO LEARN.
THE EXAM INCLUDES THE DISCUSSION OF A PROJECT WORK, DEVELOPED DURING THE COURSE, AIMED AT EVALUATION OF THE ABILITY TO APPLY KNOWLEDGE, TO WRITE A TECHNICAL REPORT, THE INDEPENDENCE OF JUDGMENT, THE ABILITY TO WORK IN A TEAM, AND AN ORAL INTERVIEW, THE PURPOSE OF WHICH IS TO ASSESS THE ACQUIRED KNOWLEDGE AND ABILITY TO UNDERSTANDING, THE ABILITY TO LEARN, ORAL PRESENTATION.
THE PROJECT WORK IS A SMALL SOFTWARE PROJECT (ASSIGNED BY THE TEACHER) DEVELOPED IN TEAM, IN WHICH THE STUDENTS HAVE TO PERFORM AND DOCUMENT ALL THE ACTIVITIES IN THE SOFTWARE LIFE CYCLE.
THE ORAL EXAMINATION WILL COVER THE THEORETICAL TOPICS OF THE COURSE AND ASSESSMENT WILL TAKE INTO ACCOUNT THE KNOWLEDGE DEMONSTRATED BY THE STUDENT AND THE DEGREE OF ITS DEPTH, PROVEN ABILITY TO LEARN, THE QUALITY OF THE PRESENTATION.
IN THE FINAL EVALUATION, EXPRESSED IN THIRTIETHS, THE EVALUATION OF THE PROJECT WORK WILL ACCOUNT FOR 40% WHILE THE INTERVIEW FOR 60%. THE CUM LAUDE MAY BE GIVEN TO STUDENTS WHO DEMONSTRATE THAT THEY CAN APPLY THE KNOWLEDGE AUTONOMOUSLY EVEN IN CONTEXTS OTHER THAN THOSE PROPOSED IN THE COURSE.
Texts
F. Tsui, O. Karam, B. Bernal: “Essentials of Software Engineering” (3rd ed.), Jones & Bartlett

Suggested reading:
Gamma, Helm, Johnson, Vlissides: “Design Patterns”, Pearson Education Italia
More Information
The course language is English.
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2022-05-23]