020SOEES5

Software Engineering

This course describes the problems related to programming in the Large vs programming in the Small, at the level of cost, quality, functionalities and time management. It explains the methodologies related to the project development life cycle according to sturdy traditional approaches, such as CMM, TSP, PSP, RUP as well as according to agile methodologies such as, XP and Scrum (concepts, roles and ceremonies) as well as the waterfall and iterative lifecycles. It details elicitation techniques and software Requirement Specification writing rules and templates, as well as it describes many specification tools used for functional and non-functional requirements analysis. It explains the DRY, KISS and SOLID principles mainly its advanced object-oriented design concepts (OCP, LSP, etc…), and covers UML diagrams for OO modeling. It also explains the CRC Card design method adopted by the eXtreme Programming methodology. It demonstrates the need for continuous refactoring and explains refactoring techniques at a chirurgical, tactical and strategic level. It also describes the process to follow in order to succeed in refactoring, starting by configuring and using configuration/source code management tools like Git/GitHub, as well as testing and bug management software, then, by evaluating the quantitative and qualitative code quality in order to find eligible refactoring candidates and finally by executing and validating the refactoring step. This course describes the testing pyramid and details unit/integration/functional and non-functional testing, while stressing on the need for Test Driven development using JUnit. It compares methods that can be used to estimate the cost of a software. It explains UI/UX to-do and not-do basics by studying the different cases of standalone, and web applications focusing on accessibility issues. Finally, it introduces DevOps principles and raises students' awareness about SAAS development and the value of IT automation.


Temps présentiel : 30 heures


Charge de travail étudiant : 70 heures


Méthode(s) d'évaluation : Examen final, Examen partiel, Travail personnel

Ce cours est proposé dans les diplômes suivants
 Diplôme d'ingénieur - spécialité génie informatique et communications - option : génie logiciel
Diplôme d'ingénieur - spécialité génie informatique et communications - option : génie logiciel
Diplôme d'ingénieur - spécialité génie informatique et communications - option : réseaux de télécommunications
Diplôme d'ingénieur - spécialité génie informatique et communications - option : réseaux de télécommunications