Today’s IT applications are becoming more and more complex. Resulting from the integration of multiple pre-existing or new functionalities, data sources or services, they run in complex and distributed environments (e.g. Internet of Things, Cloud, Web).
Beyond the development of techniques for analysing and processing the large volumes of data that these applications have to handle, the engineering of such applications is a major challenge so that they can rely on efficient, flexible and scalable architectures in order to be able to integrate new data sources and new processing methods at the lowest 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 ibottom-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
This course is structured in the following 5 course units:
Software Engineering (20h): software systems modeling (UML), agile methods, requirements analysis
Software architectures (14h): architecture design, architecture styles
Interoperability of data and semantics (20h): interoperability solutions (protocols, data, knowledge)
Software development practices (14h): design patterns, coding and naming standards, ethics, law
Technological foundations of software development (12h): development toolchain, integration, test, DevOps