Course unit

Software Engineering

Last updated: 22/02/2024

Edit

Course Director(s):

CHARPENAY Victor

General Description:

This course is given in English as it corresponds to a Teaching Unit of the International MSc on Cyber Physical and Social Systems (CPS2): CPS2 engineering and development

Today's IT applications are increasingly complex. Resulting from the integration of multiple functionalities or pre-existing or non-existing services, they run in complex, distributed environments (e.g. Internet of Things, Cloud, Web). In addition to developing techniques for analyzing and processing the masses of data these applications have to cope with, the engineering of such applications is a major challenge if they are to be based on efficient, flexible and scalable architectures, so that they can integrate new data sources and new processes at the lowest possible cost.

The engineering of such systems is a major issue combining modeling, architecture definition, agility and reactivity. It is based on increasingly rich technical foundations, covering the whole cycle of development and production. It is of first importance to understand the challenges and problems of developing such systems, to master and know the models and technologies to address these challenges in order to choose the right models, technologies and methods according to the context and pursued objectives.

The pedagogical objectives of this course are to understand the current challenges and problems of the development of IT system that result from the bottom-up or top-down integration of existing systems (so called systems of systems), and that operate in distributed environments such as Web, IoT, Cloud, etc.

The students will acquire the skills to be able:

  • to carry out an agile development of IT applications,
  • to model, design, architect and integrate different IT services, data sources and systems with the right models, architectures,
  • to efficiently develop, implement, deliver and put in production such systems with the right technologies and best practices

The following concepts will be covered mainly through practical cases.

  • Introduction to Software Engineering and Agile software engineering methodologies
  • the SCRUM methodology
  • Unified Modeling Language (UML) 
  • proven models and good practices in the design and coding of software systems
  • common software architectural styles (REST, micro-services, publish-subscribe)

Key words:

UML Agile software development Design Patterns S.O.L.I.D Enterprise Integration Patterns Sustainable IT Software Architecture REST Micro-services

Number of teaching hours

40

Fields of study

Computer Science, Information Systems

Teaching language

French English

Intended learning outcomes

On completion of the unit, the student will be capable of: Classification level Priority

Learning assessment methods

Percentage ratio of individual assessment Percentage ratio of group assessment
Written exam: 50 % Project submission: 50 %
Individual oral exam: 0 % Group presentation: 0 %
Individual presentation: 0 % Group practical exercise: 0 %
Individual practical exercise: 0 % Group report: 0 %
Individual report: 0 %
Other(s): 0 %

Programme and content

Type of teaching activity Content, sequencing and organisation
Software Engineering
  • Introduction to Software Engineering and Agile software engineering methodologies
  • the SCRUM methodology
  • Unified Modeling Language (UML) 
Software Development Best practices
  • Design patterns et principes de codage
  • GOF DP, Enterprise Integration Patterns,
  • S.O.L.I.D., Coding/Design Principles (M. Fowler)
  • Nommage
  • SI et responsabilité sociétale
Software Architecture
  • Architectural models
  • REST and micro-services
  • Publish-subscribe
  • Formal verification and simulation of architectural models