Second semester

Software design

Objectives

Apart from proofs of concept, the design and realization of software requires it to be broken down into different functionalities, sub-programs or software components, etc. This is the usual concept in IT: divide and conquer, or divide and solve.
This principle applies just as much to the implementation phase as to the design phase. Today, it is based on standard strategies and, more often than not, on the UML modeling language.
By the end of this course, students will be familiar with a range of these strategies, and will be able to apply them to the design and implementation of small applications. Where appropriate, modeled applications will be implemented in Java.
Design an application
Break down into functionalities / components / libraries / …
Model the application
Model the data handled

Course outline

Software life cycle (analysis, design, implementation, testing, use and corrective or evolutionary maintenance)
Data UML (and further development of UML)
Design pattern programming (E.GAMMA patterns: creation models, structure models and behavior models)
Component-based programming
Object-oriented programming: genericity / features / UML2.2 component model
OO design methodologies: unified process / AGILE method?
Functional and structural testing