First semester

Software Engineering

Objectives

The aim of this course is to introduce the means of designing high-quality IT applications (that meet requirements, are scalable and easy to maintain).

The aim is to introduce model-driven engineering, positioning design within development cycles, and highlighting the issues and pitfalls to be avoided.

The course provides an introduction to classical design patterns, the basis of software engineering around object technologies, with practical applications in hands-on exercises and the study of design patterns developed in Java. The course also teaches how to develop and deploy a dynamic website in Java. It also introduces students to n-tier architectures and application servers, and gives them a thorough understanding of the main tools and advanced languages used to develop Web/JavaEE applications.

Course outline

I. Software engineering
1. Introduction to software engineering and good design practice
2. Software architecture and layered model, GWT example
3. Main design patterns, principle and implementation in Java
4. Software testing and language engineering
5. Model-driven engineering

II. Client-Server Programming (JavaEE)
1. Distributed architectures and the JavaEE platform
i. JavaEE and Spring technologies
ii. Architecture: components, services and communications
iii. Server application issues
2. JavaEE / Spring APIs and frameworks
3. Persistence with JPA
i. Object-relational mapping issues
ii. Mapping tools: JPA, Hibernate, Toplink
iii. Mapping
iv. The entity-manager
v. Request language
4. Web services and the cloud.

Prerequisites

UML notation, knowledge of JAVA language