12
Software Engineering a.y . 2019 - 2020 Introduction to the course Prof. Luca Mainetti Università del Salento

Software Engineering a.y. 2019-2020

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Software Engineeringa.y. 2019-2020

Introduction to the courseProf. Luca Mainetti

Università del Salento

Introduction Luca Mainetti2

To keep in touch with the teacher

! Prof. Luca Mainetti! Students meetings: Monday 15:00-19:00! See www.unisalento.it/people/luca.mainetti for changes that

can often happen ! [email protected]

Introduction Luca Mainetti3

Introduction Luca Mainetti4

Course objectives

! The main goal of the course is to deepen students’ knowledge on modern design and development techniques for interactive software systems: web and web-API oriented, with responsive and mobile user interface

! Methods and tools for automated software testing and refactoring, agile processes and design patterns will be analyzed

! All concepts will be experimented by students in a classroom and individual laboratory, developing a software prototype. A subset of the software prototype will be developed together in classroom

! For the software prototype students will exploits Model-View-Controller frameworks (Spring, Angular frameworks)

! Prerequisites: programming languages (better if Java), fundamentals of computer science, software design principles

Introduction Luca Mainetti5

Topics: theory

! Software engineering principles– Software qualities and software engineering principles– Software production process– Management of software engineering

! Software design with UML– Design and software architectures– Requirements and use cases– Class diagrams, sequence diagrams, state charts

! Software design pattern– Introduction to standard architectures and design patterns– How to select and adopt a design pattern– Creational patterns, structural patterns, behavioral patterns

! Software verification– Introduction to man software verification methods– Black-box and white-box methods– Test in the large, test in the small, correctness proofs

Introduction Luca Mainetti6

Topics: laboratory (in classroom)

! Introduction to Spring framework– Introduction to Java EE and Gradle– Introduction to Spring Framework (IoC, Dependency injection)– Developing a web app with Spring Boot– Building a RESTful Web Service– Accessing Data Layer with Spring Data JPA

! Software development and verification tools– Unit Testing and Refactoring– Version Control System (GIT)

! Design patterns and apps development for mobile and AWS– Developing responsive web applications with Angular (and the backend)– Developing cross platform mobile app with Ionic– Configuring and consuming AWS services– Developing push notifications with AWS– Introduction to micorservices and containers (Docker)

Introduction Luca Mainetti7

Textbooks and learning material

! Textbooks– Ghezzi, Jazayeri, Mandrioli – Fundamentals of Software Engineering

(second edition) – Pearson Prentice Hall 2003– Gamma, Helm, Johnson, Vlissides – Design Patterns: Elements of

Reusable Object-Oriented Software – Addison-Wesley Professional 1994

– Fowler – UML Distilled (third or fourth edition) – Addison-Wesley Professional, 2003

– A Java programming textbook! Other material

– www.unisalento.it/people/luca.mainetti

Introduction Luca Mainetti8

Course calendar (part 1: theory)

Argomento Data Ora Aula Ore lezioneIntroduction to the course lunedì 2 marzo 2020 8:30-10:30 O-2 2Software, software qualities and software principles giovedì 5 marzo 2020 11:30-13:30 Y-1 2Software production process venerdì 6 marzo 2020 10:30-13:30 M-8 3Management of software engineering lunedì 9 marzo 2020 8:30-10:30 O-2 2Design and software architecture. Specification techniques venerdì 13 marzo 2020 10:30-13:30 M-8 3Software design patterns (1) lunedì 16 marzo 2020 8:30-10:30 O-2 2Software design patterns (2) giovedì 19 marzo 2020 11:30-13:30 Y-1 2Software design patterns (3) venerdì 20 marzo 2020 10:30-13:30 M-8 3Software design patterns (4) lunedì 23 marzo 2020 8:30-10:30 O-2 2Software design patterns (5) giovedì 26 marzo 2020 11:30-13:30 Y-1 2Software design patterns (6). Testimonial from industry venerdì 27 marzo 2020 10:30-13:30 M-8 3Software validation (1) lunedì 30 marzo 2020 8:30-10:30 O-2 2Software validation (2) giovedì 2 aprile 2020 11:30-13:30 Y-1 2Software metrics venerdì 3 aprile 2020 10:30-13:30 M-8 3Laboratory presentation. Example of written exam lunedì 6 aprile 2020 8:30-10:30 O-2 2

Introduction Luca Mainetti9

Course calendar (part 2: classroom laboratory)

Argomento Data Ora Aula Ore lezioneJava EE giovedì 16 aprile 2020 11:30-13:30 Y-1 2Introduction to Spring Boot venerdì 17 aprile 2020 10:30-13:30 M-8 3Spring MVC lunedì 20 aprile 2020 8:30-10:30 O-2 2Data validation giovedì 23 aprile 2020 11:30-13:30 Y-1 2Spring Data JPA - Entitity Classes venerdì 24 aprile 2020 10:30-13:30 M-8 3Spring Data JPA - Reveng with Hibernate lunedì 27 aprile 2020 8:30-10:30 O-2 2Spring Data JPA - JPQL giovedì 30 aprile 2020 11:30-13:30 Y-1 2Spring MVC - Rest Controller lunedì 4 maggio 2020 8:30-10:30 O-2 2Versione Control Systems: GIT giovedì 7 maggio 2020 11:30-13:30 Y-1 2Unit Testing venerdì 8 maggio 2020 10:30-13:30 M-8 3AWS EC2, RDS lunedì 11 maggio 2020 8:30-10:30 O-2 2AWS API gateway giovedì 14 maggio 2020 11:30-13:30 Y-1 2AWS Lambda, S3 venerdì 15 maggio 2020 10:30-13:30 M-8 3Angular: Project Setup lunedì 18 maggio 2020 8:30-10:30 O-2 2Angular: Component, Template & Data Binding giovedì 21 maggio 2020 11:30-13:30 Y-1 2Angular: Forms (Input, Validation, Template-Driven) venerdì 22 maggio 2020 10:30-13:30 M-8 3Angular: Services, Routing, HTTP lunedì 25 maggio 2020 8:30-10:30 O-2 2Developing Crossplatform Mobile App with Ionic (1) giovedì 28 maggio 2020 11:30-13:30 Y-1 2Developing Crossplatform Mobile App with Ionic (2) venerdì 29 maggio 2020 10:30-13:30 M-8 3Testimonial giovedì 4 giugno 2020 11:30-13:30 Y-1 2

Introduction Luca Mainetti10

Evaluation method

! The exam consists of– A written test (10 points of 30) – A laboratory prototype implementation that will be discussed during an oral test (20

points of 30)

! Both written test and laboratory prototype implementation are mandatory

! The laboratory prototype must be developed in pairs! The software must be designed using UML, adopting standard design

patterns! The software must be developed starting from a MVC framework

(Spring, AngularJS), must be systematically tested, and measured! The software must be developed following an agile process and must

be documented! Delivered software will be checked using software similarity tools (e.g.

DIFF)

Introduction Luca Mainetti

Student effort

11

CFU 9Student effort (1 CFU = 25 hours) 225

Total classroom time (A1+B1+C1) 74 CFUTotal student effort (A2+B2+C2+D2) 225,50 9,02

A1. Theory 32 CFUA2. Student effort (hours) 112,00 4,48

B1. Practice 2 CFUB2. Student effort (hours) 3,50 0,14

C1. Classroom Laboratory 40 CFUC2. Student effort (hours) 56,00 2,24

D1. Individual Laboratory 54 CFUD2. Student effort (hours) 54 2,16

Introduction Luca Mainetti12

For stages and thesis

! Cross platform, Android and IOS Apps– For different domains (smart cities, fintech, insurtech etc.)

! Interaction with IoT and Machine Learning– Arduino, TensorFlow

! IoT model-driven platforms and middleware– WoX (Web of Topics)

! Modern software systems and user experience– AWS (Amazon Web Services)– Vocal interaction with the Cloud– IoT and machine learning, IoT and business intelligence