Le génie logiciel est un domaine dédié à la conception, à la fabrication et à la maintenance de systèmes informatiques complexes, visant à garantir que les logiciels répondent aux besoins des clients et respectent des critères de qualité. Plusieurs méthodes existent pour spécifier et développer des logiciels de qualité, notamment des approches formelles, semi-formelles et empiriques, chacune ayant ses propres avantages et inconvénients. Les processus de développement logiciel incluent la spécification, la conception, la validation et l'évolution, avec différents modèles tels que le modèle en cascade et le modèle évolutif, chacun adapté à différents contextes et types de projets.