
At the end of this module, the learner will be able to:
Acquire a deep understanding of software engineering principles, methods, and practices, as well as the challenges associated with each phase of the software life cycle (Analysis, Design, Development, Testing, and Maintenance).
Focus on system design before coding, by developing the architecture, technical and functional specifications, and creating appropriate design diagrams.
Apply modern software development models and methodologies, including linear models (Waterfall, V-Model), evolutionary models (Prototyping, Iterative/Incremental, Spiral), and Agile approaches (Scrum, XP, DevOps), to select the most suitable strategy for each project.
Use Design Patterns and best programming practices to produce software that is functional, reliable, and maintainable over the long term.
Plan and perform testing (unit, integration, functional, and system tests) and manage deployment and maintenance to ensure the quality and performance of delivered software.

- Enseignant: Soltana Achour (Enseignante)